CE PLUS - Nota 003363

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 30/03/2007 00:00:00

Data/Hora Última Alteração: 03/03/2010 13:24:15

Descrição da Nota: SALVAR COMISSÃO DE AGENTE JUNTO COM EMBARQUE

Sintoma

 

O programa de embarque poderia ser enviado ao câmbio sem possuir dados de comissão de agente.

No câmbio, os valores de comissão de agente ficam com valor zero.

 

Solução

 

O embarque passa a gravar as tabelas /PWS/ZYCET010 e /PWS/ZYCET013 quando ainda não existe comissão

contabilizada.

Versões Tratadas

6.0

Informações Complementares

 

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

Nota Número 03363 Data: 30/03/2007 Hora: 14:35:24

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

 

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

Nota Número              : 03363

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 6.0

Pacote                   : 00026

Agrupamento              : 00156

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

SALVAR COMISSÃO DE AGENTE JUNTO COM EMBARQUE

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

Palavras Chave:

EMBARQUE COMISSÃO AGENTE SALVAR

 

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

Objetos da nota:

REPS /PWS/MZYCE003F02

 

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

Modificações efetuadas em REPS /PWS/MZYCE003F02

 

...

      COLLECT itab_zycit248.

      MOVE-CORRESPONDING itab_drawback TO wa_drawback.

    ENDLOOP.

  ENDLOOP.

  IF NOT itab_zycit248[] IS INITIAL.

    INSERT /pws/zycit248 FROM TABLE itab_zycit248.

    COMMIT WORK.

  ENDIF.

ENDFORM.

FORM salva_embarque.

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

  DATA: comissao_contabilizada TYPE xfeld,

        wa_zycet010 TYPE /pws/zycet010,

        wa_zycet013 TYPE /pws/zycet013.

* << Fim da inclusão

  IF sy-tcode EQ c_transacao_c.

    MOVE: sy-uname TO /pws/zycee001-unamec,

          sy-datum TO /pws/zycee001-dtuserc,

          sy-uzeit TO /pws/zycee001-hruserc.

  ENDIF.

  COMMIT WORK.

  PERFORM busca_numero_sequencial.

  IF /pws/zycee001-nrseq IS INITIAL.

    EXIT.

  ENDIF.

...

 

...

    COMMIT WORK.

    PERFORM salva_texto USING 'CE01' /pws/zycee001-txtobs

                        CHANGING itab_tline[].

    PERFORM salva_texto USING 'CE02' /pws/zycee001-txtobs2

                        CHANGING itab_tline2[].

    UPDATE /pws/zycet046 SET zterm = /pws/zycee046-zterm

                   WHERE nrseq = /pws/zycee001-nrseq.

    IF sy-subrc NE 0.

      /pws/zycee046-nrseq = /pws/zycee001-nrseq.

      INSERT INTO /pws/zycet046 VALUES /pws/zycee046.

    ENDIF.

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

    PERFORM busca_comissao_contabilizada

            USING

               /pws/zycee001-nrseq

            CHANGING

               comissao_contabilizada.

    IF comissao_contabilizada = space.

      PERFORM calcula_comissao

              USING

                 /pws/zycee001

                 itab_zycet002[]

                 itab_zycet008[]

                 itab_vbpa[]

                 itab_zycet076[]

                 itab_zycet156[]

                 /pws/zycee046

                 itab_zycet047[]

                 itab_zycet037[]

              CHANGING

                 wa_zycet010

                 wa_zycet013.

      PERFORM salva_comissao

              USING

                 /pws/zycee001-nrseq

                 wa_zycet010

                 wa_zycet013.

    ENDIF.

* << Fim da inclusão

  ENDIF.

  COMMIT WORK.

   */pws/zycee001  = /pws/zycee001.

   */pws/zycee014  = /pws/zycee014.

   */pws/zycee014a = /pws/zycee014a.

  itab_zycet002_ant[] = itab_zycet002[].

  itab_zycet003_ant[] = itab_zycet003[].

  itab_zycet008_ant[] = itab_zycet008[].

  itab_zycet015_ant[] = itab_zycet015[].

...

 

...

* >> Início da inclusão de 3 novos forms no include /PWS/MZYCE003F02

