CE PLUS - Nota 013179

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Recebimento

Data/Hora da Publicação: 16/08/2013 00:00:00

Data/Hora Última Alteração: 19/08/2013 17:25:23

Descrição da Nota: DESENVOLVIMENTO PRA CONTABILIZAÇÃO DA MIGO VIA BAPI

Sintoma

Desenvolvimento pra contabilização da MIGO via BAPI

 

 

Solução

Novo parâmetro na /pws/zycit000 para optar entre processar a MIGO do recebimento físico (recebimento

de mercadorias e de serviços) por BAPI ou manter em batch-input

 

Versões Tratadas

9.0


Pré-Requisitos

Produto:

Nota

Descrição

NECESSÁRIO CRIAR CHAMADAS DE EXITS EM VÁRIOS PONTOS DA FATURA

UNIFICAÇÃO DAS MENSAGENS DE RECEBIMENTO

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 13179 Data: 16/08/2013 Hora: 10:41:01

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 13179

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 9.0

Pacote                   : 00005

Agrupamento              : 00161

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

04474  - 00001 - 7.0    - 00002  - NECESSÁRIO CRIAR CHAMADAS DE EXITS EM VÁRIOS PONTOS DA FATURA

12793  - 00002 - 9.0    - 00003  - UNIFICAÇÃO DAS MENSAGENS DE RECEBIMENTO

----------------------------------------------------------------------------------------------------

DESENVOLVIMENTO PRA CONTABILIZAÇÃO DA MIGO VIA BAPI

----------------------------------------------------------------------------------------------------

Palavras Chave:

DESENVOLVIMENTO - CONTABILIZAÇÃO - MIGO - BAPI - FATURA - RECEBIMENTO

/PWS/SAPMZYCI003 - /PWS/SAPMZYCI017

----------------------------------------------------------------------------------------------------

Objetos da nota:

DTEL /PWS/ZYCIL950

TABD /PWS/ZYCIT000

DYNP /PWS/SAPLZYCIGF1                        0005

REPS /PWS/MZYCI003F03

REPS /PWS/MZYCI017F03

REPS /PWS/MZYCI017F01

REPS /PWS/MZYCI003F02

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DTEL /PWS/ZYCIL950

 

------------------------------------------------------------------------

Elemento de dados incluído: /PWS/ZYCIL950

Classe de desenvolvimento: /PWS/ZYGL

Idioma original: PT

Descrição breve incluída: (30 caracteres), idioma: EN

"GL - Physical receipt via BAPI"

Descrição breve incluída: (28 caracteres), idioma: PT

"GL - Entrada Fisica via BAPI"

Descrição breve incluída: (28 caracteres), idioma: ES

"GL - Entrada Fisica via BAPI"

Categoria de dados: Domínio

Domínio: XFELD

ID parâmetro:

Nome componente default:

Documentar modificações: NÃO

Nome da ajuda de pesquisa:

Parâmetro da ajuda de pesquisa:

Comprimento máximo do denominador breve: 10

Denominador breve incluído (9 caracteres), idioma: EN

"BAPI MIGO"

Denominador breve incluído (9 caracteres), idioma: PT

"BAPI MIGO"

Denominador breve incluído (9 caracteres), idioma: ES

"BAPI MIGO"

Comprimento máximo do denominador médio: 15

Denominador médio incluído (12 caracteres), idioma: EN

"MIGO by BAPI"

Denominador médio incluído (13 caracteres), idioma: PT

"MIGO via BAPI"

Denominador médio incluído (13 caracteres), idioma: ES

"MIGO via BAPI"

Comprimento máximo do denominador longo: 25

Denominador longo incluído (24 caracteres), idioma: EN

"Physical receipt by BAPI"

Denominador longo incluído (23 caracteres), idioma: PT

"Entrada Fisica via BAPI"

Denominador longo incluído (23 caracteres), idioma: ES

"Entrada Fisica via BAPI"

Comprimento máximo do título: 30

Título incluído (30 caracteres), idioma: EN

"GL - Physical receipt via BAPI"

Título incluído (28 caracteres), idioma: PT

