Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Recebimento
Data/Hora da Publicação: 27/01/2006 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:01:34
Descrição da Nota: CHAMADA PERMITINDO FAZER A MIRO POR EXIT
Sintoma
Não há nenhuma exit que permita fazer os eventos do recebimento por exit. E ao efetuar a transação
de recebimento, a MIRO não está sendo alimentada no campo ``Quantidade na unidade de preço do
pedido.
Solução
Criada chamada de exit RCB013 que permite fazer as contabilizações através de relatórios
específicos. Controle através da variável E_RECEB,.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00743 Data: 27/01/2006 Hora: 16:27:13
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00743
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00098
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
CHAMADA PERMITINDO FAZER A MIRO POR EXIT
----------------------------------------------------------------------------------------------------
Palavras Chave:
EXIT - MIRO - RECEBIMENTO
----------------------------------------------------------------------------------------------------
Objetos da nota:
PROG /PWS/MZYCI017F03
RELE F6DK929734 20060127 114110 PWSCI
REPS /PWS/MZYCI017F01
REPS /PWS/MZYCI017F02
REPS /PWS/MZYCI017X01
REPS /PWS/SAPMZYCI017
----------------------------------------------------------------------------------------------------
Modificações efetuadas em PROG /PWS/MZYCI017F03
* Include criado
*----------------------------------------------------------------------*
* INCLUDE /PWS/MZYCI017F03 *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form atualiza_dados_miro
*&---------------------------------------------------------------------*
* Após a MIRO, atualiza os dados da NF e Recebimento
*----------------------------------------------------------------------*
FORM atualiza_dados_miro.
IF NOT v_belnr_mr1m IS INITIAL.
wa_nf-belnr_mr1m = v_belnr_mr1m.
* select single * from RBKP
* into RBKPV
* where belnr = wa_nf-belnr_mr1m
* and gjahr = v_gjahr.
* if sy-subrc eq 0.
MESSAGE i010 WITH text-001 wa_nf-belnr_mr1m.
wa_nf-statusp_mr1m = 'C'.
wa_nf-dt_mr1m = sy-datlo.
v_mr1m_ok = 'S'.
* Depois de gerado o batch input com sucesso move atualizações.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
LOOP AT itab_itens_nf.
* if wa_nf-nrseq = itab_itens_nf-nrseq and
* wa_nf-nfglobal = itab_itens_nf-nfglobal.
MOVE: itab_itens_nf-mandt TO itab_itens_002-mandt,
wa_nf-bukrs TO itab_itens_002-bukrs,
itab_itens_nf-matnr TO itab_itens_002-matnr,
wa_nf-belnr_mr1m TO itab_itens_002-belnr,
t001-land1 TO itab_itens_002-land1,
itab_itens_nf-qtd_item TO itab_itens_002-qtdini,
itab_itens_nf-qtd_item TO itab_itens_002-qtddisp,
* Passa o nrseq para exit.
itab_itens_nf-nrseq TO itab_itens_002-feidi,
sy-datlo TO itab_itens_002-erdat.
APPEND itab_itens_002.
CLEAR itab_itens_002.
* endif.
ENDLOOP.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
LOOP AT itab_itens_nf.
* if wa_nf-nrseq = itab_itens_nf-nrseq and
* wa_nf-nfglobal = itab_itens_nf-nfglobal.
MOVE: itab_itens_nf-mandt TO itab_itens_002-mandt,
wa_nf-bukrs TO itab_itens_002-bukrs,
itab_itens_nf-matnr TO itab_itens_002-matnr,
wa_nf-belnr_mr1m TO itab_itens_002-belnr,
t001-land1 TO itab_itens_002-land1,
itab_itens_nf-qtd_item TO itab_itens_002-qtdini,
itab_itens_nf-qtd_item TO itab_itens_002-qtddisp,
* Passa o nrseq para exit.
itab_itens_nf-nrseq TO itab_itens_002-feidi,
sy-datlo TO itab_itens_002-erdat.
APPEND itab_itens_002.
CLEAR itab_itens_002.
* endif.
ENDLOOP.
ENDIF.
CALL CUSTOMER-FUNCTION '002'
EXPORTING
v_sist = ' '
TABLES
itab_itens = itab_itens_002.
COMMIT WORK.
* endif.
ELSE. "Contabiliz. com erro
"wa_nf-lfsnr = v_lfsnr_old.
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). "itab_return-message.
ENDLOOP.
ENDIF.
ENDFORM. " atualiza_dados_miro
*&---------------------------------------------------------------------*
*& Form atualiza_dados_migo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM atualiza_dados_migo.
* READ TABLE ITAB_ZYCIT032 WITH KEY TCODE = 'MB01'
* TABELA = 'WA_NF'
* CPOCHV = V_CHAVE
* TPMSG = 'S'.
*** Inicio Modificação - Victor Neves 23/05/2004 - Request F6DK906279
CALL CUSTOMER-FUNCTION '003'
TABLES
itab = itab_zycit031.
*** Fim Modificação - Victor Neves 23/05/2004 - Request F6DK906279
READ TABLE itab_zycit032 WITH KEY tcode = 'MIGO'
tabela = 'WA_NF'
cpochv = v_chave
tpmsg = 'S'.
IF sy-subrc EQ 0. " Contabiliz. com sucesso
* Numero do documento contabil retornado da contabilização.
* GET PARAMETER ID 'MBN' FIELD xmkpf-mblnr.
* itab_zycit032-belnr = xmkpf-mblnr.
* IF sy-subrc EQ 0 . " Contabiliz. com sucesso
* GET PARAMETER ID 'MBN' FIELD xmkpf-mblnr.
* IF itab_zycit032-msg+10(8) EQ xmkpf-mblnr.
* itab_zycit032-belnr = xmkpf-mblnr.
* ENDIF.
* ENDIF.
* IF NOT itab_zycit032-belnr IS INITIAL.
IF NOT itab_zycit032-belnr EQ '0000000000'.
MESSAGE i010 WITH text-007 itab_zycit032-belnr.
wa_nf-statusp_mb01 = 'C'.
wa_nf-mblnr_mb01 = itab_zycit032-belnr.
wa_nf-dt_mb01 = sy-datlo.
v_mb01_ok = 'S'.
* Depois de gerado o batch input com sucesso move atualizações.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
* loop at itab_itens_nf_imp.
* if wa_nf-nrseq = itab_itens_nf_imp-nrseq and
* wa_nf-nfglobal = itab_itens_nf_imp-nfglobal.
* move: itab_itens_nf_imp-mandt to itab_itens_002-mandt,
* wa_nf-BUKRS to itab_itens_002-bukrs,
* itab_itens_nf_imp-MATNR to itab_itens_002-MATNR,
* itab_itens_nf_imp-DOCNUM to itab_itens_002-belnr,
* t001-land1 to itab_itens_002-land1,
* itab_itens_nf_imp-QTD_ITEN to itab_itens_002-qtdini,
* itab_itens_nf_imp-QTD_ITEN to itab_itens_002-qtddisp,
** Passa o nrseq para exit.
* itab_itens_nf_imp-nrseq to itab_itens_002-feidi,
* sy-datlo to itab_itens_002-erdat.
*
* append itab_itens_002.
* clear itab_itens_002.
ENDIF.
* endloop.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
* loop at itab_itens_nf.
* if wa_nf-nrseq = itab_itens_nf-nrseq and
* wa_nf-nfglobal = itab_itens_nf-nfglobal.
* move: itab_itens_nf-mandt to itab_itens_002-mandt,
* wa_nf-BUKRS to itab_itens_002-bukrs,
* itab_itens_nf-MATNR to itab_itens_002-MATNR,
* itab_itens_nf-DOCNUM to itab_itens_002-belnr,
* t001-land1 to itab_itens_002-land1,
* itab_itens_nf-QTD_ITEm to itab_itens_002-qtdini,
* itab_itens_nf-QTD_ITEm to itab_itens_002-qtddisp,
** Passa o nrseq para exit.
* itab_itens_nf-nrseq to itab_itens_002-feidi,
* sy-datlo to itab_itens_002-erdat.
*
* append itab_itens_002.
* clear itab_itens_002.
* endif.
* endloop.
ENDIF.
COMMIT WORK.
* call customer-function '002'
* tables
* itab_itens_nf = itab_itens_002.
ELSE. "Contabiliz. com erro
* wa_nf-lfsnr = v_lfsnr_old.
* Depois de gerado o batch input sem sucesso retornar dados anteriores
* v_erro_bi = 'X'. "Anunciando erro em BI.
LOOP AT itab_zycit032.
MESSAGE i015 WITH itab_zycit032-msg+0(50)
itab_zycit032-msg+50(50).
ENDLOOP.
ENDIF.
"Se itab t034 não está vazia erro.
ENDFORM. " atualiza_dados_migo
*&---------------------------------------------------------------------*
*& Form trata_mr1m
*&---------------------------------------------------------------------*
*& MIRO
*&---------------------------------------------------------------------*
FORM trata_mr1m.
*Chamado 193487 INICIO
"A MIRO foi criada pelo R/3 e trouxe cód.docto da MIRO e flag de ok.
IF NOT wa_nf_aux-belnr_mr1m IS INITIAL AND
e_mr1m_ok EQ 'S'.
wa_nf-belnr_mr1m = wa_nf_aux-belnr_mr1m . "Docto MIRO
wa_nf-statusp_mr1m = wa_nf_aux-statusp_mr1m. "Status
wa_nf-dt_mr1m = wa_nf_aux-dt_mr1m .
v_mr1m_ok = e_mr1m_ok . "Flag MIRO ok
MESSAGE i010 WITH text-001 wa_nf-belnr_mr1m.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
ELSE.
*Chamado 285393 inicio
*Chamada de exit que possibilitará fazer a contabilização por exit do
*específico. Como será compartilhada com outras contabilizações deverá
*indicar pela variável e_receb qual evento está sendo executado no
*momento da chamada. O tratamento do relatório deverá ser feito baseado
*nessa variável
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI017'
'RCB013'. "Exit Criação
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'RCB013' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
* Variável que indica criação da miro
e_receb = 'MIRO'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ '0'.
*Chamado 285393 fim
PERFORM fill_date_mr1m.
ELSEIF e_subrc EQ '4'.
*chamado 285393 inicio
* Atualização dos dados após a Miro
PERFORM atualiza_dados_miro.
*chamado 285393 fim
ENDIF.
ENDIF.
*Chamado 193487 FIM
ENDFORM. " trata_mr1m
*&---------------------------------------------------------------------*
*& Form trata_mb01
*&---------------------------------------------------------------------*
*& MIGO
*&---------------------------------------------------------------------*
FORM trata_mb01.
IF NOT wa_nf_aux-mblnr_mb01 IS INITIAL AND
e_mb01_ok EQ 'S'.
wa_nf-mblnr_mb01 = wa_nf_aux-mblnr_mb01 . "Docto MIGO
wa_nf-statusp_mb01 = wa_nf_aux-statusp_mb01. "Status MIGO
wa_nf-dt_mb01 = wa_nf_aux-dt_mb01 .
v_mb01_ok = e_mb01_ok . "Flag MIGO OK
MESSAGE i010 WITH text-007 wa_nf-mblnr_mb01 .
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
ELSE.
*Chamado 285393 inicio
*Chamada de exit que possibilitará fazer a contabilização por exit do
*específico. Como será compartilhada com outras contabilizações deverá
*indicar pela variável e_receb qual evento está sendo executado no
*momento da chamada. O tratamento do relatório deverá ser feito baseado
*nessa variável
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI017'
'RCB013'. "Exit Criação
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'RCB013' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
* Variável que indica criação da miro
e_receb = 'MIGO'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ '0'.
*Chamado 285393 fim
PERFORM fill_date_mb01.
ELSEIF e_subrc EQ '4'.
*chamado 285393 inicio
* Atualização dos dados após a Miro
PERFORM atualiza_dados_migo.
*chamado 285393 fim
ELSE.
LOOP AT itab_zycit034.
MESSAGE i016 WITH itab_zycit034-descricao.
ENDLOOP.
ENDIF.
CLEAR v_merc.
SET PARAMETER ID '/PWS/ZYCIP005' FIELD v_merc.
ENDIF.
ENDFORM. " trata_mb01
*&---------------------------------------------------------------------*
*& Form trata_f_51
*&---------------------------------------------------------------------*
* F-51
*----------------------------------------------------------------------*
FORM trata_f_51.
*Chamado 193487 INICIO
"A F51 foi criada pelo R/3 e trouxe cód.docto e flag de ok.
IF NOT wa_nf_aux-belnr_f_51 IS INITIAL AND
e_f_51_ok EQ 'S'.
* Numero do documento contabil retornado da contabilização.
wa_nf-belnr_f_51 = wa_nf_aux-belnr_f_51 . "Doct.F51
wa_nf-statusp_f_51 = wa_nf_aux-statusp_f_51 . "Status
wa_nf-dt_f_51 = wa_nf_aux-dt_f_51 .
v_f_51_ok = e_f_51_ok . "Flag F51 ok
MESSAGE i057 WITH wa_nf-belnr_f_51.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
ELSE.
*Chamado 285393 inicio
*Chamada de exit que possibilitará fazer a contabilização por exit do
*específico. Como será compartilhada com outras contabilizações deverá
*indicar pela variável e_receb qual evento está sendo executado no
*momento da chamada. O tratamento do relatório deverá ser feito baseado
*nessa variável
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI017'
'RCB013'. "Exit Criação
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'RCB013' BINARY SEARCH.
IF sy-subrc EQ 0.
"Verifica se a Exit está ativa.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
* Variável que indica criação da miro
e_receb = 'F51'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ '0'.
*Chamado 285393 fim
PERFORM fill_date_f_51.
ELSEIF e_subrc EQ '4'.
*chamado 285393 inicio
* Atualização dos dados após a Miro
PERFORM atualiza_dados_f51.
*chamado 285393 fim
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
ENDLOOP.
ENDIF.
ENDIF.
*Chamado 193487 FIM
ENDFORM. " trata_f_51
*&---------------------------------------------------------------------*
*& Form ATUALIZA_DADOS_F51
*&---------------------------------------------------------------------*
* f-51
*----------------------------------------------------------------------*
FORM atualiza_dados_f51.
READ TABLE itab_zycbt032 WITH KEY tcode = v_trans
tabela = v_ntabela
cpochv = wa_nf-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0. " Contabiliz. com sucesso
MESSAGE i057 WITH itab_zycbt032-belnr.
wa_nf-statusp_f_51 = 'C'.
* Numero do documento contabil retornado da contabilização.
wa_nf-belnr_f_51 = itab_zycbt032-belnr.
wa_nf-dt_f_51 = sy-datlo.
* Depois de gerado o batch input com sucesso move atualizações.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
*Chamado 205800 inicio
IF NOT /pws/zycie041-belnr_f_51 IS INITIAL.
PERFORM preenche_atribuicao_f51 USING
/pws/zycie041-belnr_f_51
/pws/zycie041-bukrs
v_modo_bi.
ENDIF.
*Chamado 205800 fim
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
*Chamado 205800 inicio
IF NOT /pws/zycie043-belnr_f_51 IS INITIAL.
PERFORM preenche_atribuicao_f51 USING
/pws/zycie043-belnr_f_51
/pws/zycie043-bukrs
v_modo_bi.
ENDIF.
ENDIF.
*Chamado 205800 fim
COMMIT WORK.
v_f_51_ok = 'S'.
ELSE. "Contabiliz. com erro
LOOP AT itab_zycbt032.
MESSAGE i015 WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
ENDIF.
ENDFORM. " ATUALIZA_DADOS_F51
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI017F01
...
PERFORM ver_rateio.
ENDCASE.
CLEAR okcode.
ENDFORM.
FORM fill_date_mr1m.
* >> Início da exclusão: FORM FILL_DATE_MR1M
DATA: v_chave(10) ,
v_indice TYPE i ,
v_iva(2) ,
v_cont2 LIKE sy-tabix ,
v_cont LIKE sy-tabix ,
v_menge(2) TYPE c .
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATE_MR1M
DATA v_gjahr LIKE rbkpv-gjahr.
* << Fim da inclusão
* >> Início da exclusão: FORM FILL_DATE_MR1M
DATA: wa_headerdata LIKE bapi_incinv_create_header,
v_belnr_mr1m LIKE wa_nf-belnr_mr1m,
v_invoice LIKE rbkp-xrech,
v_gjahr LIKE rbkpv-gjahr,
v_creditmemo LIKE rbkp-xrech.
DATA: itab_itemdata LIKE bapi_incinv_create_item OCCURS 0 WITH HEADER
LINE,
itab_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
itab_account LIKE bapi_incinv_create_account OCCURS 0 WITH HEADER LINE,
v_quantity LIKE itab_itemdata-quantity,
v_amount LIKE /pws/zycit003-netpr,
v_item_amount LIKE /pws/zycit003-netpr,
v_item_amount2 LIKE /pws/zycit036-netpr,
v_tot_qtd LIKE /pws/zycit044-qtd_item.
DATA: BEGIN OF itab_qtd OCCURS 0,
nrseq LIKE /pws/zycit044-nrseq ,
ebeln LIKE /pws/zycit044-ebeln ,
ebelp LIKE /pws/zycit044-ebelp ,
qtd_item LIKE /pws/zycit044-qtd_item,
END OF itab_qtd.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATE_MR1M
clear itab_itemdata.
refresh itab_itemdata.
* << Fim da inclusão
SELECT SINGLE * FROM t001 WHERE bukrs = wa_nf-bukrs.
PERFORM get_parameters_mrm1_receb.
PERFORM visualiza_rateio.
IF v_resposta NE 'S'.
EXIT.
...
...
TABLES
itemdata = itab_itemdata
accountingdata = itab_account
return = itab_return.
COMMIT WORK.
* >> Início da exclusão: FORM FILL_DATE_MR1M
IF NOT v_belnr_mr1m IS INITIAL.
wa_nf-belnr_mr1m = v_belnr_mr1m.
MESSAGE i010 WITH text-001 wa_nf-belnr_mr1m.
wa_nf-statusp_mr1m = 'C'.
wa_nf-dt_mr1m = sy-datlo.
v_mr1m_ok = 'S'.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
LOOP AT itab_itens_nf.
MOVE: itab_itens_nf-mandt TO itab_itens_002-mandt,
wa_nf-bukrs TO itab_itens_002-bukrs,
itab_itens_nf-matnr TO itab_itens_002-matnr,
wa_nf-belnr_mr1m TO itab_itens_002-belnr,
t001-land1 TO itab_itens_002-land1,
itab_itens_nf-qtd_item TO itab_itens_002-qtdini,
itab_itens_nf-qtd_item TO itab_itens_002-qtddisp,
itab_itens_nf-nrseq TO itab_itens_002-feidi,
sy-datlo TO itab_itens_002-erdat.
APPEND itab_itens_002.
CLEAR itab_itens_002.
ENDLOOP.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
LOOP AT itab_itens_nf.
MOVE: itab_itens_nf-mandt TO itab_itens_002-mandt,
wa_nf-bukrs TO itab_itens_002-bukrs,
itab_itens_nf-matnr TO itab_itens_002-matnr,
wa_nf-belnr_mr1m TO itab_itens_002-belnr,
t001-land1 TO itab_itens_002-land1,
itab_itens_nf-qtd_item TO itab_itens_002-qtdini,
itab_itens_nf-qtd_item TO itab_itens_002-qtddisp,
itab_itens_nf-nrseq TO itab_itens_002-feidi,
sy-datlo TO itab_itens_002-erdat.
APPEND itab_itens_002.
CLEAR itab_itens_002.
ENDLOOP.
ENDIF.
CALL CUSTOMER-FUNCTION '002'
EXPORTING
v_sist = ' '
TABLES
itab_itens = itab_itens_002.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATE_MR1M
PERFORM atualiza_dados_miro.
* << Fim da inclusão
* >> Início da exclusão: FORM FILL_DATE_MR1M
COMMIT WORK.
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.
* << Fim da exclusão
ENDFORM.
FORM get_parameters_mrm1_receb.
DATA: v_clnf LIKE /pws/zycit033-clnf.
PERFORM clear_date_batch.
READ TABLE itab_zycit003 INDEX 1.
...
...
CLEAR: itab_zycit031, itab_zycit032, itab_zycie033, itab_zycit034,
itab_zycbt032, itab_zycbe033, itab_zycbt034, itab_zycet005,
itab_zycee005, itab_zycet004, itab_contas, itab_zycbt036.
ENDFORM.
FORM fill_date_mb01.
* >> Início da exclusão: FORM FILL_DATE_MB01
DATA:
itab_zycit031_aux LIKE itab_zycit031 OCCURS 0 WITH HEADER LINE.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATE_MB01
DATA: itab_zycit031_aux LIKE itab_zycit031 OCCURS 0 WITH HEADER LINE.
* << Fim da inclusão
CLEAR v_chave.
PERFORM get_parameters_mb01_receb.
itab_zycie033-mandt = sy-mandt.
itab_zycie033-tcode = 'MIGO'.
itab_zycie033-tabela = 'WA_NF'.
...
...
EXCEPTIONS
campo_em_branco = 1
OTHERS = 3.
ENDIF.
IF sy-subrc = 0 OR e_subrc = 4.
* >> Início da exclusão: FORM FILL_DATE_MB01
CALL CUSTOMER-FUNCTION '003'
TABLES
itab = itab_zycit031.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DATE_MB01
PERFORM atualiza_dados_migo.
* << Fim da inclusão
* >> Início da exclusão: FORM FILL_DATE_MB01
READ TABLE itab_zycit032 WITH KEY tcode = 'MIGO'
tabela = 'WA_NF'
cpochv = v_chave
tpmsg = 'S'.
IF sy-subrc EQ 0.
IF NOT itab_zycit032-belnr EQ '0000000000'.
MESSAGE i010 WITH text-007 itab_zycit032-belnr.
wa_nf-statusp_mb01 = 'C'.
wa_nf-mblnr_mb01 = itab_zycit032-belnr.
wa_nf-dt_mb01 = sy-datlo.
v_mb01_ok = 'S'.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ENDIF.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
COMMIT WORK.
ELSE.
LOOP AT itab_zycit032.
MESSAGE i015 WITH itab_zycit032-msg+0(50)
itab_zycit032-msg+50(50).
ENDLOOP.
ENDIF.
* << Fim da exclusão
ELSE.
LOOP AT itab_zycit034.
MESSAGE i016 WITH itab_zycit034-descricao.
ENDLOOP.
ENDIF.
...
...
EXIT.
ENDIF.
ENDIF.
ENDIF.
IF v_lock NE 'X'.
* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO
perform trata_mr1m.
* << Fim da inclusão
* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO
IF NOT wa_nf_aux-belnr_mr1m IS INITIAL AND
e_mr1m_ok EQ 'S'.
wa_nf-belnr_mr1m = wa_nf_aux-belnr_mr1m .
wa_nf-statusp_mr1m = wa_nf_aux-statusp_mr1m.
wa_nf-dt_mr1m = wa_nf_aux-dt_mr1m .
v_mr1m_ok = e_mr1m_ok .
MESSAGE i010 WITH text-001 wa_nf-belnr_mr1m.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
ELSE.
PERFORM fill_date_mr1m.
ENDIF.
* << Fim da exclusão
IF v_mr1m_ok EQ 'S' AND v_resposta EQ 'S'.
* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO
IF NOT wa_nf_aux-mblnr_mb01 IS INITIAL AND
e_mb01_ok EQ 'S'.
wa_nf-mblnr_mb01 = wa_nf_aux-mblnr_mb01 .
wa_nf-statusp_mb01 = wa_nf_aux-statusp_mb01.
wa_nf-dt_mb01 = wa_nf_aux-dt_mb01 .
v_mb01_ok = e_mb01_ok .
MESSAGE i010 WITH text-007 wa_nf-mblnr_mb01 .
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
ELSE.
PERFORM fill_date_mb01.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO
perform trata_mb01.
* << Fim da inclusão
PERFORM unlock_fornecedor2.
IF v_mb01_ok EQ 'S'.
v_sdep = 'X'.
* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO
IF NOT wa_nf_aux-belnr_f_51 IS INITIAL AND
e_f_51_ok EQ 'S'.
* << Fim da exclusão
* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO
perform trata_f_51.
* << Fim da inclusão
* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO
wa_nf-belnr_f_51 = wa_nf_aux-belnr_f_51 .
wa_nf-statusp_f_51 = wa_nf_aux-statusp_f_51 .
wa_nf-dt_f_51 = wa_nf_aux-dt_f_51 .
v_f_51_ok = e_f_51_ok .
MESSAGE i057 WITH wa_nf-belnr_f_51.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
ENDIF.
ELSE.
PERFORM fill_date_f_51.
ENDIF.
* << Fim da exclusão
IF v_f_51_ok EQ 'S'.
PERFORM adiciona_saldo_ato.
IF /pws/zycie001-modalidade NE '99' AND
t001-land1 NE 'AR' AND t001-land1 NE 'CL'.
PERFORM fill_date_j1b2.
...
...
OTHERS = 3.
ENDIF.
ENDIF.
IF sy-subrc = 0 OR v_bi_ok = 'X'
OR e_subrc NE '0'.
* >> Início da inclusão: FORM FILL_DATE_F_51
PERFORM ATUALIZA_DADOS_F51.
* << Fim da inclusão
* >> Início da exclusão: FORM FILL_DATE_F_51
READ TABLE itab_zycbt032 WITH KEY tcode = v_trans
tabela = v_ntabela
cpochv = wa_nf-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
MESSAGE i057 WITH itab_zycbt032-belnr.
wa_nf-statusp_f_51 = 'C'.
wa_nf-belnr_f_51 = itab_zycbt032-belnr.
wa_nf-dt_f_51 = sy-datlo.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
IF NOT /pws/zycie041-belnr_f_51 IS INITIAL.
PERFORM preenche_atribuicao_f51 USING
/pws/zycie041-belnr_f_51
/pws/zycie041-bukrs
v_modo_bi.
ENDIF.
ELSE.
MOVE-CORRESPONDING wa_nf TO /pws/zycie043.
MODIFY /pws/zycit043 FROM /pws/zycie043.
IF NOT /pws/zycie043-belnr_f_51 IS INITIAL.
PERFORM preenche_atribuicao_f51 USING
/pws/zycie043-belnr_f_51
/pws/zycie043-bukrs
v_modo_bi.
ENDIF.
ENDIF.
COMMIT WORK.
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.
* << Fim da exclusão
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
ENDLOOP.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI017F02
...
ELSE.
MESSAGE s015 WITH text-006.
ENDIF.
ENDFORM.
FORM fill_date_j1b2.
* >> Início da inclusão: FORM FILL_DATE_J1B2
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI017'
'RCB013'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'RCB013' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_receb = 'J1B2'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ '0'.
* << Fim da inclusão
PERFORM clear_date_batch.
itab_zycee005-tcode = 'J1B2'.
itab_zycee005-tabela = 'WA_NF'.
itab_zycee005-cpochv = wa_nf-nrseq.
itab_zycee005-docnum = wa_nf-docnum.
...
...
t_zycet005 = itab_zycet005
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
* >> Início da inclusão: FORM FILL_DATE_J1B2
READ TABLE itab_zycet005 WITH KEY tcode = 'J1B2'
tabela = 'WA_NF'
cpochv = wa_nf-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
wa_nf-statusp_j1b2 = 'C'.
IF v_existe_nfr NE 'S'.
MOVE-CORRESPONDING wa_nf TO /pws/zycie041.
MODIFY /pws/zycit041 FROM /pws/zycie041.
ENDIF.
LOOP AT itab_zycet005.
MESSAGE i015 WITH itab_zycet005-msg+0(50)
itab_zycet005-msg+50(50).
ENDLOOP.
ELSE.
LOOP AT itab_zycet005.
MESSAGE i015 WITH itab_zycet005-msg+0(50)
itab_zycet005-msg+50(50).
ENDLOOP.
ENDIF.
ENDIF.
ELSEIF e_subrc EQ '4'.
* << Fim da inclusão
READ TABLE itab_zycet005 WITH KEY tcode = 'J1B2'
tabela = 'WA_NF'
cpochv = wa_nf-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
...
...
MODIFY itab_zycbt035 INDEX v_index.
ENDLOOP.
PERFORM adiciona_outros_impostos.
ENDFORM.
FORM fill_date_j1b2_global.
* >> Início da inclusão: FORM FILL_DATE_J1B2_GLOBAL
e_subrc = '0' .
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI017'
'RCB013'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'RCB013' BINARY SEARCH.
IF sy-subrc EQ 0.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
e_receb = 'J1B2G'.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ENDIF.
ENDIF.
IF e_subrc EQ '0'.
* << Fim da inclusão
CLEAR wa_global.
SELECT SINGLE * FROM /pws/zycit041
INTO wa_global
WHERE nrseq = wa_nf-nrseq
AND nfglobal = wa_nf-nfglobal
...
...
t_zycet005 = itab_zycet005
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
* >> Início da inclusão: FORM FILL_DATE_J1B2_GLOBAL
READ TABLE itab_zycet005 WITH KEY tcode = 'J1B2'
tabela = 'WA_GLOBAL'
cpochv = wa_global-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
wa_global-statusp_j1b2 = 'C'.
IF v_existe_nfr EQ 'S'.
UPDATE /pws/zycit041 SET statusp_j1b2 = wa_global-statusp_j1b2
WHERE nrseq = wa_global-nrseq
AND nfglobal = wa_global-nfglobal
AND docnum = wa_global-docnum.
ENDIF.
LOOP AT itab_zycet005.
MESSAGE i015 WITH itab_zycet005-msg+0(50)
itab_zycet005-msg+50(50).
ENDLOOP.
ELSE.
LOOP AT itab_zycet005.
MESSAGE i015 WITH itab_zycet005-msg+0(50)
itab_zycet005-msg+50(50).
ENDLOOP.
ENDIF.
ENDIF.
ELSEIF e_subrc EQ '4'.
* << Fim da inclusão
READ TABLE itab_zycet005 WITH KEY tcode = 'J1B2'
tabela = 'WA_GLOBAL'
cpochv = wa_global-nrseq
tpmsg = 'S'.
IF sy-subrc EQ 0.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI017X01
...
INCLUDE STRUCTURE /pws/zycie043.
DATA: statusp_j1b2 LIKE /pws/zycit041-statusp_j1b2.
DATA: END OF wa_nf.
data: wa_nf_aux LIKE /pws/zycit043.
data: wa_global like /pws/zycit041.
* >> Início da inclusão:
DATA:
v_indice TYPE i ,
v_iva(2) ,
v_cont2 LIKE sy-tabix ,
v_cont LIKE sy-tabix ,
v_menge(2) TYPE c .
DATA: wa_headerdata LIKE bapi_incinv_create_header,
v_belnr_mr1m LIKE wa_nf-belnr_mr1m,
v_invoice LIKE rbkp-xrech,
v_creditmemo LIKE rbkp-xrech.
DATA: itab_itemdata LIKE bapi_incinv_create_item OCCURS 0
WITH HEADER LINE,
itab_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
itab_account LIKE bapi_incinv_create_account OCCURS 0
WITH HEADER LINE,
v_quantity LIKE itab_itemdata-quantity,
v_amount LIKE /pws/zycit003-netpr,
v_item_amount LIKE /pws/zycit003-netpr,
v_item_amount2 LIKE /pws/zycit036-netpr,
v_tot_qtd LIKE /pws/zycit044-qtd_item.
DATA: BEGIN OF itab_qtd OCCURS 0,
nrseq LIKE /pws/zycit044-nrseq ,
ebeln LIKE /pws/zycit044-ebeln ,
ebelp LIKE /pws/zycit044-ebelp ,
qtd_item LIKE /pws/zycit044-qtd_item,
END OF itab_qtd.
* << Fim da inclusão
data:
v_sgtxt like bseg-sgtxt,
v_bktxt LIKE bkpf-bktxt,
v_xblnr LIKE bkpf-xblnr,
v_zuonr LIKE bseg-zuonr,
...
...
v_mb01_ok,
v_fbra_ok,
v_fb08_ok,
v_f_51_ok,
e_estorno(6) ,
* >> Início da exclusão:
v_belnr_ant like /pws/zycie006-belnr_p.
* << Fim da exclusão
* >> Início da inclusão:
v_belnr_ant like /pws/zycie006-belnr_p,
e_receb(6) .
* << Fim da inclusão
DATA: e_subrc VALUE '0',
v_f02(5) ,
v_modo_bi ,
v_f51(5) ,
e_exec_okcode.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/SAPMZYCI017
INCLUDE /PWS/MZYCI017TOP.
INCLUDE /PWS/MZYCI017I01.
INCLUDE /PWS/MZYCI017F01.
INCLUDE /PWS/MZYCI017O01.
INCLUDE /PWS/MZYCI017F02.
* >> Início da inclusão:
*INCLUDE /PWS/MZYCI017X01.
* << Fim da inclusão
INCLUDE /PWS/MZYCI017F03.