CE PLUS - Nota 010032

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 01/04/2010 00:00:00

Data/Hora Última Alteração: 22/02/2011 14:14:15

Descrição da Nota: CORREÇÃO DO CALCULO DA BASE DOS IMPOSTOS.

Sintoma

O montante base dos impostos fica errado quando um dos impostos faz parte da base de outro.

 

 

Solução

Ajustada programa para limpar as variveis antes dos calculos e corrigida leitura da tabela de

impostos.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

ATUALIZAÇÃO DO CALCULO DAS BASES DOS IMPOSTOS

GRAVAR AS ALTERAÇÕES DAS CONDIÇÕES DOS IMPOSTOS DA ANA

Informações Complementares

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

Nota Número 10032 Data: 01/04/2010 Hora: 16:09:48

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

 

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

Nota Número              : 10032

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00003

Agrupamento              : 00015

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

Referência às notas relacionadas:

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

 

05181  - 00001 - 7.0    - 00003  - ATUALIZAÇÃO DO CALCULO DAS BASES DOS IMPOSTOS

10017  - 00002 - 8.0    - 00003  - GRAVAR AS ALTERAÇÕES DAS CONDIÇÕES DOS IMPOSTOS DA ANA

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

CORREÇÃO DO CALCULO DA BASE DOS IMPOSTOS.

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

Palavras Chave:

IMPOSTOS - ANA - ALTERAR - CALCULO - BASE

/PWS/SAPMZYCI059

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

Objetos da nota:

DYNP /PWS/SAPMZYCI059                        0433

REPS /PWS/MZYCI059F03

REPS /PWS/MZYCI059I01

REPS /PWS/MZYCI059O01

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI059                        0433

 

MODIFICAR LÓGICA DE PROCESSAMENTO TELA 0433

...

          carrega_totais.

  LOOP AT itab_zycit403_i WITH CONTROL tc_trib.

    MODULE: carrega_zycie403,

            ajuste.

  ENDLOOP.

PROCESS AFTER INPUT.

  MODULE clear_variavel.

  LOOP AT itab_zycit403_i.

    MODULE: carrega_zycit403.

  ENDLOOP.

* >> Início da inclusão:

  module reapura_imp.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI059F03

 

...

  chave = /pws/zycie085-canal2.

  IF sy-subrc NE 0.

    IF /pws/zycie085-canal2 IS INITIAL.

      CLEAR /pws/zycie085-canal.

    ELSE.

      CLEAR /pws/zycie085-canal2.

      CLEAR /pws/zycie085-canal.

      MESSAGE i015 WITH text-234.

    ENDIF.

  ENDIF.

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

  IF /pws/zycie085-aduana IS INITIAL.

    SELECT SINGLE lifnr FROM /pws/zycit125 INTO /pws/zycie085-aduana

    WHERE tipo = 'ADU' AND nrseq = /pws/zycie100a-nrseq.

    MOVE  /pws/zycie085-aduana TO /pws/zycie085-aduanadest.

  ENDIF.

* << Fim da exclusão

ENDFORM.

...

 

...

                                    ebelp  = itab_zycit403-ebelp.

              IF sy-subrc EQ 0.

                MOVE:

               itab_zycit403_t-percentual TO itab_zycit403-percentual,

               itab_zycit403_t-condicoes TO itab_zycit403-condicoes,

               itab_zycit403_t-creditar  TO itab_zycit403-creditar.

              ELSE.

               MOVE itab_zycit403-advalorem TO itab_zycit403-percentual.

              ENDIF.

              v_index = v_index + 1.

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

              READ TABLE itab_zycit403 INTO wa_zycit403 INDEX v_index.

* << Fim da exclusão

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

              v_ate = v_ate - 1.

              READ TABLE itab_zycit404 INTO itab_zycit404_aux

                                         WITH KEY linha = v_ate.

              CLEAR wa_zycit403.

              READ TABLE itab_zycit403 INTO wa_zycit403

                      WITH KEY codigo = itab_zycit404_aux-codigo

                               ebeln  = itab_zycit003-ebeln

                               ebelp  = itab_zycit003-ebelp .

              ADD 1 TO v_ate.