"GL - Entrada Fisica via BAPI"

Título incluído (28 caracteres), idioma: ES

"GL - Entrada Fisica via BAPI"

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIT000

 

 

 

 

Nome de campo |Chv |Elem.dados    |Tab.verif. |CtDt |Comp.

 

...

* >> Início da inclusão:

MIGO_BAPI     |    |/PWS/ZYCIL950 |           |CHAR |   1

* << Fim da inclusão

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPLZYCIGF1                        0005

 

MODIFICAR CARACTERÍSTICAS DA TELA 0005

Altura atual (linhas)    63

 

INCLUIR CAIXA DE VERIFICAÇÃO "/PWS/ZYCIT000-MIGO_BAPI"

Comprimento Visível      1

Linha                    63

Coluna                   2

Formato                  CHAR

Linhas mínimas           1

Texto                    _

Código função

 

INCLUIR CHTXT "/PWS/ZYCIT000-MIGO_BAPI"

Comprimento Visível      15

Linha                    63

Coluna                   4

Formato                  CHAR

Texto                    MIGO via BAPI

Código função

 

MODIFICAR LÓGICA DE PROCESSAMENTO TELA 0005

...

    FIELD /pws/zycit000-cod_antidump .

    FIELD /pws/zycit000-newbw .

    FIELD /pws/zycit000-flag_recof .

    FIELD /pws/zycit000-ndias_lead_time .

    FIELD /pws/zycit000-rat_pes .

    FIELD /pws/zycit000-aliqii .

    FIELD /pws/zycit000-freten .

    FIELD /pws/zycit000-fat_frete .

    FIELD /pws/zycit000-sem_cambio .

    FIELD /pws/zycit000-di_dif_fat.

* >> Início da inclusão:

    FIELD /pws/zycit000-migo_bapi.

* << Fim da inclusão

    MODULE set_update_flag ON CHAIN-REQUEST.

  ENDCHAIN.

  CHAIN.

    FIELD /pws/zycit000-land1 .

    MODULE detail_pai.

  ENDCHAIN.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI003F03

 

...

* >> Início da inclusão:

