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