CE PLUS - Nota 008721

Módulo: DRAWBACK

Funcionalidade: Ato Concessório

Data/Hora da Publicação: 23/07/2009 00:00:00

Data/Hora Última Alteração: 17/02/2011 15:32:58

Descrição da Nota: PERMITIR TRANSFERENCIA DE ITENS APENAS SE POSSUIR SALDO TOTAL.

Sintoma

Ajustado programa de ato concessório para realizar a transferencia de saldo sem quebrar as adições

da DI e não permitir transferencia parcial.

 

 

Solução

Ajustado programa de ato concessório para realizar a transferencia de saldo sem quebrar as adições

da DI e não permitir transferencia parcial.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

DATA DO ATO CONCESSÓRIO ISENÇÃO

TRANFERÊNCIA DE SALDOS NO ATO CONCESSÓRIO

AJUSTE NA TRANSFERENCIA DE SALDOS.

CORREÇÃO NA TRANSFERENCIA DE SALDO DO ATO CONCESSÓRIO

Informações Complementares

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

Nota Número 08721 Data: 23/07/2009 Hora: 14:24:42

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

 

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

Nota Número              : 08721

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00010

Agrupamento              : 00106

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

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

05376  - 00001 - 7.0    - 00003  - TRANFERÊNCIA DE SALDOS NO ATO CONCESSÓRIO

05438  - 00002 - 7.0    - 00003  - DATA DO ATO CONCESSÓRIO ISENÇÃO

05609  - 00003 - 7.0    - 00004  - AJUSTE NA TRANSFERENCIA DE SALDOS.

07165  - 00004 - 7.0    - 00006  - CORREÇÃO NA TRANSFERENCIA DE SALDO DO ATO CONCESSÓRIO

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

PERMITIR TRANSFERENCIA DE ITENS APENAS SE POSSUIR SALDO TOTAL.

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

Palavras Chave:

TRANSFERENCIA - ADIÇÃO - DI - ATO - CONCESSÓRIO - SALDO

/PS/SAPMZYCI040

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

Objetos da nota:

DYNP /PWS/SAPMZYCI040                        0237

DYNP /PWS/SAPMZYCI040                        0239

REPS /PWS/MZYCI040F02

REPS /PWS/MZYCI040F03

REPS /PWS/MZYCI040I01

REPS /PWS/MZYCI040O01

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI040                        0237

 

MODIFICAR TEXTO "/PWS/ZYCIE245-BRGEW" em tbl.contr./tabstr.

Comprimento Visível      22

Texto                    Qtde. Tot. Transferida

 

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI040                        0239

 

EXCLUIR CAMPO TEXTO "/PWS/ZYCIE245-QTD_TRANSF"

 

EXCLUIR TEXTO "/PWS/ZYCIE245-QTD_TRANSF"

 

EXCLUIR CAMPO TEXTO "/PWS/ZYCIE245-TRANSF"

 

EXCLUIR TEXTO "/PWS/ZYCIE245-TRANSF"

 

INCLUIR CAMPO TEXTO "/PWS/ZYCIE279-MENGE" em tbl.contr./tabstr.

Altura                   17

Comprimento Visível      27

Linha                    1

Coluna                   13

Formato                  QUAN

Campo referência         /PWS/ZYCIE279-MEINS

Grupo 1                  NEX

Linhas mínimas           23

Colunas mínimas          12

Texto                    __.___.___.___,____________

 

INCLUIR TEXTO "/PWS/ZYCIE279-MENGE" em tbl.contr./tabstr.

Altura                   17

Comprimento Visível      14

Linha                    1

Coluna                   13

Formato                  CHAR

Texto                    Quantidade NCM

 

MODIFICAR CAMPO TEXTO "/PWS/ZYCIE279-NRSEQD_D" em tbl.contr./tabstr.

Coluna                   14

 

MODIFICAR TEXTO "/PWS/ZYCIE279-NRSEQD_D" em tbl.contr./tabstr.

Coluna                   14

 

EXCLUIR CAMPO TEXTO "/PWS/ZYCIE279-QTD_TRANSF" em tbl.contr./tabstr.

 

EXCLUIR TEXTO "/PWS/ZYCIE279-QTD_TRANSF" em tbl.contr./tabstr.

 

EXCLUIR CAMPO TEXTO "/PWS/ZYCIE279-SLQTDE" em tbl.contr./tabstr.

 

EXCLUIR TEXTO "/PWS/ZYCIE279-SLQTDE" em tbl.contr./tabstr.

 

MODIFICAR LÓGICA DE PROCESSAMENTO TELA 0239

PROCESS BEFORE OUTPUT.

  MODULE status_0239.

  LOOP AT itab_zycit279_ap_aux WITH CONTROL tc_transf

                                         CURSOR tc_transf-current_line.

    MODULE preenche_estrutura_0239.

  ENDLOOP.

PROCESS AFTER INPUT.

* >> Início da exclusão:

  CHAIN.

    FIELD: /pws/zycie245-transf

           MODULE modifica_transf2 ON CHAIN-REQUEST.

  ENDCHAIN.

* << Fim da exclusão

  LOOP AT itab_zycit279_ap_aux.

    CHAIN.

      FIELD: v_mark2

             MODULE modifica_transf ON CHAIN-REQUEST.

    ENDCHAIN.

    CHAIN.

      FIELD: /pws/zycie279-nrseqd_d

             MODULE modifica_ato_dest ON CHAIN-REQUEST.

