CE PLUS - Nota 012279

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Recebimento

Data/Hora da Publicação: 07/02/2013 12:40:21

Data/Hora Última Alteração: 07/02/2013 12:40:21

Descrição da Nota: NÚMERO DE SÉRIE NA MIGO - RECEBIMENTO

Sintoma

O sistema não está verificando a tabela OIS2 para verificar se tem necessidade de preenchimento do

número de série na MIGO.

 

 

Solução

O sistema deve verificar a tabela T377 para o preenchimento do número de série na MIGO.

 

Nesta tabela, operação MMSL (entrada e saída de mercadoria), campo utilização de número de série

(T377-SERPFLICHT), tem opções que alteram a MIGO.

 

Se a opção for "1" (nenhum), na MIGO a pasta de série aparece fechada, por isso no Pw.Ce não devemos

preencher a série.

 

Se a opção for "2" (pode) o preenchimento do número de série é facultativo. No batch input não deve

preencher o campo de série automática (GOITEM-XSAUT).

 

Se a opção for "3" (deve) ou "4" (automático), o sistema está fazendo correto, isto é, deve

preencher o campo de série automática (GOITEM-XSAUT).

 

Versões Tratadas

9.0


Pré-Requisitos

Produto:

Nota

Descrição

RECEBIMENTO CRIA AJUDA DE PESQUISA NO CAMPO SERIE /PWS/ZYCIT504-SERIE

PREEENCHER O NÚMERO DE SÉRIE DOS ITENS AO FAZER A MIGO

APRENSETAÇÃO DE CAMPOS NO DRAFT DA FATURA

Informações Complementares

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

Nota Número 12279 Data: 12/06/2012 Hora: 10:31:43

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

 

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

Nota Número              : 12279

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00011

Agrupamento              : 00115

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

Referência às notas relacionadas:

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

 

09714  - 00001 - 8.0    - 00002  - PREEENCHER O NÚMERO DE SÉRIE DOS ITENS AO FAZER A MIGO

09871  - 00002 - 8.0    - 00002  - APRENSETAÇÃO DE CAMPOS NO DRAFT DA FATURA

09875  - 00003 - 8.0    - 00002  - RECEBIMENTO CRIA AJUDA DE PESQUISA NO CAMPO SERIE /PWS/ZYCIT504-S

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

NÚMERO DE SÉRIE NA MIGO - RECEBIMENTO

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

Palavras Chave:

/PWS/SAPMZYCI017 - RECEBIMENTO FÍSICO - NÚMERO DE SÉRIE

T377-SERPFLICHT - GOITEM-XSAUT

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

Objetos da nota:

DYNP /PWS/SAPMZYCI017                        0112

FUNC /PWS/ZYCI_TRANSACAO_MBST

REPS /PWS/MZYCI017F01

REPS /PWS/MZYCI017F02

REPS /PWS/MZYCI017I01

REPS /PWS/MZYCI017O01

REPS /PWS/MZYCI017X01

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_TRANSACAO_MBST

 

Adicionar as seguintes tabelas na pasta tabelas da Função:

 

Nome parametro    Atrib.Tipo    Tipo Referência    Opcional

 

T_T377            LIKE          T377               X

T_ZYCIT504        LIKE          /PWS/ZYCIT504      X

 

 

 

Alteração Codigo Fonte:

 

 

 

