CE PLUS - Nota 004827

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.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ELIMINAR ESTORNOS QUANDO O ITEM PRINCIPAL É ELIMINADO DO EMBARQUE

INCLUSÃO INDEVIDA DE ORDENS CRIADAS COM REFERÊNCIA

CÁLCULO INDEVIDO DE SALDO DE PEDIDO DE COMPRA

REMOÇÃO DE ITENS DO EMBARQUE COM OV SEM REMESSA

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