* >> Início da exclusão:

    ENDCHAIN.

    CHAIN.

      FIELD: /pws/zycie279-qtd_transf

             MODULE modifica_transf3 ON CHAIN-REQUEST.

* << Fim da exclusão

    ENDCHAIN.

  ENDLOOP.

  MODULE modifica_transf_tot.

 

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

Modificações efetuadas em REPS /PWS/MZYCI040F02

 

...

    CLEAR itab_resumo_ap.

    itab_resumo_ap-matnr   = itab_zycit279_ap-matnr     .

    itab_resumo_ap-meins   = itab_zycit279_ap-meins     .

    itab_resumo_ap-qtd_di  = itab_zycit279_ap-menge     .

    itab_resumo_ap-qtd_nac = itab_zycit279_ap-slqtde    .

    itab_resumo_ap-qtd_per = itab_zycit279_ap-qtd_perda .

    itab_resumo_ap-qtd_perd_e = itab_zycit279_ap-qtd_perda_e .

    itab_resumo_ap-qtd_tra = itab_zycit279_ap-qtd_transf.

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

    IF itab_zycit279_ap-transf IS INITIAL.

* << Fim da inclusão

    itab_resumo_ap-qtd_apr = itab_resumo_ap-qtd_di -

      itab_resumo_ap-qtd_nac.

* >> Início da exclusão: FORM PREENCHE_RESUMO_APONT

    itab_resumo_ap-qtd_nac = itab_resumo_ap-qtd_nac -

                             itab_resumo_ap-qtd_tra.

* << Fim da exclusão

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

    ELSE.

      CLEAR: itab_resumo_ap-qtd_apr.

    ENDIF.

* << Fim da inclusão

    IF  itab_resumo_ap-matnr EQ wa_resumo_ap-matnr .

      itab_resumo_ap-mark = 'X'.

    ENDIF.

    COLLECT itab_resumo_ap.

  ENDLOOP.

  LOOP AT itab_resumo_ap.

    SELECT SINGLE maktx FROM makt INTO itab_resumo_ap-maktx

      WHERE matnr EQ itab_resumo_ap-matnr.

    MODIFY itab_resumo_ap.

  ENDLOOP.

...

 

...

              AND ebelp    EQ itab_zycit279_ap-ebelp.

      itab_zycit279_ap-qtd_perda = itab_zycit279_ap-qtd_perda +

                                   itab_zycit282_ap-qtd_perda.

      itab_zycit279_ap-qtd_perda_e = itab_zycit279_ap-qtd_perda_e +

                                   itab_zycit282_ap-qtd_perda_e.

    ENDLOOP.

    itab_zycit279_ap-perda = ( itab_zycit279_ap-qtd_perda /

                                itab_zycit279_ap-menge ) * 100.

    MODIFY itab_zycit279_ap.

  ENDLOOP.

* >> Início da exclusão: FORM CARREGA_TABELA279

  IF /pws/zycie244-dtdi IS INITIAL.

* << Fim da exclusão

    DELETE itab_data_di WHERE data EQ space.

    IF NOT itab_data_di[] IS INITIAL.

      SORT itab_data_di BY data.

      READ TABLE itab_data_di INDEX 1.

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

    IF /pws/zycie244-dtdi IS INITIAL OR

    /pws/zycie244-dtdi > itab_data_di-data.

* << Fim da inclusão

      /pws/zycie244-dtdi = itab_data_di-data.

* >> Início da exclusão: FORM CARREGA_TABELA279

      IF /pws/zycie244-vcto_fn IS INITIAL.

        /pws/zycie244-vcto_fn = /pws/zycie244-dtdi + 731.

* << Fim da exclusão

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

      /pws/zycie244-vcto_fn = /pws/zycie244-dtdi.

      add 2 to /pws/zycie244-vcto_fn(4).

* << Fim da inclusão

        UPDATE /pws/zycit244 SET dtdi    = /pws/zycie244-dtdi

                                 vcto_fn = /pws/zycie244-vcto_fn

            WHERE nrseqd EQ /pws/zycie244-nrseqd.

* >> Início da exclusão: FORM CARREGA_TABELA279

      ENDIF.

* << Fim da exclusão

    ENDIF.

  ENDIF.

ENDFORM.

...

 

...

FORM monta_transf.

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

  DATA: BEGIN OF itab_adicao OCCURS 0,

    adicao  TYPE /pws/zycit279-adicao ,

    nrseqdi TYPE /pws/zycit279-nrseqdi,

    END OF itab_adicao.

  LOOP AT itab_zycit279_ap.

    IF ( itab_zycit279_ap-menge NE itab_zycit279_ap-slqtde OR

       itab_zycit279_ap-esgotado EQ 'X' ) AND

       itab_zycit279_ap-transf IS INITIAL.

      itab_adicao-adicao  = itab_zycit279_ap-adicao.

      itab_adicao-nrseqdi = itab_zycit279_ap-nrseqdi.

      COLLECT itab_adicao.

    ENDIF.

  ENDLOOP.

* << Fim da inclusão

  REFRESH itab_zycit279_ap_aux.

  CLEAR itab_zycit279_ap.

  MODIFY itab_zycit279_ap TRANSPORTING mark

              WHERE mark EQ 'X'.

  IF /pws/zycie244-tipo NE 'G'.

    IF pressed_tab_2a EQ 'FS_MERC2'.

      LOOP AT itab_zycit246_final

              WHERE matnr = itab_resumo_ap-matnr

                AND nrseqdi EQ space.

        EXIT.

