CE PLUS - Nota 000743

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,.

 

Versões Tratadas

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.