Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 13/08/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 10:51:24
Descrição da Nota: ATUALIZAÇÃO DOS DADOS NO EMBARQUE POR PEDIDO DE COMPRA
Sintoma
Ajustes referentes a:
1) Determinação de Pricing para Pedido de Compras,
2) Determinação de documentos de complemento (débito e crédito) e atualização de seus respectivos
valores,
3) Consistências se Ordem de Venda preenchida para Embarque tipo "D" (Embarque por Pedido de
Compra).
Solução
Alteradas as rotinas para determinação correta de documentos e valores relacionados ao Pedido de
Compra. Alteradas as consistências referente a preenchimento do campo Ordem de Venda no Embarque por
Pedido de Compra.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04408 Data: 13/08/2007 Hora: 18:51:39
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04408
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00008
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03254 - 00001 - 6.0 - 00026 - PESO LIQUIDO DO ITEM VAZIO PARA EMBARQUE COM PARTIÇÃO DE LOTE
04320 - 00002 - 7.0 - 00002 - FORNECIMENTO ELIMINADO DO EMBARQUE QUANDO HÁ DOCUMENTO DE TRANSPO
04334 - 00003 - 7.0 - 00002 - TRATAMENTO NA PASTA PARCEIROS DO EMBARQUE POR PEDIDO DE COMPRA
----------------------------------------------------------------------------------------------------
ATUALIZAÇÃO DOS DADOS NO EMBARQUE POR PEDIDO DE COMPRA
----------------------------------------------------------------------------------------------------
Palavras Chave:
PEDIDO, COMPRA, CONSISTÊNCIA, ITEM, PRICING, ORDEM DE VENDA
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCE003F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F01
...
ENDCASE.
ENDDO.
ENDLOOP.
PERFORM progress_indicator USING 4 36
'Efetuando Refresh do Embarque'(m01).
IF NOT itab_ped[] IS INITIAL.
PERFORM seleciona_pedido_compra TABLES itab_ped.
ENDIF.
PERFORM progress_indicator USING 5 36
'Efetuando Refresh do Embarque'(m01).
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
IF NOT itab_ovs[] IS INITIAL AND /pws/zycee001-tipo_emb NE 'D'.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
IF NOT itab_ovs[] IS INITIAL.
* << Fim da inclusão
SELECT vbeln
audat
vbtyp
auart
netwr
waerk
vkorg
vtweg
spart
vkgrp
...
...
kurst
grupp
vgbel
bukrs_vf
zuonr
vsnmr_v
FROM vbak
APPENDING TABLE itab_vbak
FOR ALL ENTRIES IN itab_ovs
WHERE vbeln = itab_ovs-vbeln.
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
IF sy-subrc NE 0.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
IF sy-subrc NE 0 AND /pws/zycee001-tipo_emb NE 'D'.
* << Fim da inclusão
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = '/PWS/ZYCEM'
msgty = 'E'
msgv1 = text-501
msgv2 = /pws/zycee001-nrseq
txtnr = 221
zeile = 'OV_SEL_002'.
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
ELSE.
IF /pws/zycee001-tipo_emb EQ 'D'.
LOOP AT itab_vbak INTO itab_vbak.
v_index = sy-tabix.
IF /pws/zycee001-bukrs IS INITIAL.
READ TABLE itab_zycet020
WITH KEY auart = itab_vbak-auart
bukrs = itab_vbak-bukrs_vf.
* << Fim da inclusão
ELSE.
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
READ TABLE itab_zycet020
WITH KEY auart = itab_vbak-auart
bukrs = /pws/zycee001-bukrs.
ENDIF.
IF sy-subrc NE 0.
READ TABLE itab_zycet020
WITH KEY auart = itab_vbak-auart
bukrs = space.
ENDIF.
IF itab_zycet020-tipodoc EQ 'OV' OR
itab_zycet020-tipodoc EQ 'CO' OR
itab_zycet020-tipodoc EQ 'VC' OR
itab_zycet020-tipodoc EQ 'DR'.
DELETE itab_vbak INDEX v_index.
ENDIF.
ENDLOOP.
ENDIF.
* << Fim da inclusão
SELECT vbeln
lfstk
fkstk
fksak
buchk
cmgst
FROM vbuk
APPENDING TABLE itab_vbuk
FOR ALL ENTRIES IN itab_vbak
WHERE vbeln = itab_vbak-vbeln.
...
...
CLEAR: itab_zycet002-vlfob,
itab_zycet002-vlfrete,
itab_zycet002-vlseguro,
itab_zycet002-vlod,
itab_zycet002-vldesconto,
itab_zycet002-vlacrescimo,
itab_zycet002-vlagente.
CLEAR: itab_pricing,
v_knumv.
v_tipo_ov = 'C'.
* >> Início da inclusão: FORM CALCULA_PRICING
IF NOT itab_zycet002-auart IS INITIAL.
READ TABLE itab_zycet020
WITH KEY auart = itab_zycet002-auart
bukrs = itab_zycet002-bukrs.
IF sy-subrc NE 0.
READ TABLE itab_zycet020
WITH KEY auart = itab_zycet002-auart
bukrs = space.
ENDIF.
* << Fim da inclusão
* >> Início da exclusão: FORM CALCULA_PRICING
IF itab_zycet002-vbeln_va IS INITIAL AND
NOT itab_zycet002-ebeln IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_PRICING
ENDIF.
IF ( itab_zycet002-vbeln_va IS INITIAL AND NOT
itab_zycet002-ebeln IS INITIAL ) OR
( NOT itab_zycet002-vbeln_va IS INITIAL AND
NOT itab_zycet002-ebeln IS INITIAL AND
itab_zycet020-tipodoc NE 'DR' AND
itab_zycet020-tipodoc NE 'OD' AND
itab_zycet020-tipodoc NE 'OC' AND
/pws/zycee001-tipo_emb EQ 'D' ).
* << Fim da inclusão
READ TABLE itab_ekko WITH KEY ebeln = itab_zycet002-ebeln
BINARY SEARCH.
CHECK sy-subrc EQ 0.
READ TABLE itab_ekpo WITH KEY ebeln = itab_zycet002-ebeln
ebelp = itab_zycet002-ebelp
BINARY SEARCH.
CHECK sy-subrc EQ 0.
v_kwmeng = itab_ekpo-menge.
v_matnr = itab_ekpo-matnr.
v_vrkme = itab_ekpo-meins.
...
...
ebeln
ebelp
vbeln_vl
posnl
vbeln_vf
posnr.
LOOP AT itab_zycet002.
v_index = sy-tabix.
v_tipo_ov = 'C'.
IF itab_zycet002-vbeln_va IS INITIAL.
* >> Início da inclusão: FORM MOVE_DADOS_SAP_PARA_ITENS
v_tipo_ov = 'V'.
ELSEIF /pws/zycee001-tipo_emb EQ 'D'.
IF NOT itab_zycet002-auart IS INITIAL.
READ TABLE itab_zycet020
WITH KEY auart = itab_zycet002-auart
bukrs = itab_zycet002-bukrs.
IF sy-subrc NE 0.
READ TABLE itab_zycet020
WITH KEY auart = itab_zycet002-auart
bukrs = space.
ENDIF.
ENDIF.
IF ( itab_zycet020-tipodoc NE 'DR' AND
itab_zycet020-tipodoc NE 'OD' AND
itab_zycet020-tipodoc NE 'OC' ).
* << Fim da inclusão
v_tipo_ov = 'V'.
ENDIF.
* >> Início da inclusão: FORM MOVE_DADOS_SAP_PARA_ITENS
ENDIF.
* << Fim da inclusão
IF ( NOT itab_zycet002-vbeln_va IS INITIAL AND
NOT itab_zycet002-aupos IS INITIAL ) OR
( NOT itab_zycet002-ebeln IS INITIAL AND
NOT itab_zycet002-ebelp IS INITIAL ).
IF v_tipo_ov EQ 'V'.
...
...
MOVE: itab_lips-kcntgew TO itab_zycet002-ntgew,
itab_lips-kcbrgew TO itab_zycet002-brgew.
ENDIF.
ELSE.
MOVE: itab_vbrp-brgew TO itab_zycet002-brgew,
itab_vbrp-ntgew TO itab_zycet002-ntgew.
ENDIF.
MOVE: itab_vbrp-ktgrm TO itab_zycet002-ktgrm,
itab_vbrp-shkzg TO itab_zycet002-shkzg,
itab_vbrp-fkimg TO itab_zycet002-fkimg,
* >> Início da exclusão: FORM MOVE_DADOS_SAP_PARA_ITENS
itab_vbrp-vrkme TO itab_zycet002-vrkme.
* << Fim da exclusão
* >> Início da inclusão: FORM MOVE_DADOS_SAP_PARA_ITENS
itab_vbrp-vrkme TO itab_zycet002-vrkme,
itab_vbrp-gsber TO itab_zycet002-gsber.
* << Fim da inclusão
MOVE: itab_vbrp-vtweg_auft TO itab_zycet002-vtweg_auft,
itab_vbrp-vkorg_auft TO itab_zycet002-vkorg_auft.
READ TABLE itab_j_1bnflin
WITH KEY refkey = itab_zycet002-vbeln_vf
reftyp = 'BI'.
IF sy-subrc EQ 0.
READ TABLE itab_j_1bnfdoc
WITH KEY docnum = itab_j_1bnflin-docnum.
IF sy-subrc EQ 0.
itab_zycet002-docnum = itab_j_1bnfdoc-docnum.
...
...
READ TABLE itab_zycet020 WITH KEY auart = itab_vbak-auart
bukrs = space.
ENDIF.
CHECK sy-subrc EQ 0.
IF ( itab_zycet020-tipodoc EQ 'OV' OR
itab_zycet020-tipodoc EQ 'VC' OR
itab_zycet020-tipodoc EQ 'CO' ) AND
itab_zycet002-vbeln_vl IS INITIAL.
CONTINUE.
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_FATURAMENTOS
ELSE.
CLEAR itab_zycet020.
* << Fim da inclusão
ENDIF.
v_tipo_ov = 'C'.
v_vbeln = itab_zycet002-vbeln_va.
v_posnr = itab_zycet002-aupos.
* >> Início da exclusão: FORM ATUALIZA_FATURAMENTOS
IF v_vbeln IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_FATURAMENTOS
IF v_vbeln IS INITIAL OR
( itab_zycet020-tipodoc NE 'OC' AND
itab_zycet020-tipodoc NE 'OD' AND
itab_zycet020-tipodoc NE 'DR' AND
/pws/zycee001-tipo_emb EQ 'D' ).
* << Fim da inclusão
v_tipo_ov = 'V'.
ENDIF.
IF itab_zycet002-vbeln_vl IS INITIAL.
IF v_tipo_ov EQ 'V'.
v_vbeln = itab_zycet002-ebeln.
v_posnr = itab_zycet002-ebelp.
ENDIF.
ELSE.
* >> Início da inclusão: FORM ATUALIZA_FATURAMENTOS
IF v_tipo_ov EQ 'V'.
v_vbeln = itab_zycet002-vbeln_vl.
v_posnr = itab_zycet002-posnl.
ELSE.
* << Fim da inclusão
IF itab_zycet020-tipodoc NE 'OD' AND
itab_zycet020-tipodoc NE 'OC'.
v_vbeln = itab_zycet002-vbeln_vl.
v_posnr = itab_zycet002-posnl.
* >> Início da inclusão: FORM ATUALIZA_FATURAMENTOS
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
v_nao_achou = 'X'.
...