...

 

...

                  nritem = itab_zycit246_final-nritem.

    /pws/zycie245 = itab_zycit245.

    /pws/zycie245-meins = itab_zycit245-um_ncm.

    READ TABLE itab_zycit279_ap

                   WITH KEY matnr = itab_resumo_ap-matnr.

    /pws/zycie245-transf = itab_zycit279_ap-transf.

    /pws/zycie245-qtd_transf = itab_resumo_ap-qtd_di *

        ( /pws/zycie245-transf / 100 ).

    v_saldo_transf = /pws/zycie245-qtd_transf.

    LOOP AT itab_zycit279_ap

* >> Início da exclusão: FORM MONTA_TRANSF

                          WHERE matnr    EQ itab_resumo_ap-matnr

                            AND esgotado EQ space.

* << Fim da exclusão

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

                          WHERE matnr    EQ itab_resumo_ap-matnr.

      READ TABLE itab_adicao WITH KEY

                          adicao  = itab_zycit279_ap-adicao

                          nrseqdi = itab_zycit279_ap-nrseqdi.

      IF sy-subrc EQ 0 .

        CONTINUE.

      ENDIF.

* << Fim da inclusão

      IF itab_zycit279_ap-nrseqdi NE space.

        IF pressed_tab_2a EQ 'FS_MERC2'.

          CONTINUE.

        ENDIF.

      ELSEIF /pws/zycie244-tipo NE 'F' AND

             /pws/zycie244-modalidade EQ 'S'.

        IF pressed_tab_2a NE 'FS_MERC2'.

          CONTINUE.

        ENDIF.

      ENDIF.

...

 

...

  ELSE.

    READ TABLE itab_zycit245 INDEX 1.

    /pws/zycie245 = itab_zycit245.

    /pws/zycie245-um_ncm = itab_resumo_ap-meins.

    READ TABLE itab_zycit279_ap

                   WITH KEY matnr = itab_resumo_ap-matnr.

    /pws/zycie245-transf = itab_zycit279_ap-transf.

    /pws/zycie245-qtd_transf = itab_resumo_ap-qtd_di *

        ( /pws/zycie245-transf / 100 ).

    v_saldo_transf = /pws/zycie245-qtd_transf.

* >> Início da exclusão: FORM MONTA_TRANSF

    LOOP AT itab_zycit279_ap WHERE matnr    EQ itab_resumo_ap-matnr

* << Fim da exclusão

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

    LOOP AT itab_zycit279_ap WHERE matnr EQ itab_resumo_ap-matnr

* << Fim da inclusão

                                   AND esgotado EQ space.

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

      READ TABLE itab_adicao WITH KEY

                          adicao  = itab_zycit279_ap-adicao

                          nrseqdi = itab_zycit279_ap-nrseqdi.

      IF sy-subrc EQ 0 .

        CONTINUE.

      ENDIF.

* << Fim da inclusão

      IF itab_zycit279_ap-nrseqdi NE space.

...

 

...

FORM salva_apont.

  DATA: itab_zycit245_ap_s LIKE /pws/zycit245 OCCURS 0 WITH HEADER LINE,

           itab_zycit245_e LIKE /pws/zycit245 OCCURS 0 WITH HEADER LINE,

           itab_zycit245_s LIKE /pws/zycit245 OCCURS 0 WITH HEADER LINE,

           itab_zycit279_e LIKE /pws/zycit279 OCCURS 0 WITH HEADER LINE.

  IF NOT itab_zycit279_ap[] IS INITIAL.

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

    SORT itab_zycit245_ap_s BY nrseqd nritem.

    REFRESH itab_zycit279_ap_s.

    itab_zycit279_e[] = itab_zycit279_ap[].

    DELETE itab_zycit279_e WHERE nrseqd_d EQ space

                              OR transf   NE space.

    SORT itab_zycit279_e BY nrseqd_d.

    DELETE ADJACENT DUPLICATES FROM itab_zycit279_e

        COMPARING nrseqd_d.

* << Fim da inclusão

    SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245_ap_s

* >> Início da exclusão: FORM SALVA_APONT

        FOR ALL ENTRIES IN itab_zycit279_ap

      WHERE nrseqd EQ itab_zycit279_ap-nrseqd_d.

    SELECT * FROM /pws/zycit279 INTO TABLE itab_zycit279_e

        WHERE nrseqd EQ /pws/zycie244-nrseqd.           "#EC CI_NOFIRST

    SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245_e

* << Fim da exclusão

        FOR ALL ENTRIES IN itab_zycit279_e

      WHERE nrseqd EQ itab_zycit279_e-nrseqd_d.

