CE PLUS - Nota 008484

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Prestação de Contas

Data/Hora da Publicação: 02/06/2009 00:00:00

Data/Hora Última Alteração: 23/02/2011 09:33:57

Descrição da Nota: VERIFICAÇÃO AMPLIADA

Sintoma

Verificação ampliada

 

 

Solução

Verificação ampliada

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

AO CONSULTAR PRESTAÇÃO DE CONTAS NÃO APARECE NENHUMA DESPESA.

PRESTAÇÃO DE CONTAS

TRATAMENTO DAS MENSAGENS DE ESTORNO DA PRESTAÇÃO DE CONTAS

LANÇA BASE DE CALCULO DE IMPOSTO NO BATCH INPUT MAS NÃO CALCULA O VALOR.

UTILIZA TIPO DE CONTA INCORRETO NO BATCH INPUT DA F-51

Informações Complementares

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

Nota Número 08484 Data: 02/06/2009 Hora: 14:42:22

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

 

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

Nota Número              : 08484

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 7.0

Pacote                   : 00009

Agrupamento              : 00102

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

Referência às notas relacionadas:

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

 

02278  - 00001 - 6.0    - 00025  - AO CONSULTAR PRESTAÇÃO DE CONTAS NÃO APARECE NENHUMA DESPESA.

03103  - 00002 - 6.0    - 00026  - PRESTAÇÃO DE CONTAS

04089  - 00003 - 7.0    - 00002  - LANÇA BASE DE CALCULO DE IMPOSTO NO BATCH INPUT MAS NÃO CALCULA O

06128  - 00004 - 7.0    - 00004  - TRATAMENTO DAS MENSAGENS DE ESTORNO DA PRESTAÇÃO DE CONTAS

07812  - 00005 - 7.0    - 00008  - UTILIZA TIPO DE CONTA INCORRETO NO BATCH INPUT DA F-51

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

VERIFICAÇÃO AMPLIADA

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

Palavras Chave:

VERIFICAÇÃO - AMPLIADA - PRESTAÇÃO - CONTAS

/PWS/SAPMZYCI007

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

Objetos da nota:

REPS /PWS/MZYCI007F01

REPS /PWS/MZYCI007F02

 

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

Modificações efetuadas em REPS /PWS/MZYCI007F01

 

...

                  frggrs               = /pws/zyglt343-frggrs

                  frggrt               = /pws/zyglt343-frggrt

                  frggrqa              = /pws/zyglt343-frggrqa

                  frggrqi              = /pws/zyglt343-frggrqi

             TABLES

                  t_contas             = t_contas

             EXCEPTIONS

                  estrategia_invalida  = 1

                  parametros_invalidos = 2

                  OTHERS               = 3.

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

        IF sy-subrc NE 0.

          CLEAR: /pws/zyglt340.

        ENDIF.

* << Fim da inclusão

      ENDIF.

      IF e_subrc NE 0.

        IF e_subrc EQ 1.

          MESSAGE i110.

          v_exit = 'X'.

        ELSEIF  e_subrc EQ 2.

          MESSAGE i015 WITH text-094.

          v_exit = 'X'.

        ENDIF.

        EXIT.

...

 

...

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

FORM seleciona_documento.

  DATA: v_nradto2 LIKE /pws/zycie008-nradto VALUE space.

  CLEAR: v_campo, v_valor.

  v_status = '0'.

  GET CURSOR FIELD v_campo VALUE v_valor.

  IF v_campo EQ '/PWS/ZYCIE008-NRADTO'.

    CLEAR: v_nradto, v_nradto2.

    MOVE: v_valor TO v_nradto2.

    READ TABLE it_tab_aux WITH KEY nradto = v_nradto2.

    IF NOT it_tab_aux-dtincl IS INITIAL AND

                            NOT it_tab_aux-vlmi IS INITIAL     AND

                            NOT it_tab_aux-dtvencto IS INITIAL.

      MOVE: it_tab_aux-embarca  TO  /pws/zycie008-embarca,

            it_tab_aux-nrseq    TO  /pws/zycie008-nrseq,

            it_tab_aux-nradto   TO  /pws/zycie008-nradto,

            it_tab_aux-dtincl   TO  /pws/zycie008-dtincl,

            it_tab_aux-dtvencto TO  /pws/zycie008-dtvencto,

            it_tab_aux-werks    TO  /pws/zycie008-werks,

            it_tab_aux-bukrs    TO  /pws/zycie008-bukrs,

            it_tab_aux-vlmi     TO  /pws/zycie008-vlmi.

      PERFORM exibe_dados.

      tc2-top_line = 1.

      CALL SCREEN '0300'.

    ENDIF.

  ELSE.

    MESSAGE s015 WITH text-002.

  ENDIF.

  CLEAR ok_code.

ENDFORM.

FORM seleciona_dados.

  PERFORM  select_tables.

  PERFORM  preenche_tc2.

ENDFORM.

* << Fim da exclusão

...

 

...

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

FORM exibe_dados.

  PERFORM preenche_tc2.

ENDFORM.

* << Fim da exclusão

...

 

...

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

FORM deleta_item.

  LOOP AT it_zycit027_aux WHERE mark = 'X'.

    DELETE it_zycit027_aux INDEX sy-tabix.

    DELETE FROM /pws/zycit027

           WHERE nrseq  EQ /pws/zycie026-nrseq

             AND nradto EQ /pws/zycie026-nradto

             AND tpdesp EQ it_zycit027_aux-tpdesp.

    CLEAR: it_zycit027_aux, ok_code.

  ENDLOOP.

  PERFORM atualiza_tela.

  IF sy-subrc EQ 0.

    MESSAGE i015 WITH text-007.

  ENDIF.

ENDFORM.

* << Fim da exclusão

...

 

...

FORM acessa_documento.

  GET CURSOR FIELD v_campo VALUE v_valor.

  IF v_campo EQ '/PWS/ZYCIE026-DOCFAT' OR v_campo EQ

 '/PWS/ZYCIE026-DOCOMP'.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

              input  = v_valor

         IMPORTING

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

              output = i_belnr

         EXCEPTIONS

              OTHERS = 1.

* << Fim da exclusão

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

              output = i_belnr.

* << Fim da inclusão

    SELECT SINGLE dtaprov FROM /pws/zycit026

      INTO wa_dtaprova

      WHERE nrseq  = /pws/zycie026-nrseq

        AND nradto = /pws/zycie026-nradto

        AND nrpres = /pws/zycie026-nrpres.

    i_gjahr    = wa_dtaprova.

    IF sy-subrc EQ 0.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           EXPORTING

                v_bukrs                = /pws/zycie026-bukrs

...

 

...

           IMPORTING

                v_year                 = v_ano

           EXCEPTIONS

                variante_de_exercicio  = 1

                data_nao_encontrada    = 2

                empresa_nao_encontrada = 3

                period_in_not_valid    = 4

                period_not_assigned    = 5

                version_undefined      = 6

                OTHERS                 = 7.

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

      IF sy-subrc NE 0.

        CLEAR: v_ano.

      ENDIF.

* << Fim da inclusão

      SET PARAMETER ID 'BUK' FIELD /pws/zycie026-bukrs.

      SET PARAMETER ID 'BLN' FIELD i_belnr.

      SET PARAMETER ID 'GJR' FIELD v_ano.

      SELECT SINGLE belnr FROM bkpf INTO vaux_belnr

        WHERE bukrs = /pws/zycie026-bukrs

        AND belnr = i_belnr

        AND gjahr = v_ano.

      AUTHORITY-CHECK OBJECT 'S_TCODE'

                ID 'TCD'  FIELD 'FB03'.

      IF sy-subrc EQ 0.

...

 

...

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

FORM transacao_fbv0_aprova.

  CHECK /pws/zycie026-totdep NE 0.

  READ TABLE it_zycbt133 WITH KEY bukrs   = text-022

                                  codmod  = text-009

                                  vaprov  = text-024.

  IF sy-subrc = 0.

    it_zycbe033-tcode  = text-029.

    it_zycbe033-tabela = text-012.

    it_zycbe033-bldat  = sy-datlo.

    PERFORM verify_null_field USING /pws/zycie026-bukrs

                                  'BUKRS'

                                   text-023.

    it_zycbe033-bukrs    =   /pws/zycie026-bukrs.

    PERFORM verify_null_field USING /pws/zycie026-docfat

                                   'DOCFAT'

                                    text-025.

    it_zycbe033-belnr  = /pws/zycie026-docfat.

    it_zycbe033-gjahs  = sy-datlo+0(4).

    it_zycbe033-cpochv  = /pws/zycie026-nrseq.

    APPEND it_zycbe033.

    PERFORM call_fbv0.

  ENDIF.

  PERFORM limpa_tabela_transacao.

ENDFORM.

* << Fim da exclusão

...

 

...

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

FORM call_transaction_f51.

ENDFORM.

* << Fim da exclusão

...

 

...

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

FORM seleciona_docfatura_f43.

ENDFORM.

FORM call_fbv0.

  LOOP AT it_zycbt034.

    CONCATENATE it_zycbt034-descricao '(Embarque/Adiantamento:'

                it_zycbt034-conteudo  ')' INTO v_descricao.

    MESSAGE i016 WITH v_descricao.

  ENDLOOP.

  IF it_zycbt034 IS INITIAL.

    IF sy-subrc EQ 0.

      PERFORM atualiza_fbv0.

    ELSE.

      LOOP AT it_zycbt034.

        CONCATENATE it_zycbt034-descricao '(Embarque/Adiantamento:'

                    it_zycbt034-conteudo  ')' INTO v_descricao.

        MESSAGE i016 WITH v_descricao.

      ENDLOOP.

    ENDIF.

  ELSE.

    LOOP AT it_zycbt034.

      CONCATENATE it_zycbt034-descricao '(Embarque/Adiantamento:'

                  it_zycbt034-conteudo  ')' INTO v_descricao.

      MESSAGE i016 WITH v_descricao.

    ENDLOOP.

  ENDIF.

  CLEAR v_belnr.

ENDFORM.

FORM atualiza_fbv0.

  READ TABLE it_zycbt032 WITH KEY  tcode  = text-026

                                   tabela = text-012

                                   cpochv = /pws/zycie026-nrseq

                                   tpmsg  = 'S'.

  IF sy-subrc EQ 0.

    v_belnr = /pws/zycie026-docfat.

    SELECT SINGLE belnr FROM bkpf INTO vaux_belnr

              WHERE bukrs EQ /pws/zycie026-bukrs

                AND belnr EQ v_belnr

                AND gjahr EQ sy-datlo+0(4)

                AND bstat EQ 'V'.

    IF sy-subrc EQ 0.

      EXIT.

    ENDIF.

    MESSAGE i057 WITH /pws/zycie026-docfat.

    v_fbv0_a = 'S'.

    IF /pws/zycie026-nradto IS INITIAL.

      /pws/zycie026-status = 'A'.

      MODIFY /pws/zycit026 FROM /pws/zycie026.

    ENDIF.

    COMMIT WORK.

  ELSE.

    LOOP AT it_zycbt032.

      MESSAGE i015 WITH it_zycbt032-msg+0(50)

                        it_zycbt032-msg+50(50).

    ENDLOOP.

  ENDIF.

