Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 26/09/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 10:51:39
Descrição da Nota: ATUALIZAR FORNECIMENTOS APÓS FORNECER ITENS SEM REMESSAS
Sintoma
Ao se criar um embarque somente por Ordem de Venda com apenas um item e posteriormente Fornecer a
quantidade total do item da Ordem de Venda, o programa gera a seguinte mensagem:
"Ordem 10000046/000010 não possui saldo disponível para vincular ao Embarque." e exclui a Ordem de
Venda do embarque.
Solução
Alterado o programa do Embarque para que ao gerar uma remessa para um item com saldo não fornecido,
o novo fornecimento gerado seja atualizado corretamente na pasta itens e o saldo, caso haja
calculado corretamente.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04827 Data: 26/09/2007 Hora: 11:02:14
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04827
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00014
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03359 - 00001 - 7.0 - 00001 - INCLUSÃO INDEVIDA DE ORDENS CRIADAS COM REFERÊNCIA
04429 - 00002 - 7.0 - 00002 - ELIMINAR ESTORNOS QUANDO O ITEM PRINCIPAL É ELIMINADO DO EMBARQUE
04599 - 00003 - 7.0 - 00002 - REMOÇÃO DE ITENS DO EMBARQUE COM OV SEM REMESSA
04708 - 00004 - 7.0 - 00002 - CÁLCULO INDEVIDO DE SALDO DE PEDIDO DE COMPRA
----------------------------------------------------------------------------------------------------
ATUALIZAR FORNECIMENTOS APÓS FORNECER ITENS SEM REMESSAS
----------------------------------------------------------------------------------------------------
Palavras Chave:
FORNECIMENTO, REMESSA, ATUALIZAR, ITEM, EMBARQUE, SALDO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCE003F01
REPS /PWS/MZYCE003F02
REPS /PWS/MZYCE003TIA
REPT /PWS/SAPMZYCE003
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F01
...
i_codmod = 'X'
i_func = c_nome_prog
TABLES
itab_zyglt100 = itab_zyglt100.
wa_controle-parametros_carregados = 'X'.
PERFORM carrega_constantes.
ENDFORM.
FORM limpa_tabelas_internas.
PERFORM limpa_dados_sap.
PERFORM limpa_dados_ce.
* >> Início da inclusão: FORM LIMPA_TABELAS_INTERNAS
PERFORM limpa_tabelas_auxiliares.
* << Fim da inclusão
CHECK wa_controle-limpa_parametros EQ 'X'.
PERFORM limpa_parametros_sap.
PERFORM limpa_parametros_ce.
ENDFORM.
FORM limpa_dados_sap.
CLEAR: itab_bkpf,
itab_bseg,
itab_eikp,
itab_ekbe,
itab_ekko,
...
...
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,
posnr TYPE lips-posnr,
END OF itab_for.
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
DATA: BEGIN OF itab_for_aux OCCURS 0,
vbeln TYPE likp-vbeln,
posnr TYPE lips-posnr,
END OF itab_for_aux.
* << Fim da inclusão
DATA: BEGIN OF itab_fat OCCURS 0,
vbeln TYPE vbrk-vbeln,
posnr TYPE vbrp-posnr,
END OF itab_fat.
DATA: BEGIN OF itab_tra OCCURS 0,
tknum TYPE vttk-tknum,
END OF itab_tra.
DATA: BEGIN OF itab_doc OCCURS 0,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
...
...
msgty = 'E'
msgv1 = text-501
msgv2 = /pws/zycee001-nrseq
txtnr = 221
zeile = 'OV_SEL_001'.
ENDIF.
ENDIF.
PERFORM progress_indicator USING 6 36
'Efetuando Refresh do Embarque'(m01).
IF NOT itab_for[] IS INITIAL.
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
itab_for_aux[] = itab_for[].
SELECT vbeln posnr
FROM lips
APPENDING TABLE itab_for
FOR ALL ENTRIES IN itab_for_aux
WHERE vbeln = itab_for_aux-vbeln.
SORT itab_for BY vbeln posnr.
DELETE ADJACENT DUPLICATES FROM itab_for
COMPARING vbeln posnr.
* << Fim da inclusão
REFRESH itab_vbfa_2.
LOOP AT itab_for.
REFRESH itab_vbfa_aux.
MOVE: itab_for-vbeln TO wa_vbco6-vbeln,
itab_for-posnr TO wa_vbco6-posnr.
CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'
EXPORTING
comwa = wa_vbco6
* >> Início da exclusão: FORM SELECIONA_DADOS_SAP
vorgaenger = ' '
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DADOS_SAP
nachfolger = 'X'
* << Fim da inclusão
TABLES
vbfa_tab = itab_vbfa_aux
EXCEPTIONS
no_vbfa = 1
no_vbuk_found = 2.
CHECK sy-subrc EQ 0.
DELETE itab_vbfa_aux[] WHERE vbtyp_n = 'C'
AND vbtyp_v = 'M'
AND stufe > 0.
APPEND LINES OF itab_vbfa_aux TO itab_vbfa_2.
...
...
ENDIF.
APPEND wa_status_ite TO itab_status_ite.
ENDLOOP.
SORT itab_status_ite.
DELETE ADJACENT DUPLICATES
FROM itab_status_ite
COMPARING vbeln_va aupos
ebeln ebelp.
ENDFORM.
FORM atualiza_ordens_e_remessas.
* >> Início da exclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
DATA: wa_zycet002 LIKE itab_zycet002,
v_vbeln_va TYPE /pws/zycet002-vbeln_va,
v_vbeln_vl TYPE /pws/zycet002-vbeln_vl,
v_posnr_va TYPE /pws/zycet002-aupos,
v_posnr_vl TYPE /pws/zycet002-posnl,
v_ebelp TYPE ekpo-ebelp,
v_kwmeng TYPE ekpo-menge,
v_lfimg TYPE ekpo-menge,
v_tipo_ov(2) TYPE c,
v_meins TYPE lips-meins,
v_vrkme TYPE ekpo-meins.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
DATA: wa_zycet002 LIKE itab_zycet002,
v_vbeln_va TYPE /pws/zycet002-vbeln_va,
v_vbeln_vl TYPE /pws/zycet002-vbeln_vl,
v_posnr_va TYPE /pws/zycet002-aupos,
v_posnr_vl TYPE /pws/zycet002-posnl,
v_ebelp TYPE ekpo-ebelp,
v_kwmeng TYPE ekpo-menge,
v_lfimg TYPE ekpo-menge,
v_tipo_ov(2) TYPE c,
v_meins TYPE lips-meins,
v_vrkme TYPE ekpo-meins,
v_resp(1) TYPE c,
v_ord_ite(55) TYPE c,
v_novo(1) TYPE c.
* << Fim da inclusão
DATA: BEGIN OF itab_analisado OCCURS 0,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
END OF itab_analisado.
FIELD-SYMBOLS: <fs_vbfa> LIKE itab_vbfa.
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
SORT itab_zycet002 BY novo DESCENDING.
* << Fim da inclusão
LOOP AT itab_zycet002 WHERE vbeln_vf IS initial.
IF ( NOT itab_zycet002-vbeln_va IS INITIAL AND
NOT itab_zycet002-aupos IS INITIAL AND
NOT itab_zycet002-vbeln_vl IS INITIAL AND
NOT itab_zycet002-posnl IS INITIAL ) OR
( NOT itab_zycet002-ebeln IS INITIAL AND
NOT itab_zycet002-ebelp IS INITIAL AND
NOT itab_zycet002-vbeln_vl IS INITIAL AND
* >> Início da exclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
NOT itab_zycet002-posnl IS INITIAL ) OR
( NOT itab_zycet002-vbeln_va IS INITIAL AND
NOT itab_zycet002-aupos IS INITIAL AND
NOT itab_zycet002-fkimg IS INITIAL ).
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
NOT itab_zycet002-posnl IS INITIAL ).
* << Fim da inclusão
CONTINUE.
ENDIF.
v_vbeln_va = itab_zycet002-vbeln_va.
v_vbeln_vl = itab_zycet002-vbeln_vl.
v_posnr_va = itab_zycet002-aupos.
v_posnr_vl = itab_zycet002-posnl.
v_tipo_ov = 'CI'.
IF v_vbeln_va IS INITIAL.
IF NOT itab_zycet002-ebeln IS INITIAL.
v_vbeln_va = itab_zycet002-ebeln.
...
...
v_kwmeng
v_vrkme
v_meins
itab_lips-matnr
CHANGING
v_kwmeng.
ENDIF.
IF v_kwmeng GT v_lfimg.
wa_zycet002 = itab_zycet002.
APPEND wa_zycet002 TO itab_zycet002.
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
ENDIF.
ENDIF.
ENDIF.
READ TABLE itab_excluir
WITH KEY vbeln_va = itab_zycet002-vbeln_va
aupos = itab_zycet002-aupos
vbeln_vl = <fs_vbfa>-vbeln
posnl = <fs_vbfa>-posnn.
IF sy-subrc EQ 0 AND NOT itab_zycet002-novo EQ 'X'.
READ TABLE itab_zycet002
WITH KEY vbeln_va = itab_zycet002-vbeln_va
aupos = itab_zycet002-aupos
novo = 'X'
TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
itab_analisado-vbeln = v_vbeln_va.
itab_analisado-posnr = v_posnr_va.
APPEND itab_analisado.
CONTINUE.
ENDIF.
ENDIF.
READ TABLE itab_zycet002
WITH KEY vbeln_va = itab_zycet002-vbeln_va
aupos = itab_zycet002-aupos
ebeln = itab_zycet002-ebeln
ebelp = itab_zycet002-ebelp
vbeln_vl = <fs_vbfa>-vbeln
posnl = <fs_vbfa>-posnn
TRANSPORTING NO FIELDS.
IF sy-subrc NE 0.
READ TABLE itab_zycet002
WITH KEY vbeln_va = itab_zycet002-vbeln_va
aupos = itab_zycet002-aupos
novo = 'X'
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
MOVE 'X' TO v_novo.
ENDIF.
CLEAR itab_display.
IF v_tipo_ov EQ 'V'.
READ TABLE itab_display
WITH KEY vbeln = itab_zycet002-ebeln
posnr = itab_zycet002-ebelp.
ELSE.
READ TABLE itab_display
WITH KEY vbeln = itab_zycet002-vbeln_va
posnr = itab_zycet002-aupos.
ENDIF.
IF sy-subrc NE 0.
READ TABLE itab_display
WITH KEY vbeln_vl = <fs_vbfa>-vbeln.
ENDIF.
CLEAR v_resp.
IF ( sy-subrc NE 0 OR
itab_display-atufl IS INITIAL )
AND NOT itab_zycet002-novo EQ 'X'
AND NOT v_novo EQ 'X'
AND itab_zycet002-st_vd EQ 'VD'.
CONCATENATE itab_zycet002-vbeln_va '/'
itab_zycet002-aupos
'.'
text-629
INTO v_ord_ite.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'N'
cancel_display = ' '
textline1 = text-628
textline2 = v_ord_ite
titel = text-530
IMPORTING
answer = v_resp
EXCEPTIONS
OTHERS = 1.
IF v_tipo_ov EQ 'V'.
itab_display-vbeln = itab_zycet002-ebeln.
itab_display-posnr = itab_zycet002-ebelp.
itab_display-vbeln_vl = <fs_vbfa>-vbeln.
ELSE.
itab_display-vbeln = itab_zycet002-vbeln_va.
itab_display-posnr = itab_zycet002-aupos.
itab_display-vbeln_vl = <fs_vbfa>-vbeln.
ENDIF.
IF v_resp CA 'YJ'.
itab_display-atufl = 'S'.
ELSE.
itab_display-atufl = 'N'.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
APPEND itab_display.
ELSEIF itab_display-atufl EQ 'N' AND NOT
itab_zycet002-novo EQ 'X' AND NOT
v_novo EQ 'X' AND
itab_zycet002-st_vd EQ 'VD' .
MOVE 'N' TO v_resp.
ELSEIF itab_display-atufl EQ 'S' OR
itab_zycet002-novo EQ 'X' OR
v_novo EQ 'X'.
MOVE 'Y' TO v_resp.
ELSEIF itab_zycet002-st_vd NE 'VD'.
MOVE 'Y' TO v_resp.
* << Fim da inclusão
ENDIF.
ELSE.
* >> Início da exclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
wa_zycet002 = itab_zycet002.
APPEND wa_zycet002 TO itab_zycet002.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
MOVE 'Y' TO v_resp.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
IF v_resp CA 'YJ'.
CLEAR wa_zycet002.
wa_zycet002-vbeln_va = v_vbeln_va.
wa_zycet002-st_vd = itab_zycet002-st_vd.
wa_zycet002-novo = itab_zycet002-novo.
APPEND wa_zycet002 TO itab_zycet002.
* << Fim da inclusão
wa_zycet002 = itab_zycet002.
wa_zycet002-vbeln_vl = <fs_vbfa>-vbeln.
wa_zycet002-posnl = <fs_vbfa>-posnn.
APPEND wa_zycet002 TO itab_zycet002.
* >> Início da inclusão: FORM ATUALIZA_ORDENS_E_REMESSAS
ELSE.
itab_analisado-vbeln = v_vbeln_va.
itab_analisado-posnr = v_posnr_va.
APPEND itab_analisado.
CONTINUE.
ENDIF.
* << Fim da inclusão
ENDLOOP.
IF sy-subrc EQ 0.
DELETE itab_zycet002.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
SORT itab_zycet002 BY vbeln_va
aupos
vbeln_vl
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F02
...
msgv2 = p_um_para
msgv3 = p_matnr
txtnr = 251
zeile = 'CONV_ERROR'.
ELSE.
p_quant_para = v_e_menge.
ENDIF.
ENDFORM.
FORM elimina_itens_marcados USING value(p_marcados)
CHANGING p_exclui TYPE c.
* >> Início da exclusão: FORM ELIMINA_ITENS_MARCADOS
DATA: BEGIN OF itab_excluir OCCURS 0,
vbeln_va TYPE /pws/zycet002-vbeln_va,
aupos TYPE /pws/zycet002-aupos,
vbeln_vl TYPE /pws/zycet002-vbeln_vl,
posnl TYPE /pws/zycet002-posnl,
vbeln_vf TYPE /pws/zycet002-vbeln_vf,
posnr TYPE /pws/zycet002-posnr,
END OF itab_excluir.
* << Fim da exclusão
DATA: itab_002 LIKE itab_zycet002 OCCURS 0 WITH HEADER LINE.
DATA: v_index TYPE sy-tabix,
v_subrc TYPE sy-subrc.
* >> Início da inclusão: FORM ELIMINA_ITENS_MARCADOS
CLEAR: itab_excluir,
itab_excluir[].
* << Fim da inclusão
IF p_marcados EQ 'X'.
itab_002[] = itab_zycet002_tc[].
LOOP AT itab_002 INTO itab_002 WHERE mark = 'X'.
...
...
CLEAR wa_conversao-exist.
ENDIF.
wa_conversao-kurst = p_categ_moeda.
wa_conversao-fcurr = p_moeda_de.
wa_conversao-tcurr = p_moeda_para.
wa_conversao-gdatu = p_data.
APPEND wa_conversao TO it_conversao.
ENDIF.
p_existe_conversao = wa_conversao-exist.
ENDFORM.
* >> Início da inclusão:
FORM limpa_tabelas_auxiliares.
CLEAR: itab_excluir,
itab_display.
REFRESH: itab_excluir,
itab_display.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003TIA
...
land1 TYPE /pws/zycet002-land1,
kunag TYPE /pws/zycet002-kunag,
gsber TYPE /pws/zycet002-gsber,
matnr TYPE /pws/zycet002-matnr,
werks TYPE /pws/zycet002-werks,
nfnum TYPE /pws/zycet002-nfnum,
nrseq_consig TYPE /pws/zycet002-nrseq_consig,
vbeln_consig TYPE /pws/zycet002-vbeln_consig,
posnr_consig TYPE /pws/zycet002-posnr_consig,
END OF itab_zycet002_off_shore.
* >> Início da inclusão:
DATA: BEGIN OF itab_excluir OCCURS 0,
vbeln_va TYPE /pws/zycet002-vbeln_va,
aupos TYPE /pws/zycet002-aupos,
vbeln_vl TYPE /pws/zycet002-vbeln_vl,
posnl TYPE /pws/zycet002-posnl,
vbeln_vf TYPE /pws/zycet002-vbeln_vf,
posnr TYPE /pws/zycet002-posnr,
END OF itab_excluir.
DATA: BEGIN OF itab_display OCCURS 0,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
vbeln_vl TYPE likp-vbeln,
atufl TYPE c,
END OF itab_display.
* << Fim da inclusão
DATA: wa_thead TYPE thead,
wa_thead2 TYPE thead.
TYPES: BEGIN OF ty_tline.
INCLUDE STRUCTURE tline.
TYPES: END OF ty_tline.
TYPES: tf_tline TYPE TABLE OF ty_tline.
DATA: itab_tline TYPE STANDARD TABLE OF ty_tline,
itab_tline2 TYPE STANDARD TABLE OF ty_tline.
TYPES r_kschl TYPE RANGE OF kschl.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCE003
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 628
Texto: (48 caracteres)
"Foram encontrados novos fornecimentos para ordem"
Comprimento máximo: 48
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 629
Texto: (30 caracteres)
" Deseja atualizar o documento?"
Comprimento máximo: 30