* << Fim da inclusão

              v_valtot = v_valtot + wa_zycit403-valorcalc.

            ENDIF.

          ENDWHILE.

          MOVE: itab_it-nrseqdi TO itab_zycit403-nrseqdi,

                itab_it-ebeln TO itab_zycit403-ebeln,

                itab_it-ebelp TO itab_zycit403-ebelp,

                itab_zycit404-codigo TO itab_zycit403-codigo,

                v_valtot TO itab_zycit403-base,

                100 TO  itab_zycit403-basered.

          CLEAR  v_valtot.

...

 

...

          itab_zycit403-valorcalc =

              itab_zycit403-base * itab_zycit403-percentual / 100.

          IF itab_zycit403-valorcalc < itab_zycit399-vlmin AND

             NOT  itab_zycit399-vlmin IS INITIAL.

            itab_zycit403-valorcalc = itab_zycit399-vlmin.

          ENDIF.

          IF itab_zycit403-valorcalc > itab_zycit399-vlmax AND

             NOT itab_zycit399-vlmax IS INITIAL.

            itab_zycit403-valorcalc = itab_zycit399-vlmax.

          ENDIF.

          itab_zycit403-valorrec = itab_zycit403-valorcalc.

          APPEND itab_zycit403.

          READ TABLE itab_adic INTO wa_adic

                               WITH KEY ebeln  = itab_it-ebeln

                                        ebelp  = itab_it-ebelp

                                        codigo = itab_zycit403-codigo.

          IF sy-subrc NE 0.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI059I01

 

...

        /pws/zycie403-ebelp      TO  itab_zycit403_i-ebelp,

        /pws/zycie403-codigo     TO  itab_zycit403_i-codigo,

        /pws/zycie403-base       TO  itab_zycit403_i-base,

        /pws/zycie403-basered    TO  itab_zycit403_i-basered,

        /pws/zycie403-advalorem  TO  itab_zycit403_i-advalorem,

        /pws/zycie403-percentual TO  itab_zycit403_i-percentual,

        /pws/zycie403-valorcalc  TO  itab_zycit403_i-valorcalc,

        /pws/zycie403-valorrec   TO  itab_zycit403_i-valorrec,

        /pws/zycie403-condicoes  TO  itab_zycit403_i-condicoes,

        /pws/zycie403-creditar   TO  itab_zycit403_i-creditar.

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

  LOOP AT itab_zycit404 WHERE  exibir EQ 'X' AND

    codigo = itab_zycit403_i-codigo.

    CLEAR v_ate.

    CLEAR v_index.

    WHILE v_ate <= itab_zycit404-nivelate.

      IF v_ate IS INITIAL.

        v_ate = itab_zycit404-nivelde.

      ENDIF.

      CLEAR: itab_zycit404_aux, wa_zycit404.

      READ TABLE itab_zycit404 INTO wa_zycit404 WITH KEY linha = v_ate.

      READ TABLE itab_zycit404_aux WITH KEY linha = v_ate.

      v_ate = v_ate +  1.

      IF itab_zycit404_aux-codigo EQ 'FOB'.

        IF NOT v_usd IS INITIAL.

          v_valtot = v_valtot +

                          /pws/zycie100a-vlfob.

        ENDIF.

      ELSEIF itab_zycit404_aux-codigo EQ 'FRETEC'.

        v_valtot = v_valtot + /pws/zycie100a-vlfre.

      ELSEIF itab_zycit404_aux-codigo EQ 'SEGURO'.

        v_valtot = v_valtot + /pws/zycie100a-vlseg.

      ELSEIF itab_zycit404_aux-codigo EQ 'AJUSTE'.

        v_valtot = v_valtot +

        /pws/zycie100a-ajuste.

      ELSEIF sy-subrc EQ 4.

 

        READ TABLE itab_zycit403_i INTO wa_zycit403 WITH KEY

                          nrseqdi = itab_zycit403_i-nrseqdi

                          ebeln   = itab_zycit403_i-ebeln

                          ebelp   = itab_zycit403_i-ebelp

                          codigo  = wa_zycit404-codigo.

        v_valtot = v_valtot + wa_zycit403-valorcalc.

      ENDIF.

 

    ENDWHILE.

 

    MOVE: v_valtot TO itab_zycit403_i-base.

    CLEAR  v_valtot.

 

 

    IF sy-tcode NE '/PWS/ZYCI059_E'.

 

      LOOP AT itab_trib WHERE ebeln = itab_zycit403_i-ebeln AND

                             ebelp = itab_zycit403_i-ebelp.

        IF NOT v_usd IS INITIAL.

          IF itab_trib-waers NE wa_zycbt007-waersb.

            itab_trib-t_ivdesp = itab_trib-t_ivdesp / v_usd.

          ENDIF.

        ENDIF.

       itab_zycit403_i-base = itab_zycit403_i-base + itab_trib-t_ivdesp.

      ENDLOOP.

    ENDIF.

    IF ( itab_zycit403_i-codigo EQ '000415' OR

       itab_zycit403_i-codigo EQ '000422' OR

       itab_zycit403_i-codigo EQ '000429' ) AND

       t001-land1 EQ 'AR'.

      itab_zycit403_i-base = itab_zycit403_i-base

      + itab_it-vlicms.

    ELSEIF wa_zycit477-land EQ t001-land1.

      READ TABLE itab_zycit020

                        WITH KEY codigo = 'SISC'

                                 baseii = 'X'.

      IF sy-subrc EQ 0.

        itab_zycit403_i-base = itab_zycit403_i-base

                                        + itab_it-vlicms.

      ENDIF.

    ENDIF.

    CLEAR  v_valtot.

    IF itab_zycit403_i-codigo EQ '000010' OR

       itab_zycit403_i-codigo EQ '000011' OR

       itab_zycit403_i-codigo EQ 'DERECH'.

 

      READ TABLE itab_zycit082 WITH KEY ebeln = itab_zycit403_i-ebeln

                                        ebelp = itab_zycit403_i-ebelp.

      IF sy-subrc EQ 0 AND itab_zycit082-doc NE space.

        CLEAR: itab_zycit403_i-percentual, itab_zycit403_i-basered.

      ENDIF.

    ENDIF.

  ENDLOOP.

 

  itab_zycit403_i-valorcalc =

       itab_zycit403_i-base * itab_zycit403_i-percentual / 100.

  CLEAR itab_zycit399.

  READ TABLE itab_zycit399

        WITH KEY codigo = itab_zycit403_i-codigo.

  IF itab_zycit403_i-valorcalc < itab_zycit399-vlmin AND

     NOT  itab_zycit399-vlmin IS INITIAL.

    itab_zycit403_i-valorcalc = itab_zycit399-vlmin.

  ENDIF.

  IF itab_zycit403_i-valorcalc > itab_zycit399-vlmax AND

     NOT itab_zycit399-vlmax IS INITIAL.

    itab_zycit403_i-valorcalc = itab_zycit399-vlmax.

  ENDIF.

  IF /pws/zycie085-recal EQ 'X'.

    itab_zycit403_i-valorrec = itab_zycit403_i-valorcalc.

  ENDIF.