FORM bapi_migo.

  DATA: l_goodsmvt_header   TYPE bapi2017_gm_head_01,

        l_goodsmvt_code     TYPE bapi2017_gm_code,

        l_bapi2017_head_ret TYPE bapi2017_gm_head_ret,

        lt_goodsmvt_item    TYPE TABLE OF bapi2017_gm_item_create,

        l_goodsmvt_item     TYPE bapi2017_gm_item_create,

        l_messages2         TYPE bapiret2,

        lt_messages2        TYPE TABLE OF bapiret2.

  DATA: l_posid LIKE prps-posid.

  DATA: l_erfmg(13).

  DATA: t_serie TYPE TABLE OF bapi2017_gm_serialnumber,

        l_serie TYPE bapi2017_gm_serialnumber.

  DATA: BEGIN OF it_ekpo OCCURS 0,

        ebeln TYPE ekpo-ebeln,

        ebelp TYPE ekpo-ebelp,

        insmk TYPE ekpo-insmk,

        END OF it_ekpo.

  IF NOT itab_zycit031[] IS INITIAL.

    SELECT ebeln ebelp insmk FROM ekpo

        INTO TABLE it_ekpo

        FOR ALL ENTRIES IN itab_zycit031

        WHERE ebeln EQ itab_zycit031-ebeln

          AND ebelp EQ itab_zycit031-ebelp.

  ENDIF.

  CLEAR l_goodsmvt_header.

  l_goodsmvt_header-pstng_date = sy-datlo.

  l_goodsmvt_header-doc_date   = itab_zycie033-bldat.

  l_goodsmvt_header-pr_uname   = sy-uname.

  l_goodsmvt_header-header_txt = itab_zycie033-bktxt.

  l_goodsmvt_header-ref_doc_no = itab_zycie033-lfsnr.

  l_goodsmvt_header-ver_gr_gi_slip = 1.

  l_goodsmvt_header-ver_gr_gi_slipx = 'X'.

  IF NOT itab_zycie033-xabln IS INITIAL.

    l_goodsmvt_header-gr_gi_slip_no =  itab_zycie033-xabln.

  ENDIF.

  l_goodsmvt_header-bill_of_lading = itab_zycie033-xblnr.

  l_goodsmvt_item-spec_stock   = ' '.

  CLEAR: v_indice, l_goodsmvt_item.

  LOOP AT  itab_zycit031.

    READ TABLE itab_zycit003 WITH KEY ebeln = itab_zycit031-ebeln

                                      ebelp = itab_zycit031-ebelp.

    READ TABLE it_ekpo WITH KEY ebeln = itab_zycit031-ebeln

                                ebelp = itab_zycit031-ebelp.

    CLEAR itab_serie.

    l_goodsmvt_item-material   = itab_zycit031-matnr.

    l_goodsmvt_item-plant      = itab_zycit003-werks.

    l_goodsmvt_item-stge_loc   = itab_zycit031-lgort.

    l_goodsmvt_item-batch      = itab_zycit031-charg.

    l_goodsmvt_item-stck_type = it_ekpo-insmk.

    l_goodsmvt_item-po_number  = itab_zycit031-ebeln.

    l_goodsmvt_item-po_item    = itab_zycit031-ebelp.

    l_goodsmvt_item-move_type  = itab_zycie033-bwartwe.

    l_goodsmvt_item-vendrbatch = itab_zycit031-lichn.

    l_goodsmvt_item-expirydate = itab_zycit031-vfdat.

    l_goodsmvt_item-prod_date  = itab_zycit031-hsdat.

    l_goodsmvt_item-item_text  = itab_zycie033-sgtxt.

    l_goodsmvt_item-entry_qnt  = itab_zycit031-menge.

    l_goodsmvt_item-no_more_gr = space.

    l_goodsmvt_item-mvt_ind    = 'B'.

    l_goodsmvt_item-serialno_auto_numberassignment =

       itab_zycit031-sernp .

    APPEND l_goodsmvt_item TO lt_goodsmvt_item.

  ENDLOOP.

  l_goodsmvt_code-gm_code    = '01'.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

       EXPORTING

            goodsmvt_header       = l_goodsmvt_header

            goodsmvt_code         = l_goodsmvt_code

       IMPORTING

            goodsmvt_headret      = l_bapi2017_head_ret

       TABLES

            goodsmvt_item         = lt_goodsmvt_item

            goodsmvt_serialnumber = t_serie

            return                = lt_messages2.

  REFRESH  itab_zycit032.

  IF lt_messages2[] IS INITIAL.

    itab_zycit032-tcode  = 'MIGO'.

    itab_zycit032-tabela = '/PWS/ZYCIT006'.

    itab_zycit032-cpochv = /pws/zycie006-nrseq.

    itab_zycit032-tpmsg  = 'S'.

    itab_zycit032-belnr  = l_bapi2017_head_ret-mat_doc.

    APPEND itab_zycit032.

    SET PARAMETER ID 'MBN' FIELD l_bapi2017_head_ret-mat_doc.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

              wait = 'X'.

  ELSE.

    LOOP AT lt_messages2 INTO l_messages2.

      itab_zycit032-tcode  = 'MIGO'.

      itab_zycit032-tabela = '/PWS/ZYCIT006'.

      itab_zycit032-cpochv = /pws/zycie006-nrseq.

      itab_zycit032-tpmsg  = l_messages2-type.

      itab_zycit032-msg    = l_messages2-message.

      itab_zycit032-msgv1  = l_messages2-message_v1.

      itab_zycit032-msgv2  = l_messages2-message_v2.

      itab_zycit032-msgv3  = l_messages2-message_v3.

      itab_zycit032-msgv4  = l_messages2-message_v4.

      itab_zycit032-belnr  = l_bapi2017_head_ret-mat_doc.

      APPEND itab_zycit032.

    ENDLOOP.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI017F03

 

...

* >> Início da inclusão:

