Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Mercadoria
Data/Hora da Publicação: 28/03/2013 00:00:00
Data/Hora Última Alteração: 16/04/2014 09:07:19
Descrição da Nota: AO INFORMAR FABRICANTE NO EMBARQUE, DÁ ERRO NA FATURA.
Sintoma
Ao informar fabricantes no embarque, levando dados para fatura, dá erro.
Solução
Carregar dados do fabricante informados no embarque.
9.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 12880 Data: 28/03/2013 Hora: 15:41:54
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 12880
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 9.0
Pacote : 00004
Agrupamento : 00151
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
11854 - 00001 - 8.0 - 00010 - ERRO AO TROCAR TIPO DE FABRICANTES NA FATURA
12474 - 00002 - 9.0 - 00001 - FABRICANTE TIPO 2 NÃO TRAZ O NOME DO EXPORTADOR
12608 - 00003 - 9.0 - 00002 - GRAVA PAÍS DE ORIGEM SOMENTE PARA OS ITENS DA TELA DA FATURA
12838 - 00004 - 9.0 - 00003 - ABRIR CAMPOS FABRICANTE NA FATURA QUANDO É TIPO 0 E 2
----------------------------------------------------------------------------------------------------
AO INFORMAR FABRICANTE NO EMBARQUE, DÁ ERRO NA FATURA.
----------------------------------------------------------------------------------------------------
Palavras Chave:
FABRICANTE - EMBARQUE - ERRO FATURA
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCI003 0101
REPS /PWS/MZYCI003F03
REPS /PWS/MZYCI003F02
REPS /PWS/MZYCI003I01
REPS /PWS/MZYCI003X01
REPS /PWS/MZYCI003F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCI003 0101
O Download das telas encontra-se disponível no link abaixo
http://produtos.sondait.com.br/home/PW.CE/Notas/
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F03
...
FORM consiste_fabrictp.
CLEAR lfa1.
IF /pws/zycie003-fabric EQ '2'
AND NOT /pws/zycie003-lifnrfabr IS INITIAL.
SELECT SINGLE * FROM lfa1
WHERE lifnr EQ /pws/zycie003-lifnrfabr.
/pws/zycie003-lifnrfabr = /pws/zycie003-lifnrfabr.
/pws/zycie003-flagfabr = 'S'.
/pws/zycie003-descfab = lfa1-name1.
/pws/zycie003-paisfab = lfa1-land1.
* >> Início da inclusão: FORM CONSISTE_FABRICTP
IF /pws/zycie006-tpfatura EQ '01' AND
'02' CA /pws/zycie006-fabricante.
PERFORM carrega_fabricante.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CONSISTE_FABRICTP
ENDIF.
* << Fim da inclusão
IF /pws/zycie003-fabric EQ '1'.
SELECT SINGLE * FROM lfa1 WHERE lifnr EQ /pws/zycie006-lifnr.
/pws/zycie003-lifnrfabr = /pws/zycie006-lifnr.
/pws/zycie003-descfab = lfa1-name1.
/pws/zycie003-paisfab = lfa1-land1.
ENDIF.
...
...
* >> Início da inclusão:
FORM carrega_fabricante.
READ TABLE itab_zycit080 WITH KEY ebeln = /pws/zycie003-ebeln
ebelp = /pws/zycie003-ebelp
tipoforn = 'D' .
IF sy-subrc NE 0 .
SELECT SINGLE lifnr name1 land1 adrnr stras ort01 ort02 regio
FROM lfa1
INTO CORRESPONDING FIELDS OF wa_lfa1
WHERE lifnr EQ /pws/zycie003-lifnrfabr.
SELECT SINGLE * FROM adrc INTO wa_adrc
WHERE addrnumber EQ wa_lfa1-adrnr.
SELECT SINGLE bezei FROM t005u INTO itab_zycit080-regio
WHERE land1 = wa_lfa1-land1 AND
spras = sy-langu AND
bland = wa_adrc-region.
itab_zycit080-mandt = sy-mandt.
itab_zycit080-prog = sy-repid.
itab_zycit080-nrseqli = /pws/zycie006-nrseq.
itab_zycit080-ebeln = itab_zycit003-ebeln.
itab_zycit080-ebelp = itab_zycit003-ebelp.
itab_zycit080-tipoforn = 'D' .
itab_zycit080-lifnr = /pws/zycie003-lifnrfabr.
itab_zycit080-name1 = /pws/zycie003-descfab.
itab_zycit080-landa = wa_lfa1-land1.
itab_zycit080-nrlogr = wa_lfa1-adrnr.
itab_zycit080-logradouro = wa_lfa1-stras.
itab_zycit080-compl = wa_lfa1-ort02.
itab_zycit080-city = wa_lfa1-ort01.
APPEND itab_zycit080.
ELSE.
IF itab_zycit080-lifnr NE /pws/zycie003-lifnrfabr.
SELECT SINGLE lifnr name1 land1 adrnr stras ort01 ort02 regio
FROM lfa1
INTO CORRESPONDING FIELDS OF wa_lfa1
WHERE lifnr EQ /pws/zycie003-lifnrfabr.
SELECT SINGLE * FROM adrc INTO wa_adrc
WHERE addrnumber EQ wa_lfa1-adrnr.
SELECT SINGLE bezei FROM t005u INTO itab_zycit080-regio
WHERE land1 = wa_lfa1-land1 AND
spras = sy-langu AND
bland = wa_adrc-region.
itab_zycit080-lifnr = /pws/zycie003-lifnrfabr.
itab_zycit080-name1 = /pws/zycie003-descfab.
itab_zycit080-landa = wa_lfa1-land1.
itab_zycit080-nrlogr = wa_lfa1-adrnr.
itab_zycit080-logradouro = wa_lfa1-stras.
itab_zycit080-compl = wa_lfa1-ort02.
itab_zycit080-city = wa_lfa1-ort01.
MODIFY itab_zycit080 TRANSPORTING lifnr name1 landa
nrlogr logradouro compl city
WHERE ebeln = /pws/zycie003-ebeln
AND ebelp = /pws/zycie003-ebelp
AND tipoforn = 'D' .
ENDIF.
ENDIF.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
FORM trata_fabricante.
* >> Início da exclusão: FORM TRATA_FABRICANTE
IF v_tpfabr = '0'.
* << Fim da exclusão
* >> Início da inclusão: FORM TRATA_FABRICANTE
IF v_tpfabr IS INITIAL.
v_tpfabr = /pws/zycie006-fabricante.
ENDIF.
* << Fim da inclusão
LOOP AT itab_zycit003.
* >> Início da inclusão: FORM TRATA_FABRICANTE
itab_zycit003-paquis = lfa1-land1.
IF /pws/zycie006-fabricante EQ '0'.
itab_zycit003-fabric = '2'.
itab_zycit003-flagfabr = 'S' .
* << Fim da inclusão
itab_zycit003-lifnrfabr = /pws/zycie006-lifnrfabr .
* >> Início da exclusão: FORM TRATA_FABRICANTE
ENDLOOP.
ELSEIF v_tpfabr = '1'.
* << Fim da exclusão
* >> Início da inclusão: FORM TRATA_FABRICANTE
ELSEIF /pws/zycie006-fabricante EQ '1'.
* << Fim da inclusão
v_fabr_ant = '1'.
* >> Início da exclusão: FORM TRATA_FABRICANTE
LOOP AT itab_zycit003.
itab_zycit003-fabric = '1'.
* << Fim da exclusão
* >> Início da inclusão: FORM TRATA_FABRICANTE
itab_zycit003-fabric = /pws/zycie006-fabricante.
* << Fim da inclusão
MOVE: /pws/zycie006-descfab TO itab_zycit003-descfab,
/pws/zycie006-lifnrfabr TO itab_zycit003-lifnrfabr,
/pws/zycie006-flagfabr TO itab_zycit003-flagfabr.
MOVE /pws/zycie006-paisfab TO itab_zycit003-paisfab.
* >> Início da exclusão: FORM TRATA_FABRICANTE
MODIFY: itab_zycit003.
ENDLOOP.
* << Fim da exclusão
v_flag = 'X'.
* >> Início da exclusão: FORM TRATA_FABRICANTE
ELSEIF v_tpfabr = '3'.
* << Fim da exclusão
* >> Início da inclusão: FORM TRATA_FABRICANTE
ELSEIF /pws/zycie006-fabricante EQ '3'.
* << Fim da inclusão
v_flag = 'X'.
* >> Início da exclusão: FORM TRATA_FABRICANTE
LOOP AT itab_zycit003.
itab_zycit003-fabric = '3'.
* << Fim da exclusão
* >> Início da inclusão: FORM TRATA_FABRICANTE
itab_zycit003-fabric = /pws/zycie006-fabricante.
* << Fim da inclusão
CLEAR: itab_zycit003-descfab,
itab_zycit003-lifnrfabr, itab_zycit003-flagfabr.
IF itab_zycit003-paisfab IS INITIAL.
itab_zycit003-paisfab = /pws/zycie006-paisfab.
* >> Início da inclusão: FORM TRATA_FABRICANTE
ENDIF.
IF NOT itab_zycit003-paisfab IS INITIAL AND
itab_zycit003-porigem IS INITIAL.
itab_zycit003-porigem = itab_zycit003-paisfab.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM TRATA_FABRICANTE
MODIFY: itab_zycit003.
ENDLOOP.
* << Fim da exclusão
* >> Início da inclusão: FORM TRATA_FABRICANTE
ELSE.
itab_zycit003-fabric = /pws/zycie006-fabricante.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM TRATA_FABRICANTE
SELECT SINGLE * FROM lfa1
WHERE lifnr EQ /pws/zycie006-lifnr.
LOOP AT itab_zycit003.
itab_zycit003-paquis = lfa1-land1.
* << Fim da exclusão
IF NOT itab_zycit003-lifnrfabr IS INITIAL.
SELECT SINGLE land1 FROM lfa1
INTO itab_zycit003-porigem
WHERE lifnr EQ itab_zycit003-lifnrfabr.
IF sy-subrc EQ 0.
itab_zycit003-flagfabr = 'S'.
ELSE.
CLEAR itab_zycit003-flagfabr.
ENDIF.
ELSE.
IF NOT itab_zycit003-fabric EQ '3' AND
NOT itab_zycit003-fabric EQ '2'.
CLEAR itab_zycit003-porigem.
ENDIF.
CLEAR itab_zycit003-flagfabr.
* >> Início da exclusão: FORM TRATA_FABRICANTE
ENDIF.
IF itab_zycit003-fabric EQ 3 AND
NOT itab_zycit003-paisfab IS INITIAL AND
itab_zycit003-porigem IS INITIAL.
itab_zycit003-porigem = itab_zycit003-paisfab.
* << Fim da exclusão
ENDIF.
MODIFY itab_zycit003.
ENDLOOP.
ENDFORM.
...
...
FORM propor_fabricante.
* >> Início da inclusão: FORM PROPOR_FABRICANTE
DATA: v_lifnrfabr TYPE /pws/zycit003-lifnrfabr.
IF NOT itab_zycit003[] IS INITIAL.
SELECT lifnr land1 FROM lfa1
INTO TABLE itab_lfa1
FOR ALL ENTRIES IN itab_zycit003
WHERE lifnr EQ itab_zycit003-lifnrfabr.
ENDIF.
SORT itab_zycit003 BY lifnrfabr.
* << Fim da inclusão
READ TABLE itab_zycit003 INDEX 1.
* >> Início da inclusão: FORM PROPOR_FABRICANTE
v_lifnrfabr = itab_zycit003-lifnrfabr.
* << Fim da inclusão
IF sy-tcode EQ '/PWS/ZYCI003_C' AND
v_fabr IS INITIAL AND
( /pws/zycie001-modalidade EQ '01' OR
/pws/zycie001-modalidade EQ '11' ).
v_fabr = 'X'.
LOOP AT itab_zycit003 WHERE
lifnrfabr NE space.
ENDLOOP.
IF sy-subrc NE 0.
v_tpfabr = /pws/zycie006-fabricante = 3.
ELSE.
LOOP AT itab_zycit003 WHERE
* >> Início da exclusão: FORM PROPOR_FABRICANTE
lifnrfabr NE itab_zycit003-lifnrfabr.
* << Fim da exclusão
* >> Início da inclusão: FORM PROPOR_FABRICANTE
lifnrfabr NE v_lifnrfabr.
* << Fim da inclusão
EXIT.
ENDLOOP.
IF sy-subrc NE 0 AND
NOT itab_zycit003-lifnrfabr IS INITIAL.
/pws/zycie006-lifnrfabr = itab_zycit003-lifnrfabr.
/pws/zycie006-fabricante = 0.
SELECT SINGLE *
FROM lfa1
WHERE lifnr = /pws/zycie006-lifnrfabr.
IF sy-subrc EQ 0.
/pws/zycie006-descfab = lfa1-name1.
/pws/zycie006-paisfab = lfa1-land1.
ENDIF.
IF /pws/zycie006-lifnrfabr EQ /pws/zycie006-lifnr.
/pws/zycie006-fabricante = 1.
ENDIF.
ELSE.
/pws/zycie006-fabricante = 2.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM PROPOR_FABRICANTE
LOOP AT itab_zycit003.
* << Fim da inclusão
IF /pws/zycie006-fabricante EQ '0'.
itab_zycit003-fabric = 2.
ELSE.
itab_zycit003-fabric = /pws/zycie006-fabricante.
ENDIF.
* >> Início da exclusão: FORM PROPOR_FABRICANTE
MODIFY itab_zycit003 TRANSPORTING fabric
WHERE fabric NE itab_zycit003-fabric.
ELSEIF sy-tcode = '/PWS/ZYCI003_C' AND
NOT itab_zycit003-lifnrfabr IS INITIAL.
LOOP AT itab_zycit003.
ON CHANGE OF itab_zycit003-lifnrfabr.
SELECT SINGLE * FROM lfa1
WHERE lifnr EQ itab_zycit003-lifnrfabr.
ENDON.
* << Fim da exclusão
IF itab_zycit003-paisfab IS INITIAL.
* >> Início da exclusão: FORM PROPOR_FABRICANTE
MOVE lfa1-land1 TO itab_zycit003-paisfab.
MOVE lfa1-land1 TO itab_zycit003-porigem.
MODIFY itab_zycit003.
* << Fim da exclusão
* >> Início da inclusão: FORM PROPOR_FABRICANTE
READ TABLE itab_lfa1 WITH KEY lifnr = itab_zycit003-lifnrfabr.
IF sy-subrc EQ 0.
itab_zycit003-paisfab = itab_zycit003-porigem = lfa1-land1.
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM PROPOR_FABRICANTE
MODIFY itab_zycit003 TRANSPORTING fabric paisfab .
* << Fim da inclusão
ENDLOOP.
ENDIF.
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003I01
...
CLEAR : itab_zycit006-lifnrfabr,
itab_zycit006-descfab,
itab_zycit006-paisfab.
MODIFY itab_zycit006 TRANSPORTING lifnrfabr descfab paisfab
WHERE nrseq EQ /pws/zycie006-nrseq.
v_paisfab = 'X' .
ENDIF.
LOOP AT itab_zycit003.
IF '023' CA /pws/zycie006-fabricante .
CLEAR :
* >> Início da exclusão: MODULE ATUALIZA_PAIS
itab_zycit003-lifnrfabr,
* << Fim da exclusão
itab_zycit003-descfab ,
itab_zycit003-porigem ,
/pws/zycie003-porigem .
IF /pws/zycie006-fabricante NE '3'.
CLEAR itab_zycit003-paisfab.
ELSE.
itab_zycit003-paisfab = /pws/zycie006-paisfab.
ENDIF.
CLEAR : /pws/zycie003-paisfab,
/pws/zycie003-lifnrfabr,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003X01
...
* >> Início da inclusão:
DATA wa_adrc LIKE adrc.
* << Fim da inclusão
DATA: END OF COMMON PART.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F01
...
v_trunc = trunc( v_trunc ) .
v_qtd_iten = v_trunc / 10000.
IF itab_zycit003-invoiced NE v_qtd_iten AND
itab_zycit003-servico NE 'X'.
MESSAGE e061 WITH text-192 itab_zycit003-ebeln
itab_zycit003-ebelp text-193.
ENDIF.
ENDLOOP.
ELSEIF /pws/zycie006-tpfatura EQ '01'.
IF '02' CA /pws/zycie006-fabricante.
* >> Início da inclusão: FORM SALVAR_DADOS
LOOP AT itab_zycit003.
READ TABLE itab_zycit080 WITH KEY ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc NE 0 AND
NOT itab_zycit003-lifnrfabr IS INITIAL.
MOVE itab_zycit003 TO /pws/zycie003 .
PERFORM carrega_fabricante .
ENDIF.
ENDLOOP.
* << Fim da inclusão
if itab_zycit080[] is initial.
v_msg = 'X'.
endif.
LOOP AT itab_zycit080.
IF ( itab_zycit080-name1 IS INITIAL OR
itab_zycit080-landa IS INITIAL OR
itab_zycit080-logradouro IS INITIAL OR
itab_zycit080-nrlogr IS INITIAL OR
itab_zycit080-city IS INITIAL OR
itab_zycit080-regio IS INITIAL ) .
...
...
PERFORM consiste_sequencial.
PERFORM rotina_de_contabilizacao.
PERFORM salvar_bco.
IF sy-binpt EQ 'X'.
EXPORT /pws/zycie006 TO MEMORY ID 'BPFATIMP_01'.
ENDIF.
IF /pws/zycie006-tpfatura EQ '04' AND v_salva_desp EQ 'X'.
PERFORM salva_zycit047.
ENDIF.
IF '02' CA /pws/zycie006-fabricante.
* >> Início da inclusão: FORM SALVAR_DADOS
IF itab_zycit080[] IS INITIAL.
LOOP AT itab_zycit003.
IF NOT itab_zycit003-lifnrfabr IS INITIAL.
IF itab_zycit003-flagfabr = 'S'.
SELECT SINGLE lifnr name1 land1 adrnr stras ort01 ort02 regio
FROM lfa1
INTO CORRESPONDING FIELDS OF wa_lfa1
WHERE lifnr EQ /pws/zycie003-lifnrfabr.
SELECT SINGLE * FROM adrc INTO wa_adrc
WHERE addrnumber EQ wa_lfa1-adrnr.
SELECT SINGLE bezei FROM t005u INTO /pws/zycie080a-regio
WHERE land1 = wa_lfa1-land1 AND
spras = sy-langu AND
bland = wa_adrc-region.
/pws/zycie080a-name1 = wa_lfa1-name1.
IF NOT itab_zycit003-paisfab IS INITIAL.
/pws/zycie080a-landa = itab_zycit003-paisfab.
ELSE.
/pws/zycie080a-landa = wa_lfa1-land1.
ENDIF.
/pws/zycie080a-nrlogr = wa_lfa1-adrnr.
/pws/zycie080a-logradouro = wa_lfa1-stras.
/pws/zycie080a-compl = wa_lfa1-ort02.
/pws/zycie080a-city = wa_lfa1-ort01.
ENDIF.
MOVE /pws/zycie080a TO itab_zycit080.
itab_zycit080-mandt = sy-mandt.
itab_zycit080-prog = sy-repid.
itab_zycit080-nrseqli = /pws/zycie006-nrseq.
itab_zycit080-ebeln = itab_zycit003-ebeln.
itab_zycit080-ebelp = itab_zycit003-ebelp.
itab_zycit080-tipoforn = 'D' .
APPEND itab_zycit080.
ENDIF.
itab_zycit003-descfab = /pws/zycie080a-name1 .
itab_zycit003-paisfab = /pws/zycie080a-landa.
MODIFY itab_zycit003 TRANSPORTING descfab paisfab
WHERE ebeln = itab_zycit080-ebeln
AND ebelp = itab_zycit080-ebelp.
ENDLOOP.
ENDIF.
* << Fim da inclusão
SELECT * FROM /pws/zycit080 INTO TABLE lt_zycit080
WHERE nrseqli = /pws/zycie006-nrseq
AND tipoforn = 'D'.
LOOP AT lt_zycit080.
READ TABLE itab_zycit080 WITH KEY nrseqli = lt_zycit080-nrseqli
tipoforn = lt_zycit080-tipoforn.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING lt_zycit080 TO /pws/zycit080.
PERFORM carrega_log USING '/PWS/ZYCIT080' 'D'
' ' '/PWS/SAPMZYCI003' /pws/zycie006-nrseq.
...