* << Fim da exclusão

  MODIFY itab_zycit403_i INDEX tc_trib-current_line.

ENDMODULE.

...

 

...

* >> Início da inclusão:

MODULE reapura_imp INPUT.

  DATA: v_first TYPE i,

        v_index_imp TYPE sy-index.

 

  IF itab_zycit404[] IS INITIAL.

    IF NOT itab_it[] IS INITIAL.

      SELECT nrseq ebeln ebelp doc FROM /pws/zycit082

      INTO TABLE itab_zycit082

      FOR ALL ENTRIES IN itab_it WHERE

              ebeln = itab_it-ebeln AND

              ebelp = itab_it-ebelp AND

              nrseq = /pws/zycie001-nrseq.

    ENDIF.

 

    IF j_1bbranch-bukrs NE /pws/zycie085-bukrs OR

       j_1bbranch-branch NE /pws/zycie085-j_1bbranch.

      SELECT SINGLE * FROM j_1bbranch

        WHERE bukrs = /pws/zycie085-bukrs

         AND branch = /pws/zycie085-j_1bbranch.

      SELECT SINGLE * FROM adrc

        WHERE addrnumber = j_1bbranch-adrnr.

      SELECT SINGLE * FROM /pws/zycit477 INTO wa_zycit477

        WHERE land = t001-land1.

    ENDIF.

 

    SELECT * FROM /pws/zycit404 INTO TABLE itab_zycit404

      WHERE codmod = 'D' AND

               regio IN (adrc-region, space) AND

            pais  = t001-land1.

 

    IF sy-subrc EQ 0.

      SELECT * FROM /pws/zycit399 INTO TABLE itab_zycit399

       FOR ALL ENTRIES IN itab_zycit404

        WHERE  codigo = itab_zycit404-codigo AND

               codmod = 'D' AND

               regio IN (adrc-region, space) AND

               pais  = t001-land1.

 

    ENDIF.

  ENDIF.

 

  SORT: itab_zycit404 DESCENDING BY regio,

        itab_zycit399 DESCENDING BY regio.

  READ TABLE: itab_zycit404 INDEX 1,

              itab_zycit399 INDEX 1.

  DELETE: itab_zycit404 WHERE regio NE itab_zycit404-regio,

          itab_zycit399 WHERE regio NE itab_zycit399-regio.

 

  SORT itab_zycit404 BY linha.

 

 

  LOOP AT itab_zycit404 WHERE exibir NE 'X'

                           OR somatoria EQ space.

    MOVE itab_zycit404 TO itab_zycit404_aux.

    APPEND itab_zycit404_aux.

 

  ENDLOOP.

 

  READ TABLE itab_it WITH KEY ebeln = /pws/zycie100a-ebeln

                              ebelp = /pws/zycie100a-ebelp.

 

  READ TABLE itab_zycit003 WITH KEY ebeln = /pws/zycie100a-ebeln

                                    ebelp = /pws/zycie100a-ebelp.

  LOOP AT itab_zycit404 WHERE  exibir EQ 'X'.

 

    READ TABLE itab_zycit403_i

                WITH KEY codigo = itab_zycit404-codigo

                         ebeln  = itab_zycit003-ebeln

                         ebelp  = itab_zycit003-ebelp.

    v_index_imp = sy-tabix.

    IF sy-subrc NE 0 .

      CONTINUE.

    ENDIF.

    CLEAR v_ate.

    v_index = v_first.

    v_ate = itab_zycit404-nivelde.

    WHILE v_ate <= itab_zycit404-nivelate.

      CLEAR itab_zycit404_aux.

      READ TABLE itab_zycit404_aux WITH KEY linha = v_ate.

      IF itab_zycit404_aux-codigo EQ 'FOB'.

        IF NOT v_usd IS INITIAL.

          v_valtot = v_valtot + itab_it-vlfob .

        ENDIF.

      ELSEIF itab_zycit404_aux-codigo EQ 'FRETEC'.

        v_valtot = v_valtot + itab_it-vlfre.

      ELSEIF itab_zycit404_aux-codigo EQ 'SEGURO'.

        v_valtot = v_valtot + itab_it-vlseg.

      ELSEIF itab_zycit404_aux-codigo EQ 'AJUSTE'.

        v_valtot = v_valtot + itab_it-ajuste.

      ELSEIF sy-subrc EQ 4.

        READ TABLE itab_zycit404 INTO itab_zycit404_aux

                                   WITH KEY linha = v_ate.

        CLEAR wa_zycit403.

        READ TABLE itab_zycit403_i INTO wa_zycit403

                WITH KEY codigo = itab_zycit404_aux-codigo

                         ebeln  = itab_zycit003-ebeln

                         ebelp  = itab_zycit003-ebelp .

        v_valtot = v_valtot + wa_zycit403-valorcalc.

      ENDIF.

      v_ate = v_ate +  1.

    ENDWHILE.

    MOVE: v_valtot TO itab_zycit403_i-base.

    CLEAR  v_valtot.

    LOOP AT itab_trib WHERE ebeln = itab_it-ebeln AND

                           ebelp = itab_it-ebelp.

      IF NOT v_usd IS INITIAL.

        IF itab_trib-waers NE wa_zycbt007-waersb.

          itab_trib-t_ivdesp = itab_trib-t_ivdesp / v_usd.

        ELSE.

          itab_trib-t_ivdesp = itab_trib-t_ivdesp / v_usd.

        ENDIF.

      ENDIF.

      itab_zycit403_i-base =

      itab_zycit403_i-base + itab_trib-t_ivdesp.

    ENDLOOP.

 

    IF ( itab_zycit404-codigo EQ '000415' OR

       itab_zycit404-codigo EQ '000422' OR

       itab_zycit404-codigo EQ '000429' ) AND

       t001-land1 EQ 'AR'.

      itab_zycit403_i-base = itab_zycit403_i-base

      + itab_it-vlicms.

    ELSEIF wa_zycit477-land EQ t001-land1.

      READ TABLE itab_zycit020

                        WITH KEY codigo = 'SISC'

                                 baseii = 'X'.

      IF sy-subrc EQ 0.

        itab_zycit403_i-base = itab_zycit403_i-base

        + itab_it-vlicms.

      ENDIF.

 

    ENDIF.

    CLEAR  v_valtot.

    IF itab_zycit404-codigo EQ '000010' OR

       itab_zycit404-codigo EQ '000011' OR

       itab_zycit404-codigo EQ 'DERECH'.

      READ TABLE itab_zycit082 WITH KEY ebeln = itab_it-ebeln

                                        ebelp = itab_it-ebelp.

      IF sy-subrc EQ 0 AND itab_zycit082-doc NE space.

        MODIFY itab_zycit403_i INDEX v_index_imp.

        READ TABLE itab_zycit403 WITH KEY

                              codigo = itab_zycit404-codigo

                              ebeln  = itab_zycit003-ebeln

                              ebelp  = itab_zycit003-ebelp.

        IF sy-subrc EQ 0 .

          MOVE itab_zycit403_i TO itab_zycit403.

          MODIFY itab_zycit403 INDEX sy-tabix.

        ENDIF.

        CLEAR itab_zycit403_i.

 

        CONTINUE.

      ENDIF.

    ENDIF.

    CLEAR: itab_zycit399.

 

    READ TABLE itab_zycit399 WITH KEY

                     codigo = itab_zycit403_i-codigo.

 

    itab_zycit403_i-valorcalc =

        itab_zycit403_i-base * itab_zycit403_i-percentual / 100.

 

    IF itab_zycit403_i-valorcalc < itab_zycit399-vlmin AND

       NOT  itab_zycit399-vlmin IS INITIAL.

      itab_zycit403_i-valorcalc = itab_zycit399-vlmin.

    ENDIF.

    IF itab_zycit403_i-valorcalc > itab_zycit399-vlmax AND

       NOT itab_zycit399-vlmax IS INITIAL.

      itab_zycit403_i-valorcalc = itab_zycit399-vlmax.

    ENDIF.

    MODIFY itab_zycit403_i INDEX v_index_imp.

    READ TABLE itab_zycit403 WITH KEY

                          codigo = itab_zycit404-codigo

                          ebeln  = itab_zycit003-ebeln

                          ebelp  = itab_zycit003-ebelp.

    IF sy-subrc EQ 0 .

      MOVE itab_zycit403_i TO itab_zycit403.

      MODIFY itab_zycit403 INDEX sy-tabix.

    ENDIF.

    READ TABLE itab_adic INTO wa_adic

                         WITH KEY ebeln  = itab_it-ebeln

                                  ebelp  = itab_it-ebelp

                                  codigo = itab_zycit403-codigo.

    IF sy-subrc EQ 0.

      MOVE: itab_zycit403-base       TO wa_adic-base,

            itab_zycit403-percentual TO wa_adic-percentual,

            itab_zycit403-valorrec   TO wa_adic-valorrec,

            itab_zycit403-condicoes  TO wa_adic-condicoes.

      MODIFY itab_adic FROM wa_adic INDEX sy-tabix.

    ENDIF.

    CLEAR itab_zycit403.

  ENDLOOP.

  DESCRIBE TABLE itab_zycit403 LINES v_first.