ENDFORM.

* << Fim da exclusão

...

 

...

            titel              = text-032

       IMPORTING

            answer             = v_modo_bi

       TABLES

            t_spopli           = itab_modo

       EXCEPTIONS

            not_enough_answers = 1

            too_much_answers   = 2

            too_much_marks     = 3

            OTHERS             = 4.

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

  IF sy-subrc NE 0.

    REFRESH: itab_modo.

  ENDIF.

* << Fim da inclusão

  IF v_modo_bi EQ '3'.

    v_modo_bi = 'A'.

  ELSEIF v_modo_bi EQ '2'.

    v_modo_bi = 'E'.

  ELSEIF v_modo_bi EQ '1'.

    v_modo_bi = 'N'.

  ENDIF.

ENDFORM.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI007F02

 

...

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

FORM reverse_document_fbv0.

  DATA: v_belnr LIKE /pws/zycbe031-belnr_p.

  DATA: v_nradto1     LIKE bseg-sgtxt.

  DATA: v_sgtxt    LIKE bseg-sgtxt,

        v_zuonr    LIKE bseg-zuonr,

        v_xblnr    LIKE bkpf-xblnr,

        v_bktxt    LIKE bkpf-bktxt.

  CHECK NOT /pws/zycie026-docfat IS INITIAL.

  PERFORM clear_date_batch.

  v_belnr = /pws/zycie026-docfat.

  it_zycbe033-mandt  = sy-mandt.

  it_zycbe033-tcode  = 'FBV0'.

  it_zycbe033-tabela = text-012.

  it_zycbe033-cpochv = /pws/zycie026-nrseq.

  it_zycbe033-belnr  = /pws/zycie026-docfat.

  it_zycbe033-bukrs  = /pws/zycie026-bukrs.

  it_zycbe033-bldat  = /pws/zycie026-dtaprov.

  it_zycbe033-budat  = /pws/zycie026-dtlanc.

  it_zycbe033-bktxt  = /pws/zycbt007-bktxt.

  LOOP AT it_zycbt035.

    CLEAR:  v_nradto1, v_zuonr, v_xblnr, v_nradto1.

    CALL FUNCTION '/PWS/ZYCI_TEXTOS_CONTABEIS'

         EXPORTING

              v_nrseq   = /pws/zycie026-nrseq

              v_codeven = '010P'

              v_ktosl   = it_zycbt035-ktosl

              v_nfserv  = /pws/zycie026-nfserv

              v_nrpres  = /pws/zycie026-nrpres

         IMPORTING

              v_zuonr   = v_zuonr

              v_xblnr   = v_xblnr

              v_sgtxt   = v_nradto1.

    it_zycbt035-d_xblnr = it_zycbt035-c_xblnr = /pws/zycie026-refpres.

    it_zycbt035-d_zuonr = it_zycbt035-c_zuonr = v_zuonr.

    it_zycbt035-d_sgtxt = it_zycbt035-c_sgtxt = v_nradto1.

    MODIFY it_zycbt035.

  ENDLOOP.

  CLEAR:  v_nradto1, v_zuonr, v_xblnr, v_sgtxt, v_bktxt .

  CALL FUNCTION '/PWS/ZYCI_TEXTOS_CONTABEIS'

       EXPORTING

            v_nrseq   = /pws/zycie026-nrseq

            v_codeven = '010P'

            v_nfserv  = /pws/zycie026-nfserv

            v_nrpres  = /pws/zycie026-nrpres

       IMPORTING

            v_xblnr   = v_xblnr

            v_zuonr   = v_zuonr

            v_sgtxt   = v_sgtxt

            v_bktxt   = v_bktxt.

  it_zycbe033-d_zuonr = it_zycbe033-c_zuonr = v_zuonr.

  it_zycbe033-d_sgtxt = it_zycbe033-c_sgtxt = v_sgtxt.

  it_zycbe033-bktxt   = v_bktxt.

  it_zycbe033-xblnr   = /pws/zycie026-refpres.

  APPEND it_zycbe033.

  IF sy-subrc = 0.

    READ TABLE it_zycbt032 WITH KEY   tcode  = 'FBV0'

                                      tabela = text-012

                                      cpochv = /pws/zycie026-nrseq

                                      tpmsg  = 'S'.

    IF sy-subrc EQ 0.

      MESSAGE i060 WITH v_belnr.

      CLEAR: /pws/zycie026-docfat, /pws/zycie026-dtaprov.

      MODIFY /pws/zycit026 FROM /pws/zycie026.

      COMMIT WORK .

    ELSE.

      LOOP AT it_zycbt032.

        MESSAGE i015 WITH it_zycbt032-msg.

      ENDLOOP.

      PERFORM verifica_estorno_r3 USING v_answer.

      IF v_answer = 'J'.

        CLEAR: /pws/zycie026-docfat, /pws/zycie026-dtaprov,

          /pws/zycie026-status.

        MODIFY /pws/zycit026 FROM /pws/zycie026.

        COMMIT WORK.

      ENDIF.

    ENDIF.

  ELSE.

    LOOP AT it_zycbt034.

      MESSAGE i016 WITH it_zycbt034-descricao.

    ENDLOOP.

    PERFORM verifica_estorno_r3 USING v_answer.

    IF v_answer = 'J'.

      CLEAR: /pws/zycie026-docfat, /pws/zycie026-dtaprov.

      MODIFY /pws/zycit026 FROM /pws/zycie026.

      COMMIT WORK.

    ENDIF.

  ENDIF.

ENDFORM.

* << Fim da exclusão

...

 

...

FORM popup_message USING p_textline1

                         p_titel.

  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

       EXPORTING

            defaultoption  = 'N'

            textline1      = p_textline1

            titel          = p_titel

       IMPORTING

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

            answer         = v_answer

       EXCEPTIONS

            OTHERS         = 1.

* << Fim da exclusão

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

            answer         = v_answer.

* << Fim da inclusão

ENDFORM.

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

