Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 03/05/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:27:45
Descrição da Nota: DESENVOLVIMENTO ENTREPOSTO ADUANEIRO
Sintoma
Desenvolvimento para tratamento de entreposto aduaneiro.
Solução
Desenvolvimento para tratamento de entreposto aduaneiro.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01268 Data: 03/05/2006 Hora: 10:02:06
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01268
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00023
Agrupamento : 00111
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00774 - 00001 - 6.0 - 00022 - ENTREPOSTO ADUANEIRO
00904 - 00002 - 6.0 - 00022 - AJUSTE DE TABELA
----------------------------------------------------------------------------------------------------
DESENVOLVIMENTO ENTREPOSTO ADUANEIRO
----------------------------------------------------------------------------------------------------
Palavras Chave:
ENTREPOSTO ADUANEIRO - EMBARQUE
----------------------------------------------------------------------------------------------------
Objetos da nota:
CUAD /PWS/SAPMZYCI001
CUAD /PWS/SAPMZYCI070
DYNP /PWS/SAPMZYCI001 0003
DYNP /PWS/SAPMZYCI001 0051
DYNP /PWS/SAPMZYCI001 0052
DYNP /PWS/SAPMZYCI001 0053
DYNP /PWS/SAPMZYCI001 0100
DYNP /PWS/SAPMZYCI001 0101
DYNP /PWS/SAPMZYCI001 0102
DYNP /PWS/SAPMZYCI001 0111
DYNP /PWS/SAPMZYCI001 0700
DYNP /PWS/SAPMZYCI002 0051
DYNP /PWS/SAPMZYCI002 0052
DYNP /PWS/SAPMZYCI002 0053
DYNP /PWS/SAPMZYCI002 0101
DYNP /PWS/SAPMZYCI002 0102
DYNP /PWS/SAPMZYCI002 0103
DYNP /PWS/SAPMZYCI002 0104
----------------------------------------------------------------------------------------------------
Modificações efetuadas em CUAD /PWS/SAPMZYCI001
*Criado status
Status Tipo Code de objeto Code de objeto Descrição
0003 D 000013 000016 0001 CI - Seleção DA
*Criado Teclas de função CI - Seleção DA
Código de função Tecla F Tecla de função Código de função Texto
000016 05 F5 CANCEL Encerrar
000016 08 F8 ENTER Selecionar
*Criado Botões CI - Seleção DA
Code de objeto Code Item Tecla de função Código de função Id Exibição
Texto de ícones
000016 0001 01 F8 ENTER ICON_OKAY
000016 0001 02 F5 CANCEL ICON_CANCEL
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
MOVE ekpo-idnlf TO itab_zycit003-idnlf.
"Atualizando itab conforme table-control
MODIFY itab_zycit003 INDEX tc_ped-current_line.
* Tratamento para novo registro obtido por match-code.
IF sy-subrc NE 0. "Checando se é um novo registro
* >> Início da inclusão: FORM ALTERA_ITAB_ITAB_ZYCIT003
IF /pws/zycie001-regime NE '14'.
* << Fim da inclusão
READ TABLE itab_zycit003_aux WITH KEY
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc NE 0. "Checando se registro já existia
"Buscar Saldo para novo registro.
CLEAR itab_zycit013.
READ TABLE itab_zycit013 WITH KEY
...
"Buscar dados complementares da EKKN ( Divisão )
"Selecionando a divisão dos itens de pedidos
SELECT SINGLE gsber
INTO itab_zycit003-gsber
FROM ekkn "for all entries in itab_itens
WHERE ebeln = itab_zycit003-ebeln
AND ebelp = itab_zycit003-ebelp.
APPEND itab_zycit003.
"Copia registros atualizados
APPEND itab_zycit003 TO itab_zycit003_aux.
ELSE.
MESSAGE w061 WITH text-002 itab_zycit003-ebelp
text-003 itab_zycit003-ebeln.
ENDIF.
* >> Início da inclusão: FORM ALTERA_ITAB_ITAB_ZYCIT003
ENDIF.
* << Fim da inclusão
ENDFORM. " ALTERA_ITAB_ZYCIT003
*& *
*& Form GRAVA_TABELAS
*& *
* Gravando dados nas tebelas relacionadas a Embarcação
* *
FORM grava_tabelas.
...
...
IF /pws/zycit000-flagbl IS INITIAL.
/pws/zycit093-paemb = /pws/zycit001-paorigem.
/pws/zycit093-padest = /pws/zycit001-padest.
/pws/zycit093-paispae = /pws/zycit001-paispao.
ENDIF.
MODIFY /pws/zycit093.
ENDIF.
ENDIF.
MODIFY /pws/zycit356 FROM /pws/zycie356.
* >> Início da inclusão: FORM GRAVA_TABELAS
if /pws/zycie001-regime eq '14'.
perform salva_dados_da.
endif.
* << Fim da inclusão
CLEAR itab_zycit003_del.
REFRESH itab_zycit003_del.
DELETE FROM /pws/zycit001 WHERE nrseq = space.
* Exit Salvar
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI001'
'EMB003'.
...
...
"Andando pelos itens da embarcação e checando diferenças com EKKO/EKPO
LOOP AT itab_zycit003.
CLEAR itab_itens_aux.
READ TABLE itab_itens_aux WITH KEY ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0. "Se existir verif. se houve alteraçao
* move: itab_itens_aux-txz01 to itab_zycit003-descr,
* itab_itens_aux-meins to itab_zycit003-meins,
PERFORM load_pttext USING itab_itens_aux-matnr
itab_itens_aux-spras.
MOVE: itab_itens_aux-netpr TO itab_zycit003-netpr,
itab_itens_aux-bednr TO itab_zycit003-bednr,
itab_itens_aux-uebto TO itab_zycit003-uebto,
itab_itens_aux-uebtk TO itab_zycit003-uebtk,
itab_itens_aux-lifnr TO itab_zycit003-lifnr,
itab_itens_aux-j_1bnbm TO itab_zycit003-j_1bnbm,
* >> Início da exclusão: FORM VERIFICA_ITENS
itab_itens_aux-werks TO itab_zycit003-werks,
* << Fim da exclusão
* >> Início da inclusão: FORM VERIFICA_ITENS
itab_itens_aux-werks TO itab_zycit003-werks.
* << Fim da inclusão
* >> Início da inclusão: FORM VERIFICA_ITENS
IF NOT itab_itens_aux-mfrnr IS INITIAL .
move itab_itens_aux-mfrnr TO itab_zycit003-lifnrfabr .
endif.
* << Fim da inclusão
...
FORM selecionar_itens.
DATA: itab_werks LIKE itab_zycit003 OCCURS 0 WITH HEADER LINE,
itab_t001w LIKE t001w OCCURS 0 WITH HEADER LINE.
DATA: v_nolin TYPE i VALUE IS INITIAL,
v_lifnr LIKE /pws/zycie001-lifnr,
* >> Início da exclusão: FORM SELECIONAR_ITENS
v_waers LIKE /pws/zycie001-waers,
* << Fim da exclusão
v_inco1 LIKE /pws/zycie001-inco1,
v_cont TYPE i.
IF sy-dynnr EQ '0300'.
"Requisito minimo para selecao de itens
CLEAR v_cont .
IF so_lifnr+3(1) EQ ' '.
v_cont = v_cont + 1 .
ENDIF.
IF so_bednr+3(1) EQ ' '.
v_cont = v_cont + 1.
ENDIF.
IF so_ebeln+3(1) EQ ' '.
v_cont = v_cont + 1.
ENDIF.
...
...
FORM atualiza_variaveis.
* >> Início da inclusão: FORM ATUALIZA_VARIAVEIS
IF ok_code EQ 'PED'.
* << Fim da inclusão
pa_bukrs = /pws/zycie001-bukrs.
so_werks = /pws/zycie001-werks.
IF NOT /pws/zycie001-lifnr IS INITIAL AND so_lifnr+3(1) EQ ' '.
FREE so_lifnr.
so_lifnr-sign = 'I'.
so_lifnr-option = 'EQ'.
so_lifnr-low = /pws/zycie001-lifnr.
APPEND so_lifnr.
ENDIF.
IF NOT /pws/zycie001-waers IS INITIAL AND so_waers+3(1) EQ ' '.
FREE so_waers.
so_waers-sign = 'I'.
so_waers-option = 'EQ'.
so_waers-low = /pws/zycie001-waers.
APPEND so_waers.
ENDIF.
IF NOT /pws/zycie001-inco1 IS INITIAL AND so_inco1+3(1) EQ ' '.
FREE so_inco1.
so_inco1-sign = 'I'.
so_inco1-option = 'EQ'.
so_inco1-low = /pws/zycie001-inco1.
APPEND so_inco1.
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_VARIAVEIS
ENDIF.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F02
...
IF sy-subrc EQ 0.
PERFORM find_nrseq_emp USING itab_zyglt006-range
CHANGING /pws/zycie001-nrseq.
ELSE.
MESSAGE i061 WITH text-136.
ENDIF.
ENDIF.
ELSE.
PERFORM find_nrseqc.
PERFORM find_embarca.
ENDIF.
ENDIF.
"Verifica alterações nos itens do pedido e atualiza.
* >> Início da inclusão: FORM LOAD_DATA
if /pws/zycie001-regime ne '14'.
* << Fim da inclusão
PERFORM verifica_itens.
* >> Início da inclusão: FORM LOAD_DATA
else.
PERFORM verifica_itens_da.
endif.
* << Fim da inclusão
...
...
v_contador = 0.
IF v_status_s NE '0'.
LOOP AT itab_zycit003 WHERE mark EQ 'X'.
v_ip = sy-tabix.
v_contador = v_contador + 1.
ENDLOOP.
ELSE.
LOOP AT itab_zycit003 WHERE mark EQ 'X'.
v_contador = v_contador + 1.
ENDLOOP.
ENDIF.
IF v_contador NE 1.
MESSAGE s015 WITH text-062.
ELSE.
READ TABLE itab_zycit003 WITH KEY mark = 'X'.
MOVE-CORRESPONDING itab_zycit003 TO /pws/zycie003.
v_centro = ' '.
v_saldo = itab_zycit003-slqtde.
* >> Início da inclusão: FORM_TRATA_DETITEM
if /pws/zycie001-regime eq '14'.
v_totemb = /pws/zycie003-menge.
else.
* << Fim da inclusão
READ TABLE itab_komv WITH KEY ebeln = /pws/zycie003-ebeln
kposn = /pws/zycie003-ebelp
kschl = 'Z0X1'.
IF sy-subrc EQ 0.
IF itab_komv-kpein NE 0.
v_totemb = itab_komv-kbetr / itab_komv-kpein
* /pws/zycie003-qtd_iten.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM_TRATA_DETITEM
endif.
* << Fim da inclusão
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F03
FORM atualiza_encer.
...
SELECT SINGLE dtencer status status_e FROM /pws/zycit001
INTO (/pws/zycie001-dtencer,
/pws/zycie001-status, /pws/zycie001-status_e )
WHERE nrseq EQ /pws/zycie001-nrseq.
ENDFORM. " atualiza_encer
* >> Início da inclusão: FORM TRATA_SCREEN_0102
*& *
*& Form trata_screen_0102
*& *
* Tela 0102
* *
FORM trata_screen_0102.
"Tratando campos da table control
IF v_status_s = 0.
LOOP AT tc_ped-cols INTO wa_cols.
wa_cols-screen-input = '0'.
MODIFY tc_ped-cols FROM wa_cols.
ENDLOOP.
ELSEIF v_status_s = 1.
LOOP AT tc_ped-cols INTO wa_cols.
IF wa_cols-screen-group1 NE 'OUT'.
wa_cols-screen-input = '1'.
ENDIF.
IF v_di EQ 'S'.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-QTD_ITEND' .
wa_cols-screen-input = '0'.
ENDIF.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-NTGEWD' .
wa_cols-screen-input = '0'.
ENDIF.
ENDIF.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-TPNF' .
IF v_nf EQ 'X'.
wa_cols-screen-input = '0'.
ELSE.
wa_cols-screen-input = '1'.
ENDIF.
ENDIF.
MODIFY tc_ped-cols FROM wa_cols.
ENDLOOP.
ENDIF.
ENDFORM. " trata_screen_0102
*& *
*& Form selecionar_da
*& *
* Chamado Data Descrição
* 290246 18/04/06 Seleção de dados da DA
*& *
FORM selecionar_da.
*Fazer as selecoes dos itens com a itabs da selection options.
"Selecionando itens da DA
SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs
/pws/zycit442~dtdesemb /pws/zycit460~lifnr /pws/zycit443~ebeln
/pws/zycit443~ebelp /pws/zycit443~matnr /pws/zycit463~lote_forn
/pws/zycit463~numfatura /pws/zycit463~qtd_lote
/pws/zycit463~qtd_nac
FROM ( /pws/zycit442 INNER JOIN /pws/zycit460 ON
/pws/zycit442~nrseqda = /pws/zycit460~nrseqda
INNER JOIN /pws/zycit443 ON
/pws/zycit442~nrseqda = /pws/zycit443~nrseqda
INNER JOIN /pws/zycit463 ON
/pws/zycit463~nrseqda = /pws/zycit443~nrseqda )
INTO TABLE itab_da
WHERE /pws/zycit442~bukrs EQ pa_buk
AND /pws/zycit460~lifnr IN so_lifn
AND /pws/zycit442~nrseqda IN so_nrseq
AND /pws/zycit442~nrdi IN so_nrda
AND /pws/zycit443~ebeln IN so_beln
AND /pws/zycit443~ebelp IN so_belp
AND /pws/zycit443~matnr IN so_matn.
IF NOT itab_da[] IS INITIAL.
MOVE ITAB_DA[] TO ITAB_DA_AUX[].
loop at itab_da.
if itab_da-qtd_lote is initial.
delete itab_da.
elseif itab_da-qtd_nac eq itab_da-qtd_lote and
not itab_da-qtd_nac is initial .
delete itab_da .
else.
if not itab_da-qtd_nac is initial.
itab_da-qtd_lote = itab_da-qtd_lote - itab_da-qtd_nac.
clear itab_da-qtd_nac.
modify itab_da.
endif.
endif.
endloop.
DESCRIBE TABLE itab_da LINES v_line.
IF v_line GT '1'.
CALL SCREEN '0003'.
ELSE.
PERFORM selecionar_itens_da.
ENDIF.
ELSE.
MESSAGE s015 WITH text-259.
ENDIF.
ENDFORM. " selecionar_da
*& *
*& Form trata_delp
*& *
FORM trata_delp.
CASE ts_embar-activetab.
WHEN 'FC_PED' .
LOOP AT itab_zycit003 WHERE mark = 'X'.
IF itab_zycit003-nrseqli IS INITIAL AND
itab_zycit003-nrseqlsi IS INITIAL.
CLEAR v_tabix.
v_tabix = sy-tabix.
* IF itab_zycit003-nrseq_pgfat IS INITIAL.
*PWS238018 inicio
READ TABLE itab_zycit094 WITH KEY
nrseq = itab_zycit003-nrseq.
IF sy-subrc EQ 0.
MESSAGE w015 WITH text-246.
EXIT.
ENDIF.
*PWS238018 fim
READ TABLE itab_zycit263 WITH KEY
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp
eliminado = space.
IF sy-subrc NE 0.
CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT013'
EXPORTING
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
DELETE itab_zycit003 INDEX v_tabix.
CLEAR itab_zycit003.
ELSE.
MESSAGE w015 WITH text-043.
EXIT.
ENDIF.
MOVE:itab_zycit003-ebeln TO itab_zycit003_del-ebeln,
itab_zycit003-ebelp TO itab_zycit003_del-ebelp,
itab_zycit003-qtd_iten TO itab_zycit003_del-qtd_iten.
APPEND itab_zycit003_del.
ELSE.
MESSAGE w015 WITH text-190.
EXIT.
ENDIF.
ENDLOOP.
WHEN 'FC_FORNEC'.
LOOP AT itab_zycit125 WHERE mark = 'X'.
DELETE itab_zycit125 INDEX sy-tabix.
CLEAR itab_zycit125.
ENDLOOP.
when 'FC_DA'.
LOOP AT itab_zycit003 WHERE mark = 'X'.
IF itab_zycit003-nrseqli IS INITIAL AND
itab_zycit003-nrseqlsi IS INITIAL.
CLEAR v_tabix.
v_tabix = sy-tabix.
READ TABLE itab_zycit094 WITH KEY
nrseq = itab_zycit003-nrseq.
IF sy-subrc EQ 0.
MESSAGE w015 WITH text-246.
EXIT.
ENDIF.
MOVE:itab_zycit003-ebeln TO itab_zycit003_del-ebeln,
itab_zycit003-ebelp TO itab_zycit003_del-ebelp,
itab_zycit003-qtd_iten TO itab_zycit003_del-qtd_iten.
APPEND itab_zycit003_del.
ELSE.
MESSAGE w015 WITH text-190.
EXIT.
ENDIF.
ENDLOOP.
ENDCASE.
ENDFORM. " trata_delp
*& *
*& Form trata_screen_0101
*& *
FORM trata_screen_0101.
CLEAR v_linha.
DESCRIBE TABLE itab_zycit003 LINES v_linha.
"Tratando campos de tela
LOOP AT SCREEN.
IF v_status_s = 0.
"Passa campos de entrada para apenas saída
IF screen-group1 NE 'TAB'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
IF screen-group2 EQ 'ADM'.
IF /pws/zycie001-tpdecl EQ 'DSI'.
IF /pws/zycie001-regime EQ '09'.
screen-invisible = '0'.
ELSE.
screen-invisible = '1'.
ENDIF.
ELSEIF /pws/zycie001-tpdecl EQ 'DI'.
IF /pws/zycie001-regime EQ '05'.
screen-invisible = '0'.
ELSE.
screen-invisible = '1'.
ENDIF.
ELSE.
screen-invisible = '1'.
ENDIF.
ENDIF.
IF /pws/zycie001-regime EQ '14'.
IF screen-group2 EQ 'DA'.
screen-invisible = '0'.
ENDIF.
IF screen-group2 EQ 'PED'.
screen-invisible = '1'.
ENDIF.
ELSE.
IF screen-group2 EQ 'DA'.
screen-invisible = '1'.
ENDIF.
IF screen-group2 EQ 'PED'.
screen-invisible = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
MODIFY SCREEN.
ELSEIF v_status_s = 1.
"Retorna campos para entrada
IF screen-group1 NE 'OUT'.
screen-input = '1'.
ELSEIF screen-group1 EQ 'OUT'
"and sy-tcode eq '/PWS/ZYCI001_C'
AND screen-group2 NE 'OUT'
AND v_linha EQ 0.
screen-input = '1'.
ELSE.
screen-input = '0'.
ENDIF.
MODIFY SCREEN.
IF screen-name EQ '/PWS/ZYCIE001-MODALIDADE'.
IF v_modemb = 'X'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF v_status_s EQ '1'.
IF screen-name EQ '/PWS/ZYCIE001-NAPOLICE'
OR screen-name EQ '/PWS/ZYCIE001-DTAPOLICE'
OR screen-name EQ '/PWS/ZYCIE001-VLAPOLICE'.
IF /pws/zycie001-apocalcao IS INITIAL.
screen-input = 0.
CLEAR: /pws/zycie001-napolice,
/pws/zycie001-dtapolice,
/pws/zycie001-vlapolice.
ELSE.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-NAVIO'.
IF /pws/zycie001-meioemba EQ 'MA' OR
/pws/zycie001-meioemba EQ 'FL'.
screen-input = 1.
MODIFY SCREEN.
IF screen-group3 EQ 'VER'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-NAVIO'.
IF /pws/zycie001-meioemba EQ 'MA' OR
/pws/zycie001-meioemba EQ 'FL'.
screen-input = 1.
MODIFY SCREEN.
IF screen-group3 EQ 'VER'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ELSE.
IF screen-group3 EQ 'VER'.
screen-input = 0.
MODIFY SCREEN.
CLEAR: /pws/zycie001-navio,
v_bande.
ENDIF.
ENDIF.
ENDIF.
IF screen-group2 EQ 'ADM'.
IF /pws/zycie001-tpdecl EQ 'DSI'.
IF /pws/zycie001-regime EQ '09'.
screen-invisible = '0'.
MOVE 'X' TO v_flagadm.
ELSE.
screen-invisible = '1'.
MOVE space TO v_flagadm.
ENDIF.
ELSEIF /pws/zycie001-tpdecl EQ 'DI'.
IF /pws/zycie001-regime EQ '05'.
screen-invisible = '0'.
MOVE 'X' TO v_flagadm.
ELSE.
screen-invisible = '1'.
MOVE space TO v_flagadm.
ENDIF.
ELSE.
screen-invisible = '1'.
MOVE space TO v_flagadm.
ENDIF.
ENDIF.
MODIFY SCREEN.
IF screen-group1 EQ 'VIN'.
IF NOT /pws/zycie001-nacional IS INITIAL.
screen-input = '1'.
ELSE.
CLEAR: /pws/zycie001-tpvinculo,
/pws/zycie001-nrseqref.
screen-input = '0'.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name = '/PWS/ZYCIE001-MEIOEMBA'.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc = 0 AND NOT /pws/zycie001-nrseq IS INITIAL.
screen-input = 0.
MODIFY SCREEN.
ELSE.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF /pws/zycie001-regime EQ '14'.
IF screen-group2 EQ 'DA'.
screen-invisible = '0'.
ENDIF.
IF screen-group2 EQ 'PED'.
screen-invisible = '1'.
ENDIF.
ELSE.
IF screen-group2 EQ 'DA'.
screen-invisible = '1'.
ENDIF.
IF screen-group2 EQ 'PED'.
screen-invisible = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF NOT /pws/zycit000-flagbl IS INITIAL.
IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR
screen-name EQ '/PWS/ZYCIE001-PAISPAO' OR
screen-name EQ '/PWS/ZYCIE001-PADEST' OR
screen-name EQ '/PWS/ZYCIE001-PAISPA' OR
screen-name EQ '/PWS/ZYCIE001-NAVIO' OR
screen-name EQ 'V_CIDORIG' OR
screen-name EQ 'V_CIDEST'.
screen-required = 0.
screen-input = 0.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ELSE.
IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR
screen-name EQ '/PWS/ZYCIE001-PAISPAO' OR
screen-name EQ '/PWS/ZYCIE001-PADEST'.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc NE 0.
IF v_status_s = 1.
screen-input = 1.
ELSE.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDIF.
IF screen-name = '/PWS/ZYCIE001-EMBARCA'.
IF v_status_s = '1'.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc NE 0 OR /pws/zycie001-nrseq IS INITIAL.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDIF.
IF screen-name = '/PWS/ZYCIE001-DT_ENT_DE' OR
screen-name = '/PWS/ZYCIE001-DT_ENT_ATE'.
IF /pws/zycie001-regime = '02' AND v_status_s = 0.
screen-input = 0.
screen-invisible = 0.
ELSEIF /pws/zycie001-regime = '02'.
screen-input = 1.
screen-invisible = 0.
ELSE.
screen-input = 0.
screen-invisible = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-NRDESPADU'.
IF NOT /pws/zycit000-oil IS INITIAL.
screen-required = '1'.
ELSE.
screen-required = 0 .
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-REGIME'.
LOOP AT itab_zycit003 WHERE NOT nrseqlsi IS initial.
screen-input = 0.
ENDLOOP.
IF /pws/zycie001-meioemba = 'PS'. "Beth 18/07/03
screen-input = 1.
MODIFY SCREEN.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF /pws/zycie001-modalidade EQ '02'.
IF screen-group1 EQ 'SER'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF /pws/zycie001-modalidade NE '02'
AND /pws/zycie001-modalidade NE '03'.
IF screen-name EQ '/PWS/ZYCIE001-TPSERV'.
screen-input = 0.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
PERFORM trata_obrig4.
ENDLOOP.
ENDFORM. " trata_screen_0101
*& *
*& Form trata_obrig4
*& *
FORM trata_obrig4.
*chamado 290246 inicio
IF screen-name EQ '/PWS/ZYCIE001-BUKRS' OR
screen-name EQ '/PWS/ZYCIE001-J_1BBRANCH' OR
screen-name EQ '/PWS/ZYCIE001-MODALIDADE' OR
screen-name EQ '/PWS/ZYCIE001-TPDECL' OR
screen-name EQ '/PWS/ZYCIE001-REGIME' OR
screen-name EQ '/PWS/ZYCIE001-MEIOEMBA'.
IF /pws/zycie001-regime EQ '14'.
screen-required = '0'.
MODIFY SCREEN.
ELSE.
screen-required = '1'.
MODIFY SCREEN.
ENDIF.
ENDIF.
*chamado 290246 fim
ENDFORM. " trata_obrig4
*& *
*& Form verifica_itens_da
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM verifica_itens_da.
DATA: v_ebelp LIKE konv-kposn, "Iten do tamanho do da konv
* Tabela criada para melhorar a performance do programa
itab_zycit100_per LIKE /pws/zycit100 OCCURS 0 WITH HEADER LINE.
clear /pws/zycie001-netpr.
IF ( sy-tcode = '/PWS/ZYCI001_E' OR
sy-tcode = '/PWS/ZYCI001_A' ) AND
( okcode = 'P-' OR okcode = 'P ' OR
okcode = 'P+' OR okcode = 'P++' ). " or okcode is initial ).
ELSEIF okcode EQ 'SELE_DA' OR okcode EQ 'ENTE' OR okcode EQ 'SAVE' OR
okcode EQ 'FAT'.
IF sy-tcode EQ '/PWS/ZYCI001_C' AND okcode EQ 'SAVE'.
CALL FUNCTION '/PWS/ZYCI_ENQUEUE_ZYCIT001'
EXPORTING
nrseq = /pws/zycie001-nrseq.
ENDIF.
CHECK NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
FOR ALL ENTRIES IN itab_zycit003 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
eliminado = space.
FREE itab_itens_aux.
CLEAR itab_itens_aux.
*Selecionar DA atualizada
SELECT SINGLE * FROM /pws/zycit455
WHERE nrseq EQ /pws/zycie001-nrseq.
SELECT * FROM /pws/zycit443
INTO TABLE itab_zycit443_aux
FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp.
DELETE itab_zycit443_aux WHERE nrseqda NE /pws/zycit455-nrseqda.
"Andando pelos itens da embarcação e checando diferenças com EKKO/EKPO
LOOP AT itab_zycit003.
PERFORM load_pttext USING itab_zycit003-matnr
sy-langu.
PERFORM: aplicacao.
MODIFY itab_zycit003.
ENDLOOP.
PERFORM calcula_saldo_da.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc = 0.
SELECT SINGLE * FROM /pws/zycit093
WHERE nrseqce = /pws/zycit094-nrseqce.
IF sy-subrc = 0.
CLEAR v_tot_ntgew.
LOOP AT itab_zycit003.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
ENDLOOP.
IF v_tot_ntgew > /pws/zycit093-brgew.
MESSAGE w015 WITH text-045.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
SELECT SINGLE * FROM /pws/zycbt007.
CLEAR /pws/zycie001-netpr.
READ TABLE itab_zycit003 INDEX 1.
MOVE itab_zycit003-waers TO v_moeda.
LOOP AT itab_zycit003 WHERE waers NE v_moeda.
v_waers_diferente = 'X'.
ENDLOOP.
IF sy-subrc NE 0.
/pws/zycie001-waers = v_moeda.
ELSE.
/pws/zycie001-waers = /pws/zycbt007-waersa.
IF /pws/zycbt007-waersa IS INITIAL.
MESSAGE e015 WITH text-213.
ENDIF.
* /pws/zycie001-waers = v_moeda.
ENDIF.
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
/pws/zycie001-netpr = /pws/zycie001-netpr + v_netpr.
IF /pws/zycie001-netpr < 0.
CLEAR /pws/zycie001-netpr.
MESSAGE e061 WITH text-235 text-236.
ENDIF.
* Atualiza Tipo de NF
SELECT SINGLE j_1bmatuse INTO ekpo-j_1bmatuse
FROM ekpo
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp.
SELECT SINGLE tpnf tpnf_ld tpnf_db tpnf_icms INTO
CORRESPONDING FIELDS OF /pws/zycit012
FROM /pws/zycit012
WHERE j_1bmatuse EQ ekpo-j_1bmatuse.
READ TABLE itab_zycit100_per WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
* Verificando se é drawback.
IF itab_zycit003-tpnf IS INITIAL.
READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
IF NOT itab_zycit003-nrseqd IS INITIAL
AND NOT /pws/zycit012-tpnf_db IS INITIAL.
itab_zycit003-tpnf = /pws/zycit012-tpnf_db.
* Verificando se é ICMS deferido
ELSEIF /pws/zycit100-icms_dif EQ 'X'
AND NOT /pws/zycit012-tpnf_icms IS INITIAL.
itab_zycit003-tpnf = /pws/zycit012-tpnf_icms.
ELSE.
itab_zycit003-tpnf = /pws/zycit012-tpnf.
REFRESH itab_zycit263.
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
FOR ALL ENTRIES IN itab_zycit003 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
eliminado = space.
ENDIF.
READ TABLE itab_zycit263 WITH KEY ebeln = itab_zycit263-ebeln
ebelp = itab_zycit263-ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE frpagto INTO /pws/zycit006-frpagto
FROM /pws/zycit006
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.
IF sy-subrc EQ 0.
IF /pws/zycit006-frpagto EQ 'A'.
itab_zycit003-tpnf = /pws/zycit012-tpnf_ld.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
READ TABLE itab_zycit443_aux WITH KEY
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
IF itab_zycit003-ntgew IS INITIAL AND
itab_zycit443_aux-gewei = 'G' AND NOT
itab_zycit003-qtd_iten IS INITIAL.
itab_zycit003-ntgew = 1 / 1000.
ENDIF.
ENDIF.
MODIFY itab_zycit003 INDEX v_tabix.
ENDLOOP.
ENDFORM. " verifica_itens_da
*& *
*& Form atualiza_itens_da
*& *
FORM atualiza_itens_da.
ENDFORM. " atualiza_itens_da
*& *
*& Form trata_screen_0111
*& *
FORM trata_screen_0111.
"Tratando campos da table control
IF v_status_s = 0.
LOOP AT tc_da-cols INTO wa_cols.
wa_cols-screen-input = '0'.
MODIFY tc_da-cols FROM wa_cols.
ENDLOOP.
ELSEIF v_status_s = 1.
LOOP AT tc_da-cols INTO wa_cols.
IF wa_cols-screen-group1 NE 'OUT'.
wa_cols-screen-input = '1'.
ENDIF.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-TPNF' .
IF v_nf EQ 'X'.
wa_cols-screen-input = '0'.
ELSE.
wa_cols-screen-input = '1'.
ENDIF.
ENDIF.
MODIFY tc_da-cols FROM wa_cols.
ENDLOOP.
ENDIF.
ENDFORM. " trata_screen_0111
*& *
*& Form carrega_estrutura
*& *
FORM carrega_estrutura.
MOVE-CORRESPONDING itab_zycit003 TO /pws/zycie003.
* Copia registros atualizados
REFRESH itab_zycit003_aux.
MOVE itab_zycit003[] TO itab_zycit003_aux[].
ENDFORM. " carrega_estrutura
*& *
*& Form selecionar_itens_da
*& *
FORM selecionar_itens_da.
DATA: itab_werks LIKE itab_zycit003 OCCURS 0 WITH HEADER LINE,
itab_t001w LIKE t001w OCCURS 0 WITH HEADER LINE.
clear : /pws/zycie001-netpr.
if v_line gt '1'.
delete itab_da where qtd_nac is initial.
endif.
read table itab_da index 1.
IF NOT itab_da[] IS INITIAL and /pws/zycie001-regime eq '14'.
SELECT SINGLE * FROM /pws/zycit442
WHERE nrseqda EQ itab_da-nrseqda
and codreg eq '02'.
"Se a DA estiver finalizada.
IF /pws/zycit442-statusfin NE space.
MESSAGE i015 WITH text-255.
EXIT.
ENDIF.
SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443
FOR ALL ENTRIES IN itab_da
WHERE nrseqda EQ itab_da-nrseqda.
ENDIF.
IF NOT /pws/zycit442 IS INITIAL.
MOVE :
/pws/zycit442-agente TO /pws/zycie001-agente ,
/pws/zycit442-bukrs TO /pws/zycie001-bukrs ,
/pws/zycit442-dtsaida TO /pws/zycie001-dtsaida ,
/pws/zycit442-inco1 TO /pws/zycie001-inco1 ,
/pws/zycit442-meiotransp TO /pws/zycie001-meioemba ,
/pws/zycit442-moddesps TO /pws/zycie001-modalidade ,
/pws/zycit442-embarca TO /pws/zycie001-navio .
ENDIF.
loop at itab_da.
MOVE : itab_da-ebeln TO itab_nac-ebeln,
itab_da-ebelp TO itab_nac-ebelp,
itab_da-qtd_nac TO itab_nac-qtd_nac.
COLLECT itab_nac.
endloop.
LOOP AT itab_zycit443 .
v_tabix = sy-tabix.
READ TABLE itab_nac WITH KEY ebeln = itab_zycit443-ebeln
ebelp = itab_zycit443-ebelp.
IF sy-subrc EQ 0.
itab_zycit443-qtd_iten = itab_nac-qtd_nac.
MODIFY itab_zycit443 INDEX v_tabix.
ENDIF.
ENDLOOP.
clear itab_nac.
refresh itab_nac.
PERFORM calcula_saldo_da.
"Movendo itens da DA para os itens do Embarque
LOOP AT itab_zycit443.
MOVE:
itab_zycit443-advalicms TO itab_zycit003-advalicms ,
itab_zycit443-advalii TO itab_zycit003-advalii ,
itab_zycit443-advalipi TO itab_zycit003-advalipi,
itab_zycit443-aliqicms TO itab_zycit003-aliqicms ,
itab_zycit443-aliqii TO itab_zycit003-aliqii ,
itab_zycit443-aliqipi TO itab_zycit003-aliqipi ,
itab_zycit443-basred TO itab_zycit003-basred ,
itab_zycit443-ebeln TO itab_zycit003-ebeln ,
itab_zycit443-ebelp TO itab_zycit003-ebelp ,
itab_zycit443-extarif_al TO itab_zycit003-extarif_al ,
itab_zycit443-ii_anoemiss TO itab_zycit003-ii_anoemiss,
itab_zycit443-ii_extarif TO itab_zycit003-ii_extarif ,
itab_zycit443-ii_numero TO itab_zycit003-ii_numero ,
itab_zycit443-ii_orgemiss TO itab_zycit003-ii_orgemiss ,
itab_zycit443-ii_tipo TO itab_zycit003-ii_tipo ,
itab_zycit443-impmerco TO itab_zycit003-indic_obrig ,
itab_zycit443-ipi_anoemiss TO itab_zycit003-ipi_anoemiss,
itab_zycit443-ipi_extarif TO itab_zycit003-ipi_extarif,
itab_zycit443-ipi_numero TO itab_zycit003-ipi_numero,
itab_zycit443-ipi_orgemiss TO itab_zycit003-ipi_orgemiss,
itab_zycit443-ipi_tipo TO itab_zycit003-ipi_tipo,
itab_zycit443-j_1bnbm TO itab_zycit003-j_1bnbm,
itab_zycit443-lifnr TO itab_zycit003-lifnr,
itab_zycit443-matnr TO itab_zycit003-matnr,
itab_zycit443-meins TO itab_zycit003-meins,
itab_zycit443-meinsest TO itab_zycit003-meinsest,
itab_zycit443-QTD_ITEN to itab_zycit003-menge,
itab_zycit443-modalidade TO itab_zycit003-modalidade,
itab_zycit443-naladi TO itab_zycit003-naladi,
itab_zycit443-naladincca TO itab_zycit003-naladincca,
itab_zycit443-netpr TO itab_zycit003-netpr,
itab_zycit443-nrdrawback TO itab_zycit003-nrdrawback,
itab_zycit443-nrli TO itab_zycit003-nrli,
itab_zycit443-nrseq TO itab_zycit003-nrseq,
itab_zycit443-nrseqli TO itab_zycit003-nrseqli,
itab_zycit443-orgemiss_al TO itab_zycit003-orgemiss_al,
itab_zycit443-QTD_ITEN to itab_zycit003-QTD_ITEN ,
itab_zycit443-qtd_itend TO itab_zycit003-qtd_itend,
itab_zycit443-qtdeumest TO itab_zycit003-qtdeumest,
itab_zycit443-tipo_al TO itab_zycit003-tipo_al,
itab_zycit443-vlfre_fat TO itab_zycit003-vlfre_fat,
itab_zycit443-werks TO itab_zycit003-werks,
itab_zycit443-ad_anoemiss TO itab_zycit003-ad_anoemiss,
itab_zycit443-ad_extarif TO itab_zycit003-ad_extarif,
itab_zycit443-ad_numero TO itab_zycit003-ad_numero,
itab_zycit443-ad_orgemiss TO itab_zycit003-ad_orgemiss,
itab_zycit443-ad_tipo TO itab_zycit003-ad_tipo,
itab_zycit443-anoemiss_al TO itab_zycit003-anoemiss_al,
itab_zycit443-aplicacao TO itab_zycit003-aplicacao,
itab_zycit443-bednr TO itab_zycit003-bednr,
itab_zycit443-condmerc TO itab_zycit003-condmerc,
itab_zycit443-descr TO itab_zycit003-descr,
itab_zycit443-gewei TO itab_zycit003-gewei,
itab_zycit443-gsber TO itab_zycit003-gsber,
itab_zycit443-numero_al TO itab_zycit003-numero_al,
itab_zycit443-vlreal TO itab_zycit003-vlreal,
itab_zycit443-waersbem TO itab_zycit003-waers,
itab_zycit443-qtd_da to itab_zycit003-menge ,
itab_zycit443-netpr to itab_zycit003-V_FOB ,
/pws/zycie001-nrseq TO itab_zycit003-nrseq .
" Peso proporcional Qtde. Nacionalizada.
IF NOT ITAB_ZYCIT443-QTD_DA IS INITIAL.
itab_zycit003-ntgew = ( itab_zycit443-ntgew /
itab_zycit443-qtd_da ) * itab_zycit003-qtd_iten.
itab_zycit003-v_fob = ( itab_zycit443-netpr /
itab_zycit443-qtd_da ) * itab_zycit003-qtd_iten.
ENDIF.
" Saldo DA
itab_zycit003-sld_da = itab_zycit443-QTD_SLD =
itab_zycit443-qtd_da - itab_zycit443-qtd_util -
itab_zycit443-qtd_iten.
APPEND itab_zycit003.
ENDLOOP.
move itab_da[] to itab_da_aux[].
CLEAR itab_da. REFRESH itab_da.
READ TABLE itab_zycit003 INDEX 1 .
* IF itab_zycit003-inco1 IS INITIAL.
* MESSAGE e015 WITH text-224.
* ENDIF.
MOVE: itab_zycit003-lifnr TO v_lifnr,
itab_zycit003-waers TO v_waers,
* itab_zycit003-inco1 TO v_inco1,
itab_zycit003-waers TO /pws/zycie000-waers,
itab_zycit003-lifnr TO /pws/zycie000-lifnr.
"Checando se Moeda, Fornecedor, Incorterm veio diferente.
LOOP AT itab_zycit003 WHERE waers NE v_waers.
v_waers_diferente = 'X'.
ENDLOOP.
CLEAR v_werks_prod.
MOVE itab_zycit003[] TO itab_werks[].
CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'
EXPORTING
i_bukrs = /pws/zycie001-bukrs
IMPORTING
e_all_productive = v_werks_prod.
IF v_werks_prod IS INITIAL.
MOVE: itab_zycit003-werks TO v_werks.
LOOP AT itab_zycit003 WHERE werks NE v_werks.
ENDLOOP.
IF sy-subrc EQ 0.
MESSAGE e015 WITH text-198 text-199.
ENDIF.
IF NOT itab_werks[] IS INITIAL.
LOOP AT itab_zycit003 WHERE werks NE v_werks.
ENDLOOP.
IF sy-subrc EQ 0.
MESSAGE e015 WITH text-198 text-199.
ENDIF.
ENDIF.
ENDIF.
IF NOT t001-land1 EQ 'CL' AND NOT t001-land1 EQ 'AR'.
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM t001w INTO TABLE itab_t001w
FOR ALL ENTRIES IN itab_zycit003
WHERE werks = itab_zycit003-werks.
LOOP AT itab_t001w WHERE j_1bbranch NE /pws/zycie001-j_1bbranch.
ENDLOOP.
IF sy-subrc EQ 0.
MESSAGE e015 WITH text-220.
ENDIF.
IF NOT itab_werks[] IS INITIAL.
SELECT * FROM t001w INTO TABLE itab_t001w
FOR ALL ENTRIES IN itab_werks
WHERE werks = itab_werks-werks.
LOOP AT itab_t001w WHERE j_1bbranch NE
/pws/zycie001-j_1bbranch .
ENDLOOP.
IF sy-subrc EQ 0.
MESSAGE e015 WITH text-220.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT itab_zycit003[] IS INITIAL.
SELECT ebeln ebelp gsber
INTO TABLE itab_divisao
FROM ekkn FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln = itab_zycit003-ebeln
AND ebelp = itab_zycit003-ebelp.
SELECT a~ebeln a~ebelp a~ematn
b~spart
c~gsber
INTO CORRESPONDING FIELDS OF TABLE itab_divisao2
FROM ( ( ekpo AS a INNER JOIN mara AS b
ON a~ematn = b~matnr )
INNER JOIN t134h AS c ON b~spart = c~spart
AND a~werks = c~bwkey )
FOR ALL ENTRIES IN itab_zycit003
WHERE a~ebeln = itab_zycit003-ebeln
AND a~ebelp = itab_zycit003-ebelp.
ENDIF.
LOOP AT itab_zycit003.
"Atualizando itens na itab_zycit003.
PERFORM load_pttext USING itab_zycit003-matnr
sy-langu.
IF itab_zycit003-j_1bnbm IS INITIAL.
IF t001-land1 EQ 'BR'.
SELECT SINGLE steuc FROM marc INTO itab_zycit003-j_1bnbm
WHERE matnr = itab_zycit003-matnr.
ELSE.
SELECT SINGLE steuc FROM marc INTO itab_zycit003-j_1bnbm
WHERE matnr = itab_zycit003-matnr
AND werks = ekpo-werks.
ENDIF.
ENDIF.
MODIFY itab_zycit003.
v_netpr = ( itab_zycit003-netpr * itab_zycit003-qtd_iten *
v_taxa ).
PERFORM tratar_decimais USING itab_zycit003-waers
CHANGING v_netpr.
/pws/zycie001-netpr = /pws/zycie001-netpr + v_netpr.
IF /pws/zycie001-netpr < 0.
CLEAR /pws/zycie001-netpr.
MESSAGE e061 WITH text-235 text-236.
ENDIF.
ENDLOOP.
ENDFORM. " selecionar_itens_da
*& *
*& Form user_command_0003
*& *
FORM user_command_0003.
CASE sy-ucomm.
WHEN 'ENTER'.
PERFORM: "trata_qtde_lote,
* consiste_da_diferentes,
selecionar_itens_da.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. " user_command_0003
*& *
*& Form carrega_estrutura_0003
*& *
FORM carrega_estrutura_0003.
MOVE :
itab_da-nrseqda TO /pws/zycie442-nrseqda ,
itab_da-ebeln TO /pws/zycie443-ebeln ,
itab_da-ebelp TO /pws/zycit443-ebelp ,
itab_da-matnr TO /pws/zycie443-matnr ,
itab_da-lote TO /pws/zycie463-lote_forn,
itab_da-qtd_lote TO /pws/zycie463-qtd_lote.
ENDFORM. " carrega_estrutura_0003
*& *
*& Form calcula_saldo_da
*& *
* chamado Data Descrição
* 290246 26/04/06 entreposto aduaneiro
* *
FORM calcula_saldo_da.
SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455
WHERE nrseqda EQ /pws/zycit442-nrseqda
AND nrseq NE /pws/zycie001-nrseq.
IF sy-subrc EQ 0.
SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443_saldo
FOR ALL ENTRIES IN itab_zycit455
WHERE nrseq EQ itab_zycit455-nrseq
AND ebeln EQ itab_zycit455-ebeln
AND ebelp EQ itab_zycit455-ebelp.
ENDIF.
DELETE ITAB_ZYCIT443_SALDO WHERE NRSEQDA NE /PWS/ZYCIT442-NRSEQDA.
clear v_qtdutil_da.
LOOP AT itab_zycit443 .
v_tabix = sy-tabix.
LOOP AT itab_zycit443_saldo WHERE ebeln = itab_zycit443-ebeln
AND ebelp = itab_zycit443-ebelp.
read table itab_zycit455 with key
ebeln = itab_zycit443_saldo-ebeln
ebelp = itab_zycit443_saldo-ebelp.
if sy-subrc = 0 and not itab_zycit455-nrseq is initial.
v_qtdutil_da = v_qtdutil_da + itab_zycit443_saldo-qtd_da.
endif.
ENDLOOP.
itab_zycit443-qtd_util = v_qtdutil_da.
MODIFY itab_zycit443 INDEX v_tabix.
ENDLOOP.
ENDFORM. " calcula_saldo_da
*& *
*& Form carrega_itab_003
*& *
* Atualizando estrutura
* *
FORM carrega_itab_003.
MODIFY itab_da INDEX tc_selda-current_line.
ENDFORM. " carrega_itab_003
*& *
*& Form trata_screen_0003
*& *
* text
* *
* > p1 text
* < p2 text
* *
FORM trata_screen_0003.
LOOP AT tc_selda-cols INTO wa_cols.
IF v_status_s = '0'.
wa_cols-screen-input = '0'.
ENDIF.
MODIFY tc_selda-cols FROM wa_cols.
ENDLOOP.
ENDFORM. " trata_screen_0003
*& *
*& Form salva_dados_da
*& *
form salva_dados_da.
loop at itab_zycit003_del.
delete itab_zycit455 where nrseq = /pws/zycie001-nrseq
and ebeln = itab_zycit003_del-ebeln
and ebelp = itab_zycit003_del-ebelp .
endloop.
loop at itab_da_aux.
update /pws/zycit463 set qtd_nac = itab_da_aux-qtd_nac
where nrseqda = itab_da_aux-nrseqda
and lote_forn = itab_da_aux-lote.
endloop.
loop at itab_zycit003.
update /pws/zycit455 set nrseq = itab_zycit003-nrseq
where nrseqda = /pws/zycit442-nrseqda
and ebeln = itab_zycit003-ebeln
and ebelp = itab_zycit003-ebelp .
endloop.
commit work.
endform. " salva_dados_da
*& *
*& Form carrega_itab_0111
*& *
form carrega_itab_0111.
MOVE-CORRESPONDING /pws/zycie003 to itab_zycit003.
MODIFY itab_zycit003 INDEX tc_da-current_line.
endform. " carrega_itab_0111
*& *
*& Form consiste_sld_da
*& *
form consiste_sld_da.
ITAB_ZYCIT003-SLD_DA = /PWS/ZYCIE003-MENGE - /pws/zycie003-qtd_iten.
endform. " consiste_sld_da
*& *
*& Form consiste_peso_da
*& *
* text
* *
* > p1 text
* < p2 text
* *
form consiste_peso_da.
/pws/zycie003-ntgew = ( itab_zycit443-ntgew /
itab_zycit443-qtd_da ) * /pws/zycie003-qtd_iten.
endform. " consiste_peso_da
*& *
*& Form carrega_instrucao
*& *
form carrega_instrucao.
*If sy-tcode = '/PWS/ZYCI001_C'.
* Loop at itab_zycit011 where nrseq = SO_IEMB-LOW.
* read table itab_zycit003 with key nrseq = /pws/zycie001-nrseq
* ebeln = itab_zycit011-ebeln
* ebelp = itab_zycit011-ebelp.
* If sy-subrc <> 0.
* Move: /pws/zycie001-nrseq to itab_zycit003-nrseq,
* itab_zycit011-ebelp to itab_zycit003-ebelp,
* itab_zycit011-ebeln to itab_zycit003-ebeln.
** Teste itab_zycit011-qtd_iten to itab_zycit003-qtd_iten.
* append itab_zycit003.
* Endif.
* Endloop.
*Endif.
* Copia registros atualizados
REFRESH itab_zycit003_aux.
MOVE itab_zycit003[] TO itab_zycit003_aux[].
*
SELECT SINGLE nrseqdi
FROM /pws/zycit100
INTO v_nrseqdi
WHERE nrseq = /pws/zycie001-nrseq.
IF NOT v_nrseqdi IS INITIAL.
SELECT SINGLE canal
FROM /pws/zycit085
INTO v_canal
WHERE nrseqdi = v_nrseqdi.
ENDIF.
SELECT SINGLE /pws/cotne
FROM t005
INTO v_cotne
WHERE land1 = /pws/zycie001-paispao.
* Verif. para Dt. Aloc. Produto (Cód. 02)
SELECT * FROM /pws/zycit390
INTO TABLE itab_zycit390.
* WHERE evento1 = '02' AND
* evento2 = '03' AND
* emb = /pws/zycie001-meioemba AND
* continente = v_cotne AND
* canal = v_canal.
* Carrega data de remessa.
LOOP AT itab_zycit003.
SELECT SINGLE eindt
FROM eket
INTO itab_zycit003_aux-dtremessa
WHERE ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
* Calcula a data provavel de entrega.
PERFORM verif_dtproventrega.
MODIFY itab_zycit003.
CLEAR itab_zycit003.
ENDLOOP.
endform. " carrega_instrucao
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001I01
...
IF NOT /pws/zycie003-ebeln IS INITIAL.
PERFORM altera_itab_zycit003.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
ENDMODULE.
MODULE user_command_0102 INPUT.
DATA v_ebeln1 LIKE rm06e-evrtn.
CASE okcode.
WHEN 'P-'.
* >> Início da exclusão: MODULE USER_COMMAND_0102
CHECK ts_embar-activetab = 'FC_PED'.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0102
IF ts_embar-activetab = 'FC_PED'.
* << Fim da inclusão
tc_ped-top_line = tc_ped-top_line - 10.
* >> Início da inclusão: MODULE USER_COMMAND_0102
ELSEIF ts_embar-activetab = 'FC_DA'.
tc_da-top_line = tc_da-top_line - 10.
ENDIF.
* << Fim da inclusão
WHEN 'P--'.
* >> Início da exclusão: MODULE USER_COMMAND_0102
CHECK ts_embar-activetab = 'FC_PED'.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0102
if ts_embar-activetab = 'FC_PED'.
* << Fim da inclusão
tc_ped-top_line = tc_ped-top_line - tc_ped-lines.
* >> Início da inclusão: MODULE USER_COMMAND_0102
ELSEIF ts_embar-activetab = 'FC_DA'.
tc_da-top_line = tc_da-top_line - tc_da-lines.
ENDIF.
* << Fim da inclusão
WHEN 'P+'.
* >> Início da exclusão: MODULE USER_COMMAND_0102
CHECK ts_embar-activetab = 'FC_PED'.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0102
if ts_embar-activetab = 'FC_PED'.
* << Fim da inclusão
tc_ped-top_line = tc_ped-top_line + 10.
* >> Início da inclusão: MODULE USER_COMMAND_0102
ELSEIF ts_embar-activetab = 'FC_DA'.
tc_da-top_line = tc_da-top_line + 10.
ENDIF.
* << Fim da inclusão
WHEN 'P++'.
* >> Início da exclusão: MODULE USER_COMMAND_0102
CHECK ts_embar-activetab = 'FC_PED'.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0102
if ts_embar-activetab = 'FC_PED'.
* << Fim da inclusão
tc_ped-top_line = tc_ped-top_line + tc_ped-lines.
* >> Início da inclusão: MODULE USER_COMMAND_0102
ELSEIF ts_embar-activetab = 'FC_DA'.
tc_da-top_line = tc_da-top_line + tc_da-lines.
ENDIF.
* << Fim da inclusão
WHEN 'POSI'.
CALL SCREEN 0002 STARTING AT 3 3.
WHEN 'SELE'.
GET CURSOR FIELD v_campo VALUE v_valor.
...
...
ELSEIF v_campo EQ '/PWS/ZYCIE003-NRSEQLI'.
SET PARAMETER ID '/PWS/ZYCIP078' FIELD v_valor.
PERFORM valida_trans USING '/PWS/ZYCI020_E' 'skip'.
ELSEIF v_campo EQ '/PWS/ZYCIE003-NRSEQLSI'.
SET PARAMETER ID '/PWS/ZYCIP078' FIELD v_valor.
PERFORM valida_trans USING '/PWS/ZYCI020_R' 'skip'.
ELSE.
MESSAGE s015 WITH text-025.
ENDIF.
WHEN 'DESM'.
* >> Início da exclusão: MODULE USER_COMMAND_0102
CHECK ts_embar-activetab = 'FC_PED'.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0102
if ts_embar-activetab = 'FC_PED' or
ts_embar-activetab = 'FC_DA' .
* << Fim da inclusão
LOOP AT itab_zycit003.
itab_zycit003-mark = ' '.
MODIFY itab_zycit003.
ENDLOOP.
* >> Início da inclusão: MODULE USER_COMMAND_0102
endif.
* << Fim da inclusão
WHEN OTHERS.
IF okcode NE 'SAVE'
AND okcode NE 'ENTE'
...
...
v_netpr = ( itab_zycit003-netpr * itab_zycit003-qtd_iten *
v_taxa ).
PERFORM tratar_decimais USING itab_zycit003-waers
CHANGING v_netpr.
/pws/zycie001-netpr = /pws/zycie001-netpr + v_netpr.
ENDLOOP.
ENDCASE.
ENDMODULE.
MODULE atualizar_itens INPUT.
DATA:v_ver_index LIKE sy-tabix.
* >> Início da inclusão: MODULE ATUALIZAR_ITENS
IF /pws/zycie001-regime NE '14'.
* << Fim da inclusão
PERFORM atualiza_itens.
* >> Início da inclusão: MODULE ATUALIZAR_ITENS
ELSE.
PERFORM atualiza_itens_da.
ENDIF.
* << Fim da inclusão
IF v_mexit = 'X'.
EXIT.
ENDIF.
* >> Início da inclusão: MODULE ATUALIZAR_ITENS
IF /pws/zycie001-regime NE '14'.
* << Fim da inclusão
PERFORM verifica_itens.
* >> Início da inclusão: MODULE ATUALIZAR_ITENS
ELSE.
PERFORM verifica_itens_da.
ENDIF.
* << Fim da inclusão
ENDMODULE.
MODULE verifica_peso INPUT.
ENDMODULE.
MODULE atualiza_itens INPUT.
IF NOT itab_zycit003[] IS INITIAL.
SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263
FOR ALL ENTRIES IN itab_zycit003 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
eliminado = space.
ENDIF.
* >> Início da inclusão: MODULE ATUALIZA_ITENS
IF /pws/zycie001-regime NE '14'.
* << Fim da inclusão
PERFORM verifica_itens.
* >> Início da inclusão: MODULE ATUALIZA_ITENS
ELSE.
PERFORM verifica_itens_da.
ENDIF.
* << Fim da inclusão
IF /pws/zycie003-qtd_iten > /pws/zycie003-menge.
MESSAGE w061 WITH text-004 itab_zycit003-ebelp
text-005 itab_zycit003-ebeln.
v_mexit = 'X'.
EXIT.
ELSE.
LOOP AT itab_zycit003.
v_indice = sy-tabix.
* >> Início da inclusão: MODULE ATUALIZA_ITENS
IF /pws/zycie001-regime NE '14'.
* << Fim da inclusão
PERFORM atualiza_itens.
* >> Início da inclusão: MODULE ATUALIZA_ITENS
ELSE.
PERFORM atualiza_itens_da.
ENDIF.
* << Fim da inclusão
PERFORM atualiza_serv.
MODIFY itab_zycit003 INDEX v_indice.
ENDLOOP.
ENDIF.
...
...
FROM /pws/zycit395
INTO v_agrup
WHERE codagrup EQ /pws/zycie003-agrupamento.
ENDIF.
ENDMODULE.
MODULE user_command_0050 INPUT.
DATA: v_flag2, v_fat, v_errodb.
DATA:v_cont1 TYPE n.
DATA: e_subrc LIKE sy-subrc ,
e_exec_okcode.
* >> Início da inclusão: MODULE USER_COMMAND_0050
e_subrc = 0.
* << Fim da inclusão
CLEAR v_flag2.
CLEAR v_cont1.
CLEAR: r_okcode, e_exec_okcode.
CALL METHOD cl_gui_cfw=>dispatch.
IF NOT r_okcode IS INITIAL.
okcode = r_okcode.
ENDIF.
IF /pws/zycie001-dtprevemb > /pws/zycie001-dtprevcheg.
IF NOT /pws/zycie001-dtprevcheg IS INITIAL.
MESSAGE w015 WITH text-250 text-251 text-252.
ENDIF.
ELSE.
* >> Início da inclusão: MODULE USER_COMMAND_0050
ENDIF.
* << Fim da inclusão
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI001'
'EMB001'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'EMB001' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa)
TABLES
...
...
WHEN 'DELE'.
LOOP AT itab_zycit396 WHERE marc EQ 'X'.
DELETE FROM /pws/zycit396
WHERE nrseq = itab_zycit396-nrseq AND
ebeln = itab_zycit396-ebeln AND
ebelp = itab_zycit396-ebelp AND
indice = itab_zycit396-indice.
ENDLOOP.
WHEN 'MALL'.
v_mark = 'X'.
* >> Início da inclusão: MODULE USER_COMMAND_0050
if ts_embar-activetab eq 'FC_DA'.
loop at itab_zycit003.
itab_zycit003-mark = 'X'.
modify itab_zycit003.
endloop.
endif.
* << Fim da inclusão
WHEN 'DESM'.
v_mark = ' '.
* >> Início da inclusão: MODULE USER_COMMAND_0050
if ts_embar-activetab eq 'FC_DA'.
loop at itab_zycit003.
itab_zycit003-mark = ' '.
modify itab_zycit003.
endloop.
endif.
* << Fim da inclusão
WHEN 'SAVE'.
PERFORM atualiza_itens.
PERFORM grava_tabelas.
IF /pws/zycie001-nrseq IS INITIAL.
EXIT.
ENDIF.
PERFORM log_mensagens.
LOOP AT itab_zycit125 WHERE lifnr EQ space.
ENDLOOP.
IF sy-subrc NE 0.
...
...
SELECT * FROM /pws/zycit100
INTO TABLE it_100_temp
WHERE nrseq EQ /pws/zycie001-nrseq.
IF sy-subrc EQ 0.
MESSAGE s015 WITH text-181 text-182.
EXIT.
ENDIF.
ENDIF.
CALL SELECTION-SCREEN '0300'.
WHEN 'DELP'.
* >> Início da exclusão: MODULE USER_COMMAND_0050
CASE ts_embar-activetab.
WHEN 'FC_PED'.
LOOP AT itab_zycit003 WHERE mark = 'X'.
IF itab_zycit003-nrseqli IS INITIAL AND
itab_zycit003-nrseqlsi IS INITIAL.
CLEAR v_tabix.
v_tabix = sy-tabix.
READ TABLE itab_zycit094 WITH KEY
nrseq = itab_zycit003-nrseq.
IF sy-subrc EQ 0.
MESSAGE w015 WITH text-246.
EXIT.
ENDIF.
READ TABLE itab_zycit263 WITH KEY
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp
eliminado = space.
IF sy-subrc NE 0.
CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT013'
EXPORTING
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
DELETE itab_zycit003 INDEX v_tabix.
CLEAR itab_zycit003.
ELSE.
MESSAGE w015 WITH text-043.
EXIT.
ENDIF.
MOVE:itab_zycit003-ebeln TO itab_zycit003_del-ebeln,
itab_zycit003-ebelp TO itab_zycit003_del-ebelp,
itab_zycit003-qtd_iten TO itab_zycit003_del-qtd_iten.
APPEND itab_zycit003_del.
ELSE.
MESSAGE w015 WITH text-190.
EXIT.
ENDIF.
ENDLOOP.
WHEN 'FC_FORNEC'.
LOOP AT itab_zycit125 WHERE mark = 'X'.
DELETE itab_zycit125 INDEX sy-tabix.
CLEAR itab_zycit125.
ENDLOOP.
ENDCASE.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0050
PERFORM trata_delp.
* << Fim da inclusão
WHEN 'MARC'.
CASE ts_embar-activetab .
* >> Início da exclusão: MODULE USER_COMMAND_0050
WHEN 'FC_PED'.
* << Fim da exclusão
* >> Início da inclusão: MODULE USER_COMMAND_0050
WHEN 'FC_PED' .
* << Fim da inclusão
LOOP AT itab_zycit003.
itab_zycit003-mark = 'X'.
MODIFY itab_zycit003.
ENDLOOP.
WHEN 'FC_FORNEC'.
LOOP AT itab_zycit125.
itab_zycit125-mark = 'X'.
MODIFY itab_zycit125.
* >> Início da inclusão: MODULE USER_COMMAND_0050
ENDLOOP.
when 'FC_DA'.
LOOP AT itab_zycit003.
itab_zycit003-mark = 'X'.
MODIFY itab_zycit003.
* << Fim da inclusão
ENDLOOP.
ENDCASE.
WHEN 'FACPED'.
PERFORM grava_tabelas.
PERFORM call_facped.
WHEN 'DETITEM'.
PERFORM trata_detitem.
WHEN 'PEDINST'.
CALL SELECTION-SCREEN '0104' .
WHEN 'COEMBAR'.
PERFORM verifica_alteracoes.
PERFORM busca_sequencial_copia.
LOOP AT itab_zycit003.
itab_zycit003-slqtde = itab_zycit003-slqtde
- itab_zycit003-qtd_iten.
MODIFY itab_zycit003 INDEX sy-tabix.
ENDLOOP.
CLEAR okcode.
ENDCASE.
* >> Início da exclusão: MODULE USER_COMMAND_0050
ENDIF.
* << Fim da exclusão
ELSEIF v_status_s EQ 0 AND ( okcode = 'SAVE' OR okcode = 'PED' OR
okcode = 'DELP' OR okcode = 'MARC' OR
okcode = 'DESM' OR okcode = 'FACPED' ).
MESSAGE s004.
ENDIF.
CLEAR sy-subrc.
CASE okcode.
WHEN 'VLI'.
PERFORM: verifica_li.
WHEN 'MODI'.
...
...
CALL TRANSACTION '/PWS/ZYCET042'.
WHEN 'DA'.
IF v_status_s NE 0.
PERFORM grava_tabelas.
ENDIF.
PERFORM call_da.
SELECT SINGLE status
FROM /pws/zycit001
INTO /pws/zycie001-status
WHERE nrseq = /pws/zycie001-nrseq.
* >> Início da inclusão: MODULE USER_COMMAND_0050
WHEN 'SELE_DA'.
CALL SELECTION-SCREEN '0700'.
* << Fim da inclusão
ENDCASE.
ENDIF.
CLEAR okcode.
ENDMODULE.
MODULE user_command_0002 INPUT.
CASE okcode.
WHEN 'ENTER'.
PERFORM trata_enter_0002.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
...
...
ENDMODULE.
MODULE consiste_iten INPUT.
READ TABLE itab_itens_aux WITH KEY ebeln = /pws/zycie003-ebeln
ebelp = /pws/zycie003-ebelp.
IF /pws/zycie003-qtd_iten > /pws/zycie003-menge.
MESSAGE w061 WITH text-004 itab_zycit003-ebelp
text-005 itab_zycit003-ebeln.
/pws/zycie003-qtd_iten = itab_zycit003-qtd_iten.
ENDIF.
ENDMODULE.
* >> Início da inclusão:
MODULE check_obrig4 INPUT.
PERFORM trata_obrig4.
ENDMODULE.
module USER_COMMAND input.
if sy-dynnr eq '0003'.
perform user_command_0003.
endif.
endmodule.
module carrega_itab input.
if sy-dynnr eq '0003'.
perform carrega_itab_003.
elseif sy-dynnr eq '0111'.
if /pws/zycie001-regime eq '14'.
perform carrega_itab_0111.
endif.
endif.
endmodule.
module qtd_lote input.
data: v_dif.
if itab_da-qtd_nac gt itab_da-qtd_lote.
message e015 with text-258.
endif.
CLEAR: v_sld.
move itab_da[] to itab_da_aux[].
move itab_da[] to itab_da_aux2[].
describe table itab_da_aux lines v_line.
loop at itab_da_aux .
v_tabix = sy-tabix.
loop at itab_da_aux2 .
if v_tabix ne sy-tabix.
if itab_da_aux-nrseqda ne itab_da_aux2-nrseqda
and not itab_da_aux2-qtd_nac is initial.
v_dif = 'X'.
endif.
endif.
endloop.
endloop.
if v_dif = 'X'.
MESSAGE i015 WITH text-254.
clear itab_da-qtd_nac.
clear v_dif.
clear : itab_da_aux, itab_da_aux2.
refresh : itab_da_aux, itab_da_aux2.
endif.
endmodule.
module consiste_sld_da input.
perform consiste_sld_da.
perform consiste_peso_da.
endmodule.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001O01
...
SET TITLEBAR '0100B'.
ENDIF.
ENDMODULE.
MODULE set_screen OUTPUT.
SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie001-bukrs.
SELECT SINGLE *
FROM /pws/zycit000
WHERE land1 EQ t001-land1.
CASE sy-dynnr.
WHEN '0100' OR '0101'.
* >> Início da exclusão: MODULE SET_SCREEN
CLEAR v_linha.
DESCRIBE TABLE itab_zycit003 LINES v_linha.
* << Fim da exclusão
* >> Início da inclusão: MODULE SET_SCREEN
perform trata_screen_0101.
* << Fim da inclusão
* >> Início da exclusão: MODULE SET_SCREEN
LOOP AT SCREEN.
IF v_status_s = 0.
IF screen-group1 NE 'TAB'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
IF screen-group2 EQ 'ADM'.
IF /pws/zycie001-tpdecl EQ 'DSI'.
IF /pws/zycie001-regime EQ '09'.
screen-invisible = '0'.
ELSE.
screen-invisible = '1'.
ENDIF.
ELSEIF /pws/zycie001-tpdecl EQ 'DI'.
IF /pws/zycie001-regime EQ '05'.
screen-invisible = '0'.
ELSE.
screen-invisible = '1'.
ENDIF.
ELSE.
screen-invisible = '1'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ELSEIF v_status_s = 1.
IF screen-group1 NE 'OUT'.
screen-input = '1'.
ELSEIF screen-group1 EQ 'OUT'
AND screen-group2 NE 'OUT'
AND v_linha EQ 0.
screen-input = '1'.
ELSE.
screen-input = '0'.
ENDIF.
MODIFY SCREEN.
IF screen-name EQ '/PWS/ZYCIE001-MODALIDADE'.
IF v_modemb = 'X'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF v_status_s EQ '1'.
IF screen-name EQ '/PWS/ZYCIE001-NAPOLICE'
OR screen-name EQ '/PWS/ZYCIE001-DTAPOLICE'
OR screen-name EQ '/PWS/ZYCIE001-VLAPOLICE'.
IF /pws/zycie001-apocalcao IS INITIAL.
screen-input = 0.
CLEAR: /pws/zycie001-napolice,
/pws/zycie001-dtapolice,
/pws/zycie001-vlapolice.
ELSE.
screen-input = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-NAVIO'.
IF /pws/zycie001-meioemba EQ 'MA' OR
/pws/zycie001-meioemba EQ 'FL'.
screen-input = 1.
MODIFY SCREEN.
IF screen-group3 EQ 'VER'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ELSE.
IF screen-group3 EQ 'VER'.
screen-input = 0.
MODIFY SCREEN.
CLEAR: /pws/zycie001-navio,
v_bande.
ENDIF.
ENDIF.
ENDIF.
IF screen-group2 EQ 'ADM'.
IF /pws/zycie001-tpdecl EQ 'DSI'.
IF /pws/zycie001-regime EQ '09'.
screen-invisible = '0'.
MOVE 'X' TO v_flagadm.
ELSE.
screen-invisible = '1'.
MOVE space TO v_flagadm.
ENDIF.
ELSEIF /pws/zycie001-tpdecl EQ 'DI'.
IF /pws/zycie001-regime EQ '05'.
screen-invisible = '0'.
MOVE 'X' TO v_flagadm.
ELSE.
screen-invisible = '1'.
MOVE space TO v_flagadm.
ENDIF.
ELSE.
screen-invisible = '1'.
MOVE space TO v_flagadm.
ENDIF.
ENDIF.
MODIFY SCREEN.
IF screen-group1 EQ 'VIN'.
IF NOT /pws/zycie001-nacional IS INITIAL.
screen-input = '1'.
ELSE.
CLEAR: /pws/zycie001-tpvinculo,
/pws/zycie001-nrseqref.
screen-input = '0'.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name = '/PWS/ZYCIE001-MEIOEMBA'.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc = 0 AND NOT /pws/zycie001-nrseq IS INITIAL.
screen-input = 0.
MODIFY SCREEN.
ELSE.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDIF.
IF NOT /pws/zycit000-flagbl IS INITIAL.
IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR
screen-name EQ '/PWS/ZYCIE001-PAISPAO' OR
screen-name EQ '/PWS/ZYCIE001-PADEST' OR
screen-name EQ '/PWS/ZYCIE001-PAISPA' OR
screen-name EQ '/PWS/ZYCIE001-NAVIO' OR
screen-name EQ 'V_CIDORIG' OR
screen-name EQ 'V_CIDEST'.
screen-required = 0.
screen-input = 0.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ELSE.
IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR
screen-name EQ '/PWS/ZYCIE001-PAISPAO' OR
screen-name EQ '/PWS/ZYCIE001-PADEST'.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc NE 0.
IF v_status_s = 1.
screen-input = 1.
ELSE.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDIF.
IF screen-name = '/PWS/ZYCIE001-EMBARCA'.
IF v_status_s = '1'.
SELECT SINGLE * FROM /pws/zycit094
WHERE nrseq = /pws/zycie001-nrseq.
IF sy-subrc NE 0 OR /pws/zycie001-nrseq IS INITIAL.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDIF.
IF screen-name = '/PWS/ZYCIE001-DT_ENT_DE' OR
screen-name = '/PWS/ZYCIE001-DT_ENT_ATE'.
IF /pws/zycie001-regime = '02' AND v_status_s = 0.
screen-input = 0.
screen-invisible = 0.
ELSEIF /pws/zycie001-regime = '02'.
screen-input = 1.
screen-invisible = 0.
ELSE.
screen-input = 0.
screen-invisible = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-NRDESPADU'.
IF NOT /pws/zycit000-oil IS INITIAL.
screen-required = '1'.
ELSE.
screen-required = 0 .
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ '/PWS/ZYCIE001-REGIME'.
LOOP AT itab_zycit003 WHERE NOT nrseqlsi IS initial.
screen-input = 0.
ENDLOOP.
IF /pws/zycie001-meioemba = 'PS'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF /pws/zycie001-modalidade EQ '02'.
IF screen-group1 EQ 'SER'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF /pws/zycie001-modalidade NE '02'
AND /pws/zycie001-modalidade NE '03'.
IF screen-name EQ '/PWS/ZYCIE001-TPSERV'.
screen-input = 0.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
* << Fim da exclusão
WHEN '0102'.
* >> Início da inclusão: MODULE SET_SCREEN
perform trata_screen_0102.
* << Fim da inclusão
* >> Início da exclusão: MODULE SET_SCREEN
IF v_status_s = 0.
LOOP AT tc_ped-cols INTO wa_cols.
wa_cols-screen-input = '0'.
MODIFY tc_ped-cols FROM wa_cols.
ENDLOOP.
ELSEIF v_status_s = 1.
LOOP AT tc_ped-cols INTO wa_cols.
IF wa_cols-screen-group1 NE 'OUT'.
wa_cols-screen-input = '1'.
ENDIF.
IF v_di EQ 'S'.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-QTD_ITEND' .
wa_cols-screen-input = '0'.
ENDIF.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-NTGEWD' .
wa_cols-screen-input = '0'.
ENDIF.
ENDIF.
IF wa_cols-screen-name EQ '/PWS/ZYCIE003-TPNF' .
IF v_nf EQ 'X'.
wa_cols-screen-input = '0'.
ELSE.
wa_cols-screen-input = '1'.
ENDIF.
ENDIF.
MODIFY tc_ped-cols FROM wa_cols.
ENDLOOP.
ENDIF.
* << Fim da exclusão
WHEN '0103'.
IF v_status_s = 0.
LOOP AT tc_fornec-cols INTO wa_cols.
wa_cols-screen-input = '0'.
MODIFY tc_fornec-cols FROM wa_cols.
ENDLOOP.
ELSEIF v_status_s = 1.
LOOP AT tc_fornec-cols INTO wa_cols.
IF wa_cols-screen-group1 NE 'OUT' .
wa_cols-screen-input = '1'.
...
...
ENDIF.
ENDIF.
ELSE.
IF screen-group1 EQ 'VIN'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
* >> Início da inclusão: MODULE SET_SCREEN
when '0111'.
perform trata_screen_0111.
when '0003'.
perform trata_screen_0003.
* << Fim da inclusão
ENDCASE.
ENDMODULE.
MODULE status_0200 OUTPUT.
SET PF-STATUS '0200'.
SET TITLEBAR '0200'.
ENDMODULE.
MODULE status_0001 OUTPUT.
SET PF-STATUS '0001'.
IF sy-tcode = '/PWS/ZYCI001_A'.
SET TITLEBAR '0001'.
...
...
MODULE carrega_zycie255 OUTPUT.
READ TABLE it_zycit119 WITH KEY status = it_zycit255-status.
CLEAR v_descst.
MOVE: it_zycit255-data TO /pws/zycie255-data,
it_zycit255-hora TO /pws/zycie255-hora,
it_zycit255-usuario TO /pws/zycie255-usuario,
it_zycit255-status TO /pws/zycie255-status,
it_zycit119-descricao TO v_descst.
ENDMODULE.
MODULE carrega_instrucao OUTPUT.
* >> Início da exclusão: MODULE CARREGA_INSTRUCAO
REFRESH itab_zycit003_aux.
MOVE itab_zycit003[] TO itab_zycit003_aux[].
SELECT SINGLE nrseqdi
FROM /pws/zycit100
INTO v_nrseqdi
WHERE nrseq = /pws/zycie001-nrseq.
IF NOT v_nrseqdi IS INITIAL.
SELECT SINGLE canal
FROM /pws/zycit085
INTO v_canal
WHERE nrseqdi = v_nrseqdi.
* << Fim da exclusão
* >> Início da inclusão: MODULE CARREGA_INSTRUCAO
if not /pws/zycie001-regime eq '14'.
perform carrega_instrucao.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: MODULE CARREGA_INSTRUCAO
SELECT SINGLE /pws/cotne
FROM t005
INTO v_cotne
WHERE land1 = /pws/zycie001-paispao.
SELECT * FROM /pws/zycit390
INTO TABLE itab_zycit390.
LOOP AT itab_zycit003.
SELECT SINGLE eindt
FROM eket
INTO itab_zycit003_aux-dtremessa
WHERE ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
PERFORM verif_dtproventrega.
MODIFY itab_zycit003.
CLEAR itab_zycit003.
ENDLOOP.
* << Fim da exclusão
ENDMODULE.
MODULE carrega_forn_instrucao OUTPUT.
IF sy-tcode = '/PWS/ZYCI001_C'.
READ TABLE itab_zycit010 INDEX 1.
IF sy-subrc = 0.
READ TABLE itab_zycit125 WITH KEY nrseq = /pws/zycie001-nrseq
lifnr = itab_zycit010-agente
tipo = 'AG'.
IF sy-subrc <> 0.
MOVE: /pws/zycie001-nrseq TO itab_zycit125-nrseq,
...
...
'EMB004'.
CLEAR: itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'EMB004' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa).
ENDIF.
ENDIF.
ENDMODULE.
* >> Início da inclusão:
module carrega_estrutura output.
if sy-dynnr eq '0003'.
perform carrega_estrutura_0003.
elseif sy-dynnr eq '0111' .
if /pws/zycie001-regime eq '14'.
perform carrega_estrutura.
DESCRIBE TABLE itab_zycit003 LINES v_line.
tc_da-lines = v_line.
endif.
endif.
endmodule.
module STATUS_0003 output.
SET PF-STATUS '0003'.
endmodule.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001X01
tables:
/pws/zycit001,
/pws/zycie001,
/pws/zycit003,
/pws/zycie003,
/pws/zyglt217,
/pws/zycit442,
* >> Início da exclusão:
/pws/zycit443.
* << Fim da exclusão
* >> Início da inclusão:
/pws/zycit443,
/pws/zycit455,
/pws/zycit460.
* << Fim da inclusão
data: begin of common part a.
DATA: BEGIN OF itab_zycit003 OCCURS 0.
INCLUDE STRUCTURE /pws/zycie003.
DATA: slqtde LIKE /pws/zycie013-slqtde,
uebto LIKE ekpo-uebto,
uebtk LIKE ekpo-uebtk,
noinitial,
mark,
idnlf LIKE mepo1319-idnlf,
* >> Início da exclusão:
invoiced LIKE /pws/zycie263-qtd_iten.
* << Fim da exclusão
* >> Início da inclusão:
invoiced LIKE /pws/zycie263-qtd_iten,
sld_da like /pws/zycit443-qtd_iten.
* << Fim da inclusão
DATA: END OF itab_zycit003.
...
...
* >> Início da inclusão:
data: qtd_sld like /pws/zycit443-qtd_iten,
qtd_util like /pws/zycit443-qtd_iten.
* << Fim da inclusão
...
...
* >> Início da inclusão:
data: begin of itab_zycit443_saldo occurs 0.
include structure /pws/zycit443.
data: end of itab_zycit443_saldo.
data: begin of itab_zycit455 occurs 0.
include structure /pws/zycit455.
data: end of itab_zycit455.
data: v_qtdutil_da like /pws/zycit443-qtd_da ,
v_sld like /pws/zycit443-qtd_da ,
v_nrseqda LIKE /pws/zycie442-nrseqda ,
v_qtd_sld like /pws/zycit443-qtd_iten.
DATA: BEGIN OF itab_da OCCURS 0,
nrseqda LIKE /pws/zycie442-nrseqda ,
nrdi LIKE /pws/zycie442-nrdi ,
burks LIKE /pws/zycie442-bukrs ,
dtdesemb LIKE /pws/zycie442-dtdesemb ,
agente LIKE /pws/zycie460-lifnr ,
ebeln LIKE /pws/zycie443-ebeln ,
ebelp LIKE /pws/zycie443-ebelp ,
matnr LIKE /pws/zycie443-matnr ,
lote like /PWS/ZYCIE463-LOTE_FORN,
numfatura like /PWS/ZYCIE463-NUMFATURA,
qtd_lote like /PWS/ZYCIE463-QTD_LOTE ,
qtd_nac like /pws/zycie463-qtd_lote ,
qtd_usada like /pws/zycie463-qtd_lote ,
mark.
DATA: END OF itab_da.
data: itab_zycit443_aux like itab_zycit443 occurs 0 with header line,
itab_da_aux like itab_da occurs 0 with header line,
itab_da_aux2 like itab_da occurs 0 with header line.
data: begin of itab_nac occurs 0.
data: ebeln like /pws/zycit443-ebeln,
ebelp like /pws/zycit443-ebelp,
qtd_nac like /pws/zycit443-qtd_iten.
data: end of itab_nac.
* << Fim da inclusão
data: end of common part a.