ENDMODULE.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI059O01

 

...

  IF sy-subrc EQ 0.

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario)

         IN PROGRAM (itab_zyglt100-programa)

           CHANGING e_subrc.

      IF e_subrc NE 0.

        EXIT.

      ENDIF.

    ENDIF.

  ENDIF.

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

  LOOP AT itab_zycit404 WHERE  exibir EQ 'X' AND

    codigo = itab_zycit403_i-codigo.

    CLEAR v_ate.

    CLEAR v_index.

    WHILE v_ate <= itab_zycit404-nivelate.

      IF v_ate IS INITIAL.

        v_ate = itab_zycit404-nivelde.

      ENDIF.

      CLEAR: itab_zycit404_aux, wa_zycit404.

      READ TABLE itab_zycit404 INTO wa_zycit404 WITH KEY linha = v_ate.

      READ TABLE itab_zycit404_aux WITH KEY linha = v_ate.

      v_ate = v_ate +  1.

      IF itab_zycit404_aux-codigo EQ 'FOB'.

        IF NOT v_usd IS INITIAL.

          v_valtot = v_valtot +

                                                 /pws/zycie100a-vlfob .

        ENDIF.

      ELSEIF itab_zycit404_aux-codigo EQ 'FRETEC'.

        v_valtot = v_valtot + /pws/zycie100a-vlfre.

      ELSEIF itab_zycit404_aux-codigo EQ 'SEGURO'.

        v_valtot = v_valtot + /pws/zycie100a-vlseg.

      ELSEIF itab_zycit404_aux-codigo EQ 'AJUSTE'.

        IF NOT v_usd IS INITIAL.

          v_valtot = v_valtot +

          /pws/zycie100a-ajuste.

        ENDIF.

      ELSEIF sy-subrc EQ 4.

        READ TABLE itab_zycit403_i INTO wa_zycit403 WITH KEY

                          nrseqdi = itab_zycit403_i-nrseqdi

                          ebeln   = itab_zycit403_i-ebeln

                          ebelp   = itab_zycit403_i-ebelp

                          codigo  = wa_zycit404-codigo.

        v_valtot = v_valtot + wa_zycit403-valorcalc.

      ENDIF.

    ENDWHILE.

    MOVE: v_valtot TO /pws/zycie403-base.

    CLEAR  v_valtot.

  ENDLOOP.

  IF sy-tcode NE '/PWS/ZYCI059_E'.

    LOOP AT itab_trib WHERE ebeln = itab_zycit403_i-ebeln AND

                           ebelp = itab_zycit403_i-ebelp.

      IF NOT v_usd IS INITIAL.

        IF itab_trib-waers NE wa_zycbt007-waersb.

          itab_trib-t_ivdesp = itab_trib-t_ivdesp / v_usd.

        ENDIF.

      ENDIF.

      /pws/zycie403-base = /pws/zycie403-base + itab_trib-t_ivdesp.

    ENDLOOP.

  ENDIF.

  IF ( /pws/zycie403-codigo EQ '000415' OR

     /pws/zycie403-codigo EQ '000422' OR

     /pws/zycie403-codigo EQ '000429' ) AND

     t001-land1 EQ 'AR'.

    /pws/zycie403-base = /pws/zycie403-base

    + itab_it-vlicms.

  ELSEIF wa_zycit477-land EQ t001-land1.

    READ TABLE itab_zycit020

                      WITH KEY codigo = 'SISC'

                               baseii = 'X'.

    IF sy-subrc EQ 0.

      /pws/zycie403-base = /pws/zycie403-base

                                        + itab_it-vlicms.

    ENDIF.

  ENDIF.

  CLEAR  v_valtot.

  IF /pws/zycie403-codigo EQ '000010' OR

     /pws/zycie403-codigo EQ '000011' OR

     /pws/zycie403-codigo EQ 'DERECH'.

    READ TABLE itab_zycit082 WITH KEY ebeln = /pws/zycie403-ebeln

                                      ebelp = /pws/zycie403-ebelp.

    IF sy-subrc EQ 0 AND itab_zycit082-doc NE space.

      CLEAR: /pws/zycie403-percentual, /pws/zycie403-basered.

    ENDIF.

  ENDIF.

  /pws/zycie403-valorcalc =

       /pws/zycie403-base * /pws/zycie403-percentual / 100.

  CLEAR itab_zycit399.

  READ TABLE itab_zycit399

        WITH KEY codigo = /pws/zycie403-codigo.

  IF /pws/zycie403-valorcalc < itab_zycit399-vlmin AND

     NOT  itab_zycit399-vlmin IS INITIAL.

    /pws/zycie403-valorcalc = itab_zycit399-vlmin.

  ENDIF.

  IF /pws/zycie403-valorcalc > itab_zycit399-vlmax AND

     NOT itab_zycit399-vlmax IS INITIAL.

    /pws/zycie403-valorcalc = itab_zycit399-vlmax.

  ENDIF.

  IF /pws/zycie085-recal EQ 'X'.

    /pws/zycie403-valorrec = /pws/zycie403-valorcalc.

  ENDIF.

* << Fim da exclusão

  READ TABLE itab_zycit029 WITH KEY codmod = 'D'

                                    codigo = /pws/zycie403-codigo

                                    land1 = t001-land1.

  IF sy-subrc EQ 0.

    MOVE itab_zycit029-descricao TO  /pws/zycit029-descricao.

  ENDIF.

ENDMODULE.

...