CE PLUS - Nota 004114

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.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

CONSISTENCIA PARA EXCLUSÃO DE ITENS DO EMBARQUE QUE ESTEJAM APROPRIADOS

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