FORM gravar_custos.

  DATA: v_lines      TYPE i,

        v_index      LIKE sy-tabix,

        v_valor_real LIKE /pws/zycie036-vlreal,

        v_fretei_tot LIKE itab_despesa_custo-vldp,

        v_tot_fre    LIKE itab_despesa_custo-vldp,

        v_cod_sisc   LIKE /pws/zycit019-codigo,

        v_real       LIKE /pws/zycit003-vlreal,

        v_tot_real   LIKE /pws/zycit003-vlreal.

  CLEAR : v_tot_ii, v_tot_ipi, v_tot_icms.

  SELECT SINGLE * FROM j_1bbranch

         WHERE bukrs  = /pws/zycie026-bukrs

           AND branch = /pws/zycie026-j_1bbranch.

  SELECT SINGLE * FROM adrc WHERE addrnumber = j_1bbranch-adrnr.

  SELECT SINGLE * FROM /pws/zycbt007 WHERE bukrs = /pws/zycie026-bukrs.

  SELECT SINGLE land1

    FROM t001

    INTO t001-land1

    WHERE bukrs = /pws/zycie026-bukrs.

  SELECT * FROM /pws/zycit019

    INTO TABLE it_despesa

    WHERE regio EQ adrc-region AND

          land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit019

      INTO TABLE it_despesa

      WHERE regio EQ space AND

            land1 EQ t001-land1.

  ENDIF.

  FREE it_zycit027_aux2.

  LOOP AT it_zycit027_aux.

    MOVE-CORRESPONDING it_zycit027_aux TO it_zycit027_aux2.

    CLEAR it_despesa.

    READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp.

    IF sy-subrc EQ 0 AND it_zycit027_aux-vldp NE 0.

      MOVE it_despesa-codigo TO it_zycit027_aux2-codigo.

      APPEND it_zycit027_aux2.

    ENDIF.

  ENDLOOP.

  FREE itab_despesa_custo.

  LOOP AT it_zycit027_aux2.

    itab_despesa_custo-codigo = it_zycit027_aux2-codigo.

    itab_despesa_custo-vldp = it_zycit027_aux2-vldp.

    COLLECT itab_despesa_custo.

  ENDLOOP.

  SELECT SINGLE * FROM /pws/zycit001 WHERE nrseq = /pws/zycie026-nrseq.

  SELECT SINGLE * FROM /pws/zycbt007

                  WHERE bukrs EQ /pws/zycie026-bukrs.

  IF sy-subrc NE 0.

    MESSAGE e120.

  ENDIF.

  IF NOT itab_despesa_custo[] IS INITIAL.

    SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036

           FOR ALL ENTRIES IN itab_despesa_custo

           WHERE nrseq  = /pws/zycie026-nrseq

             AND codigo = itab_despesa_custo-codigo.

  ENDIF.

  SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039

         WHERE codmod EQ 'D' AND

               land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039

           WHERE codmod EQ 'D'.

  ENDIF.

  LOOP AT itab_zycit036 WHERE codigo = 'FRETEI' AND origem = 'PC'.

    v_fretei_tot = v_fretei_tot + itab_zycit036-vlreal.

  ENDLOOP.

  DATA: v_tot LIKE /pws/zycie003-netpr.

  CLEAR: v_tot_ntgew, v_tot_real.

  LOOP AT it_zycit003.

    v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

                          ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT SINGLE * FROM /pws/zycit000.

  ENDIF.

  SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc

         WHERE tpdesp = /pws/zycit000-cod_sisc AND

               land1 EQ t001-land1.                     "#EC CI_NOFIRST

  LOOP AT itab_despesa_custo.

    IF ( itab_despesa_custo-codigo = v_cod_sisc    AND

          NOT /pws/zycit000-flag_txsisc IS INITIAL AND

          /pws/zycit001-tpdecl = 'DI' )             OR

       itab_despesa_custo-codigo = 'II'             OR

       itab_despesa_custo-codigo = 'IPI'            OR

       itab_despesa_custo-codigo = 'ICMS'.

      IF /pws/zycit001-regime = '04'.

        SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

               WHERE nrseq = /pws/zycie026-nrseq.       "#EC CI_NOFIRST

        IF NOT itab_zycit443[] IS INITIAL.

          SELECT * FROM /pws/zycit451 INTO TABLE itab_zycit451

                 FOR ALL ENTRIES IN itab_zycit443

                 WHERE nrseqda = itab_zycit443-nrseqda.

        ENDIF.

        CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms.

        LOOP AT itab_zycit443.

          v_tot_ii   = itab_zycit443-vlii + v_tot_ii.

          v_tot_ipi  = itab_zycit443-vlipi + v_tot_ipi.

          v_tot_icms = itab_zycit443-vlicms + v_tot_icms.

        ENDLOOP.

      ELSE.

        SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

               WHERE nrseq = /pws/zycie026-nrseq.       "#EC CI_NOFIRST

        IF NOT itab_zycit100[] IS INITIAL.

          SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

                 FOR ALL ENTRIES IN itab_zycit100

                 WHERE nrseqdi = itab_zycit100-nrseqdi.

        ENDIF.

        CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms.

        LOOP AT itab_zycit100.

          v_tot_ii   = itab_zycit100-vlii + v_tot_ii.

          v_tot_ipi  = itab_zycit100-vlipi + v_tot_ipi.

          v_tot_icms = itab_zycit100-vlicms + v_tot_icms.

        ENDLOOP.

      ENDIF.

      IF itab_despesa_custo-codigo = v_cod_sisc.

        PERFORM rateio_sisco.

      ELSEIF itab_despesa_custo-codigo = 'IPI'.

        IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

          PERFORM rateio_imposto USING v_tot_ipi

                                    itab_zycit443-vlipi.

        ELSE.

          PERFORM rateio_imposto USING v_tot_ipi

                                      itab_zycit100-vlipi.

        ENDIF.

      ELSEIF itab_despesa_custo-codigo = 'ICMS'.

        IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

          PERFORM rateio_imposto USING v_tot_icms

                                       itab_zycit443-vlicms.

        ELSE.

          PERFORM rateio_imposto USING v_tot_icms

                                       itab_zycit100-vlicms.

        ENDIF.

      ELSEIF itab_despesa_custo-codigo = 'II'.

        IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

          PERFORM rateio_imposto USING v_tot_ii

                                     itab_zycit443-vlii.

        ELSE.

          PERFORM rateio_imposto USING v_tot_ii

                                       itab_zycit100-vlii.

        ENDIF.

      ENDIF.

    ELSE.

      DESCRIBE TABLE it_zycit003 LINES v_lines.

      CLEAR itab_zycit039.

      READ TABLE itab_zycit039 WITH KEY

                                     codigo = itab_despesa_custo-codigo.

      CLEAR v_tot_vldp.

      LOOP AT it_zycit003.

        v_index = sy-tabix.

        READ TABLE itab_zycit036 WITH KEY

                                   nrseq  = it_zycit003-nrseq

                                   ebeln  = it_zycit003-ebeln

                                   ebelp  = it_zycit003-ebelp

                                   codigo = itab_despesa_custo-codigo

                                   origem = 'PC'.

        IF sy-subrc NE 0.

          /pws/zycie036-nrseq      = it_zycit003-nrseq.

          /pws/zycie036-ebeln      = it_zycit003-ebeln.

          /pws/zycie036-ebelp      = it_zycit003-ebelp.

          /pws/zycie036-codigo     = itab_despesa_custo-codigo.

          /pws/zycie036-waers_real = /pws/zycbt007-waersb.

          /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

          /pws/zycie036-werks      = /pws/zycie026-werks.

          /pws/zycie036-embarca    = /pws/zycie026-embarca.

          /pws/zycie036-origem     = 'PC'.

          /pws/zycie036-codmod     = 'D'.

          /pws/zycie036-status     = 'M'.

          /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

          /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

          /pws/zycie036-nrseqori   = /pws/zycie026-nrpres.

          /pws/zycie036-usernamec  = sy-uname.

          /pws/zycie036-dtuserc    = sy-datlo.

          /pws/zycie036-hruserc    = sy-uzeit.

          CLEAR: /pws/zycie036-vlmov.

          v_plan = it_zycit003-netpr * it_zycit003-qtd_iten.

          v_real = it_zycit003-vlreal * it_zycit003-qtd_iten.

          IF v_lines = v_index.

            /pws/zycie036-vlreal = itab_despesa_custo-vldp - v_tot_vldp.

          ELSE.

            IF itab_zycit039-divabs EQ 'X'.

              /pws/zycie036-vlreal = itab_despesa_custo-vldp / v_lines.

            ELSEIF itab_zycit039-peso = 'X'.

              /pws/zycie036-vlreal = itab_despesa_custo-vldp *

                                        it_zycit003-ntgew / v_tot_ntgew.

            ELSEIF itab_zycit039-proporplan = 'X'.

              /pws/zycie036-vlreal = ( v_plan / v_tot ) *

                                                itab_despesa_custo-vldp.

            ELSE.

              /pws/zycie036-vlreal = ( v_real / v_tot_real ) *

                                                itab_despesa_custo-vldp.

            ENDIF.

            v_tot_vldp = v_tot_vldp + /pws/zycie036-vlreal.

          ENDIF.

          MODIFY /pws/zycit036 FROM /pws/zycie036.

          /pws/zycit001-status_e = 'A'.

          MODIFY /pws/zycit001 FROM /pws/zycit001.

        ELSE.

          MOVE itab_zycit036 TO /pws/zycie036.

          /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp +

                                               /pws/zycie036-vlreal_emb.

          /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

          /pws/zycie036-waers_real = /pws/zycbt007-waersb.

          IF /pws/zycie036-codigo = 'FRETEI'.

            IF itab_zycit036-vlreal <= 0.

              CLEAR: /pws/zycie036-vlmov.

              v_plan = it_zycit003-netpr * it_zycit003-qtd_iten.

              IF v_lines = v_index.

                v_valor_real = itab_despesa_custo-vldp - v_tot_vldp.

                /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

              ELSE.

                IF itab_zycit039-divabs EQ 'X'.

                  v_valor_real = itab_despesa_custo-vldp / v_lines.

                  /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

                ELSEIF itab_zycit039-peso = 'X'.

                  v_valor_real = itab_despesa_custo-vldp *

                                        it_zycit003-ntgew / v_tot_ntgew.

                  /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

                ELSEIF itab_zycit039-proporplan = 'X'.

                  v_valor_real = ( v_plan / v_tot ) *

                                                itab_despesa_custo-vldp.

                  /pws/zycie036-vlreal = v_valor_real + v_valor_real.

                ELSE.

                  v_valor_real = ( v_real / v_tot_real ) *

                                                itab_despesa_custo-vldp.

                  /pws/zycie036-vlreal = v_valor_real + v_valor_real.

                ENDIF.

                v_tot_vldp = v_tot_vldp + /pws/zycie036-vlreal.

              ENDIF.

            ELSE.

              IF v_lines = v_index.

                v_valor_real = itab_despesa_custo-vldp - v_tot_fre.

                /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

                /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp +

                                               /pws/zycie036-vlreal_emb.

              ELSE.

                IF itab_zycit039-divabs EQ 'X'.

                  v_valor_real = itab_despesa_custo-vldp / v_lines.

                  /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

                ELSEIF itab_zycit039-peso = 'X'.

                  v_valor_real = itab_despesa_custo-vldp *

                                        it_zycit003-ntgew / v_tot_ntgew.

                  /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

                ELSE.

                  v_valor_real = itab_despesa_custo-vldp *

                                ( itab_zycit036-vlreal / v_fretei_tot ).

                  /pws/zycie036-vlreal = v_valor_real + v_valor_real.

                ENDIF.

                v_tot_fre = v_tot_fre + v_valor_real.

              ENDIF.

            ENDIF.

          ELSE.

            IF v_lines = v_index.

              v_valor_real = itab_despesa_custo-vldp - v_tot_vldp.

              /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

            ELSE.

              IF itab_zycit039-divabs EQ 'X'.

                v_valor_real = itab_despesa_custo-vldp / v_lines.

                /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

              ELSEIF itab_zycit039-peso EQ 'X'.

                v_valor_real = itab_despesa_custo-vldp *

                                        it_zycit003-ntgew / v_tot_ntgew.

                /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

              ELSEIF itab_zycit039-proporplan EQ 'X'.

                v_plan = it_zycit003-netpr * it_zycit003-qtd_iten.

                v_valor_real = ( v_plan / v_tot ) *

                                                itab_despesa_custo-vldp.

                /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

              ELSE.

                v_real = it_zycit003-vlreal * it_zycit003-qtd_iten.

                v_valor_real = ( v_real / v_tot_real ) *

                                                itab_despesa_custo-vldp.

                /pws/zycie036-vlreal = v_valor_real +

                                                   /pws/zycie036-vlreal.

              ENDIF.

              v_tot_vldp = v_tot_vldp + v_valor_real.

            ENDIF.

          ENDIF.

          /pws/zycit001-status_e = 'A'.

          MODIFY /pws/zycit001 FROM /pws/zycit001.

          MODIFY /pws/zycit036 FROM /pws/zycie036.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDLOOP.

ENDFORM.

FORM converter_documento.

  IF NOT v_belnr IS INITIAL.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

              input  = v_belnr

         IMPORTING

              output = v_belnr2

         EXCEPTIONS

              OTHERS = 1.

  ENDIF.

ENDFORM.

* << Fim da exclusão

...

 

...

  CALL FUNCTION 'DEQUEUE_EFLFB1AS'

       EXPORTING

            mode_lfb1 = 'S'

            mandt     = sy-mandt

            lifnr     = p_v_lifnr

            bukrs     = p_v_bukrs

            x_lifnr   = ' '

            x_bukrs   = ' '

            _scope    = '3'

            _synchron = ' '

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

            _collect  = ' '

       EXCEPTIONS

            OTHERS    = 1.

* << Fim da exclusão

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

            _collect  = ' '.

* << Fim da inclusão

ENDFORM.

...

 

...

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

