Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 01/08/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 10:48:41
Descrição da Nota: FORNECIMENTO ELIMINADO DO EMBARQUE QUANDO HÁ DOCUMENTO DE TRANSPORTE
Sintoma
Quando para um Documento de Transporte há mais de um Fornecimento, e caso sejam de pagadores
diferentes, ao criar o Embarque e tentar incluir no processo o segundo Fornecimento do Documento de
Transporte, ao salvar, o programa inclui os demais Fornecimentos do Transporte e ao passar pela
consistência dos itens, elimina a entrada original, digitada pelo usuário.
Solução
Alterada a consistência para que os dados do cabeçalho e os dados bases da consistência do itens
sejam determinados pela primeira remessa digitada pelo usuário, possibilitando desta forma que a
primeiro Fornecimento incluído seja mantido no processo.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04320 Data: 01/08/2007 Hora: 13:55:41
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04320
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00006
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02585 - 00001 - 6.0 - 00025 - VALORES DE COMISSÃO DE AGENTE REAL E CONTABILIZADO (EMBARQUE X CO
03401 - 00002 - 6.0 - 00026 - CRIAÇÃO DE EMBARQUE PELO TRANSPORTE
04114 - 00003 - 7.0 - 00002 - ERRO NA SELEÇÃO DO CENTRO AO INCLUIR A ORDEM DE VENDA NO EMBARQUE
04179 - 00004 - 7.0 - 00002 - VERIFICAÇÃO DE CONSISTÊNCIA DE ITEM AO INCLUIR UMA ENTRADA NO EMB
----------------------------------------------------------------------------------------------------
FORNECIMENTO ELIMINADO DO EMBARQUE QUANDO HÁ DOCUMENTO DE TRANSPORTE
----------------------------------------------------------------------------------------------------
Palavras Chave:
REMESSA, TRANSPORTE, EMBARQUE, CONSISTÊNCIA, PAGADOR,
SALVAR, ITEM, FORNECIMENTO, CABEÇALHO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCE003F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F01
...
WHERE nrseq = /pws/zycee001-nrseq.
itab_zycet015_ant[] = itab_zycet015[].
SELECT *
FROM /pws/zycet016
INTO TABLE itab_zycet016
WHERE nrseq = /pws/zycee001-nrseq.
itab_zycet016_ant[] = itab_zycet016[].
PERFORM executa_exit USING 'EMB009'.
ENDFORM.
FORM seleciona_dados_sap USING value(p_unico) TYPE c.
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
DATA: v_subrc TYPE sy-subrc.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
DATA: v_subrc TYPE sy-subrc,
v_index TYPE sy-tabix.
* << Fim da inclusão
DATA: BEGIN OF itab_vbfa_aux OCCURS 0.
INCLUDE STRUCTURE vbfa.
DATA: END OF itab_vbfa_aux.
DATA: itab_vbfa_2 TYPE TABLE OF vbfa WITH HEADER LINE.
DATA: BEGIN OF itab_ovs OCCURS 0,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
END OF itab_ovs.
DATA: BEGIN OF itab_for OCCURS 0,
vbeln TYPE likp-vbeln,
...
...
END OF itab_doc.
DATA: BEGIN OF itab_ped OCCURS 0,
ebeln TYPE ekko-ebeln,
ebelp TYPE ekpo-ebelp,
END OF itab_ped.
DATA: wa_vbco6 TYPE vbco6.
DATA: v_vbtyp TYPE vbak-vbtyp,
v_vbeln TYPE vbak-vbeln,
v_posnr TYPE vbap-posnr.
DATA: itab_zycet002_rem_transp LIKE itab_zycet002[].
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
DATA: wa_zycet002 LIKE itab_zycet002.
* << Fim da inclusão
FIELD-SYMBOLS: <fs_vbfa> TYPE vbfa.
IF p_unico EQ 'X'.
IF NOT itab_zycet002-tknum IS INITIAL.
SELECT vbeln
FROM vttp
APPENDING TABLE itab_for[]
WHERE tknum = itab_zycet002-tknum.
ENDIF.
IF NOT itab_zycet002-vbeln_va IS INITIAL.
MOVE: itab_zycet002-vbeln_va TO itab_ovs-vbeln,
...
...
ELSEIF NOT itab_zycet002-ebeln IS INITIAL.
MOVE: itab_zycet002-ebeln TO itab_ped-ebeln,
itab_zycet002-ebelp TO itab_ped-ebelp.
APPEND itab_ped.
sy-subrc = 4.
ELSE.
EXIT.
ENDIF.
ELSE.
PERFORM limpa_dados_sap.
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
IF sy-tcode NE c_transacao_e AND
/pws/zycee001-envia_c IS INITIAL AND
/pws/zycee001-sta1 NE '4'.
* << Fim da inclusão
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
LOOP AT itab_zycet002 WHERE NOT tknum IS initial
AND novo = 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
LOOP AT itab_zycet002 WHERE NOT tknum IS initial.
* << Fim da inclusão
APPEND itab_zycet002-tknum TO itab_tra[].
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
DELETE itab_zycet002.
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
ENDLOOP.
* << Fim da inclusão
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
ENDLOOP.
* << Fim da exclusão
IF NOT itab_tra[] IS INITIAL.
SORT itab_tra[] BY tknum.
DELETE ADJACENT DUPLICATES FROM itab_tra[] COMPARING tknum.
SELECT vbeln AS vbeln_vl
FROM vttp
INTO CORRESPONDING FIELDS OF TABLE itab_zycet002_rem_transp[]
FOR ALL ENTRIES IN itab_tra[]
WHERE tknum = itab_tra-tknum.
IF sy-subrc = 0.
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
LOOP AT itab_zycet002_rem_transp INTO wa_zycet002.
v_index = sy-tabix.
READ TABLE itab_zycet002 WITH KEY
vbeln_vl = wa_zycet002-vbeln_vl.
IF NOT sy-subrc IS INITIAL.
* << Fim da inclusão
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
APPEND LINES OF itab_zycet002_rem_transp[] TO itab_zycet002[].
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
MOVE 'X' TO wa_zycet002-novo.
APPEND wa_zycet002 TO itab_zycet002.
ENDIF.
ENDLOOP.
* << Fim da inclusão
ENDIF.
REFRESH itab_tra[].
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
ENDIF.
* << Fim da inclusão
ENDIF.
LOOP AT itab_zycet002 WHERE NOT ebeln IS initial.
MOVE: itab_zycet002-ebeln TO itab_ped-ebeln,
itab_zycet002-ebelp TO itab_ped-ebelp.
COLLECT itab_ped.
...
...
vbeln_vf
posnr
ebeln
ebelp.
ENDFORM.
FORM atualiza_cabecalho_embarque.
CHECK sy-tcode NE c_transacao_e AND
/pws/zycee001-envia_c IS INITIAL AND
/pws/zycee001-sta1 NE '4'.
CLEAR itab_zycet002.
* >> Início da inclusão: FORM ATUALIZA_CABECALHO_EMBARQUE
READ TABLE itab_zycet002 WITH KEY novo = space.
IF NOT sy-subrc IS INITIAL.
* << Fim da inclusão
READ TABLE itab_zycet002 INDEX 1.
* >> Início da inclusão: FORM ATUALIZA_CABECALHO_EMBARQUE
ENDIF.
* << Fim da inclusão
IF sy-subrc NE 0.
PERFORM limpa_dados_para_refresh.
EXIT.
ENDIF.
MOVE: itab_zycet002-bukrs TO /pws/zycee001-bukrs.
READ TABLE itab_zycet037 WITH KEY bukrs = /pws/zycee001-bukrs.
...
...
txtnr = 165
zeile = 'BUK_NOT_FOUND'.
ENDIF.
CLEAR itab_vbadr.
IF NOT itab_t001-adrnr IS INITIAL.
PERFORM seleciona_novos_enderecos USING itab_t001-adrnr
itab_t001-bukrs
'B'.
ENDIF.
CLEAR itab_zycet002.
* >> Início da inclusão: FORM ATUALIZA_CABECALHO_EMBARQUE
READ TABLE itab_zycet002 WITH KEY novo = space.
IF NOT sy-subrc IS INITIAL.
* << Fim da inclusão
READ TABLE itab_zycet002 INDEX 1.
* >> Início da inclusão: FORM ATUALIZA_CABECALHO_EMBARQUE
ENDIF.
* << Fim da inclusão
PERFORM: cabecalho_condicao_pagamento,
cabecalho_incoterms,
cabecalho_porto_pais,
cabecalho_descricoes,
cabecalho_outros_dados,
cabecalho_peso_embarque.
...
...
msgv4 = itab_zycet002_existe-nrseq
txtnr = 077
zeile = 'NRSEQ_ERR'.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
IF NOT v_cabec IS INITIAL.
PERFORM cabecalho_dados_organizacao USING v_cabec.
ENDIF.
* >> Início da inclusão: FORM CONSISTENCIA_ITENS
SORT itab_zycet002 BY novo ASCENDING
vbeln_va
aupos
ebeln
ebelp
vbeln_vl
posnl
vbeln_vf
posnr DESCENDING.
* << Fim da inclusão
IF itab_zycet037-tpverifparc CA 'CI'.
LOOP AT itab_zycet002.
IF itab_zycet002-vbeln_vf IS INITIAL.
v_vbeln = itab_zycet002-vbeln_va.
v_posnr = itab_zycet002-aupos.
ELSE.
v_vbeln = itab_zycet002-vbeln_vf.
v_posnr = itab_zycet002-posnr.
ENDIF.
CHECK NOT v_vbeln IS INITIAL.
...
...
IF v_vldesp NE wa_zycee313-vlme_out.
itab_zycbt017-vldesp = itab_zycbt017-vldesp -
( v_vldesp - wa_zycee313-vlme_out ).
ENDIF.
MODIFY itab_zycbt017 INDEX v_lines.
ENDFORM.
FORM consistencia_embarque.
DATA: v_vlcom_cont TYPE /pws/zycet010-vlcomis,
v_vlcom_real TYPE /pws/zycet010-vlcomis,
v_vlfob TYPE /pws/zycet008-vlme_f.
* >> Início da inclusão: FORM CONSISTENCIA_EMBARQUE
READ TABLE itab_zycet002 INTO itab_zycet002 WITH KEY novo = 'X'.
IF sy-subrc IS INITIAL.
itab_zycet002-novo = space.
MODIFY itab_zycet002 TRANSPORTING novo
WHERE NOT novo IS initial.
ENDIF.
* << Fim da inclusão
CHECK sy-tcode EQ c_transacao_a.
CLEAR: v_vlcom_cont,
v_vlcom_real,
v_vlfob.
LOOP AT itab_zycet008.
READ TABLE itab_zycet156 WITH KEY bukrs = /pws/zycee001-bukrs
codigo = itab_zycet008-codigo.
IF sy-subrc NE 0.
READ TABLE itab_zycet156 WITH KEY codigo = itab_zycet008-codigo.
ENDIF.
...