...

    PERFORM bdc_screen USING 'SAPMM07M' '0460'.

    WRITE t_dados-budat TO v_data_char.

    PERFORM bdc_field  USING:

           'BDC_OKCODE'       '=SEKL',

           'BDC_CURSOR'       'RM07M-MBLNR',

           'MKPF-BUDAT'        v_data_char,

           'RM07M-MBLNR'      t_dados-mblnr,

           'RM07M-MJAHR'      t_dados-gjahr,

           'RM07M-WVERS1'     'X'.

    LOOP AT itab_serie.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MBST

      IF sy-tcode = '/PWS/ZYCI017_A' OR

         sy-tcode = '/PWS/ZYCI017_C'.

        CLEAR: t_t377.

        READ TABLE t_t377 WITH KEY serail = itab_serie-sernp.

        IF sy-subrc EQ 0.

          IF t_t377-serpflicht EQ '02'.

            READ TABLE t_zycit504 WITH KEY matnr = itab_serie-matnr.

            IF sy-subrc EQ 0.

              IF v_tela NE space.

                PERFORM bdc_screen USING 'SAPLIPW1' '0300'.

              ELSE.

                PERFORM bdc_screen USING 'SAPLIPW1' '0200'.

              ENDIF.

              PERFORM bdc_field USING: 'BDC_OKCODE'  '/00'.

            ENDIF.

          ELSEIF t_t377-serpflicht EQ '03' OR t_t377-serpflicht EQ '04'.

            IF v_tela NE space.

              PERFORM bdc_screen USING 'SAPLIPW1' '0300'.

            ELSE.

              PERFORM bdc_screen USING 'SAPLIPW1' '0200'.

            ENDIF.

            PERFORM bdc_field USING: 'BDC_OKCODE'  '/00'.

          ENDIF.

        ENDIF.

      ELSE.

* << Fim da inclusão

      IF NOT itab_serie-sernp IS INITIAL.

        IF v_tela NE space.

          PERFORM bdc_screen USING 'SAPLIPW1' '0300'.

        ELSE.

          PERFORM bdc_screen USING 'SAPLIPW1' '0200'.

        ENDIF.

        PERFORM bdc_field  USING:

               'BDC_OKCODE'       '/00'.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MBST

        ENDIF.

* << Fim da inclusão

      ENDIF.

    ENDLOOP.

    PERFORM bdc_screen USING 'SAPMM07M' '0221'.

    PERFORM bdc_field  USING:

           'BDC_OKCODE'       '=BU',

           'BDC_CURSOR'       'MKPF-BUDAT'.

    REFRESH itab_msg.

    CLEAR itab_msg.

    v_transacao = 'MBST'.

    v_update = 'S'.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F01

 

...

               AND ebelp = itab_zycit044-ebelp.

      PERFORM verif_lote.

      SELECT a~ebeln a~ebelp a~matnr b~sernp

       FROM ( ekpo AS a INNER JOIN marc AS b

            ON a~matnr EQ b~matnr AND

               a~werks EQ b~werks )

        INTO TABLE itab_serie

        FOR ALL ENTRIES IN itab_zycit044

        WHERE ebeln = itab_zycit044-ebeln

          AND ebelp = itab_zycit044-ebelp.

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

      IF NOT itab_serie[] IS INITIAL.

        CLEAR: itab_t377, itab_t377[].

        SELECT * FROM t377

          INTO TABLE itab_t377

          FOR ALL ENTRIES IN itab_serie

          WHERE serail = itab_serie-sernp

            AND beleg  = 'MMSL'.

      ENDIF.

* << Fim da inclusão

      LOOP AT itab_zycit044.

        READ TABLE itab_serie WITH KEY

        ebeln = itab_zycit044-ebeln

        ebelp = itab_zycit044-ebelp.

        IF sy-subrc EQ 0 AND NOT itab_serie-sernp IS INITIAL.

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

          CLEAR: itab_t377.

          READ TABLE itab_t377 WITH KEY serail = itab_serie-sernp.

          IF sy-subrc EQ 0 AND itab_t377-serpflicht NE '01'.

* << Fim da inclusão

          itab_zycit044-serie = 'X'.

          MODIFY itab_zycit044 TRANSPORTING serie WHERE

            ebeln = itab_zycit044-ebeln AND

            ebelp = itab_zycit044-ebelp.

        ENDIF.

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

        ENDIF.

* << Fim da inclusão

      ENDLOOP.

    ENDIF.

...

 