FORM estorna_custo.

  DATA: v_qtdi TYPE i,

        v_vlrc LIKE /pws/zycie036-vlreal,

        v_congelamov,

        v_vldp_est LIKE /pws/zycit036-vlreal,

        v_tabix LIKE sy-tabix,

        v_cod_sisc LIKE /pws/zycit019-codigo,

        v_tot_real LIKE /pws/zycit003-vlreal,

        v_idx_imp  LIKE sy-tabix       ,

        v_idx2_imp LIKE sy-tabix       ,

        v_tot_imp  LIKE /pws/zycit049-vldp  ,

        v_dif_imp  LIKE /pws/zycit049-vldp  .

  CLEAR : v_tot_ii    ,

          v_tot_ipi   ,

          v_tot_icms  ,

          v_sisco_dif ,

          v_sisco_acum.

  REFRESH: itab_zycit039, it_zycit003, itab_zycit036.

  SELECT SINGLE * FROM /pws/zycit001 WHERE nrseq = /pws/zycie026-nrseq.

  SELECT SINGLE land1

    FROM t001

    INTO t001-land1

    WHERE bukrs = /pws/zycie026-bukrs.

  SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039

         WHERE codmod EQ 'D' AND

               land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039

           WHERE codmod EQ 'D'.

  ENDIF.

  SELECT * FROM /pws/zycit003 INTO TABLE it_zycit003 WHERE

         nrseq = /pws/zycie026-nrseq

           AND servico NE 'X'.

  DESCRIBE TABLE it_zycit003 LINES v_qtdi.

  SELECT * FROM /pws/zycit019 INTO TABLE it_despesa WHERE

               land1 EQ t001-land1.                     "#EC CI_NOFIRST

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit019 INTO TABLE it_despesa.  "#EC CI_NOWHERE

  ENDIF.

  FREE: it_zycit027_aux2.

  LOOP AT it_zycit027_aux.

    MOVE-CORRESPONDING it_zycit027_aux TO it_zycit027_aux2.

    CLEAR it_despesa.

    READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp.

    IF sy-subrc EQ 0 AND it_zycit027_aux-vldp NE 0.

      MOVE it_despesa-codigo TO it_zycit027_aux2-codigo.

      APPEND it_zycit027_aux2.

    ENDIF.

  ENDLOOP.

  FREE itab_despesa_custo.

  LOOP AT it_zycit027_aux2.

    itab_despesa_custo-codigo = it_zycit027_aux2-codigo.

    itab_despesa_custo-vldp = it_zycit027_aux2-vldp.

    COLLECT itab_despesa_custo.

  ENDLOOP.

  IF NOT itab_despesa_custo[] IS INITIAL.

    SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036

           FOR ALL ENTRIES IN itab_despesa_custo

           WHERE nrseq  = /pws/zycie026-nrseq AND

                 origem = 'PC' AND

                 codigo = itab_despesa_custo-codigo.

  ENDIF.

  SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT SINGLE * FROM /pws/zycit000.

  ENDIF.

  SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc

    WHERE tpdesp = /pws/zycit000-cod_sisc AND

               land1 EQ t001-land1.                     "#EC CI_NOFIRST

  IF sy-subrc NE 0.

    SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc

      WHERE tpdesp = /pws/zycit000-cod_sisc.            "#EC CI_NOFIRST

  ENDIF.

  DATA: v_tot LIKE /pws/zycie003-netpr.

  CLEAR: v_tot_ntgew, v_tot_real.

  LOOP AT it_zycit003.

    v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

       ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  DESCRIBE TABLE it_zycit003 LINES v_line.

  LOOP AT itab_despesa_custo.

    IF ( ( itab_despesa_custo-codigo = v_cod_sisc

       AND NOT /pws/zycit000-flag_txsisc IS INITIAL ) OR

         itab_despesa_custo-codigo EQ 'IPI'      OR

         itab_despesa_custo-codigo EQ 'ICMS'     OR

         itab_despesa_custo-codigo EQ 'II' ) AND

         /pws/zycit001-regime NE '04'.

      SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

        WHERE nrseq = /pws/zycie026-nrseq.              "#EC CI_NOFIRST

      IF NOT itab_zycit100[] IS INITIAL.

        SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

          FOR ALL ENTRIES IN itab_zycit100

          WHERE nrseqdi = itab_zycit100-nrseqdi.

      ENDIF.

      CLEAR: v_tot_ii,

             v_tot_ipi,

             v_tot_icms.

      LOOP AT itab_zycit100.

        v_tot_ii   = itab_zycit100-vlii + v_tot_ii.

        v_tot_ipi  = itab_zycit100-vlipi + v_tot_ipi.

        v_tot_icms = itab_zycit100-vlicms + v_tot_icms.

      ENDLOOP.

      LOOP AT itab_zycit116.

        LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

          itab_zycit116-nr_itens = itab_zycit116-nr_itens + 1.

        ENDLOOP.

        MODIFY itab_zycit116.

      ENDLOOP.

      IF itab_despesa_custo-codigo EQ v_cod_sisc.

        DESCRIBE TABLE itab_zycit116 LINES v_tabix.

        v_sisco1 = ( itab_despesa_custo-vldp -

                     /pws/zycit000-txsis_fix ) / v_tabix.

        v_sisco2 =   /pws/zycit000-txsis_fix / v_tabix.

        v_sisco3 = v_sisco1 + v_sisco2.

        LOOP AT itab_zycit116.

          CLEAR: v_tabix, v_sisco_tot.

          v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.

          LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

            v_tabix = v_tabix + 1.

            IF v_tabix = itab_zycit116-nr_itens.

              itab_zycit100-vl_sisco = v_sisco3 - v_sisco_tot.

            ELSE.

              itab_zycit100-vl_sisco = v_sisco_item.

              v_sisco_tot = v_sisco_tot + v_sisco_item.

            ENDIF.

            v_sisco_acum = v_sisco_acum + itab_zycit100-vl_sisco.

            MODIFY itab_zycit100.

          ENDLOOP.

        ENDLOOP.

        CLEAR v_tabix.

        DESCRIBE TABLE itab_zycit100 LINES v_tabix.

        READ TABLE itab_zycit100 INDEX v_tabix.

        v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.

        IF v_sisco_dif NE 0.

          itab_zycit100-vl_sisco = itab_zycit100-vl_sisco - v_sisco_dif.

          MODIFY itab_zycit100 INDEX v_tabix TRANSPORTING vl_sisco.

        ENDIF.

        LOOP AT itab_zycit100.

         READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit100-nrseq

                                           ebeln  = itab_zycit100-ebeln

                                           ebelp  = itab_zycit100-ebelp

                                     codigo = itab_despesa_custo-codigo

                                                          origem = 'PC'.

          itab_zycit036-vlreal =

             itab_zycit036-vlreal - itab_zycit100-vl_sisco.

          SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov

              WHERE nrseq  = itab_zycit036-nrseq  AND

                    ebeln  = itab_zycit036-ebeln  AND

                    ebelp  = itab_zycit036-ebelp  AND

                    congelamov = 'X'.

          IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.

            DELETE FROM /pws/zycit036 WHERE

                   nrseq  = itab_zycit036-nrseq  AND

                   ebeln  = itab_zycit036-ebeln  AND

                   ebelp  = itab_zycit036-ebelp  AND

                   codigo = itab_zycit036-codigo AND

                   origem = itab_zycit036-origem.

          ELSE.

            MODIFY /pws/zycit036 FROM itab_zycit036.

          ENDIF.

        ENDLOOP.

      ELSEIF itab_despesa_custo-codigo EQ 'IPI'.

        CLEAR: v_idx_imp,

               v_idx2_imp,

               v_tot_imp,

               v_dif_imp.

        DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.

        LOOP AT itab_zycit100.

          v_idx2_imp = v_idx2_imp + 1.

          CLEAR v_tot_vldp.

          READ TABLE itab_zycit036 WITH KEY

                                    nrseq  = itab_zycit100-nrseq

                                    ebeln  = itab_zycit100-ebeln

                                    ebelp  = itab_zycit100-ebelp

                                    codigo = itab_despesa_custo-codigo

                                    origem = 'PC'.

          IF sy-subrc EQ 0.

            v_tot_vldp = itab_despesa_custo-vldp *

                 ( itab_zycit100-vlipi / v_tot_ipi ).

            v_tot_imp = v_tot_imp + v_tot_vldp.

            IF v_idx_imp EQ v_idx2_imp.

              v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

              IF v_dif_imp NE 0.

                v_tot_vldp = v_tot_vldp - v_dif_imp.

              ENDIF.

            ENDIF.

            itab_zycit036-vlreal = itab_zycit036-vlreal - v_tot_vldp.

            MODIFY itab_zycit036 INDEX sy-tabix.

            SELECT SINGLE congelamov FROM /pws/zycit036 INTO

 v_congelamov

                WHERE nrseq  = itab_zycit036-nrseq  AND

                      ebeln  = itab_zycit036-ebeln  AND

                      ebelp  = itab_zycit036-ebelp  AND

                      congelamov = 'X'.

            IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.

              DELETE FROM /pws/zycit036 WHERE

                     nrseq  = itab_zycit036-nrseq  AND

                     ebeln  = itab_zycit036-ebeln  AND

                     ebelp  = itab_zycit036-ebelp  AND

                     codigo = itab_zycit036-codigo AND

                     origem = itab_zycit036-origem.

            ELSE.

              MODIFY /pws/zycit036 FROM itab_zycit036.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ELSEIF itab_despesa_custo-codigo EQ 'ICMS'.

        CLEAR: v_idx_imp,

               v_idx2_imp,

               v_tot_imp,

               v_dif_imp.

        DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.

        LOOP AT itab_zycit100.

          v_idx2_imp = v_idx2_imp + 1.

          CLEAR v_tot_vldp.

          READ TABLE itab_zycit036 WITH KEY

                                    nrseq  = itab_zycit100-nrseq

                                    ebeln  = itab_zycit100-ebeln

                                    ebelp  = itab_zycit100-ebelp

                                    codigo = itab_despesa_custo-codigo

                                    origem = 'PC'.

          IF sy-subrc EQ 0.

            v_tot_vldp = itab_despesa_custo-vldp *

                 ( itab_zycit100-vlicms / v_tot_icms ).

            v_tot_imp = v_tot_imp + v_tot_vldp.

            IF v_idx_imp EQ v_idx2_imp.

              v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

              IF v_dif_imp NE 0.

                v_tot_vldp = v_tot_vldp - v_dif_imp.

              ENDIF.

            ENDIF.

            itab_zycit036-vlreal = itab_zycit036-vlreal - v_tot_vldp.

            MODIFY itab_zycit036 INDEX sy-tabix.

            SELECT SINGLE congelamov FROM /pws/zycit036 INTO

 v_congelamov

                WHERE nrseq  = itab_zycit036-nrseq  AND

                      ebeln  = itab_zycit036-ebeln  AND

                      ebelp  = itab_zycit036-ebelp  AND

                      congelamov = 'X'.

            IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.

              DELETE FROM /pws/zycit036 WHERE

                     nrseq  = itab_zycit036-nrseq  AND

                     ebeln  = itab_zycit036-ebeln  AND

                     ebelp  = itab_zycit036-ebelp  AND

                     codigo = itab_zycit036-codigo AND

                     origem = itab_zycit036-origem.

            ELSE.

              MODIFY /pws/zycit036 FROM itab_zycit036.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ELSEIF itab_despesa_custo-codigo EQ 'II'.

        CLEAR: v_idx_imp,

               v_idx2_imp,

               v_tot_imp,

               v_dif_imp.

        DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.

        LOOP AT itab_zycit100.

          v_idx2_imp = v_idx2_imp + 1.

          CLEAR v_tot_vldp.

          READ TABLE itab_zycit036 WITH KEY

                                    nrseq  = itab_zycit100-nrseq

                                    ebeln  = itab_zycit100-ebeln

                                    ebelp  = itab_zycit100-ebelp

                                    codigo = itab_despesa_custo-codigo

                                    origem = 'PC'.

          IF sy-subrc EQ 0.

            v_tot_vldp = itab_despesa_custo-vldp *

                 ( itab_zycit100-vlii / v_tot_ii ).

            v_tot_imp = v_tot_imp + v_tot_vldp.

            IF v_idx_imp EQ v_idx2_imp.

              v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

              IF v_dif_imp NE 0.

                v_tot_vldp = v_tot_vldp - v_dif_imp.

              ENDIF.

            ENDIF.

            itab_zycit036-vlreal = v_tot_vldp - itab_zycit036-vlreal.

            MODIFY itab_zycit036 INDEX sy-tabix.

            SELECT SINGLE congelamov FROM /pws/zycit036 INTO

 v_congelamov

                WHERE nrseq  = itab_zycit036-nrseq  AND

                      ebeln  = itab_zycit036-ebeln  AND

                      ebelp  = itab_zycit036-ebelp  AND

                      congelamov = 'X'.

            IF itab_zycit036-vlreal IS INITIAL AND v_congelamov NE 'X'.

              DELETE FROM /pws/zycit036 WHERE

                     nrseq  = itab_zycit036-nrseq  AND

                     ebeln  = itab_zycit036-ebeln  AND

                     ebelp  = itab_zycit036-ebelp  AND

                     codigo = itab_zycit036-codigo AND

                     origem = itab_zycit036-origem.

            ELSE.

              MODIFY /pws/zycit036 FROM itab_zycit036.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ENDIF.

    ELSEIF /pws/zycit001-regime NE '04'.

      READ TABLE itab_zycit039 WITH KEY

           codigo = itab_despesa_custo-codigo.

      CLEAR v_vldp_est.

      LOOP AT it_zycit003.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit036 WITH KEY

             nrseq  = it_zycit003-nrseq

             ebeln  = it_zycit003-ebeln

             ebelp  = it_zycit003-ebelp

             codigo = itab_despesa_custo-codigo.

        MOVE itab_zycit036 TO /pws/zycie036.

        IF v_line = v_tabix.

          v_vlrc = itab_despesa_custo-vldp - v_vldp_est.

        ELSE.

          IF itab_zycit039-divabs EQ 'X'.

            v_vlrc = itab_despesa_custo-vldp / v_qtdi.

          ELSEIF itab_zycit039-peso EQ 'X'.

            v_vlrc = itab_despesa_custo-vldp * it_zycit003-ntgew /

              v_tot_ntgew.

          ELSEIF itab_zycit039-proporplan EQ 'X'.

            v_vlrc = it_zycit003-netpr * it_zycit003-qtd_iten

                    / v_tot          * itab_despesa_custo-vldp.

          ELSE.

            v_vlrc = it_zycit003-vlreal * it_zycit003-qtd_iten

                    / v_tot_real       * itab_despesa_custo-vldp.

          ENDIF.

          v_vldp_est = v_vldp_est + v_vlrc.

        ENDIF.

        /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_vlrc.

        SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov

            WHERE nrseq  = /pws/zycie036-nrseq  AND

                  ebeln  = /pws/zycie036-ebeln  AND

                  ebelp  = /pws/zycie036-ebelp  AND

                  congelamov = 'X'.

        IF /pws/zycie036-vlreal IS INITIAL AND v_congelamov NE 'X'.

          DELETE FROM /pws/zycit036 WHERE

                 nrseq  = /pws/zycie036-nrseq  AND

                 ebeln  = /pws/zycie036-ebeln  AND

                 ebelp  = /pws/zycie036-ebelp  AND

                 codigo = /pws/zycie036-codigo AND

                 origem = /pws/zycie036-origem.

        ELSE.

          MODIFY /pws/zycit036 FROM /pws/zycie036.

        ENDIF.

      ENDLOOP.

    ELSE.

      READ TABLE itab_zycit039 WITH KEY

           codigo = itab_despesa_custo-codigo.

      CLEAR v_vldp_est.

      LOOP AT it_zycit003.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit036 WITH KEY

             nrseq  = it_zycit003-nrseq

             ebeln  = it_zycit003-ebeln

             ebelp  = it_zycit003-ebelp

             codigo = itab_despesa_custo-codigo.

        MOVE itab_zycit036 TO /pws/zycie036.

        CLEAR /pws/zycie036-vlreal .

        SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov

            WHERE nrseq  = /pws/zycie036-nrseq  AND

                  ebeln  = /pws/zycie036-ebeln  AND

                  ebelp  = /pws/zycie036-ebelp  AND

                  congelamov = 'X'.

        IF /pws/zycie036-vlreal IS INITIAL AND v_congelamov NE 'X'.

          DELETE FROM /pws/zycit036 WHERE

                 nrseq  = /pws/zycie036-nrseq  AND

                 ebeln  = /pws/zycie036-ebeln  AND

                 ebelp  = /pws/zycie036-ebelp  AND

                 codigo = /pws/zycie036-codigo AND

                 origem = /pws/zycie036-origem.

        ELSE.

          MODIFY /pws/zycit036 FROM /pws/zycie036.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da exclusão

