Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Mercadoria
Data/Hora da Publicação: 21/08/2007 00:00:00
Data/Hora Última Alteração: 03/02/2010 16:54:26
Descrição da Nota: NECESSÁRIO CRIAR CHAMADAS DE EXITS EM VÁRIOS PONTOS DA FATURA
Sintoma
Abertura de Exit na fatura por miro.
Solução
criadas chamadas de exits em vários pontos da fatura
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04474 Data: 21/08/2007 Hora: 15:09:50
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04474
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00009
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
NECESSÁRIO CRIAR CHAMADAS DE EXITS EM VÁRIOS PONTOS DA FATURA
----------------------------------------------------------------------------------------------------
Palavras Chave:
/PWS/ZYGLT100 - CHAMADAS DE EXITS - FATURA
ESPECÍFICO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI003F01
REPS /PWS/MZYCI003F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F01
...
IF ( NOT itab_zycit132[] IS INITIAL
AND /pws/zycie006-waers NE /pws/zycbt007-waersb
AND ( /pws/zycie006-tpfatura = '01'
OR /pws/zycie006-tpfatura = '11' )
AND /pws/zycie006-frpagto = 'N' )
OR ( NOT itab_zycit132[] IS INITIAL
AND /pws/zycie006-waers NE /pws/zycbt007-waersb
AND ( /pws/zycie006-tpfatura = '01' OR
/pws/zycie006-tpfatura = '11' )
AND /pws/zycie006-frpagto EQ 'P' ).
v_parcela = 'X'.
CLEAR v_idx.
IF NOT /pws/zycie006-tpfatura EQ '11'.
LOOP AT itab_zycit132 WHERE status = 'C' OR status = space.
v_idx = sy-tabix.
* >> Início da inclusão: ROTINA_DE_CONTABILIZACAO
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'FAT010'.
CLEAR: itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'FAT010' BINARY SEARCH.
e_subrc = '0'.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ 0.
* >> Fim da inclusão
PERFORM gravar_cambio.
* >> Início da inclusão: ROTINA_DE_CONTABILIZACAO
ENDIF.
* >> Fim da inclusão
ENDLOOP.
ENDIF.
ELSE.
IF NOT /pws/zycie006-tpfatura EQ '11'
AND e_subrc NE '8'.
IF /pws/zycie006-fhcambio = ' '.
* >> Início da inclusão: ROTINA_DE_CONTABILIZACAO
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'FAT010'.
CLEAR: itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'FAT010' BINARY SEARCH.
e_subrc = '0'.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ 0.
* >> Fim da inclusão
PERFORM gravar_cambio.
* >> Início da inclusão: ROTINA_DE_CONTABILIZACAO
ENDIF.
* >> Fim da inclusão
ELSEIF /pws/zycie006-fhcambio = 'X'.
ENDIF.
ENDIF.
ENDIF.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
IF ( marv-vmmon EQ /pws/zycie006-dt_mr1m+04(02) AND
marv-vmgja EQ /pws/zycie006-dt_mr1m+0(4) ) OR
( marv-lfmon EQ /pws/zycie006-dt_mr1m+04(02) AND
marv-lfgja EQ /pws/zycie006-dt_mr1m+0(4) ).
itab_zycie033-budat = /pws/zycie006-dt_mr1m.
itab_zycie033-stgrd = /pws/zycbt007-percorr.
ELSE.
itab_zycie033-budat = /pws/zycie006-dt_mr1m.
itab_zycie033-stgrd = /pws/zycbt007-perencer .
ENDIF.
APPEND itab_zycie033.
* >> Início da inclusão: FORM FILL_DATE_MR1M
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'. "Exit Estorno
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'REC_MR8M' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ 0.
* >> Fim da inclusão
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_MR8M'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycie033
t_campo = itab_zycit034
t_zycit032 = itab_zycit032
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
IF v_parcela = 'X'.
READ TABLE itab_zycit032 WITH KEY tcode = 'MR8M'
tabela = '/PWS/ZYCIT132'
cpochv = /pws/zycie006-nrseq
tpmsg = 'S'.
ELSE.
READ TABLE itab_zycit032 WITH KEY tcode = 'MR8M'
tabela = '/PWS/ZYCIT006'
cpochv = /pws/zycie006-nrseq
tpmsg = 'S'.
ENDIF.
IF sy-subrc EQ 0.
PERFORM fill_date_f_51_docs_miro.
MESSAGE i030 WITH v_belnr_ant.
IF v_parcela = 'X'.
CLEAR: itab_zycit132.
MODIFY itab_zycit132 TRANSPORTING miro status
WHERE belnr_mr1m EQ /pws/zycie006-belnr_mr1m.
ENDIF.
PERFORM clear_date_batch.
CLEAR v_mr1m_ok.
ELSE.
v_erro = 'X'.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM FILL_DATE_MR1M
ELSEIF e_subrc EQ '8'.
EXIT.
ELSE.
v_erro = 'X'.
ENDIF.
* >>Fim da inclusão
ENDFORM. " estorn_miro_la
...
...
wa_headerdata-comp_code = itab_zycie033-bukrs.
wa_headerdata-currency = itab_zycie033-waers.
wa_headerdata-gross_amount = itab_zycie033-rmwwr.
wa_headerdata-header_txt = wa_zycbt007-bktxt.
wa_headerdata-diff_inv = itab_zycie033-lifnr.
wa_headerdata-doc_type = wa_zycbt011-blart.
wa_headerdata-pmnt_block = 'A'.
wa_headerdata-calc_tax_ind = 'X'.
v_invoice = 'X'.
v_creditmemo = 'X'.
* >> Início da inclusão: FORM FILL_DATE_MR1M
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'REC_MR1M' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF E_SUBRC EQ 0.
* << Fim da inclusão
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = wa_headerdata
IMPORTING
invoicedocnumber = v_belnr_mr1m
fiscalyear = v_gjahr
TABLES
itemdata = itab_itemdata
accountingdata = itab_account
return = itab_return.
IF NOT v_belnr_mr1m IS INITIAL.
/pws/zycie006-belnr_mr1m = v_belnr_mr1m.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
MESSAGE i010 WITH v_belnr_mr1m.
/pws/zycie006-statusp_mr1m = 'C'.
/pws/zycie006-dt_mr1m = sy-datlo.
v_mr1m_ok = 'S'.
MODIFY /pws/zycit006 FROM /pws/zycie006.
* >> Início da inclusão: FORM FILL_DATE_MR1M
ELSE.
LOOP AT itab_return.
CONCATENATE itab_return-id itab_return-number
itab_return-message INTO v_mensagem
SEPARATED BY space.
MESSAGE i061 WITH v_mensagem+0(50)
v_mensagem+50(50)
v_mensagem+100(50)
v_mensagem+150(50).
ENDLOOP.
ENDIF.
ELSEIF E_SUBRC EQ 8.
EXIT.
* << Fim da inclusão
ELSE.
LOOP AT itab_return.
CONCATENATE itab_return-id itab_return-number
itab_return-message INTO v_mensagem
SEPARATED BY space.
MESSAGE i061 WITH v_mensagem+0(50)
v_mensagem+50(50)
v_mensagem+100(50)
v_mensagem+150(50).
ENDLOOP.
...
...
READ TABLE itab_serie WITH KEY ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF NOT itab_serie-sernp IS INITIAL.
itab_zycit031-sernp = 'X'.
ENDIF.
ENDIF.
APPEND itab_zycit031.
ENDLOOP.
v_merc = 'X'.
SET PARAMETER ID '/PWS/ZYCIP005' FIELD v_merc.
* >> Início da inclusão: FORM FILL_DATE_MB01
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'MB01' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF E_SUBRC EQ 0.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_MIGO'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycie033
t_campo = itab_zycit034
t_zycit032 = itab_zycit032
t_zycit031 = itab_zycit031
EXCEPTIONS
campo_em_branco = 1
...
...
itab_zycit032-msg+50(50).
ENDLOOP.
ENDIF.
ELSE.
LOOP AT itab_zycit034.
MESSAGE i016 WITH itab_zycit034-descricao.
ENDLOOP.
ENDIF.
CLEAR v_merc.
SET PARAMETER ID '/PWS/ZYCIP005' FIELD v_merc.
* >> Início da inclusão: FORM FILL_DATE_MB01
ELSEIF E_SUBRC EQ 8.
EXIT.
ELSE.
LOOP AT itab_zycit034.
MESSAGE i016 WITH itab_zycit034-descricao.
ENDLOOP.
ENDIF.
* << Fim da inclusão
ENDFORM.
FORM fill_date_f_51.
CLEAR v_sede.
IF v_subrc IS INITIAL.
PERFORM multiplos_lancamentos_f_51.
ENDIF.
PERFORM get_parameters_f-51.
READ TABLE itab_zycit003 INDEX 1.
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = v_trans.
...
...
ENDIF.
MOVE-CORRESPONDING itab_zycbt035 TO itab_contas.
APPEND itab_contas.
v_totline = v_totline + 1.
ENDLOOP.
PERFORM preenche_t_doc.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
ENDLOOP.
IF itab_zycbt034[] IS INITIAL.
* >> Início da inclusão: FORM FILL_DATE_F_51
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'F-51' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF E_SUBRC EQ 0.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_51C'
EXPORTING
v_modo = v_modo_bi
v_belnr = v_belnr
v_totline = v_totline
v_rec = 'X'
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
...
...
v_f_51_ok = 'S'.
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
* >> Início da inclusão: FORM FILL_DATE_F_51
ENDLOOP.
ENDIF.
elseif e_subrc eq '8'.
exit.
else.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
* << Fim da inclusão
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM.
FORM reverse_document_mbst.
DATA: v_belnr_ant LIKE /pws/zycie006-belnr_p.
DATA: BEGIN OF itab_itens_nf OCCURS 0.
INCLUDE STRUCTURE /pws/zycit044.
DATA: END OF itab_itens_nf.
itab_zycie033-tcode = 'MBST'.
...
...
WHERE awtyp EQ 'RMRP'
AND awkey EQ v_awkey.
itab_zycbt036-mandt = sy-mandt.
itab_zycbt036-tcode = 'F-51'.
itab_zycbt036-tabela = '/PWS/ZYCIT006'.
itab_zycbt036-cpochv = /pws/zycie006-nrseq.
itab_zycbt036-belnr = bkpf-belnr.
itab_zycbt036-awkey = v_awkey.
APPEND itab_zycbt036.
CLEAR itab_zycbt036.
* >> Início da inclusão: FORM FILL_DATE_F_51_DOCS_MIRO
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'F-51' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF E_SUBRC EQ 0.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_51C'
EXPORTING
v_modo = v_modo_bi
v_totline = v_totline
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
t_contas = itab_contas
t_doc = itab_zycbt036
...
...
campo_em_branco = 1
periodo_fechado = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
tabela = '/PWS/ZYCIT006'
cpochv = /pws/zycie006-nrseq
tpmsg = 'S'.
IF sy-subrc = 0.
MESSAGE i059 WITH itab_zycbt032-belnr.
* >> Início da inclusão: FORM FILL_DATE_F_51_DOCS_MIRO
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM FILL_DATE_F_51_DOCS_MIRO
ELSEIF E_SUBRC EQ '8'.
EXIT .
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_t_doc.
CLEAR: itab_zycbt036.
itab_zycbt036-mandt = sy-mandt.
...
...
ENDIF.
APPEND itab_zycbt036.
CLEAR: itab_zycbt036.
itab_zycbt036-mandt = sy-mandt.
itab_zycbt036-tcode = 'F-51'.
itab_zycbt036-tabela = '/PWS/ZYCIT006'.
itab_zycbt036-cpochv = /pws/zycie006-nrseq.
itab_zycbt036-belnr = v_belnr.
itab_zycbt036-dtdocto = sy-datum.
APPEND itab_zycbt036.
* >> Início da inclusão: FORM FILL_DATE_F_51_PAG_ANTECIPADO
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'F-51' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF E_SUBRC EQ 0.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_51D'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_zycbt032 = itab_zycbt032
t_doc = itab_zycbt036
EXCEPTIONS
campo_em_branco = 1
periodo_fechado = 2
...
...
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
PERFORM clear_date_batch.
* >> Início da inclusão: FORM FILL_DATE_F_51_PAG_ANTECIPADO
EXIT.
ENDIF.
ELSEIF E_SUBRC EQ '8'.
* << Fim da inclusão
EXIT.
* >> Início da inclusão: FORM FILL_DATE_F_51_PAG_ANTECIPADO
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* << Fim da inclusão
ENDIF.
ENDFORM.
...
...
IF NOT itab_zycit132[] IS INITIAL.
itab_zycbe033-zterm = itab_zycit132-zterm.
itab_zycbe033-zfbdt = itab_zycit132-dtbase.
ELSE.
itab_zycbe033-zterm = /pws/zycie006-zterm.
itab_zycbe033-zfbdt = /pws/zycie006-dtbase.
ENDIF.
itab_zycbe033-d_valut = /pws/zycie006-dtincl.
itab_zycbe033-c_valut = /pws/zycie006-dtincl.
APPEND itab_zycbe033.
* >> Início da inclusão: FORM FILL_DATE_F-43_PAG_ANTECIPADO
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI003'
'FAT009'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'FAT009' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_estorno = 'F-43' .
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF E_SUBRC EQ 0.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_43A'
EXPORTING
v_modo = v_modo_bi
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt032 = itab_zycbt032
t_contas = itab_contas
EXCEPTIONS
campo_em_branco = 1
...
...
tpmsg = 'S'.
IF sy-subrc EQ 0 AND NOT itab_zycbt032-belnr IS INITIAL.
MESSAGE i010 WITH itab_zycbt032-belnr.
v_belnr = itab_zycbt032-belnr.
PERFORM clear_date_batch.
ELSEIF sy-subrc NE 0.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM FILL_DATE_F-43_PAG_ANTECIPADO
EXIT.
PERFORM clear_date_batch.
ENDIF.
elseif e_subrc eq '8'.
* << Fim da inclusão
EXIT.
* >> Início da inclusão: FORM FILL_DATE_F-43_PAG_ANTECIPADO
else.
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* << Fim da inclusão
PERFORM clear_date_batch.
ENDIF.
...