...

               AND ebelp = itab_zycit042-ebelp.

      PERFORM verif_lote.

      SELECT a~ebeln a~ebelp a~matnr b~sernp

       FROM ( ekpo AS a INNER JOIN marc AS b

            ON a~matnr EQ b~matnr AND

               a~werks EQ b~werks )

        INTO TABLE itab_serie

        FOR ALL ENTRIES IN itab_zycit042

        WHERE ebeln = itab_zycit042-ebeln

          AND ebelp = itab_zycit042-ebelp.

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

      IF NOT itab_serie[] IS INITIAL.

        CLEAR: itab_t377, itab_t377[].

        SELECT * FROM t377

          INTO TABLE itab_t377

          FOR ALL ENTRIES IN itab_serie

          WHERE serail = itab_serie-sernp

            AND beleg  = 'MMSL'.

      ENDIF.

* << Fim da inclusão

      LOOP AT itab_zycit042.

        READ TABLE itab_serie WITH KEY

        ebeln = itab_zycit042-ebeln

        ebelp = itab_zycit042-ebelp.

        IF sy-subrc EQ 0 AND NOT itab_serie-sernp IS INITIAL.

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

          CLEAR: itab_t377.

          READ TABLE itab_t377 WITH KEY serail = itab_serie-sernp.

          IF sy-subrc EQ 0 AND itab_t377-serpflicht NE '01'.

* << Fim da inclusão

          itab_zycit042-serie = 'X'.

          MODIFY itab_zycit042 TRANSPORTING serie WHERE

                 ebeln = itab_zycit042-ebeln AND

                 ebelp = itab_zycit042-ebelp.

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

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDLOOP.

    ENDIF.

...

 

...

  CLEAR itab_ekpo_s.

  IF NOT itab_itens_nf[] IS INITIAL.

    SELECT a~ebeln a~ebelp a~matnr b~sernp

     FROM ( ekpo AS a INNER JOIN marc AS b

          ON a~matnr EQ b~matnr AND

             a~werks EQ b~werks )

      INTO TABLE itab_serie

      FOR ALL ENTRIES IN itab_itens_nf

      WHERE ebeln = itab_itens_nf-ebeln

        AND ebelp = itab_itens_nf-ebelp.

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

    IF NOT itab_serie[] IS INITIAL.

      CLEAR: itab_t377, itab_t377[].

      SELECT * FROM t377

      INTO TABLE itab_t377

      FOR ALL ENTRIES IN itab_serie

      WHERE serail = itab_serie-sernp

        AND beleg  = 'MMSL'.

    ENDIF.

* << Fim da inclusão

  ENDIF.

  IF NOT itab_itens_nf[] IS INITIAL.

    SELECT ebeln ebelp zgtyp FROM ekpo

      INTO TABLE itab_cert

       FOR ALL ENTRIES IN itab_itens_nf

      WHERE ebeln EQ itab_itens_nf-ebeln

        AND ebelp EQ itab_itens_nf-ebelp.

  ENDIF.

  FREE itab_zycit031.

  IF v_inbound EQ 'X'.

...

 

...

                  OTHERS        = 1.

        IF sy-subrc EQ 0 AND v_cert_ativ EQ 'X'.

          itab_zycit031-answer = 'J'.

        ENDIF.

      ENDIF.

      IF NOT itab_serie[] IS INITIAL.

        CLEAR itab_serie.

        READ TABLE itab_serie WITH KEY ebeln = itab_itens_nf-ebeln

                                       ebelp = itab_itens_nf-ebelp.

        IF NOT itab_serie-sernp IS INITIAL.

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

          CLEAR: itab_t377.

          READ TABLE itab_t377 WITH KEY serail = itab_serie-sernp.

          IF sy-subrc EQ 0 AND ( itab_t377-serpflicht EQ '03' OR

                                 itab_t377-serpflicht EQ '04' ).

* << Fim da inclusão

          itab_zycit031-sernp = 'X'.

        ENDIF.

      ENDIF.

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

      ENDIF.