...

 

...

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

FORM reverse_document_fbra USING    p_v_dtaprov.

ENDFORM.

FORM rateio_imposto USING    v_tot

                             v_unit.

  DATA: v_idx_aux LIKE sy-index      ,

        v_tot_imp LIKE /pws/zycit049-vldp ,

        v_idx_imp LIKE sy-tabix      ,

        v_idx_imp2 LIKE sy-tabix     ,

        v_dif_imp  LIKE /pws/zycit049-vldp.

  CLEAR v_tot_vldp.

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

    DESCRIBE TABLE itab_zycit443 LINES v_idx_imp.

    LOOP AT itab_zycit443.

      v_idx_imp2 = v_idx_imp2 + 1.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit443-nrseq

                                        ebeln  = itab_zycit443-ebeln

                                        ebelp  = itab_zycit443-ebelp

                                   codigo = itab_despesa_custo-codigo

                                     origem = 'PC'.

      v_idx_aux = sy-index.

      IF sy-subrc NE 0.

        /pws/zycie036-nrseq      = itab_zycit443-nrseq.

        /pws/zycie036-ebeln      = itab_zycit443-ebeln.

        /pws/zycie036-ebelp      = itab_zycit443-ebelp.

        /pws/zycie036-codigo     = itab_despesa_custo-codigo.

        /pws/zycie036-waers_real = /pws/zycbt007-waersb.

        /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

        /pws/zycie036-werks      = /pws/zycie026-werks.

        /pws/zycie036-embarca    = /pws/zycie026-embarca.

        /pws/zycie036-origem     = 'PC'.

        /pws/zycie036-codmod     = 'D'.

        /pws/zycie036-status     = 'M'.

        /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

        /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

        /pws/zycie036-vlreal = itab_despesa_custo-vldp *

                          ( v_unit / v_tot ).

        v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.

        IF v_idx_imp2 EQ v_idx_imp.

          v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

          IF v_dif_imp NE 0.

            /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

          ENDIF.

        ENDIF.

        CLEAR: /pws/zycie036-vlmov.

        MODIFY /pws/zycit036 FROM /pws/zycie036.

      ELSE.

        itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

          itab_despesa_custo-vldp.

        itab_zycit036-vlreal = itab_zycit036-vlreal +

          ( itab_despesa_custo-vldp * ( v_unit / v_tot ) ).

        v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.

        IF v_idx_imp2 EQ v_idx_imp.

          v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

          IF v_dif_imp NE 0.

            /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

          ENDIF.

        ENDIF.

        MODIFY itab_zycit036 INDEX v_idx_aux.

        MODIFY /pws/zycit036 FROM itab_zycit036.

      ENDIF.

    ENDLOOP.

  ELSE.

    DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.

    LOOP AT itab_zycit100.

      v_idx_imp2 = v_idx_imp2 + 1.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit100-nrseq

                                        ebeln  = itab_zycit100-ebeln

                                        ebelp  = itab_zycit100-ebelp

                                   codigo = itab_despesa_custo-codigo

                                     origem = 'PC'.

      v_idx_aux = sy-index.

      IF sy-subrc NE 0.

        /pws/zycie036-nrseq      = itab_zycit100-nrseq.

        /pws/zycie036-ebeln      = itab_zycit100-ebeln.

        /pws/zycie036-ebelp      = itab_zycit100-ebelp.

        /pws/zycie036-codigo     = itab_despesa_custo-codigo.

        /pws/zycie036-waers_real = /pws/zycbt007-waersb.

        /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

        /pws/zycie036-werks      = /pws/zycie026-werks.

        /pws/zycie036-embarca    = /pws/zycie026-embarca.

        /pws/zycie036-origem     = 'PC'.

        /pws/zycie036-codmod     = 'D'.

        /pws/zycie036-status     = 'M'.

        /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

        /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

        /pws/zycie036-vlreal = itab_despesa_custo-vldp *

                          ( v_unit / v_tot ).

        v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.

        IF v_idx_imp2 EQ v_idx_imp.

          v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

          IF v_dif_imp NE 0.

            /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

          ENDIF.

        ENDIF.

        CLEAR: /pws/zycie036-vlmov.

        MODIFY /pws/zycit036 FROM /pws/zycie036.

      ELSE.

        itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

          itab_despesa_custo-vldp.

        itab_zycit036-vlreal = itab_zycit036-vlreal +

          ( itab_despesa_custo-vldp * ( v_unit / v_tot ) ).

        v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.

        IF v_idx_imp2 EQ v_idx_imp.

          v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

          IF v_dif_imp NE 0.

            /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

          ENDIF.

        ENDIF.

        MODIFY itab_zycit036 INDEX v_idx_aux.

        MODIFY /pws/zycit036 FROM itab_zycit036.

      ENDIF.

    ENDLOOP.

  ENDIF.

ENDFORM.