* >> Início da exclusão: FORM SALVA_APONT

    SORT itab_zycit245_ap_s BY nrseqd nritem.

    LOOP AT itab_zycit279_ap.

      CLEAR: itab_zycit279_e.

      READ TABLE itab_zycit279_e WITH KEY

                        nrseq  = itab_zycit279_ap-nrseq

                        ebeln  = itab_zycit279_ap-ebeln

                        lote   = itab_zycit279_ap-lote

                        ebelp  = itab_zycit279_ap-ebelp.

      IF itab_zycit279_ap-nrseqd_d IS INITIAL AND

         itab_zycit279_e-nrseqd_d IS INITIAL.

        CONTINUE.

      ENDIF.

      READ TABLE itab_zycit246_save WITH KEY

                        nrseq = itab_zycit279_ap-nrseq

                        ebeln = itab_zycit279_ap-ebeln

                        lote  = itab_zycit279_ap-lote

                        ebelp = itab_zycit279_ap-ebelp.

      IF NOT itab_zycit279_e-nrseqd_d IS INITIAL.

        IF itab_zycit279_ap-nrseqdi IS INITIAL.

          LOOP AT itab_zycit245_e

                        WHERE nrseqd = itab_zycit279_e-nrseqd_d

                          AND nritem > '90000'.

            EXIT.

          ENDLOOP.

        ELSE.

          LOOP AT itab_zycit245_e

                        WHERE nrseqd = itab_zycit279_e-nrseqd_d

                          AND nritem < '90000'.

            EXIT.

          ENDLOOP.

        ENDIF.

        IF itab_zycit245_e-tipo NE 'G'.

          IF /pws/zycit321-c_comum IS INITIAL.

            REFRESH itab_zycit433.

            CLEAR itab_zycit433.

            SELECT SINGLE grupo FROM /pws/zycit433

            INTO itab_zycit433-grupo

                  WHERE matnr EQ itab_zycit279_e-matnr.

            SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433

                  WHERE grupo EQ itab_zycit433-grupo.   "#EC CI_NOFIRST

            itab_zycit433-matnr     = itab_zycit279_e-matnr.

            APPEND itab_zycit433.

            LOOP AT itab_zycit433.

              IF itab_zycit279_ap-nrseqdi IS INITIAL.

                LOOP AT itab_zycit245_e

                              WHERE nrseqd = itab_zycit279_e-nrseqd_d

                                AND codcomp = itab_zycit433-matnr

                                AND nritem > '90000'.

                  EXIT.

                ENDLOOP.

              ELSE.

                LOOP AT itab_zycit245_e

                              WHERE nrseqd = itab_zycit279_e-nrseqd_d

                                AND codcomp = itab_zycit433-matnr

                                AND nritem < '90000'.

                  EXIT.

                ENDLOOP.

              ENDIF.

              IF sy-subrc EQ 0.

                EXIT.

              ENDIF.

            ENDLOOP.

          ELSE.

            IF itab_zycit279_ap-nrseqdi IS INITIAL.

              LOOP AT itab_zycit245_e

                          WHERE nrseqd = itab_zycit279_e-nrseqd_d

                            AND j_1bnbm = itab_zycit279_e-j_1bnbm

                            AND nritem > '90000'.

                EXIT.

              ENDLOOP.

            ELSE.

              LOOP AT itab_zycit245_e

                          WHERE nrseqd = itab_zycit279_e-nrseqd_d

                            AND j_1bnbm = itab_zycit279_e-j_1bnbm

                            AND nritem < '90000'.

                EXIT.

              ENDLOOP.

            ENDIF.

          ENDIF.

        ENDIF.

        READ TABLE itab_zycit245_s WITH KEY

                nrseqd = itab_zycit245_e-nrseqd

                nritem = itab_zycit245_e-nritem.

        IF sy-subrc NE 0.

          itab_zycit245_s = itab_zycit245_e.

        ENDIF.

        IF itab_zycit246_save-i_txmoeda IS INITIAL.

          itab_zycit246_save-i_txmoeda = 1.

        ENDIF.

        v_vl_transf = ( itab_zycit279_e-qtd_transf *

             itab_zycit279_e-valor ) / itab_zycit246_save-i_txmoeda.

        itab_zycit245_s-vlvinc = itab_zycit245_s-vlvinc

                                      - v_vl_transf.

        itab_zycit245_s-vinculado =

              itab_zycit245_s-vinculado -

              itab_zycit279_e-qtd_transf.

        MODIFY itab_zycit245_s TRANSPORTING vinculado vlvinc

          WHERE nrseqd = itab_zycit245_s-nrseqd

            AND nritem = itab_zycit245_s-nritem.

        IF sy-subrc NE 0 .

          APPEND itab_zycit245_s.

        ENDIF.

      ENDIF.

* << Fim da exclusão

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

    LOOP AT itab_zycit279_ap WHERE nrseqd_d NE space

                               AND transf   EQ space.

      itab_zycit279_ap-transf = 100.

* << Fim da inclusão

      IF itab_zycit279_ap-nrseqdi IS INITIAL.

        LOOP AT itab_zycit245_ap_s

                  WHERE nrseqd = itab_zycit279_ap-nrseqd_d

                    AND nritem > '90000'.

          EXIT.

        ENDLOOP.

      ELSE.

        LOOP AT itab_zycit245_ap_s

                  WHERE nrseqd = itab_zycit279_ap-nrseqd_d

                    AND nritem < '90000'.

...

 

...

            ENDLOOP.

          ENDIF.

        ENDIF.

      ENDIF.

      READ TABLE itab_zycit245_s WITH KEY

              nrseqd = itab_zycit245_ap_s-nrseqd

              nritem = itab_zycit245_ap_s-nritem.

      IF sy-subrc NE 0.

        itab_zycit245_s = itab_zycit245_ap_s.

      ENDIF.

* >> Início da exclusão: FORM SALVA_APONT

      IF itab_zycit246_save-i_txmoeda IS INITIAL.

        itab_zycit246_save-i_txmoeda = 1.

      ENDIF.

      v_vl_transf = ( itab_zycit279_ap-qtd_transf *

           itab_zycit279_ap-valor ) / itab_zycit246_save-i_txmoeda.

      itab_zycit245_s-vlvinc = itab_zycit245_s-vlvinc

                                    + v_vl_transf.

