CE PLUS - Nota 003401

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 05/04/2007 00:00:00

Data/Hora Última Alteração: 03/03/2010 13:16:58

Descrição da Nota: CRIAÇÃO DE EMBARQUE PELO TRANSPORTE

Sintoma

 

Não era possível incluir diretamente ordens de transporte num embarque.

 

Solução

 

O embarque passa a aceitar a entrada de ordens de transporte. Cada transporte pode ter diversas

remessas vinculadas; ao incluir um transporte, o programa simula a inclusão dessas remessas.

Versões Tratadas

6.0

Informações Complementares

 

----------------------------------------------------------------------------------------------------

Nota Número 03401 Data: 05/04/2007 Hora: 13:57:36

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 03401

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 6.0

Pacote                   : 00026

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

----------------------------------------------------------------------------------------------------

Texto Rápido:

CRIAÇÃO DE EMBARQUE PELO TRANSPORTE

----------------------------------------------------------------------------------------------------

Palavras Chave:

EMBARQUE CRIAÇÃO TRANSPORTE

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

DYNP /PWS/SAPMZYCE003                        0102

REPS /PWS/MZYCE003F01

REPS /PWS/MZYCE003F02

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCE003                        0102

 

Modificado o campo de entrada e saída (I/O) /PWS/ZYCEE002-TKNUM:

-Novo grupo de modificação 2: N

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003F01

 

...

          gjahr TYPE bkpf-gjahr,

        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.

* >> Início da inclusão: FORM SELECIONA_DADOS_SAP

  DATA: itab_zycet002_rem_transp LIKE itab_zycet002[].

* << Fim da inclusão

  FIELD-SYMBOLS: <fs_vbfa> TYPE vbfa.

  IF p_unico EQ 'X'.

* >> Início da inclusão: FORM SELECIONA_DADOS_SAP

    IF NOT itab_zycet002-tknum IS INITIAL.

      SELECT vbeln

          FROM vttp

          APPENDING TABLE itab_for[]

          WHERE tknum = itab_zycet002-tknum.

    ENDIF.

* << Fim da inclusão

    IF NOT itab_zycet002-vbeln_va IS INITIAL.

      MOVE: itab_zycet002-vbeln_va TO itab_ovs-vbeln,

            itab_zycet002-aupos    TO itab_ovs-posnr.

      APPEND itab_ovs.

    ELSEIF NOT itab_zycet002-vbeln_vl IS INITIAL.

      MOVE: itab_zycet002-vbeln_vl TO itab_for-vbeln,

            itab_zycet002-posnl    TO itab_for-posnr.

      APPEND itab_for.

    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

    LOOP AT itab_zycet002 WHERE NOT tknum IS initial

                            AND novo = 'X'.

      APPEND itab_zycet002-tknum TO itab_tra[].

      DELETE itab_zycet002.

    ENDLOOP.

    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.

        APPEND LINES OF itab_zycet002_rem_transp[] TO itab_zycet002[].

      ENDIF.

      REFRESH itab_tra[].

    ENDIF.

* << Fim da inclusão

    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.

    ENDLOOP.

    LOOP AT itab_zycet002 WHERE NOT vbeln_va IS initial.

      MOVE: itab_zycet002-vbeln_va TO itab_ovs-vbeln,

            itab_zycet002-aupos    TO itab_ovs-posnr.

      COLLECT itab_ovs.

    ENDLOOP.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003F02

 

...

      PERFORM calcula_taxa_cambio.

      okcode = 'DUMMY'.

    WHEN 'ENTER'.

      CHECK */pws/zycee001-dtemb NE /pws/zycee001-dtemb.

      PERFORM calcula_taxa_cambio.

  ENDCASE.

ENDFORM.

FORM okcode_0102.

  DATA: v_linhas TYPE sy-tabix,

        v_exclui TYPE c.

* >> Início da inclusão: FORM OKCODE_0102

  DATA: it_tknum TYPE STANDARD TABLE OF vttp-tknum WITH KEY table_line,

        it_zycet002_rem_transp LIKE itab_zycet002[].

* << Fim da inclusão

  CASE okcode.

    WHEN 'COMPLETE'.

      READ TABLE itab_zycet002_tc WITH KEY mark = 'X'.

      IF sy-subrc NE 0.

        MESSAGE s323(v1).

        EXIT.

      ENDIF.

      LOOP AT itab_zycet002_tc WHERE mark EQ 'X'.

        CHECK NOT itab_zycet002_tc-vbeln_va IS INITIAL OR

              NOT itab_zycet002_tc-ebeln    IS INITIAL.

        CLEAR itab_zycet002.

        itab_zycet002-nrseq    = /pws/zycee001-nrseq.

        itab_zycet002-vbeln_va = itab_zycet002_tc-vbeln_va.

        itab_zycet002-ebeln    = itab_zycet002_tc-ebeln.

        itab_zycet002-novo     = 'X'.

        COLLECT itab_zycet002.

        wa_controle-novos_itens = 'X'.

        okcode = 'REFRESH'.

* >> Início da inclusão: FORM OKCODE_0102

        IF NOT itab_zycet002_tc-tknum IS INITIAL.

          COLLECT itab_zycet002_tc-tknum INTO it_tknum[].

        ENDIF.

* << Fim da inclusão

      ENDLOOP.

* >> Início da inclusão: FORM OKCODE_0102

      IF NOT it_tknum[] IS INITIAL.

        SORT it_tknum[].

        SELECT vbeln AS vbeln_vl

            FROM vttp

            INTO CORRESPONDING FIELDS OF TABLE it_zycet002_rem_transp[]

            FOR ALL ENTRIES IN it_tknum[]

            WHERE tknum = it_tknum-table_line.

        IF sy-subrc = 0.

          itab_zycet002-novo = 'X'.

          MODIFY it_zycet002_rem_transp[]

                 FROM itab_zycet002

                 TRANSPORTING novo

                 WHERE novo <> 'X'.

          APPEND LINES OF it_zycet002_rem_transp[] TO itab_zycet002[].

        ENDIF.

      ENDIF.

* << Fim da inclusão

    WHEN 'DEL_MK'.

      PERFORM elimina_itens_marcados USING 'X'

                                     CHANGING v_exclui.

      IF v_exclui EQ 'X'.

        PERFORM refresh_embarque USING 'X'.

        IF itab_zycet002_tc[] IS INITIAL.

          okcode = 'T/02'.

        ENDIF.

      ENDIF.

    WHEN 'DETAIL'.

...