FORM rateio_sisco.

  DATA: v_idx2 LIKE sy-tabix.

  CLEAR: v_sisco_acum,

         v_sisco_dif .

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

    LOOP AT itab_zycit451.

      LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

        itab_zycit451-nr_itens = itab_zycit451-nr_itens + 1.

      ENDLOOP.

      MODIFY itab_zycit451.

    ENDLOOP.

    DESCRIBE TABLE itab_zycit451 LINES v_lines.

    v_sisco1 = ( itab_despesa_custo-vldp -

                 /pws/zycit000-txsis_fix ) / v_lines.

    v_sisco2 =   /pws/zycit000-txsis_fix / v_lines.

    v_sisco3 = v_sisco1 + v_sisco2.

    LOOP AT itab_zycit451.

      CLEAR: v_lines, v_sisco_tot.

      v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.

      LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

        v_lines = v_lines + 1.

        IF v_lines = itab_zycit451-nr_itens.

          itab_zycit443-vl_sisco = v_sisco3 - v_sisco_tot.

        ELSE.

          itab_zycit443-vl_sisco = v_sisco_item.

          v_sisco_tot = v_sisco_tot + v_sisco_item.

        ENDIF.

        v_sisco_acum = v_sisco_acum + itab_zycit443-vl_sisco.

        MODIFY itab_zycit443.

      ENDLOOP.

    ENDLOOP.

    DESCRIBE TABLE itab_zycit443 LINES v_idx2.

    READ TABLE itab_zycit443 INDEX v_idx2.

    v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.

    IF v_sisco_dif NE 0.

      itab_zycit443-vl_sisco = itab_zycit443-vl_sisco - v_sisco_dif.

      MODIFY itab_zycit443 INDEX v_idx2 TRANSPORTING vl_sisco.

    ENDIF.

    LOOP AT itab_zycit443.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit443-nrseq

                                        ebeln  = itab_zycit443-ebeln

                                        ebelp  = itab_zycit443-ebelp

                                   codigo = itab_despesa_custo-codigo

                                     origem = 'PC'.

      IF sy-subrc NE 0.

        /pws/zycie036-nrseq      = itab_zycit443-nrseq.

        /pws/zycie036-ebeln      = itab_zycit443-ebeln.

        /pws/zycie036-ebelp      = itab_zycit443-ebelp.

        /pws/zycie036-codigo     = itab_despesa_custo-codigo.

        /pws/zycie036-waers_real = /pws/zycbt007-waersb.

        /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

        /pws/zycie036-werks      = /pws/zycie026-werks.

        /pws/zycie036-embarca    = /pws/zycie026-embarca.

        /pws/zycie036-origem     = 'PC'.

        /pws/zycie036-codmod     = 'D'.

        /pws/zycie036-status     = 'M'.

        /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

        /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

        /pws/zycie036-vlreal     = itab_zycit443-vl_sisco.

        CLEAR: /pws/zycie036-vlmov.

        MODIFY /pws/zycit036 FROM /pws/zycie036.

      ELSE.

        itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

          itab_zycit443-vl_sisco.

        itab_zycit036-vlreal = itab_zycit036-vlreal +

          itab_zycit443-vl_sisco.

        MODIFY /pws/zycit036 FROM itab_zycit036.

      ENDIF.

    ENDLOOP.

  ELSE.

    LOOP AT itab_zycit116.

      LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

        itab_zycit116-nr_itens = itab_zycit116-nr_itens + 1.

      ENDLOOP.

      MODIFY itab_zycit116.

    ENDLOOP.

    DESCRIBE TABLE itab_zycit116 LINES v_lines.

    v_sisco1 = ( itab_despesa_custo-vldp -

                 /pws/zycit000-txsis_fix ) / v_lines.

    v_sisco2 =   /pws/zycit000-txsis_fix / v_lines.

    v_sisco3 = v_sisco1 + v_sisco2.

    LOOP AT itab_zycit116.

      CLEAR: v_lines, v_sisco_tot.

      v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.

      LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

        v_lines = v_lines + 1.

        IF v_lines = itab_zycit116-nr_itens.

          itab_zycit100-vl_sisco = v_sisco3 - v_sisco_tot.

        ELSE.

          itab_zycit100-vl_sisco = v_sisco_item.

          v_sisco_tot = v_sisco_tot + v_sisco_item.

        ENDIF.

        v_sisco_acum = v_sisco_acum + itab_zycit100-vl_sisco.

        MODIFY itab_zycit100.

      ENDLOOP.

    ENDLOOP.

    DESCRIBE TABLE itab_zycit100 LINES v_idx2.

    READ TABLE itab_zycit100 INDEX v_idx2.

    v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.

    IF v_sisco_dif NE 0.

      itab_zycit100-vl_sisco = itab_zycit100-vl_sisco - v_sisco_dif.

      MODIFY itab_zycit100 INDEX v_idx2 TRANSPORTING vl_sisco.

    ENDIF.

    LOOP AT itab_zycit100.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit100-nrseq

                                        ebeln  = itab_zycit100-ebeln

                                        ebelp  = itab_zycit100-ebelp

                                   codigo = itab_despesa_custo-codigo

                                     origem = 'PC'.

      IF sy-subrc NE 0.

        /pws/zycie036-nrseq      = itab_zycit100-nrseq.

        /pws/zycie036-ebeln      = itab_zycit100-ebeln.

        /pws/zycie036-ebelp      = itab_zycit100-ebelp.

        /pws/zycie036-codigo     = itab_despesa_custo-codigo.

        /pws/zycie036-waers_real = /pws/zycbt007-waersb.

        /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

        /pws/zycie036-werks      = /pws/zycie026-werks.

        /pws/zycie036-embarca    = /pws/zycie026-embarca.

        /pws/zycie036-origem     = 'PC'.

        /pws/zycie036-codmod     = 'D'.

        /pws/zycie036-status     = 'M'.

        /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

        /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

        /pws/zycie036-vlreal     = itab_zycit100-vl_sisco.

        CLEAR: /pws/zycie036-vlmov.

        MODIFY /pws/zycit036 FROM /pws/zycie036.

      ELSE.

        itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

          itab_zycit100-vl_sisco.

        itab_zycit036-vlreal = itab_zycit036-vlreal +

          itab_zycit100-vl_sisco.

        MODIFY /pws/zycit036 FROM itab_zycit036.

      ENDIF.

    ENDLOOP.

  ENDIF.

ENDFORM.

* << Fim da exclusão

...

 

...

            bukrs           = p_bukrs

            ktosl           = p_ktosl

            werks           = p_werks

            bklas           = p_bklas

            codaux1         = p_codaux1

            codaux2         = p_codaux2

            codaux3         = p_codaux3

       TABLES

            account         = p_cta

       EXCEPTIONS

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

            key_not_found   = 1

            rules_not_found = 2

            OTHERS          = 3.

* << Fim da exclusão

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

            key_not_found   = 0

            rules_not_found = 0

            OTHERS          = 0.

* << Fim da inclusão

ENDFORM.

...

 

...

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

FORM existe_ps.

  DATA:  v_wrbtrps LIKE /pws/zycbe033-wrbtrirrf,

         c_taxa_ps   TYPE p DECIMALS 1 VALUE '1.5'.

  CLEAR: v_wrbtrps, v_valorps, lfbw, it_despesa, t059minmax,

         v_flagps, v_qsshh, v_qbshh, v_xqfor.

  SELECT SINGLE * FROM j_1bbranch

    WHERE bukrs = /pws/zycie026-bukrs

     AND branch = /pws/zycie026-j_1bbranch.

  SELECT SINGLE * FROM adrc

    WHERE addrnumber = j_1bbranch-adrnr.

  CLEAR v_catcs.

  SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catip

          WHERE impdesc = 'PIS'.

  REFRESH it_despesa.

  SELECT * FROM /pws/zycit019

    INTO TABLE it_despesa

    WHERE regio EQ adrc-region AND

          land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit019

      INTO TABLE it_despesa

      WHERE regio EQ space AND

         land1 EQ t001-land1.

  ENDIF.

  SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach

                            AND bukrs = /pws/zycie026-bukrs

                            AND witht = v_catip

                            AND wt_withcd NE space.

  IF sy-subrc EQ 0 AND

     lfbw-wt_withcd IS INITIAL.

    SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd

    WHERE werks EQ /pws/zycie026-werks

      AND witht EQ v_catip.

    IF sy-subrc EQ 0.

      MOVE 'X' TO lfbw-wt_subjct.

    ENDIF.

  ENDIF.

  IF lfbw-wt_subjct EQ 'X'.

    v_impostos ='S'.

  ENDIF.

  SELECT SINGLE qsatz qproz xqfor

         INTO (v_taxa_ps, v_quota_ps, v_xqfor)

         FROM t059z

         WHERE witht EQ v_catip

           AND land1 EQ t001-land1

           AND wt_withcd EQ lfbw-wt_withcd.

  CLEAR t059minmax.

  SELECT SINGLE *

    FROM t059minmax

    WHERE land1     EQ t001-land1

      AND witht     EQ v_catip

      AND wt_withcd EQ lfbw-wt_withcd

      AND waers     EQ /pws/zycbt007-waersb.

  IF sy-subrc NE 0 AND lfbw-wt_subjct EQ 'X'.

    v_ps = 'S'.

    LOOP AT it_zycit027_aux.

      READ TABLE it_despesa WITH KEY tpdesp  = it_zycit027_aux-tpdesp

                                     basepis = 'X'.

      IF sy-subrc EQ 0 .

        v_wrbtrps = it_zycit027_aux-vldp +

                               v_wrbtrps.

      ENDIF.

    ENDLOOP.

    v_valorps = ( v_wrbtrps * v_taxa_ps ) / 100.

    IF NOT t059minmax-wt_wtmin IS INITIAL.

      IF v_valorps GE t059minmax-wt_wtmin.

        CLEAR ok_code.

        v_flagps = 'X'.

        EXIT.

      ENDIF.

    ENDIF.

    CLEAR t059minmax.

    SELECT SINGLE *

           FROM t059minmax

           WHERE land1     EQ t001-land1

             AND witht     EQ v_catir

             AND waers     EQ /pws/zycbt007-waersb.

    IF NOT t059minmax-wt_wtmin IS INITIAL.

      IF v_valorps GE t059minmax-wt_wtmin.

        CLEAR ok_code.

        v_flagps = 'X'.

        EXIT.

      ENDIF.

    ENDIF.

  ELSEIF lfbw-wt_subjct EQ 'X' AND sy-subrc EQ 0.

    v_ps = 'S'.

    v_impostos ='S'.

    SELECT *

      FROM t059fb

      INTO TABLE itab_t059fb

      WHERE land1     EQ 'BR'                 AND

            witht     EQ v_catip              AND

            wt_withcd EQ lfbw-wt_withcd       AND

            wt_valid  <= sy-datlo.

    SORT itab_t059fb BY wt_bbasb.

    SELECT SINGLE *

      FROM t059p

      WHERE land1 EQ 'BR'                 AND

            witht EQ v_catip              AND

            wt_accpt EQ '3'.

    IF sy-subrc EQ '0'.

      CLEAR: v_mes, v_ano, i, v_data.

      MOVE sy-datlo+4(2) TO v_mes.

      MOVE sy-datlo(4) TO v_ano.

      i = strlen( v_mes ).

      IF i = 1.

        CONCATENATE v_ano '0' v_mes '01' INTO v_data.

      ELSE.

        CONCATENATE v_ano v_mes '01' INTO v_data.

      ENDIF.

      SELECT docfat

        FROM /pws/zycit026

        INTO TABLE itab_doc

        WHERE bukrs  EQ /pws/zycie026-bukrs AND

              dtlanc >= v_data AND

              status EQ 'A'.                            "#EC CI_NOFIELD

      IF NOT itab_doc[] IS INITIAL.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

               WHERE codeven = text-010

                 AND bukrs EQ /pws/zycie026-bukrs

                AND codmod  = text-009.

        SELECT *

          FROM bkpf

          INTO TABLE itab_bkpf

          FOR ALL ENTRIES IN itab_doc

          WHERE bukrs EQ /pws/zycie026-bukrs         AND

                blart EQ wa_zycbt011-blart           AND

                tcode EQ 'FB01'                      AND

                stgrd EQ ' '                         AND

                monat EQ /pws/zycie026-dtlanc+04(02) AND

                gjahr EQ /pws/zycie026-dtlanc(04)    AND

                belnr EQ itab_doc-belnr.

      ENDIF.

      IF NOT itab_bkpf[] IS INITIAL.

        SELECT *

          FROM with_item

          INTO TABLE itab_with_item

          FOR ALL ENTRIES IN itab_bkpf

          WHERE bukrs     EQ /pws/zycie026-bukrs   AND

                witht     EQ v_catip               AND

                wt_acco   EQ /pws/zycie026-despach AND

                wt_withcd EQ lfbw-wt_withcd        AND

                belnr     EQ itab_bkpf-belnr.

      ENDIF.

      LOOP AT itab_with_item.

        v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.

        v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.

      ENDLOOP.

      READ TABLE itab_t059fb INDEX 1.

      IF v_qsshh < itab_t059fb-wt_bbasb.

        LOOP AT it_zycit027_aux.

         READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp

                                                          basepis = 'X'.

          IF sy-subrc EQ 0 .

            v_wrbtrps = it_zycit027_aux-vldp +

                                   v_wrbtrps.

          ENDIF.

        ENDLOOP.

        v_wrbtrps = v_qsshh + v_wrbtrps.

        IF v_wrbtrps > itab_t059fb-wt_bbasb.

          READ TABLE itab_t059fb INDEX 2.

          v_valorps = ( v_wrbtrps * itab_t059fb-qsatz ) / 100.

        ELSE.

          CLEAR v_valorps.

        ENDIF.

      ELSE.

        LOOP AT it_zycit027_aux.

         READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp

                                                          basepis = 'X'.

          IF sy-subrc EQ 0 .

            v_wrbtrps = it_zycit027_aux-vldp +

                                   v_wrbtrps.

          ENDIF.

        ENDLOOP.

        READ TABLE itab_t059fb INDEX 2.

        v_valorps = ( v_wrbtrps * itab_t059fb-qsatz ) / 100.

      ENDIF.

    ELSE.

    ENDIF.

  ENDIF.