* << Fim da exclusão

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

      ADD itab_zycit279_ap-vltot TO itab_zycit245_s-vlvinc.

* << Fim da inclusão

      itab_zycit245_s-vinculado =

            itab_zycit245_s-vinculado +

            itab_zycit279_ap-qtd_transf.

      MODIFY itab_zycit245_s TRANSPORTING vinculado vlvinc

        WHERE nrseqd = itab_zycit245_s-nrseqd

          AND nritem = itab_zycit245_s-nritem.

      IF sy-subrc NE 0 .

        APPEND itab_zycit245_s.

      ENDIF.

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

      itab_zycit279_ap_s = itab_zycit279_ap.

      itab_zycit279_ap_s-menge  =

      itab_zycit279_ap_s-slqtde = itab_zycit279_ap-qtd_transf  .

      itab_zycit279_ap_s-nrseqd = itab_zycit279_ap-nrseqd_d    .

      CLEAR:

          itab_zycit279_ap_s-nrseqd_d,  itab_zycit279_ap_s-perda,

          itab_zycit279_ap_s-qtd_perda, itab_zycit279_ap_s-qtd_transf,

          itab_zycit279_ap_s-transf, itab_zycit279_ap_s-vlpis,

          itab_zycit279_ap_s-multapis, itab_zycit279_ap_s-vmultapis,

          itab_zycit279_ap_s-jurospis, itab_zycit279_ap_s-vjurospis,

          itab_zycit279_ap_s-vlcof, itab_zycit279_ap_s-multacof,

          itab_zycit279_ap_s-vmultacof, itab_zycit279_ap_s-juroscof,

          itab_zycit279_ap_s-vjuroscof, itab_zycit279_ap_s-vafrmm,

          itab_zycit279_ap_s-multaafrmm, itab_zycit279_ap_s-vmultaafrmm,

          itab_zycit279_ap_s-jurosafrmm, itab_zycit279_ap_s-vjurosafrmm,

          itab_zycit279_ap_s-multaii, itab_zycit279_ap_s-multaipi,

          itab_zycit279_ap_s-multaicms, itab_zycit279_ap_s-jurosii,

          itab_zycit279_ap_s-jurosipi, itab_zycit279_ap_s-jurosicms.

      APPEND itab_zycit279_ap_s.

      CLEAR: itab_zycit279_ap-slqtde.

      itab_zycit279_ap-esgotado = 'X'.

      MODIFY itab_zycit279_ap.

    itab_zycit246_final-qtd_compv = itab_zycit279_ap-menge.

    modify itab_zycit246_final transporting qtd_compv

          WHERE nrseq EQ itab_zycit279_ap-nrseq

            AND ebeln EQ itab_zycit279_ap-ebeln

            AND ebelp EQ itab_zycit279_ap-ebelp

            AND lote  EQ itab_zycit279_ap-lote.

* << Fim da inclusão

    ENDLOOP.

    MODIFY /pws/zycit279 FROM TABLE itab_zycit279_ap.

    IF NOT itab_zycit245_s[] IS INITIAL.

      MODIFY /pws/zycit245 FROM TABLE itab_zycit245_s.

    ENDIF.

  ENDIF.

ENDFORM.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI040F03

 

...

          default_button              = '1'

          display_cancel_button       = 'X'

       IMPORTING

          answer                      = v_confirm

       EXCEPTIONS

          text_not_found              = 1

          OTHERS                      = 2.

  IF v_confirm EQ '2' OR v_confirm EQ 'A'.

    EXIT.

  ENDIF.

* >> Início da exclusão: FORM TRATA_BUTTON_ENCER2

  CLEAR v_status_tf.

  PERFORM transf_saldo USING v_status_tf.

  IF v_status_tf NE 'S'.

    EXIT.

  ENDIF.

* << Fim da exclusão

  IF NOT /pws/zycit321-siscotrans IS INITIAL AND

     /pws/zycie244-modalidade EQ 'S'.

    it_zycit285-nrseqd   = /pws/zycie244-nrseqd.

    it_zycit285-tp_doc   = 'BAC'.

    it_zycit285-identify = /pws/zycie244-identify.

    it_zycit285-werks    = /pws/zycie244-werks.

    it_zycit285-bukrs    = /pws/zycie244-bukrs.

    it_zycit285-dtenvf   = sy-datum.

    it_zycit285-uname    = sy-uname.

    it_zycit285-stasis   = 'A'.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI040I01

 

...

MODULE modifica_transf INPUT.

  DATA wa_transf LIKE /pws/zycie279.

  READ TABLE itab_zycit279_ap_aux INDEX tc_transf-current_line.

  wa_transf = itab_zycit279_ap_aux.

