Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 20/10/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 13:06:52
Descrição da Nota: AO CRIAR NF NÃO APARECE O DOCNUM
Sintoma
Não está salvando o número do documento na criação da NFGlobal.
Solução
alterado perform
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 02289 Data: 20/10/2006 Hora: 16:07:14
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 02289
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00025
Agrupamento : 00136
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01526 - 00001 - 6.0 - 00023 - VARIÁVEL V_MODALIDADE NO COMMON PART PARA UTILIZAÇÃO EM EXIT
01972 - 00002 - 6.0 - 00024 - ERRO NA NF QUANDO POSSUI QUEBRAS DE ITENS. VALOR DUPLICADO NO CUS
----------------------------------------------------------------------------------------------------
AO CRIAR NF NÃO APARECE O DOCNUM
----------------------------------------------------------------------------------------------------
Palavras Chave:
NOTA FISCAL - NUMERO DOCUMENTO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI016F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
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.
* >> Início da exclusão: FORM FILL_DATA_J1B1
LOOP AT itab_zycit042 WHERE mark = 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATA_J1B1
read table itab_zycit042 with key mark = 'X'.
* << Fim da inclusão
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
...
...
CLEAR v_tpnf.
LOOP AT itab_zycit042_aux WHERE ( docnum IS initial OR
docnum = '9999999999' OR
docnum = '8888888888' ) AND
NOT ebeln IS initial AND
* >> Início da exclusão: FORM FILL_DATA_J1B1
lifnr = itab_zycit042-lifnr AND
* << Fim da exclusão
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.
...
...
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
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.
* << Fim da inclusão
" Campos da tela ok, porém resultado igual 'S' ou 'E'
IF v_modalidade = '99'
OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).
...
...
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
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.
* << Fim da inclusão
ENDIF.
ENDIF.
* >> Início da inclusão: FORM FILL_DATA_J1B1
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.
* << Fim da inclusão
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'
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. "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.
* >> Início da exclusão: FORM FILL_DATA_J1B1
ENDLOOP.
* << Fim da exclusão
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
...
****************************************************************************************************
****************************************************************************************************
************************* POR SER UMA NOTA DIFÍCIL DE APLICAR O ************************************
********************** PERFORM FILL DATA J1B1 FOI COPIADO INTEIRO **********************************
************************** A BAIXO PARA FACILITA A LOCALIZAÇÕA**************************************
****************************************************************************************************
****************************************************************************************************
*&---------------------------------------------------------------------*
*& Form FILL_DATA_J1B1
*&---------------------------------------------------------------------*
* Preenche dados para emissão Nota Fiscal Writer Global - J1B1
*----------------------------------------------------------------------*
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,
*chamado 307472 inicio
* v_counter TYPE i,
* v_qtditem TYPE i,
*chamado 307472 fim
v_contitm LIKE sy-tabix,
local_embal LIKE /pws/zycit014-tpembal,
* v_libera,
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.
*chamado 210007 inicio
CLEAR itab_zycit042_mark.
REFRESH itab_zycit042_mark.
*chamado 210007 fim
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.
* Chamado 298395 - inicio
SORT itab_zycit042 BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.
* Chamado 298395 - Fim
REFRESH: itab_zycit053_s.
***PWS5393838 - Inicio.
* Cria nota fiscal com dois itens ao mesmo tempo e
* com fornecedores diferentes.
read table itab_zycit042 with key mark = 'X'.
* LOOP AT itab_zycit042 WHERE mark = 'X'.
CLEAR v_lifnr.
***PWS5393838 - Fim.
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.
***PWS5393838 - Inicio.
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'.
***PWS5393838 - Fim.
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'.
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-itmnum = sy-tabix * 10.
itab_zycit042-processado = 'X'.
* modify itab_zycit042 transporting itmnum processado.
MODIFY itab_zycit042 TRANSPORTING processado.
READ TABLE itab_t001w WITH KEY werks = itab_zycit042-werks.
* 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.
* perform itens_nf.
* endif.
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.
* 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.
*chamado 326853 inicio
IF v_modalidade NE '99' AND ( t001-land1 NE 'AR' AND
t001-land1 NE 'CL' ) OR
( v_modalidade = '99' AND
v_libera = 'X' ).
*chamado 326853 fim
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF003'.
e_subrc = '0'.
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'.
*chamado 326853 inicio
* Chamado - 316107 - inicio
*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'.
* Chamado - 316107 - Fim
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.
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'.
* Chamado - 310796 - inicio
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
* SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc
* WHERE docnum EQ it_zycee005-belnr
*.
* Chamado - 310796 - Fim
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'.
* Chamado - 310796 - inicio
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.
* Chamado - 310796 - Fim
* modify /pws/zycit042 from table itab_zycit042.
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.
* Chamado - 316107 - inicio
ENDIF.
* Chamado - 316107 - Fim
ENDIF.
*chamado 326853 fim
" Campos da tela ok, porém resultado igual 'S' ou 'E'
IF v_modalidade = '99'
*chamado 326853 inicio
* OR sy-subrc = '0'
*chamado 326853 fim
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'.
* Chamado - 310796 - inicio
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
* SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc
* WHERE docnum EQ it_zycee005-belnr
*.
* Chamado - 310796 - Fim
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'.
* Chamado - 310796 - inicio
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.
* Chamado - 310796 - Fim
* modify /pws/zycit042 from table itab_zycit042.
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 '0100'.
CALL SCREEN '0050'.
ENDIF.
ENDIF.
* endon.
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
* IF v_lifnr NE itab_zycit042_aux 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'.
IF ( v_resp EQ 'S' ) OR
( v_libera = 'X' AND v_modalidade = '99' ).
* PERFORM PESO_GLOBAL_N.
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
* PWS25829968 inicio.
* IF v_nfsuc NE 'S'.
* PWS25829968 fim
IF v_urf2 = 1.
it_zycee005-nftype = wa_zyglt369-catnfint.
ELSE.
it_zycee005-nftype = wa_zycit048-catnfint.
ENDIF.
* PWS25829968 inicio
* ELSE.
* it_zycee005-nftype = wa_zycit048-tiponf.
* ENDIF.
* PWS25829968 fim
* it_zycee005-nftype = wa_zycit048-catnfint.
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-itmnum = sy-tabix * 10.
itab_zycit042-processado = 'X'.
* modify itab_zycit042 transporting itmnum processado.
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.
* 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.
*chamado 326853 inicio
IF ( v_modalidade NE '99' AND t001-land1 NE 'AR'
AND t001-land1 NE 'CL' ) OR
( v_modalidade = '99' AND
v_libera = 'X' ).
*chamado 326853 fim
*Verificação da existência de exit.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF003'.
e_subrc = '0'.
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'.
*chamado 326853 inicio
* Chamado - 316107 - inicio
*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.
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'.
* Chamado - 310796 - inicio
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
* SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc
* WHERE docnum EQ it_zycee005-belnr
*.
* Chamado - 310796 - Fim
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'.
* Chamado - 310796 - inicio
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.
* Chamado - 310796 - Fim
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'
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. "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.
* Chamado - 316107 - Fim
ENDIF.
*chamado 326853 fim
" 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'.
* Chamado - 310796 - inicio
SELECT SINGLE * FROM j_1bnfdoc
WHERE docnum EQ it_zycee005-belnr.
* SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc
* WHERE docnum EQ it_zycee005-belnr
*.
* Chamado - 310796 - Fim
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'.
* Chamado - 310796 - inicio
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.
* Chamado - 310796 - Fim
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'
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. "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 '0100'.
CALL SCREEN '0050'.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
* ENDLOOP.
* Chamado 310077 - Inicio
MODIFY /pws/zycit053 FROM TABLE itab_zycit053_s.
COMMIT WORK.
* Chamado 310077 - Fim
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.
*PWS232454 inicio
CLEAR v_modo_bi.
*PWS232454 fim
*chamado 304439 inicio
*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.
*chamado 304439 fim
*323885 inicio
*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.
*323885 fim.
ENDFORM. " FILL_DATA_J1B1