ENDFORM.

FORM existe_cs.

  DATA:  v_wrbtrcs LIKE /pws/zycbe033-wrbtrirrf,

         c_taxa_cs   TYPE p DECIMALS 1 VALUE '1.5'.

  CLEAR: v_wrbtrcs, v_valorcs, lfbw, it_despesa, t059minmax,

         v_flagcs, v_qsshh, v_qbshh, v_xqfor.

  SELECT SINGLE * FROM j_1bbranch

    WHERE bukrs = /pws/zycie026-bukrs

     AND branch = /pws/zycie026-j_1bbranch.

  SELECT SINGLE * FROM adrc

    WHERE addrnumber = j_1bbranch-adrnr.

  CLEAR v_catcs.

  SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catcs

          WHERE impdesc = 'CSLL'.

  REFRESH it_despesa.

  SELECT * FROM /pws/zycit019

    INTO TABLE it_despesa

    WHERE regio EQ adrc-region AND

          land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit019

      INTO TABLE it_despesa

      WHERE regio EQ space AND

            land1 EQ space.

  ENDIF.

  SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach

                            AND bukrs = /pws/zycie026-bukrs

                            AND witht = v_catcs

                               AND wt_withcd NE space.

  IF sy-subrc EQ 0 AND

     lfbw-wt_withcd IS INITIAL.

    SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd

    WHERE werks EQ /pws/zycie026-werks

      AND witht EQ v_catcs.

    IF sy-subrc EQ 0.

      MOVE 'X' TO lfbw-wt_subjct.

    ENDIF.

  ENDIF.

  IF lfbw-wt_subjct = 'X'.

    v_impostos ='S'.

  ENDIF.

  SELECT SINGLE qsatz qproz xqfor

         INTO (v_taxa_cs, v_quota_cs, v_xqfor)

         FROM t059z

         WHERE witht EQ v_catcs

           AND land1 EQ t001-land1

           AND wt_withcd EQ lfbw-wt_withcd.

  CLEAR t059minmax.

  SELECT SINGLE *

    FROM t059minmax

    WHERE land1     EQ t001-land1

      AND witht     EQ v_catcs

      AND wt_withcd EQ lfbw-wt_withcd

      AND waers     EQ /pws/zycbt007-waersb.

  IF sy-subrc NE 0 AND lfbw-wt_subjct EQ 'X'.

    v_cs = 'S'.

    LOOP AT it_zycit027_aux.

      READ TABLE it_despesa WITH KEY tpdesp  = it_zycit027_aux-tpdesp

                                     basecsll = 'X'.

      IF sy-subrc EQ 0 .

        v_wrbtrcs = it_zycit027_aux-vldp +

                               v_wrbtrcs.

      ENDIF.

    ENDLOOP.

    v_valorcs = ( v_wrbtrcs * v_taxa_cs ) / 100.

    IF NOT t059minmax-wt_wtmin IS INITIAL.

      IF v_valorcs GE t059minmax-wt_wtmin.

        CLEAR ok_code.

        v_flagcs = 'X'.

        EXIT.

      ENDIF.

    ENDIF.

    CLEAR t059minmax.

    SELECT SINGLE *

           FROM t059minmax

           WHERE land1     EQ t001-land1

             AND witht     EQ v_catcs

             AND waers     EQ /pws/zycbt007-waersb.

    IF NOT t059minmax-wt_wtmin IS INITIAL.

      IF v_valorcs GE t059minmax-wt_wtmin.

        CLEAR ok_code.

        v_flagcs = 'X'.

        EXIT.

      ENDIF.

    ENDIF.

  ELSEIF lfbw-wt_subjct EQ 'X' AND sy-subrc EQ 0.

    v_cs = 'S'.

    v_impostos ='S'.

    SELECT *

      FROM t059fb

      INTO TABLE itab_t059fb

      WHERE land1     EQ 'BR'                 AND

            witht     EQ v_catcs              AND

            wt_withcd EQ lfbw-wt_withcd       AND

            wt_valid  <= sy-datlo.

    SORT itab_t059fb BY wt_bbasb.

    SELECT SINGLE *

      FROM t059p

      WHERE land1 EQ 'BR'                 AND

            witht EQ v_catcs              AND

            wt_accpt EQ '3'.

    IF sy-subrc EQ '0'.

      MOVE sy-datlo+4(2) TO v_mes.

      MOVE sy-datlo(4) TO v_ano.

      i = strlen( v_mes ).

      IF i = 1.

        CONCATENATE v_ano '0' v_mes '01' INTO v_data.

      ELSE.

        CONCATENATE v_ano v_mes '01' INTO v_data.

      ENDIF.

      SELECT docfat

        FROM /pws/zycit026

        INTO TABLE itab_doc

        WHERE bukrs  EQ /pws/zycie026-bukrs AND

              dtlanc >= v_data AND

              status EQ 'A'.                            "#EC CI_NOFIELD

      IF NOT itab_doc[] IS INITIAL.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

               WHERE codeven = text-010

                 AND bukrs EQ /pws/zycie026-bukrs

                 AND codmod  = text-009.

        SELECT *

          FROM bkpf

          INTO TABLE itab_bkpf

          FOR ALL ENTRIES IN itab_doc

          WHERE bukrs EQ /pws/zycie026-bukrs         AND

                blart EQ wa_zycbt011-blart           AND

                tcode EQ 'FB01'                      AND

                stgrd EQ ' '                         AND

                monat EQ /pws/zycie026-dtlanc+04(02) AND

                gjahr EQ /pws/zycie026-dtlanc(04)    AND

                belnr EQ itab_doc-belnr.

      ENDIF.

      IF NOT itab_bkpf[] IS INITIAL.

        SELECT *

          FROM with_item

          INTO TABLE itab_with_item

          FOR ALL ENTRIES IN itab_bkpf

          WHERE bukrs EQ /pws/zycie026-bukrs         AND

                witht EQ v_catcs                     AND

                wt_acco EQ /pws/zycie026-despach     AND

                wt_withcd EQ lfbw-wt_withcd          AND

                belnr = itab_bkpf-belnr.

      ENDIF.

      LOOP AT itab_with_item.

        v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.

        v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.

      ENDLOOP.

      READ TABLE itab_t059fb INDEX 1.

      IF v_qsshh < itab_t059fb-wt_bbasb.

        LOOP AT it_zycit027_aux.

         READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp

                                                         basecsll = 'X'.

          IF sy-subrc EQ 0 .

            v_wrbtrcs = it_zycit027_aux-vldp +

                                   v_wrbtrcs.

          ENDIF.

        ENDLOOP.

        v_wrbtrcs = v_qsshh + v_wrbtrcs.

        IF v_wrbtrcs > itab_t059fb-wt_bbasb.

          READ TABLE itab_t059fb INDEX 2.

          v_valorcs = ( v_wrbtrcs * itab_t059fb-qsatz ) / 100.

        ELSE.

          CLEAR v_valorcs.

        ENDIF.

      ELSE.

        LOOP AT it_zycit027_aux.

         READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp

                                                        basecsll  = 'X'.

          IF sy-subrc EQ 0 .

            v_wrbtrcs = it_zycit027_aux-vldp +

                                   v_wrbtrcs.

          ENDIF.

        ENDLOOP.

        READ TABLE itab_t059fb INDEX 2.

        v_valorcs = ( v_wrbtrcs * itab_t059fb-qsatz ) / 100.

      ENDIF.

    ELSE.

    ENDIF.

  ENDIF.

ENDFORM.