* >> Início da exclusão: MODULE MODIFICA_TRANSF

  IF v_mark2 IS INITIAL.

    v_saldo_transf = v_saldo_transf + itab_zycit279_ap_aux-qtd_transf.

    CLEAR: /pws/zycie279-qtd_transf, /pws/zycie279-nrseqd_d.

  ELSE.

    IF NOT /pws/zycie245-transf IS INITIAL.

      IF v_saldo_transf > 0 .

        IF /pws/zycie279-slqtde > v_saldo_transf.

          /pws/zycie279-qtd_transf = v_saldo_transf.

        ELSE.

          /pws/zycie279-qtd_transf = /pws/zycie279-slqtde.

        ENDIF.

        v_saldo_transf = v_saldo_transf - /pws/zycie279-qtd_transf.

      ELSE.

        CLEAR v_mark2.

        MESSAGE i015 WITH text-267.

      ENDIF.

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_TRANSF

  itab_zycit279_ap_aux-mark = v_mark2.

  IF v_mark2 NE 'X'.

    CLEAR: itab_zycit279_ap_aux-nrseqd_d.

* << Fim da inclusão

    ENDIF.

* >> Início da exclusão: MODULE MODIFICA_TRANSF

  ENDIF.

  itab_zycit279_ap = itab_zycit279_ap_aux =

    /pws/zycie279.

  itab_zycit279_ap_aux-mark = itab_zycit279_ap_aux-mark = v_mark2.

  MODIFY itab_zycit279_ap_aux TRANSPORTING qtd_transf

                                       nrseqd_d mark

        WHERE nrseq EQ wa_transf-nrseq

          AND ebeln EQ wa_transf-ebeln

          AND ebelp EQ wa_transf-ebelp.

  LOOP AT itab_zycit279_ap

          WHERE nrseq EQ wa_transf-nrseq

            AND ebeln EQ wa_transf-ebeln

            AND ebelp EQ wa_transf-ebelp.

    IF itab_zycit279_ap_aux-mark EQ 'X'.

      IF itab_zycit279_ap_aux-qtd_transf > 0.

        IF itab_zycit279_ap-slqtde > itab_zycit279_ap_aux-qtd_transf.

          itab_zycit279_ap-qtd_transf = itab_zycit279_ap_aux-qtd_transf.

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_TRANSF

  MODIFY itab_zycit279_ap_aux TRANSPORTING mark nrseqd_d

        WHERE nrseq   EQ wa_transf-nrseq

          AND nrseqdi EQ wa_transf-nrseqdi

          AND adicao  EQ wa_transf-adicao.

  LOOP AT itab_zycit279_ap  WHERE nrseq  EQ wa_transf-nrseq

                              AND nrseqdi EQ wa_transf-nrseqdi

                              AND adicao EQ wa_transf-adicao.

    IF v_mark2 NE 'X'.

      itab_zycit246-qtd_nacion = itab_zycit246_final-qtd_nacion =

                                           itab_zycit279_ap-slqtde.

      CLEAR: itab_zycit279_ap_aux-qtd_transf,

             itab_zycit279_ap-qtd_transf.

* << Fim da inclusão

        ELSE.

* >> Início da inclusão: MODULE MODIFICA_TRANSF

      CLEAR: itab_zycit246-qtd_nacion,

             itab_zycit246_final-qtd_nacion,

             itab_zycit279_ap-qtd_transf,

             itab_zycit279_ap-nrseqd_d.

      itab_zycit279_ap_aux-qtd_transf =

* << Fim da inclusão

          itab_zycit279_ap-qtd_transf = itab_zycit279_ap-slqtde.

        ENDIF.

* >> Início da exclusão: MODULE MODIFICA_TRANSF

      itab_zycit279_ap_aux-qtd_transf = itab_zycit279_ap_aux-qtd_transf

                                          - itab_zycit279_ap-qtd_transf.

        itab_zycit279_ap-transf   = itab_zycit279_ap_aux-transf.

        itab_zycit279_ap-nrseqd_d = itab_zycit279_ap_aux-nrseqd_d.

      ELSE.

        CLEAR: itab_zycit279_ap-qtd_transf.

      ENDIF.

    ELSE.

      CLEAR: itab_zycit279_ap-qtd_transf, itab_zycit279_ap-nrseqd_d.

    ENDIF.

    MODIFY itab_zycit279_ap.

    READ TABLE itab_zycit246 WITH KEY nrseq = itab_zycit279_ap-nrseq

                                      ebeln = itab_zycit279_ap-ebeln

                                      ebelp = itab_zycit279_ap-ebelp

                                      lote  = itab_zycit279_ap-lote.

    IF sy-subrc EQ 0.

      itab_zycit246-qtd_nacion = itab_zycit246-qtd_ncm -

          itab_zycit246-qtd_compv - itab_zycit279_ap-qtd_transf.

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_TRANSF

    MODIFY itab_zycit246_final TRANSPORTING qtd_nacion

          WHERE nrseq EQ itab_zycit279_ap-nrseq

            AND ebeln EQ itab_zycit279_ap-ebeln

            AND ebelp EQ itab_zycit279_ap-ebelp

            AND lote  EQ itab_zycit279_ap-lote.

* << Fim da inclusão

      MODIFY itab_zycit246 TRANSPORTING qtd_nacion

            WHERE nrseq EQ itab_zycit279_ap-nrseq

              AND ebeln EQ itab_zycit279_ap-ebeln

              AND ebelp EQ itab_zycit279_ap-ebelp

              AND lote  EQ itab_zycit279_ap-lote.

* >> Início da exclusão: MODULE MODIFICA_TRANSF

    ENDIF.

    READ TABLE itab_zycit246_final WITH KEY

                                  nrseq = itab_zycit279_ap-nrseq

                                  ebeln = itab_zycit279_ap-ebeln

                                  ebelp = itab_zycit279_ap-ebelp

                                  lote  = itab_zycit279_ap-lote.

    IF sy-subrc EQ 0.

      itab_zycit246_final-qtd_nacion = itab_zycit246_final-qtd_ncm -

          itab_zycit246_final-qtd_compv - itab_zycit279_ap-qtd_transf.

      MODIFY itab_zycit246_final TRANSPORTING qtd_nacion

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_TRANSF

    MODIFY itab_zycit279_ap_aux TRANSPORTING qtd_transf