* << Fim da inclusão

      APPEND itab_zycit031.

      CLEAR itab_zycit031.

    ENDLOOP.

  ELSE.

...

 

...

                  OTHERS        = 1.

        IF sy-subrc EQ 0 AND v_cert_ativ EQ 'X'.

          itab_zycit031-answer = 'J'.

        ENDIF.

      ENDIF.

      IF NOT itab_serie[] IS INITIAL.

        CLEAR itab_serie.

        READ TABLE itab_serie WITH KEY ebeln = itab_itens_nf-ebeln

                                       ebelp = itab_itens_nf-ebelp.

        IF NOT itab_serie-sernp IS INITIAL.

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

          CLEAR: itab_t377.

          READ TABLE itab_t377 WITH KEY serail = itab_serie-sernp.

          IF sy-subrc EQ 0 AND ( itab_t377-serpflicht EQ '03' OR

                                 itab_t377-serpflicht EQ '04' ).

* << Fim da inclusão

          itab_zycit031-sernp = 'X'.

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

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDIF.

      APPEND itab_zycit031.

      CLEAR itab_zycit031.

    ENDLOOP.

  ENDIF.

...

 

...

    CLEAR itab_zyglt100 .

    READ TABLE itab_zyglt100 WITH KEY

                     zexit = 'RCB012' BINARY SEARCH.

    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.

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

      IF itab_zycit504[] IS INITIAL.

        IF v_existe_nfr NE 'S'.

          SELECT * FROM /pws/zycit504 INTO TABLE itab_zycit504

          FOR ALL ENTRIES IN itab_itens_nf

          WHERE nrseqnf   = itab_itens_nf-nrseqnf

          AND   nrseq     = itab_itens_nf-nrseq

          AND   nfglobal  = itab_itens_nf-nfglobal

          AND   ebeln     = itab_itens_nf-ebeln

          AND   ebelp     = itab_itens_nf-ebelp

          AND   nfremessa = space.

        ELSE.

          SELECT * FROM /pws/zycit504 INTO TABLE itab_zycit504

          FOR ALL ENTRIES IN itab_itens_nf

          WHERE nrseqnf   = itab_itens_nf-nrseqnf

          AND   nrseq     = itab_itens_nf-nrseq

          AND   nfglobal  = itab_itens_nf-nfglobal

          AND   ebeln     = itab_itens_nf-ebeln

          AND   ebelp     = itab_itens_nf-ebelp

          AND   nfremessa = itab_itens_nf-nfremessa.

        ENDIF.

      ENDIF.

* << Fim da inclusão

      CALL FUNCTION '/PWS/ZYCI_TRANSACAO_MBST'

           EXPORTING

                v_modo          = v_modo_bi

           TABLES

                t_dados         = itab_zycie033

                t_campo         = itab_zycit034

                t_zycit032      = itab_zycit032

                t_itens_nf      = itab_itens_nf

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

                t_t377          = itab_t377

                t_zycit504      = itab_zycit504

* << Fim da inclusão

           EXCEPTIONS

                campo_em_branco = 1

                OTHERS          = 2.

      IF sy-subrc = 0.

        READ TABLE itab_zycit032 WITH KEY tcode  = 'MBST'

                                          tabela = 'WA_NF'

                                          cpochv = wa_nf-nrseq

                                          tpmsg  = 'S'.

        IF sy-subrc EQ 0.

          MESSAGE i030 WITH v_belnr_ant.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F02

 

