CE PLUS - Nota 004320

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.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NA SELEÇÃO DO CENTRO AO INCLUIR A ORDEM DE VENDA NO EMBARQUE.

CRIAÇÃO DE EMBARQUE PELO TRANSPORTE

VALORES DE COMISSÃO DE AGENTE REAL E CONTABILIZADO (EMBARQUE X COMISSÃO)

VERIFICAÇÃO DE CONSISTÊNCIA DE ITEM AO INCLUIR UMA ENTRADA NO EMBARQUE

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.

...