Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 23/08/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 13:24:06
Descrição da Nota: ERRO NA NF QUANDO POSSUI QUEBRAS DE ITENS. VALOR DUPLICADO NO CUSTO.
Sintoma
Ao fazer a nota fiscal com quebra de itens parametrizada na tabela /PWS/ZYCIT048, o programa está se
perdendo e não está fazendo a contabilização.
Solução
Ajustar chamada de exit no programa de nota fiscal : /PWS/SAPMZYCI016
6.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01972 Data: 23/08/2006 Hora: 12:22:10
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01972
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00024
Agrupamento : 00128
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01340 - 00002 - 6.0 - 00023 - ARREDONDAMENTO DA BASE DO ICMS, BASE DO IPI E VALOR CONTÁBIL
01526 - 00001 - 6.0 - 00023 - VARIÁVEL V_MODALIDADE NO COMMON PART PARA UTILIZAÇÃO EM EXIT
01867 - 00003 - 6.0 - 00024 - NOTA FISCAL GLOBAL-GAP CUSTO EFETIVO - PRECISAMOS QUE TENHA UMA E
01927 - 00004 - 6.0 - 00024 - PROGRAMA DE NF ESTÁ CONSUMINDO MUITA MEMÓRIA. PROBLEMAS DE PERFOR
----------------------------------------------------------------------------------------------------
ERRO NA NF QUANDO POSSUI QUEBRAS DE ITENS. VALOR DUPLICADO NO CUSTO.
----------------------------------------------------------------------------------------------------
Palavras Chave:
NOTA FISCAL - QUEBRA - CUSTO EFETIVO - VALOR DUPLICADO
CHAMADA DE EXIT
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI016F01
REPS /PWS/MZYCI016X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016X01
DATA:
...
v_mseh3 LIKE t006a-mseh3,
v_cfop(7) TYPE c,
v_icms_dif LIKE j_1bdytax-base,
v_montante1 LIKE j_1bdytax-base,
v_base LIKE j_1bdytax-base,
v_basred LIKE /pws/zycit036-basred,
v_excbas LIKE j_1bdytax-base,
v_base_dif LIKE j_1bdytax-base,
v_othbas LIKE j_1bdytax-base,
v_impostos LIKE /pws/zycit100-vlpis,
v_despesas LIKE j_1bdylin-netoth,
v_ipi LIKE j_1bdystx-taxval,
v_icms LIKE j_1bdystx-taxval,
v_tiponf(10) ,
* >> Início da inclusão
e_subrc ,
* >> Fim da inclusão
v_modo_bi . "Resposta do usuário p/ BI
DATA: END OF COMMON PART a.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
* Devido à complexidade das alterações, nessa nota consta o perform FILL_DATA_J1B1 completo.
FORM fill_data_j1b1.
DATA:
v_tpnf LIKE /pws/zycit044-tpnf,
v_lifnr LIKE /pws/zycit042-lifnr,
v_j_1bbranch LIKE /pws/zycit042-j_1bbranch,
v_contitm LIKE sy-tabix,
local_embal LIKE /pws/zycit014-tpembal,
wa_zycit042_exit LIKE /pws/zycit042,
wa_zycit042_exit_d LIKE /pws/zycit042.
CLEAR: v_libera, v_icms_dif, v_base_dif.
CLEAR: v_urf2, e_subrc.
CLEAR itab_zycit042_mark.
REFRESH itab_zycit042_mark.
IF v_modalidade = '99'.
SELECT SINGLE * FROM /pws/zycit043
WHERE nrseq = /pws/zycie041-nrseq AND
cancel = space.
IF sy-subrc = 0.
SELECT SINGLE * FROM /pws/zycit045
WHERE nrseqnf = /pws/zycie041-nrseq AND
saldo > 0.
IF sy-subrc NE 0.
SELECT SINGLE * FROM /pws/zycit043
WHERE nrseq = /pws/zycie041-nrseq AND
belnr_mr1m EQ space AND
cancel NE 'X'.
IF sy-subrc NE 0 AND
( t001-land1 NE 'AR' AND t001-land1 NE 'CL' ).
v_libera = 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
CLEAR: v_despmens.
* Parâmetros Gerais Nota Fiscal de Importação
* Se encontrar dados na /pws/zyglt369.
CLEAR wa_zycit048.
SELECT SINGLE * FROM /pws/zyglt369
INTO wa_zyglt369
WHERE bukrs EQ /pws/zycit085-bukrs
AND branch EQ /pws/zycit085-j_1bbranch
AND urfdesp EQ /pws/zycit085-urfdesp.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM /pws/zycit048
INTO wa_zycit048
WHERE bukrs EQ wa_zyglt369-bukrs
AND branch EQ wa_zyglt369-branch.
* Se fez seleção pela tabela /pws/zyglt369 v_urf2 = 1.
v_urf2 = 1.
ENDIF.
IF sy-subrc NE 0.
* Senão, faz processo normal pela /pws/zycit048.
SELECT SINGLE * FROM /pws/zycit048
INTO wa_zycit048
WHERE bukrs EQ /pws/zycie041-bukrs
AND branch EQ /pws/zycie041-j_1bbranch.
IF sy-subrc NE 0.
SELECT SINGLE * FROM /pws/zycit048
INTO wa_zycit048
WHERE bukrs EQ /pws/zycie041-bukrs
AND branch EQ space.
IF sy-subrc NE 0.
MESSAGE e015 WITH text-082.
ENDIF.
ENDIF.
ENDIF.
IF wa_zycit048-qtd_item IS INITIAL.
MESSAGE i015 WITH text-054 text-055.
EXIT.
ENDIF.
* Dados da DI
CLEAR wa_zycit085.
SELECT SINGLE * FROM /pws/zycit085
INTO wa_zycit085
WHERE nrseqdi EQ /pws/zycie041-nrseq.
* Classificacao da Nota Fiscal Global
FREE itab_zycit033.
SELECT * FROM /pws/zycit033
INTO TABLE itab_zycit033
WHERE clnf = text-027 " GLOBAL
AND bukrs = /pws/zycie041-bukrs.
IF NOT itab_zycit042[] IS INITIAL.
SELECT * FROM t001w INTO TABLE itab_t001w
FOR ALL ENTRIES IN itab_zycit042
WHERE werks = itab_zycit042-werks.
ENDIF.
SORT itab_zycit042 BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.
REFRESH: itab_zycit053_s.
* Cria nota fiscal com dois itens ao mesmo tempo e
* com fornecedores diferentes.
LOOP AT itab_zycit042 WHERE mark = 'X'.
CLEAR v_lifnr.
SELECT SINGLE modalidade FROM /pws/zycit001 INTO v_modalidade
WHERE nrseq = itab_zycit042-nrseq.
IF itab_zycit042[] IS INITIAL.
SELECT * FROM /pws/zycit003
INTO CORRESPONDING FIELDS OF TABLE itab_zycit003
FOR ALL ENTRIES IN itab_zycit042
WHERE nrseq = itab_zycit042-nrseq AND
ebeln = itab_zycit042-ebeln AND
ebelp = itab_zycit042-ebelp.
ENDIF.
IF wa_zycit048-sepnf = 'X'. " Separar Lançto. por NF
SORT itab_zycit042_aux BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.
SORT itab_zycit042 BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.
CLEAR v_tpnf.
* Controle para separar por tipo de NF e por qtde.
* itab_42_aux = itab_42, anda pela itab_42aux preenche alguns docnum
* na itab_42 sem deixar que reprocessem.
LOOP AT itab_zycit042_aux WHERE ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' ) AND
NOT ebeln IS initial AND
lifnr = itab_zycit042-lifnr AND
mark = 'X'.
CLEAR: v_counter.
IF itab_zycit042_aux-tpnf NE v_tpnf OR
itab_zycit042_aux-j_1bbranch NE v_j_1bbranch OR
itab_zycit042_aux-lifnr NE v_lifnr.
v_tpnf = itab_zycit042_aux-tpnf.
v_j_1bbranch = itab_zycit042_aux-j_1bbranch.
v_lifnr = itab_zycit042_aux-lifnr.
PERFORM clear_date_batch.
PERFORM cabecalho_nf.
IF ( v_resp EQ 'S' ) OR
( v_libera = 'X' AND v_modalidade = '99' ).
SELECT SINGLE * FROM /pws/zycit093
WHERE nrseqce = /pws/zycit085-nrbl.
SELECT SINGLE tpembal quant descr
INTO (local_embal,it_zycee005-quant,it_zycee005-shpmrk)
FROM /pws/zycit014
WHERE nrseq = /pws/zycit085-nrbl.
IF sy-subrc EQ 0.
SELECT SINGLE traty FROM /pws/zycit015 INTO it_zycee005-traty
WHERE tpembal = local_embal.
ENDIF.
IF /pws/zycie041-nfexterna EQ 'X'.
it_zycee005-nftype = wa_zycit048-catnfext.
it_zycee005-nfnum = itab_zycit042_aux-nfnum.
it_zycee005-series = itab_zycit042_aux-series.
it_zycee005-subser = itab_zycit042_aux-subser.
ELSE.
* Se fez seleção pela tabela /pws/zyglt369 v_urf2 = 1.
IF v_urf2 = 1.
it_zycee005-nftype = wa_zyglt369-catnfint.
ELSE.
it_zycee005-nftype = wa_zycit048-catnfint.
ENDIF.
ENDIF.
LOOP AT itab_zycit042 WHERE nrseq EQ itab_zycit042_aux-nrseq
AND nfglobal EQ itab_zycit042_aux-nfglobal
AND tpnf EQ itab_zycit042_aux-tpnf
AND lifnr EQ itab_zycit042_aux-lifnr
AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch
AND mark = 'X'
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND processado IS initial.
itab_zycit042-processado = 'X'.
MODIFY itab_zycit042 TRANSPORTING processado.
READ TABLE itab_t001w WITH KEY werks = itab_zycit042-werks.
READ TABLE itab_zycit042_d WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
CLEAR v_subrc.
MOVE: itab_zycit042 TO wa_zycit042_exit,
itab_zycit042_d TO wa_zycit042_exit_d.
CALL CUSTOMER-FUNCTION '001'
EXPORTING
wa_zycit042 = wa_zycit042_exit
wa_zycit042_d = wa_zycit042_exit_d
wa_zycit041 = /pws/zycie041
v_parametro = '01'
IMPORTING
v_subrc = v_subrc
TABLES
it_zycee007 = it_zycee007
itab_zycit036 = itab_zycit036
itab_zycit036_di = itab_zycit036_di.
IF v_subrc NE 'X'.
READ TABLE itab_zycit033 WITH KEY tpnf = itab_zycit042-tpnf
regio = itab_t001w-regio.
IF sy-subrc EQ 0.
PERFORM itens_nf.
ELSE.
READ TABLE itab_zycit033 WITH KEY tpnf = itab_zycit042-tpnf
regio = space.
PERFORM itens_nf.
ENDIF.
ENDIF.
PERFORM peso_global_sep.
CLEAR itab_zycit033.
* Verificar a qtde de itens/NFG parametrizados na 48
v_counter = v_counter + 1.
v_qtditem = wa_zycit048-qtd_item.
IF v_counter >= v_qtditem.
EXIT.
ENDIF.
ENDLOOP.
IF sy-subrc NE 0.
EXIT.
ENDIF.
it_zycee005-transpnac = /pws/zycie041-transpnac.
APPEND it_zycee005.
PERFORM mensagens_nf.
LOOP AT it_zycet004.
MESSAGE i019 WITH it_zycet004-descricao.
ENDLOOP.
IF it_zycet004 IS INITIAL.
CLEAR: sy-subrc.
* >> Início da inclusão: FORM FILL_DATA_J1B1
IF v_modalidade NE '99' AND ( t001-land1 NE 'AR' AND
t001-land1 NE 'CL' ) OR
( v_modalidade = '99' AND
v_libera = 'X' ).
* << Fim da inclusão
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF003'.
* >> Início da inclusão: FORM FILL_DATA_J1B1
e_subrc = '0'.
* << Fim da inclusão
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF003' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
"Para verificar o tipo da NF e diferenciar seus
"tratamentos
v_tiponf = 'NF'.
EXPORT: v_modo_bi TO MEMORY ID 'MODOBI' ,
it_zycet004[] TO MEMORY ID 'CET004',
it_zycet005[] TO MEMORY ID 'CET005',
it_zycee006[] TO MEMORY ID 'CEE006'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) TABLES itab_zycit042_d
itab_zycit042
it_zycee005
it_zycee007
USING /pws/zycie041
v_tiponf
CHANGING e_subrc
IF FOUND .
IMPORT : it_zycet004[] FROM MEMORY ID 'CET004_04',
it_zycet005[] FROM MEMORY ID 'CET005_05',
it_zycee006[] FROM MEMORY ID 'CEE006_06'.
ENDIF.
ENDIF.
IF e_subrc = '0'.
* >> Início da exclusão: FORM FILL_DATA_J1B1
IF v_modalidade = '99'
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
IF v_modalidade = '99' AND
v_libera IS INITIAL.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '9999999999'.
APPEND it_zycet005.
ELSEIF t001-land1 EQ 'AR' OR t001-land1 EQ 'CL'.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '8888888888'.
APPEND it_zycet005.
ENDIF.
CLEAR v_contitm.
LOOP AT itab_zycit042
WHERE nrseq EQ itab_zycit042_aux-nrseq
AND nfglobal EQ itab_zycit042_aux-nfglobal
AND tpnf EQ itab_zycit042_aux-tpnf
AND lifnr EQ itab_zycit042_aux-lifnr
AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
ADD 1 TO v_contitm.
itab_zycit042-itmnum = v_contitm * 10.
MODIFY itab_zycit042 INDEX sy-tabix.
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'S'.
IF sy-subrc EQ 0.
IF it_zycee005-belnr NE '0000000000'.
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'
OR it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
/pws/zycie041-nfnum = itab_zycit042-nfnum.
/pws/zycie041-series = itab_zycit042-series.
/pws/zycie041-subser = itab_zycit042-subser.
/pws/zycie041-cancel = ' '.
CLEAR: /pws/zycie041-belnr_mr1m,
/pws/zycie041-mblnr_mb01,
/pws/zycie041-belnr_f_51,
/pws/zycie041-belnr_f_02,
/pws/zycie041-statusp_mr1m,
/pws/zycie041-statusp_mb01,
/pws/zycie041-statusp_f_51,
/pws/zycie041-statusp_f_02,
/pws/zycie041-dt_mr1m,
/pws/zycie041-dt_mb01, /pws/zycie041-dt_f_51,
/pws/zycie041-dt_f_02,
/pws/zycie041-belnrf02seg, /pws/zycie041-dt_f02seg,
/pws/zycie041-belnrf02fre, /pws/zycie041-dt_f02fre.
itab_zycit042-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
itab_zycit042-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
/pws/zycit042-docnum = it_zycet005-belnr.
ENDIF.
itab_zycit042-mark = ' '.
MODIFY /pws/zycit041 FROM /pws/zycie041.
IF NOT /pws/zycie041-docnum = '9999999999'
AND NOT /pws/zycie041-docnum = '8888888888'.
DELETE FROM /pws/zycit041
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
( docnum = '9999999999' OR
docnum = '8888888888' ).
ENDIF.
MODIFY itab_zycit042
TRANSPORTING docnum mark
WHERE nrseq = itab_zycit042-nrseq
AND nfglobal = itab_zycit042-nfglobal
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp
AND tpnf = itab_zycit042-tpnf
AND lifnr EQ itab_zycit042-lifnr
AND j_1bbranch EQ itab_zycit042-j_1bbranch
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
IF sy-subrc = 0.
MOVE itab_matuse_aux-matnr TO
itab_zycit042-matnr.
ENDIF.
MOVE: j_1bnfdoc-nfnum TO itab_zycit042-nfnum,
j_1bnfdoc-series TO itab_zycit042-series.
MODIFY /pws/zycit042 FROM itab_zycit042.
UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf
WHERE nrseq = itab_zycit042-nrseq
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp.
IF v_modalidade = '99'
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
UPDATE /pws/zycit043 SET docnumnfg =
/pws/zycie041-docnum
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
cancel = space.
ENDIF.
v_status_s = 0.
COMMIT WORK.
ENDIF.
IF v_modalidade NE '99' OR
( v_modalidade = '99' AND
v_libera IS INITIAL ).
PERFORM congela_despesa.
ENDIF.
ENDIF.
ELSE.
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'E'.
IF sy-subrc EQ 0.
LOOP AT it_zycet004.
MESSAGE i019 WITH it_zycet004-descricao.
ENDLOOP.
it_erro-nrseq = itab_zycit042-nrseq.
it_erro-branch = itab_zycit042-j_1bbranch.
it_erro-msg = it_zycet005-msg.
APPEND it_erro.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF v_modalidade NE '99' AND ( t001-land1 NE 'AR' AND
t001-land1 NE 'CL' ) OR
( v_modalidade = '99' AND
v_libera = 'X' ).
* << Fim da exclusão
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF011'.
e_subrc = 0.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF011' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
"Para verificar o tipo da NF e diferenciar seus
"tratamentos
v_tiponf = 'NF'.
e_subrc = '0'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc = '0'.
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_J1B1N'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = it_zycee005
t_itens = it_zycee007
t_campos = it_zycet004
t_zycet005 = it_zycet005
t_message = it_zycee006
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
* >> Início da inclusão: FORM FILL_DATA_J1B1
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
" Campos da tela ok, porém resultado igual 'S' ou 'E'
* >> Início da exclusão: FORM FILL_DATA_J1B1
IF sy-subrc = 0 OR v_modalidade = '99'
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATA_J1B1
IF v_modalidade = '99'
* << Fim da inclusão
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
IF v_modalidade = '99' AND
v_libera IS INITIAL.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '9999999999'.
APPEND it_zycet005.
ELSEIF t001-land1 EQ 'AR' OR t001-land1 EQ 'CL'.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '8888888888'.
APPEND it_zycet005.
ENDIF.
CLEAR v_contitm.
LOOP AT itab_zycit042
WHERE nrseq EQ itab_zycit042_aux-nrseq
AND nfglobal EQ itab_zycit042_aux-nfglobal
AND tpnf EQ itab_zycit042_aux-tpnf
AND lifnr EQ itab_zycit042_aux-lifnr
AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
ADD 1 TO v_contitm.
itab_zycit042-itmnum = v_contitm * 10.
MODIFY itab_zycit042 INDEX sy-tabix.
"Busca log de execução
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'S'.
IF sy-subrc EQ 0. "SUCESSO na J1B1
IF it_zycee005-belnr NE '0000000000'.
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'
OR it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
/pws/zycie041-nfnum = itab_zycit042-nfnum.
/pws/zycie041-series = itab_zycit042-series.
/pws/zycie041-subser = itab_zycit042-subser.
/pws/zycie041-cancel = ' '.
CLEAR: /pws/zycie041-belnr_mr1m,
/pws/zycie041-mblnr_mb01,
/pws/zycie041-belnr_f_51,
/pws/zycie041-belnr_f_02,
/pws/zycie041-statusp_mr1m,
/pws/zycie041-statusp_mb01,
/pws/zycie041-statusp_f_51,
/pws/zycie041-statusp_f_02,
/pws/zycie041-dt_mr1m,
/pws/zycie041-dt_mb01, /pws/zycie041-dt_f_51,
/pws/zycie041-dt_f_02,
/pws/zycie041-belnrf02seg, /pws/zycie041-dt_f02seg,
/pws/zycie041-belnrf02fre, /pws/zycie041-dt_f02fre.
itab_zycit042-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
itab_zycit042-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
/pws/zycit042-docnum = it_zycet005-belnr.
ENDIF.
itab_zycit042-mark = ' '.
MODIFY /pws/zycit041 FROM /pws/zycie041.
IF NOT /pws/zycie041-docnum = '9999999999'
AND NOT /pws/zycie041-docnum = '8888888888'.
DELETE FROM /pws/zycit041
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
( docnum = '9999999999' OR
docnum = '8888888888' ).
ENDIF.
MODIFY itab_zycit042
TRANSPORTING docnum mark
WHERE nrseq = itab_zycit042-nrseq
AND nfglobal = itab_zycit042-nfglobal
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp
AND tpnf = itab_zycit042-tpnf
AND lifnr EQ itab_zycit042-lifnr
AND j_1bbranch EQ itab_zycit042-j_1bbranch
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
IF sy-subrc = 0.
MOVE itab_matuse_aux-matnr TO
itab_zycit042-matnr.
ENDIF.
MOVE: j_1bnfdoc-nfnum TO itab_zycit042-nfnum,
j_1bnfdoc-series TO itab_zycit042-series.
MODIFY /pws/zycit042 FROM itab_zycit042.
UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf
WHERE nrseq = itab_zycit042-nrseq
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp.
IF v_modalidade = '99'
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
UPDATE /pws/zycit043 SET docnumnfg =
/pws/zycie041-docnum
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
cancel = space.
ENDIF.
v_status_s = 0.
COMMIT WORK.
ENDIF.
IF v_modalidade NE '99' OR
( v_modalidade = '99' AND
v_libera IS INITIAL ).
PERFORM congela_despesa.
ENDIF.
ENDIF.
ELSE. "ERRO na J1B1
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'E'.
IF sy-subrc EQ 0.
LOOP AT it_zycet004.
MESSAGE i019 WITH it_zycet004-descricao.
ENDLOOP.
it_erro-nrseq = itab_zycit042-nrseq.
it_erro-branch = itab_zycit042-j_1bbranch.
it_erro-msg = it_zycet005-msg.
APPEND it_erro.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
* Forçar mudança de tipo para processar itens restantes do tipo
* de NFG atual.
v_qtditem = wa_zycit048-qtd_item.
IF v_counter >= v_qtditem.
v_tpnf = 0.
ENDIF.
ENDIF.
ELSE.
CALL SCREEN '0050'.
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc NE 0.
MESSAGE e015 WITH text-043.
ENDIF.
ELSE. "Não QUEBRA POR TIPO DE NOTA
LOOP AT itab_zycit042_aux WHERE ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' ) AND
NOT ebeln IS initial AND
processado IS initial AND
mark EQ 'X'.
IF v_lifnr NE itab_zycit042_aux-lifnr OR
v_j_1bbranch NE itab_zycit042-j_1bbranch.
v_j_1bbranch = itab_zycit042_aux-j_1bbranch.
v_lifnr = itab_zycit042_aux-lifnr.
CLEAR v_counter.
PERFORM clear_date_batch.
PERFORM cabecalho_nf.
IF ( v_resp EQ 'S' ) OR
( v_libera = 'X' AND v_modalidade = '99' ).
SELECT SINGLE * FROM /pws/zycit093
WHERE nrseqce = /pws/zycit085-nrbl.
SELECT SINGLE tpembal quant descr
INTO (local_embal,it_zycee005-quant,
it_zycee005-shpmrk)
FROM /pws/zycit014
WHERE nrseq = /pws/zycit085-nrbl.
IF sy-subrc EQ 0.
SELECT SINGLE traty FROM /pws/zycit015 INTO
it_zycee005-traty
WHERE tpembal = local_embal.
ENDIF.
* READ TABLE ITAB_ZYCIT042 INDEX 1.
IF /pws/zycie041-nfexterna EQ 'X'.
it_zycee005-nftype = wa_zycit048-catnfext.
it_zycee005-nfnum = itab_zycit042_aux-nfnum.
it_zycee005-series = itab_zycit042_aux-series.
it_zycee005-subser = itab_zycit042_aux-subser.
ELSE.
"Se for Sucata, manda tiponf de sucata
IF v_urf2 = 1.
it_zycee005-nftype = wa_zyglt369-catnfint.
ELSE.
it_zycee005-nftype = wa_zycit048-catnfint.
ENDIF.
ENDIF.
LOOP AT itab_zycit042 WHERE nrseq
EQ itab_zycit042_aux-nrseq
AND nfglobal EQ itab_zycit042_aux-nfglobal
AND j_1bbranch = itab_zycit042_aux-j_1bbranch
AND lifnr = itab_zycit042_aux-lifnr
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado IS initial.
itab_zycit042-processado = 'X'.
MODIFY itab_zycit042 TRANSPORTING processado.
itab_zycit042_aux-processado = 'X'.
MODIFY itab_zycit042_aux TRANSPORTING processado WHERE
nrseq EQ itab_zycit042-nrseq
AND j_1bbranch = itab_zycit042-j_1bbranch
AND lifnr = itab_zycit042-lifnr
AND nfglobal EQ itab_zycit042-nfglobal
AND ebeln EQ itab_zycit042-ebeln
AND ebelp EQ itab_zycit042-ebelp.
READ TABLE itab_t001w WITH KEY werks = itab_zycit042-werks.
READ TABLE itab_zycit042_d WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
CLEAR v_subrc.
MOVE: itab_zycit042 TO wa_zycit042_exit,
itab_zycit042_d TO wa_zycit042_exit_d.
CALL CUSTOMER-FUNCTION '001'
EXPORTING
wa_zycit042 = wa_zycit042_exit
wa_zycit042_d = wa_zycit042_exit_d
wa_zycit041 = /pws/zycie041
v_parametro = '01'
IMPORTING
v_subrc = v_subrc
TABLES
it_zycee007 = it_zycee007
itab_zycit036 = itab_zycit036
itab_zycit036_di = itab_zycit036_di.
IF v_subrc NE 'X'.
READ TABLE itab_zycit033 WITH KEY tpnf = itab_zycit042-tpnf
regio = itab_t001w-regio.
IF sy-subrc EQ 0.
PERFORM itens_nf.
ELSE.
READ TABLE itab_zycit033 WITH KEY tpnf = itab_zycit042-tpnf
regio = space.
PERFORM itens_nf.
ENDIF.
ENDIF.
CLEAR itab_zycit033.
PERFORM peso_global_n.
* Verificar a qtde de itens/NFG parametrizados na 48
v_counter = v_counter + 1.
v_qtditem = wa_zycit048-qtd_item.
IF v_counter >= v_qtditem.
EXIT.
ENDIF.
ENDLOOP.
it_zycee005-transpnac = /pws/zycie041-transpnac.
APPEND it_zycee005.
PERFORM mensagens_nf.
LOOP AT it_zycet004.
MESSAGE i019 WITH it_zycet004-descricao.
ENDLOOP.
IF it_zycet004 IS INITIAL.
* >> Início da inclusão: FORM FILL_DATA_J1B1
IF ( v_modalidade NE '99' AND t001-land1 NE 'AR'
AND t001-land1 NE 'CL' ) OR
( v_modalidade = '99' AND
v_libera = 'X' ).
* << Fim da inclusão
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF003'.
* >> Início da inclusão: FORM FILL_DATA_J1B1
e_subrc = '0'.
* << Fim da inclusão
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF003' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
"Para verificar o tipo da NF e diferenciar seus
"tratamentos
v_tiponf = 'NF'.
EXPORT: v_modo_bi TO MEMORY ID 'MODOBI' ,
it_zycet004[] TO MEMORY ID 'CET004',
it_zycet005[] TO MEMORY ID 'CET005',
it_zycee006[] TO MEMORY ID 'CEE006'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) TABLES itab_zycit042_d
itab_zycit042
it_zycee005
it_zycee007
USING /pws/zycie041
v_tiponf
CHANGING e_subrc
IF FOUND.
IMPORT : it_zycet004[] FROM MEMORY ID 'CET004_04',
it_zycet005[] FROM MEMORY ID 'CET005_05',
it_zycee006[] FROM MEMORY ID 'CEE006_06'.
ENDIF.
ENDIF.
IF e_subrc = '0'.
* >> Início da exclusão: FORM FILL_DATA_J1B1
IF sy-subrc = 0 OR v_modalidade = '99' OR
( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
IF v_modalidade = '99' AND
v_libera IS INITIAL.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '9999999999'.
APPEND it_zycet005.
ELSEIF t001-land1 EQ 'AR' OR t001-land1 EQ 'CL'.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '8888888888'.
APPEND it_zycet005.
ENDIF.
CLEAR v_contitm.
LOOP AT itab_zycit042
WHERE nrseq EQ itab_zycit042_aux-nrseq
AND nfglobal EQ itab_zycit042_aux-nfglobal
AND j_1bbranch = itab_zycit042_aux-j_1bbranch
AND lifnr = itab_zycit042_aux-lifnr
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
ADD 1 TO v_contitm.
itab_zycit042-itmnum = v_contitm * 10.
MODIFY itab_zycit042 INDEX sy-tabix.
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'S'.
IF sy-subrc EQ 0.
IF it_zycee005-belnr NE '0000000000'.
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'
OR it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
/pws/zycie041-nfnum = itab_zycit042-nfnum.
/pws/zycie041-series = itab_zycit042-series.
/pws/zycie041-subser = itab_zycit042-subser.
/pws/zycie041-cancel = ' '.
CLEAR: /pws/zycie041-belnr_mr1m,
/pws/zycie041-mblnr_mb01,
/pws/zycie041-belnr_f_51,
/pws/zycie041-belnr_f_02,
/pws/zycie041-statusp_mr1m,
/pws/zycie041-statusp_mb01,
/pws/zycie041-statusp_f_51,
/pws/zycie041-statusp_f_02,
/pws/zycie041-dt_mr1m,
/pws/zycie041-dt_mb01,
/pws/zycie041-dt_f_51,
/pws/zycie041-dt_f_02,
/pws/zycie041-belnrf02seg,
/pws/zycie041-dt_f02seg,
/pws/zycie041-belnrf02fre,
/pws/zycie041-dt_f02fre.
itab_zycit042-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
itab_zycit042-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
itab_zycit042-docnum = it_zycet005-belnr.
ENDIF.
itab_zycit042-mark = ' '.
MODIFY /pws/zycit041 FROM /pws/zycie041.
IF NOT /pws/zycie041-docnum = '9999999999'
AND NOT /pws/zycie041-docnum = '8888888888'.
DELETE FROM /pws/zycit041
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
( docnum = '9999999999' OR
docnum = '8888888888' ).
ENDIF.
MODIFY itab_zycit042 TRANSPORTING docnum mark
WHERE nrseq = itab_zycit042-nrseq
AND nfglobal = itab_zycit042-nfglobal
AND j_1bbranch = itab_zycit042-j_1bbranch
AND lifnr = itab_zycit042-lifnr
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
IF sy-subrc = 0.
MOVE itab_matuse_aux-matnr TO
itab_zycit042-matnr.
ENDIF.
MOVE: j_1bnfdoc-nfnum TO itab_zycit042-nfnum,
j_1bnfdoc-series TO itab_zycit042-series.
MODIFY /pws/zycit042 FROM itab_zycit042.
UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf
WHERE nrseq = itab_zycit042-nrseq
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp.
IF v_modalidade = '99'
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
UPDATE /pws/zycit043 SET docnumnfg =
/pws/zycie041-docnum
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
cancel = space.
ENDIF.
v_status_s = 0.
COMMIT WORK.
ENDIF.
IF v_modalidade NE '99' OR
( t001-land1 NE 'AR' AND t001-land1 NE 'CL' AND
v_modalidade NE '99' ) OR
( v_modalidade = '99' AND
v_libera IS INITIAL ).
PERFORM congela_despesa.
ENDIF.
ENDIF.
ELSE.
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'E'.
IF sy-subrc EQ 0.
it_erro-nrseq = itab_zycit042-nrseq.
it_erro-branch = itab_zycit042-j_1bbranch.
it_erro-msg = it_zycet005-msg.
APPEND it_erro.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF ( v_modalidade NE '99' AND t001-land1 NE 'AR'
AND t001-land1 NE 'CL' ) OR
( v_modalidade = '99' AND
v_libera = 'X' )..
* << Fim da exclusão
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF011'.
e_subrc = 0.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF011' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
"Para verificar o tipo da NF e diferenciar seus
"tratamentos
v_tiponf = 'NF'.
e_subrc = '0'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc = '0'.
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_J1B1N'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = it_zycee005
t_itens = it_zycee007
t_campos = it_zycet004
t_zycet005 = it_zycet005
t_message = it_zycee006
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM FILL_DATA_J1B1
ENDIF.
* << Fim da inclusão
" Campos da tela ok, porém resultado igual 'S' ou 'E'
IF sy-subrc = 0 OR v_modalidade = '99' OR
( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
IF v_modalidade = '99' AND
v_libera IS INITIAL.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '9999999999'.
APPEND it_zycet005.
ELSEIF t001-land1 EQ 'AR' OR t001-land1 EQ 'CL'.
it_zycet005-tcode = text-065.
it_zycet005-tabela = text-014.
it_zycet005-cpochv = /pws/zycie041-nfglobal.
it_zycet005-tpmsg = 'S'.
it_zycet005-belnr = '8888888888'.
APPEND it_zycet005.
ENDIF.
CLEAR v_contitm.
LOOP AT itab_zycit042
WHERE nrseq EQ itab_zycit042_aux-nrseq
AND nfglobal EQ itab_zycit042_aux-nfglobal
AND j_1bbranch = itab_zycit042_aux-j_1bbranch
AND lifnr = itab_zycit042_aux-lifnr
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
ADD 1 TO v_contitm.
itab_zycit042-itmnum = v_contitm * 10.
MODIFY itab_zycit042 INDEX sy-tabix.
"Busca log de execução
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'S'.
IF sy-subrc EQ 0. "SUCESSO na J1B1
IF it_zycee005-belnr NE '0000000000'.
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'
OR it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
/pws/zycie041-docnum = it_zycet005-belnr.
ENDIF.
/pws/zycie041-nfnum = itab_zycit042-nfnum.
/pws/zycie041-series = itab_zycit042-series.
/pws/zycie041-subser = itab_zycit042-subser.
/pws/zycie041-cancel = ' '.
CLEAR: /pws/zycie041-belnr_mr1m,
/pws/zycie041-mblnr_mb01,
/pws/zycie041-belnr_f_51,
/pws/zycie041-belnr_f_02,
/pws/zycie041-statusp_mr1m,
/pws/zycie041-statusp_mb01,
/pws/zycie041-statusp_f_51,
/pws/zycie041-statusp_f_02,
/pws/zycie041-dt_mr1m,
/pws/zycie041-dt_mb01,
/pws/zycie041-dt_f_51,
/pws/zycie041-dt_f_02,
/pws/zycie041-belnrf02seg,
/pws/zycie041-dt_f02seg,
/pws/zycie041-belnrf02fre,
/pws/zycie041-dt_f02fre.
itab_zycit042-docnum = it_zycee005-belnr.
IF it_zycet005-belnr = '9999999999'.
itab_zycit042-docnum = it_zycet005-belnr.
ENDIF.
IF it_zycet005-belnr = '8888888888'.
itab_zycit042-docnum = it_zycet005-belnr.
ENDIF.
itab_zycit042-mark = ' '.
MODIFY /pws/zycit041 FROM /pws/zycie041.
IF NOT /pws/zycie041-docnum = '9999999999'
AND NOT /pws/zycie041-docnum = '8888888888'.
DELETE FROM /pws/zycit041
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
( docnum = '9999999999' OR
docnum = '8888888888' ).
ENDIF.
MODIFY itab_zycit042 TRANSPORTING docnum mark
WHERE nrseq = itab_zycit042-nrseq
AND nfglobal = itab_zycit042-nfglobal
AND j_1bbranch = itab_zycit042-j_1bbranch
AND lifnr = itab_zycit042-lifnr
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp
AND ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' )
AND mark = 'X'
AND processado = 'X'.
READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
IF sy-subrc = 0.
MOVE itab_matuse_aux-matnr TO
itab_zycit042-matnr.
ENDIF.
MOVE: j_1bnfdoc-nfnum TO itab_zycit042-nfnum,
j_1bnfdoc-series TO itab_zycit042-series.
MODIFY /pws/zycit042 FROM itab_zycit042.
" Atualiza Embarque com tipo de nf
UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf
WHERE nrseq = itab_zycit042-nrseq
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp.
IF v_modalidade = '99'
* >> Início da exclusão: FORM FILL_DATA_J1B1
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATA_J1B1
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
* << Fim da inclusão
UPDATE /pws/zycit043 SET docnumnfg =
/pws/zycie041-docnum
WHERE nrseq = /pws/zycie041-nrseq AND
nfglobal = /pws/zycie041-nfglobal AND
cancel = space.
ENDIF.
v_status_s = 0.
* >> Início da inclusão: FORM FILL_DATA_J1B1
COMMIT WORK.
* << Fim da inclusão
ENDIF.
IF v_modalidade NE '99' OR
( t001-land1 NE 'AR' AND t001-land1 NE 'CL' AND
v_modalidade NE '99' ) OR
( v_modalidade = '99' AND
v_libera IS INITIAL ).
PERFORM congela_despesa.
ENDIF.
ENDIF.
ELSE. "ERRO na J1B1
READ TABLE it_zycet005 WITH KEY tcode = text-065
tabela = text-014
cpochv = /pws/zycie041-nfglobal
tpmsg = 'E'.
IF sy-subrc EQ 0.
it_erro-nrseq = itab_zycit042-nrseq.
it_erro-branch = itab_zycit042-j_1bbranch.
it_erro-msg = it_zycet005-msg.
APPEND it_erro.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
CALL SCREEN '0050'.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
MODIFY /pws/zycit053 FROM TABLE itab_zycit053_s.
COMMIT WORK.
IF v_modalidade = '99' OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
LOOP AT itab_zycit042 WHERE docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888'.
ENDLOOP.
IF sy-subrc NE 0.
PERFORM contabiliza_impostos.
ENDIF.
ENDIF.
CLEAR v_modo_bi.
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'DNF009' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND .
ENDIF.
ENDIF.
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF008'.
CLEAR: itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'DNF008' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
ENDFORM. " FILL_DATA_J1B1