* << Fim da inclusão

            WHERE nrseq EQ itab_zycit279_ap-nrseq

              AND ebeln EQ itab_zycit279_ap-ebeln

              AND ebelp EQ itab_zycit279_ap-ebelp

              AND lote  EQ itab_zycit279_ap-lote.

* >> Início da exclusão: MODULE MODIFICA_TRANSF

    ENDIF.

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_TRANSF

    MODIFY itab_zycit279_ap.

* << Fim da inclusão

  ENDLOOP.

  v_altera_ap = 'S'.

ENDMODULE.

...

 

...

MODULE modifica_ato_dest INPUT.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

  DATA: wa_zycit279 TYPE /pws/zycie279,

        v_nvinc     TYPE c.

* << Fim da inclusão

...

 

...

      IF wa_zycit244_tf-tipo EQ 'G'.

        IF pressed_tab_2a = 'FS_MERC2'.

          SELECT SINGLE * FROM /pws/zycit245 INTO wa_zycit245_tf

              WHERE nrseqd EQ /pws/zycie279-nrseqd_d

                AND nritem > 90000.                       "#EC PORTABLE

        ELSE.

          SELECT SINGLE * FROM /pws/zycit245 INTO wa_zycit245_tf

              WHERE nrseqd EQ /pws/zycie279-nrseqd_d

                AND nritem < 90000.                       "#EC PORTABLE

        ENDIF.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

        wa_zycit279 = itab_zycit279_ap_aux.

        v_saldo_vl = wa_zycit245_tf-netpr_t - wa_zycit245_tf-vlvinc.

        LOOP AT itab_zycit279_ap INTO itab_zycit279_ap_aux

                      WHERE nrseq  EQ wa_zycit279-nrseq

                        AND nrseqdi EQ wa_zycit279-nrseqdi

                        AND adicao EQ wa_zycit279-adicao.

* << Fim da inclusão

        READ TABLE itab_zycit246_final WITH KEY

                          nrseq = itab_zycit279_ap_aux-nrseq

                          docnum = itab_zycit279_ap_aux-docnum

                          ebeln = itab_zycit279_ap_aux-ebeln

                          ebelp = itab_zycit279_ap_aux-ebelp.

        READ TABLE itab_zycit279_ap WITH KEY

                          nrseq = itab_zycit279_ap_aux-nrseq

                          docnum = itab_zycit279_ap_aux-docnum

                          ebeln = itab_zycit279_ap_aux-ebeln

                          ebelp = itab_zycit279_ap_aux-ebelp.

        IF itab_zycit246_final-i_txmoeda IS INITIAL.

          itab_zycit246_final-i_txmoeda = 1.

        ENDIF.

* >> Início da exclusão: MODULE MODIFICA_ATO_DEST

        v_saldo_vl = wa_zycit245_tf-netpr_t - wa_zycit245_tf-vlvinc.

* << Fim da exclusão

        v_vl_transf =

            ( /pws/zycie279-qtd_transf * itab_zycit279_ap-valor ) /

                                        itab_zycit246_final-i_txmoeda.

        IF v_saldo_vl < v_vl_transf.

          MESSAGE i015 WITH text-268 /pws/zycie279-nrseqd_d text-268.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

            v_nvinc = 'X'.

* << Fim da inclusão

          EXIT.

        ELSE.

          MESSAGE s015 WITH text-288.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

          ENDIF.

          SUBTRACT v_vl_transf FROM v_saldo_vl.

        ENDLOOP.

        IF v_nvinc EQ 'X'.

          EXIT.

* << Fim da inclusão

        ENDIF.

      ELSE.

        REFRESH itab_zycit245_tf.

        IF pressed_tab_2a = 'FS_MERC2'.

          SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245_tf

               WHERE nrseqd EQ /pws/zycie279-nrseqd_d

                 AND nritem > 90000.                      "#EC PORTABLE

        ELSE.

          SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245_tf

               WHERE nrseqd EQ /pws/zycie279-nrseqd_d

                 AND nritem < 90000.                      "#EC PORTABLE

        ENDIF.

        CLEAR: itab_zycit245_tf, wa_zycit245_tf.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

        wa_zycit279 = itab_zycit279_ap_aux.

        LOOP AT itab_zycit279_ap_aux

                      WHERE nrseq  EQ wa_zycit279-nrseq

                        AND nrseqdi EQ wa_zycit279-nrseqdi

                        AND adicao EQ wa_zycit279-adicao.

* << Fim da inclusão

        IF /pws/zycit321-c_comum IS INITIAL.

          REFRESH itab_zycit433.

          CLEAR itab_zycit433.

          SELECT SINGLE grupo FROM /pws/zycit433

          INTO itab_zycit433-grupo

                WHERE matnr EQ itab_zycit279_ap_aux-matnr.

          SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433

* >> Início da exclusão: MODULE MODIFICA_ATO_DEST

                WHERE grupo EQ itab_zycit433-grupo.     "#EC CI_NOFIRST

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

                 WHERE grupo EQ itab_zycit433-grupo.    "#EC CI_NOFIRST