FORM bapi_migo.

  DATA: l_goodsmvt_header   TYPE bapi2017_gm_head_01,

        l_goodsmvt_code     TYPE bapi2017_gm_code,

        l_bapi2017_head_ret TYPE bapi2017_gm_head_ret,

        lt_goodsmvt_item    TYPE TABLE OF bapi2017_gm_item_create,

        l_goodsmvt_item     TYPE bapi2017_gm_item_create,

        l_messages2         TYPE bapiret2,

        lt_messages2        TYPE TABLE OF bapiret2.

  DATA: t_serie TYPE TABLE OF bapi2017_gm_serialnumber,

        l_serie TYPE bapi2017_gm_serialnumber.

  DATA: BEGIN OF it_ekpo OCCURS 0,

        ebeln TYPE ekpo-ebeln,

        ebelp TYPE ekpo-ebelp,

        insmk TYPE ekpo-insmk,

        END OF it_ekpo.

  IF NOT itab_zycit031[] IS INITIAL.

    SELECT ebeln ebelp insmk FROM ekpo

        INTO TABLE it_ekpo

        FOR ALL ENTRIES IN itab_zycit031

        WHERE ebeln EQ itab_zycit031-ebeln

          AND ebelp EQ itab_zycit031-ebelp.

  ENDIF.

  CLEAR l_goodsmvt_header.

  l_goodsmvt_header-pstng_date = sy-datlo.

  l_goodsmvt_header-doc_date   = itab_zycie033-bldat.

  l_goodsmvt_header-pr_uname   = sy-uname.

  l_goodsmvt_header-header_txt = itab_zycie033-bktxt.

  l_goodsmvt_header-ref_doc_no = itab_zycie033-lfsnr.

  l_goodsmvt_header-ver_gr_gi_slip = 1.

  l_goodsmvt_header-ver_gr_gi_slipx = 'X'.

  IF NOT itab_zycie033-xabln IS INITIAL.

    l_goodsmvt_header-gr_gi_slip_no =  itab_zycie033-xabln.

  ENDIF.

  l_goodsmvt_header-bill_of_lading = itab_zycie033-xblnr.

  l_goodsmvt_item-spec_stock   = ' '.

  CLEAR: v_indice, l_goodsmvt_item.

  LOOP AT  itab_zycit031.

    READ TABLE itab_itens_nf WITH KEY ebeln = itab_zycit031-ebeln

                                      ebelp = itab_zycit031-ebelp.

    READ TABLE it_ekpo WITH KEY ebeln = itab_zycit031-ebeln

                                ebelp = itab_zycit031-ebelp.

    CLEAR itab_serie.

    l_goodsmvt_item-material   = itab_zycit031-matnr.

    l_goodsmvt_item-plant      = itab_itens_nf-werks.

    l_goodsmvt_item-stge_loc   = itab_zycit031-lgort.

    l_goodsmvt_item-batch      = itab_zycit031-charg.

    l_goodsmvt_item-stck_type = it_ekpo-insmk.

    l_goodsmvt_item-po_number  = itab_zycit031-ebeln.

    l_goodsmvt_item-po_item    = itab_zycit031-ebelp.

    l_goodsmvt_item-move_type  = itab_zycie033-bwartwe.

    l_goodsmvt_item-vendrbatch = itab_zycit031-lichn.

    l_goodsmvt_item-expirydate = itab_zycit031-vfdat.

    l_goodsmvt_item-prod_date  = itab_zycit031-hsdat.

    l_goodsmvt_item-item_text  = itab_zycie033-sgtxt.

    l_goodsmvt_item-entry_qnt  = itab_zycit031-menge.

    l_goodsmvt_item-no_more_gr = space.

    l_goodsmvt_item-mvt_ind    = 'B'.

    l_goodsmvt_item-serialno_auto_numberassignment =

       itab_zycit031-sernp .

    APPEND l_goodsmvt_item TO lt_goodsmvt_item.

    ADD 1 TO l_serie-matdoc_itm.

    LOOP AT itab_zycit505 WHERE ebeln EQ itab_zycit031-ebeln

                            AND ebelp EQ itab_zycit031-ebelp.

      l_serie-serialno = itab_zycit505-serie.

      APPEND l_serie TO t_serie.

    ENDLOOP.

  ENDLOOP.

  l_goodsmvt_code-gm_code    = '01'.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'

       EXPORTING

            goodsmvt_header       = l_goodsmvt_header

            goodsmvt_code         = l_goodsmvt_code

       IMPORTING

            goodsmvt_headret      = l_bapi2017_head_ret

       TABLES

            goodsmvt_item         = lt_goodsmvt_item

            goodsmvt_serialnumber = t_serie

            return                = lt_messages2.

  REFRESH  itab_zycit032.

  IF lt_messages2[] IS INITIAL.

    itab_zycit032-tcode  = 'MIGO'.

    itab_zycit032-tabela = 'WA_NF'.

    itab_zycit032-cpochv = v_chave.

    itab_zycit032-tpmsg  = 'S'.

    itab_zycit032-belnr  = l_bapi2017_head_ret-mat_doc.

    APPEND itab_zycit032.

    SET PARAMETER ID 'MBN' FIELD l_bapi2017_head_ret-mat_doc.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

              wait = 'X'.

  ELSE.

    LOOP AT lt_messages2 INTO l_messages2.

      itab_zycit032-tcode  = 'MIGO'.

      itab_zycit032-tabela = 'WA_NF'.

      itab_zycit032-cpochv = v_chave.

      itab_zycit032-tpmsg  = l_messages2-type.

      itab_zycit032-msg    = l_messages2-message.

      itab_zycit032-msgv1  = l_messages2-message_v1.

      itab_zycit032-msgv2  = l_messages2-message_v2.

      itab_zycit032-msgv3  = l_messages2-message_v3.

      itab_zycit032-msgv4  = l_messages2-message_v4.

      itab_zycit032-belnr  = l_bapi2017_head_ret-mat_doc.

      APPEND itab_zycit032.

    ENDLOOP.

    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI017F01

 