FORM busca_comissao_contabilizada

     USING

       p_nrseq                  TYPE /pws/zycet001-nrseq

     CHANGING

       p_comissao_contabilizada TYPE xfeld.

  SELECT COUNT(*)

      FROM /pws/zycet010

      WHERE nrseq = p_nrseq

        AND belnr > 0.

  IF sy-subrc = 0.

    p_comissao_contabilizada = 'X'.

  ELSE.

    SELECT COUNT(*)

        FROM /pws/zycet013

        WHERE nrseq = p_nrseq

          AND belnr > 0.

    IF sy-subrc = 0.

      p_comissao_contabilizada = 'X'.

    ELSE.

      p_comissao_contabilizada = space.

    ENDIF.

  ENDIF.

ENDFORM.

FORM calcula_comissao

     USING

       p_zycet001    TYPE /pws/zycet001

       p_t_zycet002  LIKE itab_zycet002[]

       p_t_zycet008  LIKE itab_zycet008[]

       p_t_vbpa      LIKE itab_vbpa[]

       p_t_zycet076  LIKE itab_zycet076[]

       p_t_zycet156  LIKE itab_zycet156[]

       p_zycet046    TYPE /pws/zycet046

       p_t_zycet047  LIKE itab_zycet047[]

       p_t_zycet037  LIKE itab_zycet037[]

     CHANGING

       p_zycet010    TYPE /pws/zycet010

       p_zycet013    TYPE /pws/zycet013.

  DATA: wa_zycet002  LIKE LINE OF p_t_zycet002,

        wa_zycet008  LIKE LINE OF p_t_zycet008,

        wa_zycet076  LIKE LINE OF p_t_zycet076,

        wa_zycet037  LIKE LINE OF p_t_zycet037,

        wa_zycet047  LIKE LINE OF p_t_zycet047,

        wa_zycet156  LIKE LINE OF p_t_zycet156,

        wa_zyglt321  TYPE /pws/zyglt321,

        wa_vbpa      LIKE LINE OF p_t_vbpa[],

        vl_com_real  TYPE /pws/zycet008-vlme_f,

        vl_com_prov  TYPE /pws/zycet008-vlme,

        it_zyglt321  TYPE STANDARD TABLE OF /pws/zyglt321,

        it_vtopis    TYPE STANDARD TABLE OF vtopis,

        zfbdt        TYPE d,

        zterm        TYPE dzterm.

 

  DATA: itab_156     LIKE itab_zycet156 OCCURS 0 WITH HEADER LINE.

 

  itab_156[] = p_t_zycet156[].

  SORT itab_156 BY bukrs codmod codigo.

 

  DELETE ADJACENT DUPLICATES FROM itab_156 COMPARING

                                               bukrs

                                               codmod

                                               codigo.

 

  LOOP AT itab_156[]

       INTO wa_zycet156

       WHERE codmod   = 'X'

         AND bukrs    = p_zycet001-bukrs

         AND proccond = 'COM'.

    READ TABLE p_t_zycet008[]

         INTO wa_zycet008

         WITH KEY codigo = wa_zycet156-codigo

         TRANSPORTING vlme

                      vlme_f.

    IF sy-subrc = 0.

      ADD wa_zycet008-vlme_f TO vl_com_real.

      ADD wa_zycet008-vlme   TO vl_com_prov.

    ENDIF.

  ENDLOOP.

  p_zycet010-nrseq = p_zycet001-nrseq.

  READ TABLE p_t_zycet076[]

       INTO wa_zycet076

       WITH KEY codigo_ce = 'AG'

       TRANSPORTING codigo_r3.

  IF sy-subrc = 0.

    READ TABLE p_t_zycet002[]

         INTO wa_zycet002

         WITH KEY saida = 'X'

         TRANSPORTING vbeln_va.

    IF sy-subrc = 0.

      READ TABLE p_t_vbpa[]

           INTO wa_vbpa

           WITH KEY vbeln = wa_zycet002-vbeln_va

                    parvw = wa_zycet076-codigo_r3

           TRANSPORTING lifnr.

      IF sy-subrc = 0.

        p_zycet010-lifnr = wa_vbpa-lifnr.

      ENDIF.

    ENDIF.

  ENDIF.

  SELECT *

      FROM /pws/zyglt321

      INTO TABLE it_zyglt321

      WHERE ktosl   = 'CAP'

        AND codeven = '004'

        AND cpor3  IN ('ZFBDT', 'ZTERM').

  READ TABLE it_zyglt321[] INTO wa_zyglt321

       WITH KEY cpor3 = 'ZFBDT'.

  IF sy-subrc = 0.

    CASE wa_zyglt321-cpocb.

      WHEN 'DTDIA'.

        zfbdt = sy-datlo.

      WHEN 'DTEMB'.

        zfbdt = p_zycet001-dtemb.

      WHEN 'DTAVERB'.

        zfbdt = p_zycet001-dtaverb.

      WHEN 'DTBL'.

        READ TABLE p_t_zycet047 INTO wa_zycet047

             WITH KEY nrseq = p_zycet001-nrseq

             TRANSPORTING dtbl.

        IF sy-subrc = 0.

          zfbdt = wa_zycet047-dtbl.

        ENDIF.

    ENDCASE.

  ENDIF.

  IF NOT zfbdt IS INITIAL.

    READ TABLE it_zyglt321 INTO wa_zyglt321

         WITH KEY cpor3 = 'ZTERM'.

    IF sy-subrc = 0.

      CASE wa_zyglt321-cpocb.

        WHEN 'ZTERM'.

          zterm = p_zycet046-zterm.

        WHEN 'ZTERMF'.

          CHECK NOT p_zycet010-lifnr IS INITIAL

              AND NOT p_zycet001-bukrs IS INITIAL.

          SELECT SINGLE zterm

              FROM lfb1

              INTO zterm

              WHERE lifnr = p_zycet010-lifnr

                AND bukrs = p_zycet001-bukrs.

        WHEN space.

          zterm = wa_zyglt321-descr.

      ENDCASE.

    ENDIF.

    IF NOT zterm IS INITIAL.

      CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT'

           EXPORTING

                bldat                        = zfbdt

                budat                        = zfbdt

                cpudt                        = zfbdt

                terms_of_payment             = zterm

           IMPORTING

                zfbdt                        = p_zycet010-dtvencto

           TABLES

                top_text                     = it_vtopis[]

           EXCEPTIONS

                terms_of_payment_not_in_t052 = 0

                OTHERS                       = 0.

    ENDIF.

  ENDIF.

  p_zycet010-vlcomis = vl_com_real.

  READ TABLE p_t_zycet008

       INTO wa_zycet008

       INDEX 1

       TRANSPORTING waers.

  IF sy-subrc = 0.

    p_zycet010-waers = wa_zycet008-waers.

  ENDIF.

  CALL FUNCTION 'J_1B_BRANCH_DETERMINE'

       EXPORTING

            company                  = p_zycet001-bukrs

            plant                    = p_zycet001-werks

       IMPORTING

            branch                   = p_zycet010-j_1bbranch

       EXCEPTIONS

            branch_not_found         = 0

            plant_not_found          = 0

            valuation_area_not_found = 0

            company_not_found        = 0

            OTHERS                   = 0.

  p_zycet010-kostl = p_zycet001-werks.

  p_zycet013-nrseq = p_zycet001-nrseq.

  IF NOT p_zycet001-bukrs IS INITIAL.

    READ TABLE p_t_zycet037[] INTO wa_zycet037

         WITH KEY bukrs = p_zycet001-bukrs.

    IF sy-subrc = 0 AND wa_zycet037-comis_provisao = '1'.

      p_zycet013-lifnr = p_zycet010-lifnr.

    ENDIF.

  ENDIF.

  p_zycet013-waers = p_zycet010-waers.

  p_zycet013-vlme = vl_com_real.

  p_zycet013-vlme_dif = vl_com_real - vl_com_prov.

  p_zycet013-vlme_dif = abs( p_zycet013-vlme_dif ).

ENDFORM.

FORM salva_comissao

     USING

       p_nrseq    TYPE /pws/zycet001-nrseq

       p_zycet010 TYPE /pws/zycet010

       p_zycet013 TYPE /pws/zycet013.

  DELETE FROM /pws/zycet010 WHERE nrseq = p_nrseq.

  INSERT INTO /pws/zycet010 VALUES p_zycet010.

  DELETE FROM /pws/zycet013 WHERE nrseq = p_nrseq.

  INSERT INTO /pws/zycet013 VALUES p_zycet013.

ENDFORM.

* << Fim da inclusão