* << Fim da inclusão

          itab_zycit433-matnr     = itab_zycit279_ap_aux-matnr.

          APPEND itab_zycit433.

          LOOP AT itab_zycit433.

            READ TABLE itab_zycit245_tf WITH KEY

                            codcomp = itab_zycit433-matnr.

            IF sy-subrc EQ 0.

              wa_zycit245_tf = itab_zycit245_tf.

              EXIT.

            ENDIF.

          ENDLOOP.

...

 

...

          READ TABLE itab_zycit245_tf WITH KEY

                          j_1bnbm = itab_zycit279_ap_aux-j_1bnbm.

          IF sy-subrc EQ 0.

            wa_zycit245_tf = itab_zycit245_tf.

          ENDIF.

        ENDIF.

        IF NOT wa_zycit245_tf IS INITIAL.

          v_qtd_tf = wa_zycit245_tf-qtd_ncm - wa_zycit245_tf-vinculado.

          IF v_qtd_tf < itab_zycit279_ap_aux-qtd_transf.

            MESSAGE i015 WITH text-268 /pws/zycie279-nrseqd_d text-269.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

              v_nvinc = 'X'.

* << Fim da inclusão

            EXIT.

          ELSE.

            MESSAGE s015 WITH text-288.

          ENDIF.

        ELSE.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

            v_nvinc = 'X'.

* << Fim da inclusão

          MESSAGE i015 WITH text-258 itab_zycit279_ap_aux-matnr

                            text-270 /pws/zycie279-nrseqd_d.

          EXIT.

        ENDIF.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

          itab_zycit245_tf-vinculado = wa_zycit245_tf-vinculado +

                                   itab_zycit279_ap_aux-qtd_transf.

          MODIFY itab_zycit245_tf TRANSPORTING vinculado

                  WHERE nritem EQ wa_zycit245_tf-nritem.

        ENDLOOP.

        IF v_nvinc EQ 'X'.

          CLEAR: v_nvinc.

          EXIT.

* << Fim da inclusão

      ENDIF.

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

      ENDIF.

* << Fim da inclusão

    ELSE.

      SELECT SINGLE * FROM /pws/zycit244 INTO wa_zycit244_tf

          WHERE nrseqd EQ /pws/zycie279-nrseqd_d.

      IF wa_zycit244_tf-tipo NE 'C'

        AND wa_zycit244_tf-tipo NE 'G'.

        MESSAGE i015 WITH text-272.

      ELSEIF wa_zycit244_tf-status NE 'D'.

        MESSAGE i015 WITH text-271.

      ELSE.

        MESSAGE i015 WITH text-274 .

      ENDIF.

      EXIT.

    ENDIF.

  ENDIF.

  itab_zycit279_ap-nrseqd_d =

  itab_zycit279_ap_aux-nrseqd_d = /pws/zycie279-nrseqd_d.

* >> Início da exclusão: MODULE MODIFICA_ATO_DEST

  MODIFY itab_zycit279_ap_aux INDEX tc_transf-current_line.

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

  MODIFY itab_zycit279_ap_aux TRANSPORTING nrseqd_d

        WHERE nrseq EQ itab_zycit279_ap_aux-nrseq

          AND nrseqdi EQ itab_zycit279_ap_aux-nrseqdi

          AND adicao EQ itab_zycit279_ap_aux-adicao.

* << Fim da inclusão

  MODIFY itab_zycit279_ap TRANSPORTING nrseqd_d

        WHERE nrseq EQ itab_zycit279_ap_aux-nrseq

* >> Início da exclusão: MODULE MODIFICA_ATO_DEST

          AND docnum EQ itab_zycit279_ap_aux-docnum

          AND ebeln EQ itab_zycit279_ap_aux-ebeln

          AND ebelp EQ itab_zycit279_ap_aux-ebelp

          AND qtd_transf > 0.

* << Fim da exclusão

* >> Início da inclusão: MODULE MODIFICA_ATO_DEST

          AND nrseqdi EQ itab_zycit279_ap_aux-nrseqdi

          AND adicao EQ itab_zycit279_ap_aux-adicao..

* << Fim da inclusão

ENDMODULE.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI040O01

 

...

MODULE preenche_estrutura_0239 OUTPUT.

  /pws/zycie279 = itab_zycit279_ap_aux.

  v_mark2 = itab_zycit279_ap_aux-mark.

  IF v_mark2 EQ 'X'.

    LOOP AT SCREEN.

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0239

      IF itab_zycit279_ap_aux-transf IS INITIAL.

* << Fim da inclusão

      CASE screen-name.

        WHEN '/PWS/ZYCIE279-NRSEQD_D'.

          screen-input = v_status2.

          MODIFY SCREEN.

        WHEN '/PWS/ZYCIE279-QTD_TRANSF'.

          IF /pws/zycie245-transf IS INITIAL

          AND /pws/zycie279-nrseqd_d IS INITIAL.

            screen-input = v_status2.

          ELSE.

            screen-input = 0.

          ENDIF.

          MODIFY SCREEN.

      ENDCASE.

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0239

      ELSE.

        screen-input = 0.

        MODIFY SCREEN.

      ENDIF.

* << Fim da inclusão

      IF v_tcode2 EQ '/PWS/ZYCI040_E'.

        screen-input = '0'.

        MODIFY SCREEN.

      ENDIF.

    ENDLOOP.

  ENDIF.

ENDMODULE.

...