...

                                        v_modo_bi

                             CHANGING   wa_nf_aux

                                        e_subrc

                                        IF FOUND     .

      IF e_subrc EQ '8'.

        EXIT.

      ENDIF.

    ENDIF.

  ENDIF.

  IF e_subrc = 0.

* >> Início da inclusão: FORM FILL_DATE_MB01

    IF /pws/zycit000-migo_bapi NE 'X'.

* << Fim da inclusão

    CALL FUNCTION '/PWS/ZYCI_TRANSACAO_MIGO'

         EXPORTING

              v_modo          = v_modo_bi

              inbound         = v_inbound

         TABLES

              t_dados         = itab_zycie033

              t_campo         = itab_zycit034

              t_zycit032      = itab_zycit032

              t_zycit031      = itab_zycit031

              t_zycit505      = itab_zycit505

         EXCEPTIONS

              campo_em_branco = 1

              OTHERS          = 3.

* >> Início da inclusão: FORM FILL_DATE_MB01

    ELSE.

      PERFORM bapi_migo.

    ENDIF.

* << Fim da inclusão

  ENDIF.

  IF sy-subrc = 0 OR e_subrc = 4.

    PERFORM atualiza_dados_migo.

  ELSE.

    LOOP AT itab_zycit034.

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb = '/PWS/ZYCIM'

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

  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.

* >> Início da inclusão: FORM FILL_DATE_MB01

    IF /pws/zycit000-migo_bapi NE 'X'.

* << 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

              OTHERS          = 3.

* >> Início da inclusão: FORM FILL_DATE_MB01

    ELSE.

      PERFORM bapi_migo.

    ENDIF.

* << Fim da inclusão

    IF sy-subrc = 0.

      READ TABLE itab_zycit032 WITH KEY tcode  = 'MIGO'

                                        tabela = '/PWS/ZYCIT006'

                                        cpochv = /pws/zycie006-nrseq

                                        tpmsg  = 'S'.

      IF sy-subrc EQ 0.

        GET PARAMETER ID 'MBN' FIELD xmkpf-mblnr.

        itab_zycit032-belnr = xmkpf-mblnr.

        MESSAGE i010 WITH text-007 itab_zycit032-belnr.

        /pws/zycie006-statusp_mb01 = 'C'.

...