#-------------------------------------#
FUNCTION wfman002_alterar_componentes()
#-------------------------------------#
DEFINE lr_return RECORD
"cod_item_compon": "ITEM-TESTE-NOVO",
"cod_grade_compon_1_orig": "PRETO",
"cod_grade_compon_2_orig": "",
"cod_grade_compon_3_orig": "",
"cod_grade_compon_4_orig": "",
"cod_grade_compon_5_orig": "",
"acao": "1",
|
| status SMALLINT"cod_item_compon_dest": "ITEM-TESTE",
"cod_grade_compon_1_dest": "BRANCO",
|
| msg CHAR(300)"cod_grade_compon_2_dest": "",
"cod_grade_compon_3_dest": "",
|
| ENDRECORD
DEFINE lr_comp_orig,
"cod_grade_compon_4_dest": "",
|
| lr_comp_dest RECORD"cod_grade_compon_5_dest": "",
"justificativa": "ALTERACAO DO COMPONENTE ITEM-TESTE-NOVO PRETO PARA |
| 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,
Card |
---|
label | Execução da Rotina no Logix |
---|
| Para que seja possível a execução da rotina no Logix é necessário seguir os passos abaixo: - Criar a rotina 4GL sem parâmetros.
- Os valores enviados devem ser recuperados através da função _ADVPL_WfGetParameterValue.
- Para recuperar a quantidade dos campos filhos nos valores enviados, utilizar a função _ADVPL_WfGetParameterLength.
- A função deve retornar uma variável RECORD com no mínimo dois atributos*:
- status: do tipo SMALLINT, deverá ter o valor TRUE ou FALSE para indicar se a rotina foi executada com sucesso; e
- msg: do tipo CHAR, deverá ter uma curta mensagem para que a mesma seja exibida para o usuário no arquivo de LOG do Fluig ou em tela.
* A variável RECORD de retorno poderá ter outros atributos conforme necessidade do processo.
Exemplo Bloco de código |
---|
| #-------------------------------------#
FUNCTION wfman002_alterar_componentes()
#-------------------------------------#
DEFINE lr_return RECORD
|
| num_sequenciaLIKE estrut_grade.num_sequenciaENDRECORD
DEFINE l_justificativa,l_acao CHAR(001)lalteraitem CHAR(001)
DEFINEl_ind,
l_item_ind,
lcount SMALLINT
compon LIKE estrut_grade.cod_item_compon,
|
| IFLOG_initApp("MANENG")>0THEN
LETlr_return.status=FALSE
LET lr_return.msg = "Usuário ",p_user CLIPPED," sem permissão para acessar a rotina."
cod_grade_comp_1 LIKE estrut_grade.cod_grade_comp_1,
|
| RETURNlr_return
ENDIF
LETlrorig.cod_item_compon = _ADVPL_WfGetParameterValue("componentes","cod_item_compon_orig")
2 LIKE estrut_grade.cod_grade_comp_2,
|
| LET lr_comp_orig.1=_ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_grade_comp_ |
| 1_orig")
LETlr_comp_orig.2=_ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_grade_comp_ |
| 2_orig")
LETlr_comp_orig.3=_ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_grade_comp |
| _3_orig")
_5
END RECORD
DEFINE la_item_pai ARRAY[100] OF RECORD
|
| LET lr_comp_orig.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_4_orig")
LETlr_comp_orig.cod_grade_comp_5=_ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_orig")
LET lr_comp_dest.compon=_ADVPL_WfGetParameterValue("componentes","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","comp_2_dest")
LETlrcomp_destcomp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_dest")
LET lr_comp_dest.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","comp_4_dest")
LETlrcomp_destcomp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_dest")
LETl_justificativa= _ADVPL_WfGetParameterValue("componentes","justificativa")
LETl_acao=ADVPL_WfGetParameterValue("componentes","slct_acao")
#Verificaoscódigosdagradedeorigem.
IFlr_comp_orig.cod_grade_comp_1ISNULLTHEN
LETlrcomp_origcomp_1 = " "
ENDIF
IFlr_comp_orig.cod_grade_comp_2ISNULLTHEN
LETlr_comp_origcod_grade_5 LIKE estrut_grade.cod_grade_ |
| comp_2 = " "
ENDIF
IFlr_comp_orig.cod_grade_comp_3ISNULLTHEN
LET lr_comp_orig.cod_grade_comp_3 = " "
estrut_grade.qtd_necessaria,
|
| ENDIF
IFlr_comp_orig.cod_grade_comp_4ISNULLTHEN
LETlrcomp_orig.codvalidade_ini LIKE estrut_grade.dat_ |
| comp4=""
ENDIF
IFlr_comp_orig.cod_grade_comp_5 IS NULL THEN
LETlrcomp_orig.codvalidade_fim LIKE estrut_grade.dat_ |
| comp_5 = " "
ENDIF
#Verificaoscódigosdagradededestino.
IFlr_comp_dest.cod_grade_comp_1 IS NULL THEN
num_sequencia LIKE estrut_grade.num_sequencia
|
| LET lr_comp_dest.cod_grade_comp_1 = " "
IFIF lr_comp_dest.cod_grade_comp_2 IS NULL THEN
l_justificativa CHAR(300),
|
| LETlr_comp_dest.cod_grade_comp_2 = " "ENDIF
IFlrcomp_dest.cod_grade_comp_3 IS NULL THENaltera_item CHAR(001)
DEFINE |
| LETlr_comp_dest.cod_grade_comp_3=""
END IF
IFlr_comp_dest.cod_grade_comp_4ISNULLTHEN
LETlr_comp_dest.cod_grade_comp_4 = " "
END IF
LOG_initApp("MANENG") > 0 THEN
|
| IFcomp_dest.cod_grade_comp_5 IS NULL THENreturn.status = FALSE
LET lr_ |
| comp_dest.cod_grade_comp_5return.msg = "Usuário ",p_user CLIPPED," |
|
END IFLET l_item_ind=0lcountWfGetParameterLengthWfGetParameterValue("componentes","cod_item_ |
| pai
FOR l_ind = 1 TO l_item_count
LET lr_comp_orig.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_1_orig")
LET |
| l_altera_itemlr_comp_orig.cod_grade_comp_2 = _ADVPL_WfGetParameterValue(" |
| item_paialtera_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 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(" |
| item_paicomponentes","cod_grade_comp_ |
| itempai,l_ind laitem_pai[l_item_ind]comp_orig.cod_grade_comp_ |
| 1 5 = _ADVPL_WfGetParameterValue(" |
| item_paicomponentes","cod_grade_comp_5_ |
| 1,l_ind laitem_pai[l_item_ind]grade2 = _ADVPL_WfGetParameterValue(" |
| item_paigrade2,l_ind laitem_pai[l_item_ind]comp_dest.cod_grade_comp_ |
| 3 1 = _ADVPL_WfGetParameterValue(" |
| item_paicomponentes","cod_grade_comp_1_ |
| 3,l_ind laitem_pai[l_item_ind]comp_dest.cod_grade_comp_ |
| 4 2 = _ADVPL_WfGetParameterValue(" |
| item_paicomponentes","cod_grade_comp_2_ |
| 4,l_ind laitem_pai[l_item_ind]comp_dest.cod_grade_comp_ |
| 5 3 = _ADVPL_WfGetParameterValue(" |
| item_paicomponentes","cod_grade_comp_3_ |
| 5,l_ind laitem_pai[l_item_ind].qtd_necessaria comp_dest.cod_grade_comp_4 = _ADVPL_WfGetParameterValue(" |
| item_paiqtd_necessaria",l_ind)
cod_grade_comp_4_dest")
LET |
| laitem_pai[l_item_ind].dat_validade_inicomp_dest.cod_grade_comp_5 = _ADVPL_WfGetParameterValue(" |
| item_paidat_validade_ini",l_ind)
cod_grade_comp_5_dest")
LET |
| la_item_pai[item_ind].dat_validade_fimjustificativa = _ADVPL_WfGetParameterValue(" |
| item_paidat_validade_fim",l_indjustificativa")
LET l_acao |
| LET la_item_pai[l_item_ind].num_sequencia = _ADVPL_WfGetParameterValue(" |
| item_painumsequencia,l_ind #Verifica os códigos da grade |
| doitem paiorigem.
IF lr_comp_orig.cod_grade_comp_1 IS NULL THEN
|
| IFlaitem_pai[l_item_ind]comp_orig.cod_grade_comp_1 |
| IS NULL THEN = " "
END IF
IF lr_comp_orig.cod_grade_comp_2 IS NULL THEN
LET |
| la_item_pai[l_item_ind]1 laitem_pai[l_item_ind]2 laitem_pai[l_item_ind]2 la_item_pai[l_item_ind]3 laitem_pai[l_item_ind]comp_orig.cod_grade_comp_ |
| 3 laitem_pai[l_item_ind]comp_orig.cod_grade_comp_ |
| 4 la_item_pai[l_item_ind]lr_comp_orig.cod_grade_comp_ |
| 4 END IF
#Verifica os códigos da grade de destino.
IF |
| laitem_pai[l_item_ind]5comp_1 IS NULL THEN
LET lr_comp_dest.cod_grade_comp_1 = " "
END IF
IF |
| LETlaitem_pai[l_item_ind]comp_dest.cod_grade_comp_ |
| 5=""THEN
LET lr_comp_dest.cod_grade_comp_2 = " |
| END IF ENDFOR
{ lr_comp_dest.cod_grade_comp_3 IS NULL THEN
|
| Regra de negócio 4GL.
}
LET lr_comp_dest.cod_grade_comp_3 = " "
|
| LET lr_return.status = TRUELETreturn.msg = "Item componente alterado com sucesso."
dest.cod_grade_comp_4 IS NULL THEN
|
| RETURN_return
END FUNCTION |