Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Custo Efetivo
Data/Hora da Publicação: 24/07/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 14:24:43
Descrição da Nota: AJUSTE CUSTO
Sintoma
Dificuldade em encerrar a importação do embarque diferença no Custo.
Solução
Criado o relatório /PWS/ZYCIR988 para ajustar a diferença no Custo Efetivo. Levar o valor da
mercadoria para o custo efetivo.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04253 Data: 24/07/2007 Hora: 10:48:28
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04253
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00005
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03346 - 00001 - 7.0 - 00001 - ERRO NO CUSTO EFETIVO, VALOR DA FATURA
----------------------------------------------------------------------------------------------------
AJUSTE CUSTO
----------------------------------------------------------------------------------------------------
Palavras Chave:
AJUSTE CUSTO - DIFERENÇA -
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/ZYCIR988
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR988
REPORT /pws/zycir988 MESSAGE-ID /pws/zycim.
TABLES : /pws/zycie001,
/pws/zycit031,
/pws/zycie006,
* >> Início da inclusão:
/pws/zycit041,
/pws/zycbt007,
tcurx,
* << Fim da inclusão
t001.
DATA itab_zycit036 LIKE /pws/zycit036 OCCURS 0 WITH HEADER LINE.
DATA itab_zycit003 LIKE /pws/zycit003 OCCURS 0 WITH HEADER LINE.
DATA itab_zycit042 LIKE /pws/zycit042 OCCURS 0 WITH HEADER LINE.
DATA itab_zycit263 LIKE /pws/zycie263 OCCURS 0 WITH HEADER LINE.
* >> Início da inclusão:
DATA itab_zycit006 LIKE /pws/zycie006 OCCURS 0 WITH HEADER LINE.
DATA itab_zycit100 LIKE /pws/zycit100 OCCURS 0 WITH HEADER LINE.
* << Fim da inclusão
DATA: okcode LIKE sy-ucomm.
* >> Início da inclusão:
DATA : v_kursf LIKE bkpf-kursf,
v_valor LIKE /pws/zycit036-vlreal.
* << Fim da inclusão
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETER: p_nrseq TYPE /pws/zycit003-nrseq OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bl1.
INITIALIZATION.
START-OF-SELECTION.
PERFORM seleciona_dados.
PERFORM ajusta_custo.
FORM seleciona_dados.
SELECT SINGLE * FROM /pws/zycit001
INTO /pws/zycie001
WHERE nrseq EQ p_nrseq.
IF sy-subrc EQ 0 .
SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie001-bukrs.
SELECT SINGLE * FROM /pws/zycit031
WHERE inco1 = /pws/zycie001-inco1
AND land1 EQ t001-land1.
* >> Início da inclusão: FORM SELECIONA_DADOS
SELECT SINGLE *
FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie001-bukrs.
* << Fim da inclusão
SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003
* >> Início da inclusão: FORM SELECIONA_DADOS
WHERE nrseq EQ /pws/zycie001-nrseq.
SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100
* << Fim da inclusão
WHERE nrseq EQ /pws/zycie001-nrseq.
IF sy-subrc EQ 0.
SELECT * FROM /pws/zycit263
INTO TABLE itab_zycit263
FOR ALL ENTRIES IN itab_zycit003
WHERE nrseq EQ itab_zycit003-nrseq
AND ebeln EQ itab_zycit003-ebeln
* >> Início da exclusão: FORM SELECIONA_DADOS
AND ebelp EQ itab_zycit003-ebelp.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS
AND ebelp EQ itab_zycit003-ebelp
AND eliminado NE 'X'.
* << Fim da inclusão
IF sy-subrc EQ 0.
* >> Início da exclusão: FORM SELECIONA_DADOS
READ TABLE itab_zycit263 INDEX 1 .
SELECT SINGLE * FROM /pws/zycit006
INTO /pws/zycie006
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS
SELECT * FROM /pws/zycit006
INTO TABLE itab_zycit006
FOR ALL ENTRIES IN itab_zycit263
WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat
AND tpfatura EQ '01'
AND eliminado NE 'X' .
SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042
FOR ALL ENTRIES IN itab_zycit003
WHERE nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
* << Fim da inclusão
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
FORM ajusta_custo .
* >> Início da exclusão: FORM AJUSTA_CUSTO
IF /pws/zycie006-tpfatura = '01'.
* << Fim da exclusão
LOOP AT itab_zycit003.
SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036
WHERE nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
( codigo = 'FOB' OR
codigo = 'C&F' OR
codigo = 'CIF' )
AND ( origem = 'FAT' OR
origem = 'NF' ).
IF sy-subrc = 0.
* >> Início da exclusão: FORM AJUSTA_CUSTO
LOOP AT itab_zycit036.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
LOOP AT itab_zycit036 WHERE nrseq = itab_zycit003-nrseq
AND ebeln = itab_zycit003-ebeln
AND ebelp = itab_zycit003-ebelp .
* << Fim da inclusão
IF itab_zycit036-origem = 'NF'.
* >> Início da exclusão: FORM AJUSTA_CUSTO
SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042
WHERE nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
* << Fim da exclusão
READ TABLE itab_zycit042
WITH KEY ebeln = itab_zycit036-ebeln
ebelp = itab_zycit036-ebelp.
* >> Início da exclusão: FORM AJUSTA_CUSTO
itab_zycit036-vlreal = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten )
+ itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
IF sy-subrc EQ 0.
itab_zycit036-vlreal =
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ) +
itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
* << Fim da inclusão
itab_zycit036-origem = 'NF'.
itab_zycit036-waers_real = itab_zycit003-waers_real.
itab_zycit036-nrseqori = itab_zycit042-docnum.
INSERT /pws/zycit036 FROM itab_zycit036.
IF sy-subrc NE 0.
MODIFY /pws/zycit036 FROM itab_zycit036.
* >> Início da inclusão: FORM AJUSTA_CUSTO
ENDIF.
* << Fim da inclusão
ENDIF.
ELSEIF itab_zycit036-origem = 'FAT'.
* >> Início da exclusão: FORM AJUSTA_CUSTO
READ TABLE itab_zycit003
WITH KEY ebeln = itab_zycit036-ebeln
ebelp = itab_zycit036-ebelp.
IF sy-subrc = 0.
itab_zycit036-vlreal = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten )
+ itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
READ TABLE itab_zycit263 WITH KEY
nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
READ TABLE itab_zycit006 WITH KEY
nrseq_pgfat = itab_zycit263-nrseq_pgfat.
IF sy-subrc EQ 0.
itab_zycit036-vlreal =
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ) +
itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
* << Fim da inclusão
itab_zycit036-origem = 'FAT'.
itab_zycit036-waers_real = itab_zycit003-waers_real.
* >> Início da exclusão: FORM AJUSTA_CUSTO
itab_zycit036-nrseqori = /pws/zycie006-nrseq.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
itab_zycit036-nrseqori = itab_zycit006-nrseq.
* << Fim da inclusão
INSERT /pws/zycit036 FROM itab_zycit036.
IF sy-subrc NE 0.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM AJUSTA_CUSTO
ENDIF.
* << Fim da inclusão
ENDIF.
ENDLOOP.
ELSE.
SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036
WHERE nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp AND
( codigo = 'FOB' OR
codigo = 'C&F' OR
codigo = 'CIF' )
AND origem = 'PED' .
* >> Início da exclusão: FORM AJUSTA_CUSTO
IF sy-subrc EQ 0 AND /pws/zycie006-belnr_p NE space.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
IF sy-subrc EQ 0.
READ TABLE itab_zycit263 WITH KEY
nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF sy-subrc EQ 0.
READ TABLE itab_zycit006 WITH KEY
nrseq_pgfat = itab_zycit263-nrseq_pgfat.
* << Fim da inclusão
* >> Início da exclusão: FORM AJUSTA_CUSTO
LOOP AT itab_zycit036.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
IF NOT itab_zycit006-belnr_p IS INITIAL.
LOOP AT itab_zycit036 WHERE
nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
* << Fim da inclusão
* >> Início da exclusão: FORM AJUSTA_CUSTO
READ TABLE itab_zycit263 WITH KEY
nrseq = itab_zycit036-nrseq
ebeln = itab_zycit036-ebeln
ebelp = itab_zycit036-ebelp
nrseq_pgfat = /pws/zycie006-nrseq_pgfat.
* << Fim da exclusão
IF sy-subrc EQ 0.
itab_zycit036-vlreal = ( itab_zycit003-vlreal *
itab_zycit263-qtd_iten ) +
itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
itab_zycit036-origem = 'FAT'.
itab_zycit036-waers_real = itab_zycit003-waers_real.
* >> Início da exclusão: FORM AJUSTA_CUSTO
itab_zycit036-nrseqori = /pws/zycie006-nrseq.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
itab_zycit036-nrseqori = itab_zycit006-nrseq.
* << Fim da inclusão
itab_zycit036-codmod = 'D'.
itab_zycit036-status = 'M'.
* >> Início da exclusão: FORM AJUSTA_CUSTO
itab_zycit036-vlreal_emb = /pws/zycie006-vltotal.
itab_zycit036-waers_emb = /pws/zycie006-waers.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
itab_zycit036-vlreal_emb = itab_zycit006-vltotal.
itab_zycit036-waers_emb = itab_zycit006-waers.
* << Fim da inclusão
CLEAR : itab_zycit036-vldif.
itab_zycit036-usernamec = sy-uname.
itab_zycit036-dtuserc = sy-datum.
itab_zycit036-hruserc = sy-uzeit.
* >> Início da inclusão: FORM AJUSTA_CUSTO
SELECT SINGLE * FROM /pws/zycit041
WHERE nrseq EQ itab_zycit042-nrseqnf
AND nfglobal EQ itab_zycit042-nfglobal
AND docnum EQ itab_zycit042-docnum .
IF sy-subrc EQ 0 AND
NOT /pws/zycit041-belnr_mr1m IS INITIAL.
IF sy-subrc EQ 0.
itab_zycit036-congelamov = 'X' .
ENDIF.
* << Fim da inclusão
INSERT /pws/zycit036 FROM itab_zycit036.
IF sy-subrc NE 0.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDIF.
SELECT * FROM /pws/zycit042 INTO TABLE itab_zycit042
WHERE nrseq = itab_zycit003-nrseq AND
ebeln = itab_zycit003-ebeln AND
ebelp = itab_zycit003-ebelp.
READ TABLE itab_zycit003
...
...
WITH KEY ebeln = itab_zycit036-ebeln
ebelp = itab_zycit036-ebelp.
itab_zycit036-vlreal = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten ) +
itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.
itab_zycit036-origem = 'NF'.
itab_zycit036-waers_real = itab_zycit003-waers_real.
itab_zycit036-nrseqori = itab_zycit042-docnum.
itab_zycit036-codmod = 'D'.
itab_zycit036-status = 'M'.
* >> Início da exclusão: FORM AJUSTA_CUSTO
itab_zycit036-vlreal_emb = /pws/zycie006-vltotal.
itab_zycit036-waers_emb = /pws/zycie006-waers.
* << Fim da exclusão
* >> Início da inclusão: FORM AJUSTA_CUSTO
itab_zycit036-vlreal_emb = itab_zycit006-vltotal.
itab_zycit036-waers_emb = itab_zycit006-waers.
* << Fim da inclusão
CLEAR : itab_zycit036-vldif.
itab_zycit036-usernamec = sy-uname.
itab_zycit036-dtuserc = sy-datum.
itab_zycit036-hruserc = sy-uzeit.
* >> Início da inclusão: FORM AJUSTA_CUSTO
SELECT SINGLE * FROM /pws/zycit041
WHERE nrseq EQ itab_zycit042-nrseqnf
AND nfglobal EQ itab_zycit042-nfglobal
AND docnum EQ itab_zycit042-docnum .
IF sy-subrc EQ 0 AND
NOT /pws/zycit041-belnr_mr1m IS INITIAL.
itab_zycit036-congelamov = 'X' .
ENDIF.
* << Fim da inclusão
INSERT /pws/zycit036 FROM itab_zycit036.
IF sy-subrc NE 0.
MODIFY /pws/zycit036 FROM itab_zycit036.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM AJUSTA_CUSTO
ENDIF.
* << Fim da inclusão
ENDLOOP.
* >> Início da inclusão: FORM AJUSTA_CUSTO
ENDIF.
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc = 0.
MESSAGE i015 WITH text-002.
* >> Início da inclusão: FORM AJUSTA_CUSTO
ENDIF.
ENDFORM.
FORM retorna_decimais USING p_moeda
CHANGING p_valor.
SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.
IF sy-subrc <> 0.
tcurx-currdec = 2.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM AJUSTA_CUSTO
p_valor = p_valor / ( 10 ** ( tcurx-currdec - 2 ) ).
ENDFORM.
FORM trata_decimais USING p_moeda
CHANGING p_valor.
SELECT SINGLE * FROM tcurx WHERE currkey = p_moeda.
IF sy-subrc <> 0.
tcurx-currdec = 2.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM AJUSTA_CUSTO
p_valor = p_valor * ( 10 ** ( tcurx-currdec - 2 ) ).
* << Fim da inclusão
* >> Início da exclusão: FORM AJUSTA_CUSTO
ENDFORM.
* << Fim da exclusão
* >> Início da inclusão:
ENDFORM.
* << Fim da inclusão