Páginas filhas
  • 4.2. Execução de rotinas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
themeEclipse
languagenone
titleExemplo de execução de uma rotina no Logix
linenumberstrue
#-------------------------------------#
FUNCTION wfman002_alterar_componentes()
#-------------------------------------#
    DEFINE lr_return RECORD
                         status SMALLINT,
                         msg    CHAR(300)
                     END RECORD


    DEFINE lr_comp_orig,
           lr_comp_dest RECORD
                            cod_item_compon  LIKE estrut_grade.cod_item_compon,
                            cod_grade_comp_1 LIKE estrut_grade.cod_grade_comp_1,
                            cod_grade_comp_2 LIKE estrut_grade.cod_grade_comp_2,
                            cod_grade_comp_3 LIKE estrut_grade.cod_grade_comp_3,
                            cod_grade_comp_4 LIKE estrut_grade.cod_grade_comp_4,
                            cod_grade_comp_5 LIKE estrut_grade.cod_grade_comp_5
                        END RECORD


    DEFINE la_item_pai ARRAY[100] OF RECORD
                           cod_item_pai     LIKE estrut_grade.cod_item_pai,
                           cod_grade_1      LIKE estrut_grade.cod_grade_1,
                           cod_grade_2      LIKE estrut_grade.cod_grade_2,
                           cod_grade_3      LIKE estrut_grade.cod_grade_3,
                           cod_grade_4      LIKE estrut_grade.cod_grade_4,
                           cod_grade_5      LIKE estrut_grade.cod_grade_5,
                           qtd_necessaria   LIKE estrut_grade.qtd_necessaria,
                           dat_validade_ini LIKE estrut_grade.dat_validade_ini,
                           dat_validade_fim LIKE estrut_grade.dat_validade_fim,
                           num_sequencia    LIKE estrut_grade.num_sequencia
                       END RECORD


    DEFINE l_justificativa CHAR(300),
           l_acao          CHAR(001),
           l_altera_item   CHAR(001)


    DEFINE l_ind,
           l_item_ind,
           l_item_count SMALLINT


    IF  LOG_initApp("MANENG") > 0 THEN
        LET lr_return.status = FALSE
        LET lr_return.msg    = "Usuário ",p_user CLIPPED," sem permissão para acessar a rotina."
        RETURN lr_return
    END IF


    LET lr_comp_orig.cod_item_compon  = _ADVPL_WfGetParameterValue("componentes","cod_item_compon_orig")
    LET lr_comp_orig.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_1_orig")
    LET lr_comp_orig.cod_grade_comp_2 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_2_orig")
    LET lr_comp_orig.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_orig")
    LET lr_comp_orig.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_4_orig")
    LET lr_comp_orig.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_orig")


    LET lr_comp_dest.cod_item_compon  = _ADVPL_WfGetParameterValue("componentes","cod_item_compon_dest")
    LET lr_comp_dest.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_1_dest")
    LET lr_comp_dest.cod_grade_comp_2 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_2_dest")
    LET lr_comp_dest.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_dest")
    LET lr_comp_dest.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_4_dest")
    LET lr_comp_dest.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_dest")


    LET l_justificativa = _ADVPL_WfGetParameterValue("componentes","justificativa")
    LET l_acao          = _ADVPL_WfGetParameterValue("componentes","slct_acao")


    #Verifica os códigos da grade de origem.
    IF  lr_comp_orig.cod_grade_comp_1 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_1 = " "
    END IF


    IF  lr_comp_orig.cod_grade_comp_2 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_2 = " "
    END IF


    IF  lr_comp_orig.cod_grade_comp_3 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_3 = " "
    END IF


    IF  lr_comp_orig.cod_grade_comp_4 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_4 = " "
    END IF


    IF  lr_comp_orig.cod_grade_comp_5 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_5 = " "
    END IF


    #Verifica os códigos da grade de destino.
    IF  lr_comp_dest.cod_grade_comp_1 IS NULL THEN
        LET lr_comp_dest.cod_grade_comp_1 = " "
    END IF


    IF  lr_comp_dest.cod_grade_comp_2 IS NULL THEN
        LET lr_comp_dest.cod_grade_comp_2 = " "
    END IF


    IF  lr_comp_dest.cod_grade_comp_3 IS NULL THEN
        LET lr_comp_dest.cod_grade_comp_3 = " "
    END IF


    IF  lr_comp_dest.cod_grade_comp_4 IS NULL THEN
        LET lr_comp_dest.cod_grade_comp_4 = " "
    END IF


    IF  lr_comp_dest.cod_grade_comp_5 IS NULL THEN
        LET lr_comp_dest.cod_grade_comp_5 = " "
    END IF


    LET l_item_ind   = 0
    LET l_item_count = _ADVPL_WfGetParameterLength("item_pai")


    FOR l_ind = 1 TO l_item_count
        LET l_altera_item = _ADVPL_WfGetParameterValue("item_pai","altera_item",l_ind)


        IF  l_altera_item = "S" THEN
            LET l_item_ind = l_item_ind + 1


            LET la_item_pai[l_item_ind].cod_item_pai     = _ADVPL_WfGetParameterValue("item_pai","cod_item_pai",l_ind)
            LET la_item_pai[l_item_ind].cod_grade_1      = _ADVPL_WfGetParameterValue("item_pai","cod_grade_1",l_ind)
            LET la_item_pai[l_item_ind].cod_grade_2      = _ADVPL_WfGetParameterValue("item_pai","cod_grade_2",l_ind)
            LET la_item_pai[l_item_ind].cod_grade_3      = _ADVPL_WfGetParameterValue("item_pai","cod_grade_3",l_ind)
            LET la_item_pai[l_item_ind].cod_grade_4      = _ADVPL_WfGetParameterValue("item_pai","cod_grade_4",l_ind)
            LET la_item_pai[l_item_ind].cod_grade_5      = _ADVPL_WfGetParameterValue("item_pai","cod_grade_5",l_ind)
            LET la_item_pai[l_item_ind].qtd_necessaria   = _ADVPL_WfGetParameterValue("item_pai","qtd_necessaria",l_ind)
            LET la_item_pai[l_item_ind].dat_validade_ini = _ADVPL_WfGetParameterValue("item_pai","dat_validade_ini",l_ind)
            LET la_item_pai[l_item_ind].dat_validade_fim = _ADVPL_WfGetParameterValue("item_pai","dat_validade_fim",l_ind)
            LET la_item_pai[l_item_ind].num_sequencia    = _ADVPL_WfGetParameterValue("item_pai","num_sequencia",l_ind)


            #Verifica os códigos da grade do item pai.
            IF  la_item_pai[l_item_ind].cod_grade_1 IS NULL THEN
                LET la_item_pai[l_item_ind].cod_grade_1 = " "
            END IF


            IF  la_item_pai[l_item_ind].cod_grade_2 IS NULL THEN
                LET la_item_pai[l_item_ind].cod_grade_2 = " "
            END IF


            IF  la_item_pai[l_item_ind].cod_grade_3 IS NULL THEN
                LET la_item_pai[l_item_ind].cod_grade_3 = " "
            END IF


            IF  la_item_pai[l_item_ind].cod_grade_4 IS NULL THEN
                LET la_item_pai[l_item_ind].cod_grade_4 = " "
            END IF


            IF  la_item_pai[l_item_ind].cod_grade_5 IS NULL THEN
                LET la_item_pai[l_item_ind].cod_grade_5 = " "
            END IF
        END IF
    END FOR


    {
        Regra de negócio 4GL.
    }


    LET lr_return.status = TRUE
    LET lr_return.msg    = "Item componente alterado com sucesso."


    RETURN lr_return
END FUNCTION

...