FORM existe_cf.

  DATA: v_wrbtrcf LIKE /pws/zycbe033-wrbtrirrf,

        c_taxa_cf TYPE p DECIMALS 1 VALUE '1.5',

        itab_bkpf LIKE bkpf OCCURS 0 WITH HEADER LINE.

  CLEAR: v_wrbtrcf, v_valorcf, lfbw, it_despesa, t059minmax,

         v_flagcf, v_xqfor, v_qsshh, v_qbshh.

  SELECT SINGLE * FROM j_1bbranch

    WHERE bukrs = /pws/zycie026-bukrs

     AND branch = /pws/zycie026-j_1bbranch.

  SELECT SINGLE * FROM adrc

    WHERE addrnumber = j_1bbranch-adrnr.

  CLEAR v_catcf.

  SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catcf

          WHERE impdesc = 'COFINS'.

  REFRESH it_despesa.

  SELECT * FROM /pws/zycit019

    INTO TABLE it_despesa

    WHERE regio EQ adrc-region AND

          land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit019

      INTO TABLE it_despesa

      WHERE regio EQ space AND

          land1 EQ t001-land1.

  ENDIF.

  SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach

                            AND bukrs = /pws/zycie026-bukrs

                            AND witht = v_catcf

                            AND wt_withcd NE space.

  IF sy-subrc EQ 0 AND lfbw-wt_withcd IS INITIAL.

    SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd

    WHERE werks EQ /pws/zycie026-werks

      AND witht EQ v_catcf.

    IF sy-subrc EQ 0.

      MOVE 'X' TO lfbw-wt_subjct.

    ENDIF.

  ENDIF.

  IF lfbw-wt_subjct EQ 'X'.

    v_impostos ='S'.

  ENDIF.

  SELECT SINGLE qsatz qproz xqfor

         INTO (v_taxa_cf, v_quota_cf, v_xqfor)

         FROM t059z

         WHERE witht EQ v_catcf

           AND land1 EQ t001-land1

           AND wt_withcd EQ lfbw-wt_withcd.

  CLEAR t059minmax.

  SELECT SINGLE *

    FROM t059minmax

    WHERE land1     EQ t001-land1

      AND witht     EQ v_catcf

      AND wt_withcd EQ lfbw-wt_withcd

      AND waers     EQ /pws/zycbt007-waersb.

  IF sy-subrc NE 0 AND lfbw-wt_subjct EQ 'X'.

    v_cf = 'S'.

    LOOP AT it_zycit027_aux.

      READ TABLE it_despesa WITH KEY tpdesp  = it_zycit027_aux-tpdesp

                                     basecofins = 'X'.

      IF sy-subrc EQ 0 .

        v_wrbtrcf = it_zycit027_aux-vldp +

                               v_wrbtrcf.

      ENDIF.

    ENDLOOP.

    v_valorcf = ( v_wrbtrcf * v_taxa_cf ) / 100.

    IF NOT t059minmax-wt_wtmin IS INITIAL.

      IF v_valorcf GE t059minmax-wt_wtmin.

        CLEAR ok_code.

        v_flagcf = 'X'.

        EXIT.

      ENDIF.

    ENDIF.

    CLEAR t059minmax.

    SELECT SINGLE *

           FROM t059minmax

           WHERE land1     EQ t001-land1

             AND witht     EQ v_catcf

             AND waers     EQ /pws/zycbt007-waersb.

    IF NOT t059minmax-wt_wtmin IS INITIAL.

      IF v_valorcf GE t059minmax-wt_wtmin.

        CLEAR ok_code.

        v_flagcf = 'X'.

        EXIT.

      ENDIF.

    ENDIF.

  ELSEIF lfbw-wt_subjct EQ 'X' AND sy-subrc EQ 0.

    v_cf = 'S'.

    v_impostos ='S'.

    SELECT *

      FROM t059fb

      INTO TABLE itab_t059fb

      WHERE land1     EQ 'BR'                 AND

            witht     EQ v_catcf              AND

            wt_withcd EQ lfbw-wt_withcd       AND

            wt_valid  <= sy-datlo.

    SORT itab_t059fb BY wt_bbasb.

    SELECT SINGLE *

      FROM t059p

      WHERE land1 EQ 'BR'    AND

            witht EQ v_catcf AND

            wt_accpt EQ '3'.

    IF sy-subrc EQ '0'.

      MOVE sy-datlo+4(2) TO v_mes.

      MOVE sy-datlo(4) TO v_ano.

      i = strlen( v_mes ).

      IF i = 1.

        CONCATENATE v_ano '0' v_mes '01' INTO v_data.

      ELSE.

        CONCATENATE v_ano v_mes '01' INTO v_data.

      ENDIF.

      SELECT docfat

        FROM /pws/zycit026

        INTO TABLE itab_doc

        WHERE bukrs  EQ /pws/zycie026-bukrs AND

              dtlanc >= v_data AND

              status EQ 'A'.                            "#EC CI_NOFIELD

      IF NOT itab_doc[] IS INITIAL.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

               WHERE codeven = text-010

                 AND bukrs EQ /pws/zycie026-bukrs

                 AND codmod  = text-009.

        SELECT *

          FROM bkpf

          INTO TABLE itab_bkpf

          FOR ALL ENTRIES IN itab_doc

          WHERE bukrs EQ /pws/zycie026-bukrs         AND

                blart EQ wa_zycbt011-blart           AND

                tcode EQ 'FB01'                      AND

                stgrd EQ ' '                         AND

                monat EQ /pws/zycie026-dtlanc+04(02) AND

                gjahr EQ /pws/zycie026-dtlanc(04)    AND

                belnr EQ itab_doc-belnr.

      ENDIF.

      IF NOT itab_bkpf[] IS INITIAL.

        SELECT *

          FROM with_item

          INTO TABLE itab_with_item

          FOR ALL ENTRIES IN itab_bkpf

          WHERE bukrs     EQ /pws/zycie026-bukrs   AND

                witht     EQ v_catcf               AND

                wt_acco   EQ /pws/zycie026-despach AND

                wt_withcd EQ lfbw-wt_withcd        AND

                belnr     EQ itab_bkpf-belnr.

      ENDIF.

      LOOP AT itab_with_item.

        v_qsshh = abs( itab_with_item-wt_qsshh ) + v_qsshh.

        v_qbshh = abs( itab_with_item-wt_qbshh ) + v_qbshh.

      ENDLOOP.

      READ TABLE itab_t059fb INDEX 1.

      IF v_qsshh < itab_t059fb-wt_bbasb.

        LOOP AT it_zycit027_aux.

         READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp

                                                       basecofins = 'X'.

          IF sy-subrc EQ 0 .

            v_wrbtrcf = it_zycit027_aux-vldp +

                                   v_wrbtrcf.

          ENDIF.

        ENDLOOP.

        v_wrbtrcf = v_qsshh + v_wrbtrcf.

        IF v_wrbtrcf > itab_t059fb-wt_bbasb.

          READ TABLE itab_t059fb INDEX 2.

          v_valorcf = ( v_wrbtrcf * itab_t059fb-qsatz ) / 100.

        ELSE.

          CLEAR v_valorcf.

        ENDIF.

      ELSE.

        LOOP AT it_zycit027_aux.

         READ TABLE it_despesa WITH KEY tpdesp = it_zycit027_aux-tpdesp

                                                       basecofins = 'X'.

          IF sy-subrc EQ 0 .

            v_wrbtrcf = it_zycit027_aux-vldp +

                                   v_wrbtrcf.

          ENDIF.

        ENDLOOP.

        READ TABLE itab_t059fb INDEX 2.

        v_valorcf = ( v_wrbtrcf * itab_t059fb-qsatz ) / 100.

      ENDIF.

    ELSE.

    ENDIF.

  ENDIF.

ENDFORM.

FORM verifica_centro_l2.

  CLEAR: it_zycbe035-d_prctr, it_zycbe035-c_prctr.

  IF it_lanca_aux3-knttp IS INITIAL AND it_lanca_aux3-matuse NE '3'.

    CLEAR itab_marc. REFRESH itab_marc.

    SELECT SINGLE matnr prctr FROM marc INTO itab_marc

           WHERE matnr EQ it_ekpo-matnr AND

                 werks EQ it_ekpo-werks.

    IF sy-subrc NE 0.

      SELECT SINGLE matnr prctr FROM marc INTO itab_marc

           WHERE matnr EQ it_ekpo-matnr.

    ENDIF.

    it_zycbe035-d_prctr = itab_marc-prctr.

    it_zycbe035-c_prctr = itab_marc-prctr.

  ELSEIF it_lanca_aux3-knttp = 'K' AND it_lanca_aux3-matuse NE '3'.

    CLEAR itab_csks.  REFRESH itab_csks.

    SELECT SINGLE kostl kokrs prctr FROM csks INTO itab_csks

           WHERE kostl EQ itab_ekkn-kostl

             AND kokrs EQ itab_ekkn-kokrs.

    it_zycbe035-d_prctr = itab_csks-prctr.

    it_zycbe035-c_prctr = itab_csks-prctr.

  ELSEIF it_lanca_aux3-knttp = 'F' AND it_lanca_aux3-matuse NE '3'.

    CLEAR itab_aufk. REFRESH itab_aufk.

    SELECT SINGLE aufnr prctr FROM aufk INTO itab_aufk

           WHERE aufnr EQ itab_ekkn-aufnr.

    it_zycbe035-d_prctr = itab_aufk-prctr.

    it_zycbe035-c_prctr = itab_aufk-prctr.

  ENDIF.

ENDFORM.

FORM trata_decimais USING    p_moeda

                    CHANGING p_valor.

  SELECT SINGLE * FROM tcurx INTO wa_tcurx WHERE currkey = p_moeda.

  IF sy-subrc <> 0.

    wa_tcurx-currdec = 2.

  ENDIF.

  p_valor = p_valor * ( 10 ** ( wa_tcurx-currdec - 2 ) ).

ENDFORM.

* << Fim da exclusão

...

 

...

  CLEAR itab_zyglt100.

  REFRESH itab_zyglt100.

  CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'

       EXPORTING

            i_codmod                = p_modulo

            i_func                  = p_func

            i_zexit                 = p_exit

       TABLES

            itab_zyglt100           = itab_zyglt100

       EXCEPTIONS

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

            i_codmod_nao_encontrado = 1

            i_func_nao_encontrado   = 2

            i_zexit_nao_encontrado  = 3

            OTHERS                  = 4.

* << Fim da exclusão

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

            i_codmod_nao_encontrado = 0

            i_func_nao_encontrado   = 0

            i_zexit_nao_encontrado  = 0

            OTHERS                  = 0.

* << Fim da inclusão

ENDFORM.

...

 

...

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

FORM existe_is.

  CLEAR v_catis.

  SELECT SINGLE catsap FROM /pws/zycit212 INTO v_catis

          WHERE impdesc = 'ISS'.

  SELECT SINGLE * FROM lfbw WHERE lifnr = /pws/zycie026-despach

                            AND bukrs = /pws/zycie026-bukrs

                            AND witht = v_catis

                            AND wt_withcd NE space.

  IF sy-subrc EQ 0 AND

     lfbw-wt_withcd IS INITIAL.

    SELECT SINGLE wt_withcd FROM /pws/zycit353 INTO lfbw-wt_withcd

    WHERE werks EQ /pws/zycie026-werks

      AND witht EQ v_catis.

    IF sy-subrc EQ 0.

      MOVE 'X' TO lfbw-wt_subjct.

    ENDIF.

  ENDIF.

  IF lfbw-wt_subjct EQ 'X' AND v_xqfor EQ ' '.

    v_impostos ='S'.

  ENDIF.

ENDFORM.

* << Fim da exclusão

...

 

...

              p_werks            = /pws/zycie026-werks

              p_cod_mod          = 'D'

              p_okcode           = sy-ucomm

              p_adto             = v_adto

         TABLES

              itab_despesa       = itab_despesa

              itab_imposto       = itab_imposto

              itab_with_item_aux = itab_with_item

              itab_bkpf_aux      = itab_bkpf

         EXCEPTIONS

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

              centro_em_branco   = 1

              OTHERS             = 2.

* << Fim da exclusão

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

              centro_em_branco   = 0

              OTHERS             = 0.

* << Fim da inclusão

    IF sy-subrc <> 0.

    ENDIF.

  ENDIF.

ENDFORM.

...