Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 05/07/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 10:48:35
Descrição da Nota: ERRO NA SELEÇÃO DO CENTRO AO INCLUIR A ORDEM DE VENDA NO EMBARQUE.
Sintoma
Quando o parâmetro "Permite Centros Diferentes" da tabela /pws/zyce312 está parametrizado como = 0
(Sim), quando uma ordem de venda possui itens de centros diferentes, ao criar os Embarques
(Embarques diferentes para cada item), ao adicionar a ordem de venda no segundo Embarque criado, o
programa exibe mensagem de erro, indicando que há divergência entre o Centro do cabeçalho e o Centro
do Item.
Solução
Ajuste no programa para que os itens que pertencem a outro Embarque sejam eliminados antes das
consistências e para que sejam redeterminados os dados do cabeçalho, caso itens sejam eliminados.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04114 Data: 05/07/2007 Hora: 17:14:06
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04114
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00002
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03023 - 00001 - 6.0 - 00026 - CONSISTENCIA PARA EXCLUSÃO DE ITENS DO EMBARQUE QUE ESTEJAM APROP
----------------------------------------------------------------------------------------------------
ERRO NA SELEÇÃO DO CENTRO AO INCLUIR A ORDEM DE VENDA NO EMBARQUE.
----------------------------------------------------------------------------------------------------
Palavras Chave:
CENTRO, EMBARQUE, DIFERENTE, CONSISTÊNCIA, CABEÇALHO,
/PWS/ZYCET037-CENTRO_DIF,
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCE003F01
REPS /PWS/MZYCE003F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F01
...
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = '/PWS/ZYCEM'
msgty = 'E'
msgv1 = /pws/zycee001-navio
txtnr = 226
zeile = 'VT_NOT_FOUND'.
ENDIF.
ENDIF.
CHECK sy-dynnr NE '0101'.
* >> Início da exclusão: FORM CABECALHO_OUTROS_DADOS
LOOP AT itab_zycet002.
CHECK /pws/zycee001-bukrs IS INITIAL OR
/pws/zycee001-gsber IS INITIAL OR
/pws/zycee001-werks IS INITIAL OR
/pws/zycee001-vkorg IS INITIAL OR
/pws/zycee001-vtweg IS INITIAL.
IF /pws/zycee001-bukrs IS INITIAL AND
NOT itab_zycet002-bukrs IS INITIAL.
/pws/zycee001-bukrs = itab_zycet002-bukrs.
ENDIF.
IF /pws/zycee001-gsber IS INITIAL AND
NOT itab_zycet002-gsber IS INITIAL.
/pws/zycee001-gsber = itab_zycet002-gsber.
ENDIF.
IF /pws/zycee001-werks IS INITIAL AND
NOT itab_zycet002-werks IS INITIAL.
/pws/zycee001-werks = itab_zycet002-werks.
ENDIF.
IF /pws/zycee001-vtweg IS INITIAL AND
NOT itab_zycet002-vtweg IS INITIAL.
/pws/zycee001-vtweg = itab_zycet002-vtweg.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM CABECALHO_OUTROS_DADOS
PERFORM cabecalho_dados_organizacao USING space.
* << Fim da inclusão
* >> Início da exclusão: FORM CABECALHO_OUTROS_DADOS
IF /pws/zycee001-vkorg IS INITIAL AND
NOT itab_zycet002-vkorg IS INITIAL.
/pws/zycee001-vkorg = itab_zycet002-vkorg.
ENDIF.
ENDLOOP.
* << Fim da exclusão
IF /pws/zycee001-txtobs IS INITIAL.
wa_thead-tdobject = '/PWS/CE001'.
wa_thead-tdname = /pws/zycee001-nrseq.
wa_thead-tdid = 'CE01'.
wa_thead-tdspras = sy-langu.
wa_thead-tdlinesize = 070.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = wa_thead-tdid
...
...
DATA: v_msgtp TYPE smesg-msgty,
v_kunnr TYPE vbpa-kunnr,
v_posnr TYPE vbpa-posnr,
v_vbeln TYPE vbpa-vbeln,
v_zterm TYPE /pws/zycet002-zterm,
v_bukrs TYPE /pws/zycet002-bukrs,
v_inco1 TYPE /pws/zycet002-inco1,
v_waers TYPE /pws/zycet002-waers,
v_vtweg TYPE /pws/zycet002-vtweg,
v_vkorg TYPE /pws/zycet002-vkorg,
* >> Início da exclusão: FORM CONSISTENCIA_ITENS
v_exclui TYPE c.
* << Fim da exclusão
* >> Início da inclusão: FORM CONSISTENCIA_ITENS
v_exclui TYPE c,
v_cabec TYPE c.
* << Fim da inclusão
DATA: BEGIN OF itab_ordens OCCURS 0,
vbeln_va TYPE /pws/zycet002-vbeln_va,
aupos TYPE /pws/zycet002-aupos,
END OF itab_ordens.
DATA: BEGIN OF itab_pedidos OCCURS 0,
ebeln TYPE /pws/zycet002-ebeln,
ebelp TYPE /pws/zycet002-ebelp,
END OF itab_pedidos.
DATA: BEGIN OF itab_zycet002_existe OCCURS 0,
nrseq TYPE /pws/zycet002-nrseq,
...
...
posnl
aupos
ebeln
ebelp
FROM /pws/zycet002
APPENDING TABLE itab_zycet002_existe
FOR ALL ENTRIES IN itab_pedidos
WHERE ebeln = itab_pedidos-ebeln AND
ebelp = itab_pedidos-ebelp.
DELETE itab_zycet002_existe WHERE nrseq EQ /pws/zycee001-nrseq.
* >> Início da inclusão: FORM CONSISTENCIA_ITENS
ENDIF.
LOOP AT itab_zycet002.
READ TABLE itab_zycet002_existe
WITH KEY vbeln_va = itab_zycet002-vbeln_va
aupos = itab_zycet002-aupos
vbeln_vl = itab_zycet002-vbeln_vl
posnl = itab_zycet002-posnl
vbeln_vf = itab_zycet002-vbeln_vf
posnr = itab_zycet002-posnr
ebeln = itab_zycet002-ebeln
ebelp = itab_zycet002-ebelp.
IF sy-subrc EQ 0.
IF itab_zycet002-vbeln_va IS INITIAL.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = '/PWS/ZYCEM'
msgty = v_msgtp
msgv1 = itab_zycet002-ebeln
msgv2 = itab_zycet002-ebelp
msgv3 = itab_zycet002_existe-nrseq
txtnr = 242
zeile = 'NRSEQ_ERR'.
ELSE.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = '/PWS/ZYCEM'
msgty = v_msgtp
msgv1 = itab_zycet002-vbeln_va
msgv2 = itab_zycet002-aupos
msgv3 = itab_zycet002_existe-nrseq
txtnr = 242
zeile = 'NRSEQ_ERR'.
ENDIF.
IF p_excluir EQ 'X'.
IF NOT itab_zycet002-vbeln_vl IS INITIAL OR
NOT itab_zycet002-vbeln_vf IS INITIAL.
DELETE itab_zycet002.
v_cabec = 'X'.
v_exclui = 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
IF NOT v_cabec IS INITIAL.
PERFORM cabecalho_dados_organizacao USING v_cabec.
* << Fim da inclusão
ENDIF.
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.
...
...
msgv1 = itab_zycet002-vbeln_va
msgv2 = itab_zycet002-aupos
msgv3 = itab_zycet002-nrseq_consig
msgv4 = wa_valores-nrseq_consig
txtnr = 262
zeile = 'CONSIG_ERR'.
ENDIF.
IF p_excluir EQ 'X'.
itab_zycet002-mark = 'X'.
MODIFY itab_zycet002.
* >> Início da exclusão: FORM CONSISTENCIA_ITENS
ENDIF.
ENDIF.
* << Fim da exclusão
ENDIF.
ENDIF.
ENDIF.
* >> Início da exclusão: FORM CONSISTENCIA_ITENS
READ TABLE itab_zycet002_existe
WITH KEY vbeln_va = itab_zycet002-vbeln_va
aupos = itab_zycet002-aupos
vbeln_vl = itab_zycet002-vbeln_vl
posnl = itab_zycet002-posnl
vbeln_vf = itab_zycet002-vbeln_vf
posnr = itab_zycet002-posnr
ebeln = itab_zycet002-ebeln
ebelp = itab_zycet002-ebelp.
IF sy-subrc EQ 0.
IF itab_zycet002-vbeln_va IS INITIAL.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = '/PWS/ZYCEM'
msgty = v_msgtp
msgv1 = itab_zycet002-ebeln
msgv2 = itab_zycet002-ebelp
msgv3 = itab_zycet002_existe-nrseq
txtnr = 242
zeile = 'NRSEQ_ERR'.
ELSE.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = '/PWS/ZYCEM'
msgty = v_msgtp
msgv1 = itab_zycet002-vbeln_va
msgv2 = itab_zycet002-aupos
msgv3 = itab_zycet002_existe-nrseq
txtnr = 242
zeile = 'NRSEQ_ERR'.
* << Fim da exclusão
ENDIF.
* >> Início da exclusão: FORM CONSISTENCIA_ITENS
IF p_excluir EQ 'X'.
IF NOT itab_zycet002-vbeln_vl IS INITIAL OR
NOT itab_zycet002-vbeln_vf IS INITIAL.
itab_zycet002-mark = 'X'.
MODIFY itab_zycet002.
ENDIF.
ENDIF.
* << Fim da exclusão
ENDIF.
ENDLOOP.
IF wa_limpa-werks EQ 'X'.
CLEAR: /pws/zycee001-werks.
ENDIF.
IF wa_limpa-gsber EQ 'X'.
CLEAR: /pws/zycee001-gsber.
ENDIF.
CHECK p_excluir EQ 'X'.
READ TABLE itab_zycet002 WITH KEY mark = 'X'.
* >> Início da exclusão: FORM CONSISTENCIA_ITENS
CHECK sy-subrc EQ 0.
* << Fim da exclusão
* >> Início da inclusão: FORM CONSISTENCIA_ITENS
IF sy-subrc IS INITIAL.
* << Fim da inclusão
PERFORM elimina_itens_marcados USING space
CHANGING v_exclui.
* >> Início da inclusão: FORM CONSISTENCIA_ITENS
ENDIF.
* << Fim da inclusão
CHECK v_exclui EQ 'X'.
PERFORM limpa_dados_para_refresh.
PERFORM refresh_embarque USING space.
ENDFORM.
FORM busca_local_de_negocio USING value(p_centro) TYPE t001w-werks
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F02
...
house_num1
country
langu
INTO wa_adrc
FROM adrc
WHERE addrnumber = p_addrnumber.
IF NOT wa_adrc IS INITIAL.
APPEND wa_adrc TO itab_adrc.
ENDIF.
ENDFORM.
* >> Início da inclusão:
FORM cabecalho_dados_organizacao
USING value(p_param).
IF NOT p_param IS INITIAL.
CLEAR: /pws/zycee001-bukrs,
/pws/zycee001-gsber,
/pws/zycee001-werks,
/pws/zycee001-vkorg,
/pws/zycee001-vtweg.
ENDIF.
LOOP AT itab_zycet002.
CHECK /pws/zycee001-bukrs IS INITIAL OR
/pws/zycee001-gsber IS INITIAL OR
/pws/zycee001-werks IS INITIAL OR
/pws/zycee001-vkorg IS INITIAL OR
/pws/zycee001-vtweg IS INITIAL.
IF /pws/zycee001-bukrs IS INITIAL AND
NOT itab_zycet002-bukrs IS INITIAL.
/pws/zycee001-bukrs = itab_zycet002-bukrs.
ENDIF.
IF /pws/zycee001-gsber IS INITIAL AND
NOT itab_zycet002-gsber IS INITIAL.
/pws/zycee001-gsber = itab_zycet002-gsber.
ENDIF.
IF /pws/zycee001-werks IS INITIAL AND
NOT itab_zycet002-werks IS INITIAL.
/pws/zycee001-werks = itab_zycet002-werks.
ENDIF.
IF /pws/zycee001-vtweg IS INITIAL AND
NOT itab_zycet002-vtweg IS INITIAL.
/pws/zycee001-vtweg = itab_zycet002-vtweg.
ENDIF.
IF /pws/zycee001-vkorg IS INITIAL AND
NOT itab_zycet002-vkorg IS INITIAL.
/pws/zycee001-vkorg = itab_zycet002-vkorg.
ENDIF.
ENDLOOP.
ENDFORM.
* << Fim da inclusão