...

    CLEAR itab_zyglt100 .

    READ TABLE itab_zyglt100 WITH KEY

                     zexit = 'RCB012' BINARY SEARCH.

    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.

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

      IF itab_zycit504[] IS INITIAL.

        IF v_existe_nfr NE 'S'.

          SELECT * FROM /pws/zycit504 INTO TABLE itab_zycit504

          FOR ALL ENTRIES IN itab_itens_nf

          WHERE nrseqnf   = itab_itens_nf-nrseqnf

          AND   nrseq     = itab_itens_nf-nrseq

          AND   nfglobal  = itab_itens_nf-nfglobal

          AND   ebeln     = itab_itens_nf-ebeln

          AND   ebelp     = itab_itens_nf-ebelp

          AND   nfremessa = space.

        ELSE.

          SELECT * FROM /pws/zycit504 INTO TABLE itab_zycit504

          FOR ALL ENTRIES IN itab_itens_nf

          WHERE nrseqnf   = itab_itens_nf-nrseqnf

          AND   nrseq     = itab_itens_nf-nrseq

          AND   nfglobal  = itab_itens_nf-nfglobal

          AND   ebeln     = itab_itens_nf-ebeln

          AND   ebelp     = itab_itens_nf-ebelp

          AND   nfremessa = itab_itens_nf-nfremessa.

        ENDIF.

      ENDIF.

* << Fim da inclusão

      CALL FUNCTION '/PWS/ZYCI_TRANSACAO_MBST'

           EXPORTING

                v_modo          = v_modo_bi

           TABLES

                t_dados         = itab_zycie033

                t_campo         = itab_zycit034

                t_zycit032      = itab_zycit032

                t_itens_nf      = itab_itens_nf

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

                 t_t377          = itab_t377

                 t_zycit504      = itab_zycit504

* << Fim da inclusão

           EXCEPTIONS

                campo_em_branco = 1

                OTHERS          = 2.

      IF sy-subrc = 0.

        PERFORM trata_retorno_fbra_fisico.

      ELSE.

        LOOP AT itab_zycbt034.

          MESSAGE i016 WITH itab_zycbt034-descricao.

        ENDLOOP.

        PERFORM verifica_estorno_r3 USING 'MSEG'

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI017I01

 

...

MODULE carrega_itab INPUT.

* >> Início da exclusão: MODULE CARREGA_ITAB

  itab_zycit504 = /pws/zycit504.

* << Fim da exclusão

* >> Início da inclusão: MODULE CARREGA_ITAB

  MOVE-CORRESPONDING /pws/zycit504 TO itab_zycit504.

* << Fim da inclusão

  IF sy-dynnr EQ '0112'.

    IF v_existe_nfr NE 'S'.

      itab_zycit504-mandt     = sy-mandt.

      itab_zycit504-nrseqnf   = itab_zycit042-nrseqnf  .

      itab_zycit504-nrseq     = itab_zycit042-nrseq    .

      itab_zycit504-nfglobal  = itab_zycit042-nfglobal .

      itab_zycit504-ebeln     = itab_zycit042-ebeln    .

      itab_zycit504-ebelp     = itab_zycit042-ebelp    .

      itab_zycit504-matnr     = itab_zycit042-matnr    .

    ELSE.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI017O01

 

...

MODULE status OUTPUT.

* >> Início da exclusão: MODULE STATUS

  SET PF-STATUS '0112'.

* << Fim da exclusão

* >> Início da inclusão: MODULE STATUS

  CLEAR: itab_pf_status, itab_pf_status[].

  IF NOT /pws/zycie041-mblnr_mb01 IS INITIAL OR

     NOT /pws/zycie043-mblnr_mb01 IS INITIAL.

    itab_pf_status-fcode = 'ENTER'.

    APPEND itab_pf_status.

    itab_pf_status-fcode = 'MARCSR'.

    APPEND itab_pf_status.

    itab_pf_status-fcode = 'DESMSR'.

    APPEND itab_pf_status.

    itab_pf_status-fcode = 'DELSR'.

    APPEND itab_pf_status.

    itab_pf_status-fcode = 'SEARCH'.

    APPEND itab_pf_status.

  ENDIF.

  SET PF-STATUS '0112' EXCLUDING itab_pf_status.

* << Fim da inclusão

ENDMODULE.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI017X01

 

...

* >> Início da inclusão:

DATA: itab_t377 TYPE t377 OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

DATA: END OF COMMON PART.