CE PLUS - Nota 014235

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 03/10/2014 09:44:49

Data/Hora Última Alteração: 03/10/2014 09:44:49

Descrição da Nota: AJUSTE PARA TRATAMENTO DE ICMS EXONERADO

Sintoma

Ajuste para tratamento de ICMS exonerado para o estado do Paraná.

 

 

Solução

Ajuste para tratamento de ICMS exonerado para o estado do Paraná.

 

Versões Tratadas

9.0


Pré-Requisitos

Produto:

Nota

Descrição

TRATAMENTO PARA QUEBRA DE PIS NA NF (NOTA FISCAL)

TRATAMENTO PARA NUMERO DE RECOPI.

VALOR CIF COM ORIGEM NA NOTA FISCAL ESTÁ ERRADO NO CUSTO EFETIVO

Informações Complementares

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

Nota Número 14235 Data: 30/09/2014 Hora: 16:48:14

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

 

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

Nota Número              : 14235

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 9.0

Pacote                   : 00008

Agrupamento              : 00175

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

Referência às notas relacionadas:

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

 

11017  - 00001 - 8.0    - 00006  - VALOR CIF COM ORIGEM NA NOTA FISCAL ESTÁ ERRADO NO CUSTO EFETIVO

13877  - 00002 - 9.0    - 00007  - TRATAMENTO PARA QUEBRA DE PIS NA NF (NOTA FISCAL)

14214  - 00003 - 9.0    - 00008  - TRATAMENTO PARA NUMERO DE RECOPI.

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

AJUSTE PARA TRATAMENTO DE ICMS EXONERADO

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

Palavras Chave:

DESENVOLVIMENTO - ICMS - EXONERADO - ESTADO - PARANA - DI - NOTA -

/PWS/SAPMZYCI023 - /PWS/SAPMZYCI016 - /PWS/SAPMZYCI017

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

Objetos da nota:

DTEL /PWS/ZYCIL781

TABD /PWS/ZYCIE100A

TABD /PWS/ZYCIT100

DYNP /PWS/SAPMZYCI023                        0433

REPS /PWS/MZYCI017F02

REPS /PWS/ZYCIR006

REPS /PWS/MZYCI016F02

REPS /PWS/MZYCI016F01

 

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

Modificações efetuadas em DTEL /PWS/ZYCIL781

 

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

Elemento de dados incluído: /PWS/ZYCIL781

Classe de desenvolvimento: /PWS/ZYCI

Idioma original: PT

Descrição breve incluída: (14 caracteres), idioma: PT

"GL - Exonerado"

Categoria de dados: Domínio

Domínio: XFELD

ID parâmetro:

Nome componente default:

Documentar modificações: NÃO

Nome da ajuda de pesquisa:

Parâmetro da ajuda de pesquisa:

Comprimento máximo do denominador breve: 10

Denominador breve incluído (9 caracteres), idioma: PT

"Exonerado"

Comprimento máximo do denominador médio: 15

Denominador médio incluído (14 caracteres), idioma: PT

"ICMS Exonerado"

Comprimento máximo do denominador longo: 20

Denominador longo incluído (14 caracteres), idioma: PT

"ICMS Exonerado"

Comprimento máximo do título: 14

Título incluído (14 caracteres), idioma: PT

"ICMS Exonerado"

 

 

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

Modificações efetuadas em TABD /PWS/ZYCIE100A

 

Nome de campo   |Elem.dados

...

BS_ICMS_NF      |/PWS/ZYCIL307

RECOPI          |/PWS/ZYCIL780

* >> Início da inclusão:

EXONERA         |/PWS/ZYCIL781

* << Fim da inclusão

 

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

Modificações efetuadas em TABD /PWS/ZYCIT100

 

Nome de campo   |Elem.dados

...

BS_ICMS_NF      |/PWS/ZYCIL307

RECOPI          |/PWS/ZYCIL780

* >> Início da inclusão:

EXONERA         |/PWS/ZYCIL781

* << Fim da inclusão

 

 

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

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

 

O Download das telas encontra-se disponível no link abaixo

 

http://produtos.sondait.com.br/home/PW.CE/Notas/

 

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

Modificações efetuadas em REPS /PWS/MZYCI023O01

 

 

      WHEN '0433'.

        IF screen-name EQ '/PWS/ZYCIE100A-CODREGTRIICMS'.

          IF itab_zycit001-regime EQ '12' AND

           /pws/zycie003-adm_temp EQ 'X'.

            screen-input = '0'.

            MODIFY SCREEN.

          ENDIF.

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

          IF /pws/zycie100a-exonera EQ 'X' .

            screen-input = '0'.

            MODIFY SCREEN.

          ENDIF.

* << Fim da inclusão

        ENDIF.

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

        IF screen-name EQ '/PWS/ZYCIE100A-EXONERA'.

          IF v_region NE 'PR' OR

             /pws/zycie100a-codregtriicms NE '5'.

            screen-input = '0'.

            screen-invisible = '1'.

            MODIFY SCREEN.

          ENDIF.

 

        ENDIF.

* << Fim da inclusão

        IF /pws/zycit062-icms_st EQ 'X'.

          IF ( screen-name EQ 'T_ICMSBS_ST' OR

             screen-name EQ '/PWS/ZYCIE100A-ALIQ_ICMS_ST' ) .

            IF ( /pws/zycie100a-edita_st EQ 'X' OR

                 /pws/zycie100a-aliq_icms_st IS INITIAL ).

 

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F02

 

 

...

  CLEAR v_cont.

  DESCRIBE TABLE itab_global LINES v_cont.

  CLEAR v_tabix.

  LOOP AT itab_global.

    v_tabix = v_tabix + 1.

    CLEAR itab_zycbt035_aux.

    CLEAR itab_zycit100.

    READ TABLE itab_zycit100 WITH KEY nrseq = itab_global-nrseq

                                      ebeln = itab_global-ebeln

                                      ebelp = itab_global-ebelp.

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

    IF itab_zycit100-vlpis    IS INITIAL AND

       itab_zycit100-vlcofins IS INITIAL

      OR ( itab_zycit100-codregtripiscofi EQ '5'

      OR  itab_zycit100-codregtripiscofi EQ '3' ).

      CONTINUE.

    ENDIF.

* << Fim da exclusão

    CLEAR itab_zycit003.

    READ TABLE itab_zycit003 WITH KEY nrseq = itab_global-nrseq

                                      ebeln = itab_global-ebeln

                                      ebelp = itab_global-ebelp.

    CLEAR itab_ekkn.

    READ TABLE itab_ekkn WITH KEY ebeln = itab_global-ebeln

                                  ebelp = itab_global-ebelp.

    CLEAR itab_matuse.

    READ TABLE itab_matuse WITH KEY ebeln = itab_global-ebeln

                                    ebelp = itab_global-ebelp.

...

 

...

           EXPORTING

                ebeln        = itab_zycit003-ebeln

                ebelp        = itab_zycit003-ebelp

           IMPORTING

                centro_lucro = itab_zycbt035_aux-d_prctr.

      itab_zycbt035_aux-c_prctr = itab_zycbt035_aux-d_prctr.

    ENDIF.

    MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse.

    itab_zycbt035_aux-werks     = itab_zycit003-werks.

    itab_zycbt035_aux-d_gsber   = itab_zycit003-gsber.

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

    IF itab_zycit100-exonera EQ 'X'.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_global-nrseq

                                        ebeln  = itab_global-ebeln

                                        ebelp  = itab_global-ebelp

                                        codigo = 'ICMS'

                                        origem = 'NF'.

      IF sy-subrc NE 0 .

        SELECT SINGLE * FROM /pws/zycit036

        INTO itab_zycit036

          WHERE nrseq  = itab_global-nrseq

            AND ebeln  = itab_global-ebeln

            AND ebelp  = itab_global-ebelp

            AND codigo = 'ICMS'

            AND origem = 'NF'.

      ENDIF.

      itab_zycbt035_aux-imposto = 'ICMS'.

      itab_zycbt035_aux-wrbtr = abs( itab_zycit036-vlmov ).

      itab_zycbt035_aux-bschl   = '40'.

      APPEND itab_zycbt035_aux.

      itab_zycbt035_aux-bschl   = '50'.

      APPEND itab_zycbt035_aux.

    ENDIF.

    IF itab_zycit100-vlpis    IS INITIAL AND

       itab_zycit100-vlcofins IS INITIAL

      OR ( itab_zycit100-codregtripiscofi EQ '5'

      OR  itab_zycit100-codregtripiscofi EQ '3' ).

      CONTINUE.

    ENDIF.

* << Fim da inclusão

    IF NOT itab_zycit100-vlpis IS INITIAL.

      CLEAR itab_zycit398.

      READ TABLE itab_zycit398 WITH KEY tpnf     = itab_global-tpnf

                                        tributos = 'PIS'.

      IF sy-subrc EQ 0.

        itab_zycbt035_aux-lei102 = itab_zycit398-lei102.

        itab_zycbt035_aux-imposto = 'PIS'.

        itab_zycbt035_aux-debcred = itab_zycit398-creditar.

        CLEAR itab_zycit036.

        READ TABLE itab_zycit036 WITH KEY nrseq  = itab_global-nrseq

...

 

...

    READ TABLE itab_zycit398 WITH KEY tpnf     = itab_global-tpnf

                                      tributos = 'COFINS'.

    IF sy-subrc EQ 0 AND itab_zycit398-creditar EQ 'S'.

      IF NOT itab_zycit100-vlcofins IS INITIAL.

        itab_zycbt035_aux-imposto = 'BCOF'.

        itab_zycbt035_aux-wrbtr   = abs( itab_zycit100-basecofins ).

        itab_zycbt035_aux-bschl   = '40'.

        APPEND itab_zycbt035_aux.

        itab_zycbt035_aux-bschl   = '50'.

        APPEND itab_zycbt035_aux.

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

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycbt035_aux WHERE imposto EQ 'ICMS'.

    CLEAR itab_zycbt035_aux2.

    itab_zycbt035_aux2-imposto  = itab_zycbt035_aux-imposto.

    itab_zycbt035_aux2-tribicms = itab_zycbt035_aux-tribicms.

    itab_zycbt035_aux2-matuse   = itab_zycbt035_aux-matuse.

    itab_zycbt035_aux2-bschl    = itab_zycbt035_aux-bschl.

    itab_zycbt035_aux2-bklas    = itab_zycbt035_aux-bklas.

    itab_zycbt035_aux2-werks    = itab_zycbt035_aux-werks.

    itab_zycbt035_aux2-d_gsber  = itab_zycbt035_aux-d_gsber.

    itab_zycbt035_aux2-wrbtr    = itab_zycbt035_aux-wrbtr.

    itab_zycbt035_aux2-d_prctr  = itab_zycbt035_aux-d_prctr.

    itab_zycbt035_aux2-c_prctr  = itab_zycbt035_aux-c_prctr.

    IF itab_zycbt035_aux2-bschl EQ '50'.

      v_matuse =  itab_zycbt035_aux2-matuse.

      CLEAR itab_cta. REFRESH itab_cta.

      PERFORM seek_account_number

              TABLES itab_cta

              USING wa_nf-bukrs

                    'IPA'

                    itab_zycbt035_aux2-werks

                    itab_zycbt035_aux2-bklas

                    v_matuse

                    space

                    space.

      READ TABLE itab_cta INDEX 1.

      itab_zycbt035_aux2-ktosl = 'IPA'.

      IF itab_cta-konts IS INITIAL.

        CLEAR itab_cta. REFRESH itab_cta.

        PERFORM seek_account_number

                TABLES itab_cta

                USING wa_nf-bukrs

                      'IPA'

                      itab_zycbt035_aux2-werks

                      space

                      v_matuse

                      space

                      space.

        READ TABLE itab_cta INDEX 1.

* << Fim da inclusão

      ENDIF.

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

      itab_zycbt035_aux2-d_newko = itab_cta-konts.

      CLEAR itab_zycbt035_aux2-ps_psp_pnr.

      PERFORM verify_null_field

                USING itab_zycbt035_aux2-d_newko 'D_NEWKO'

                                                  text-016.

    ELSEIF itab_zycbt035_aux2-bschl EQ '40'.

      itab_zycbt035_aux2-tribicms = 1.

      CLEAR itab_cta. REFRESH itab_cta.

      PERFORM seek_account_number

              TABLES itab_cta

              USING wa_nf-bukrs

                   'ICR'

                   itab_zycbt035_aux2-werks

                   itab_zycbt035_aux2-bklas

                   itab_zycbt035_aux2-tribicms

                   itab_zycbt035_aux2-matuse

                   space.

      itab_zycbt035_aux2-ktosl = 'ICR'.

      READ TABLE itab_cta INDEX 1.

      itab_zycbt035_aux2-d_newko = itab_cta-konts.

* << Fim da inclusão

    ENDIF.

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

    COLLECT itab_zycbt035_aux2.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_zycbt035_aux WHERE imposto EQ 'PIS' OR

  imposto EQ 'PISP' .

    CLEAR itab_zycbt035_aux2.

    MOVE: itab_zycbt035_aux-bschl   TO itab_zycbt035_aux2-bschl  ,

          itab_zycbt035_aux-matuse  TO itab_zycbt035_aux2-matuse ,

...

 

 

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

Modificações efetuadas em REPS /PWS/ZYCIR006

 

...

    v_index = sy-tabix.

    CLEAR v_itemcongela.

    READ  TABLE itab_zycit036_auxl WITH KEY

    nrseq = itab_zycit036-nrseq

    ebeln = itab_zycit036-ebeln

    ebelp = itab_zycit036-ebelp

               congelamov = 'X'.

    IF sy-subrc EQ 0.

      v_itemcongela = 'X'.

    ENDIF.

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

    IF itab_zycit036-codigo EQ 'ICMS' AND

       itab_zycit036-origem EQ 'NF' AND

       NOT itab_zycit036-vlreal GT 0.

      READ TABLE itab_zycit100 WITH KEY

             nrseq = itab_zycit036-nrseq

             ebeln = itab_zycit036-ebeln

             ebelp = itab_zycit036-ebelp.

      IF itab_zycit100-exonera EQ 'X'.

        CONTINUE.

      ENDIF.

    ENDIF.

* << Fim da inclusão

    CASE itab_zycit036-codigo.

      WHEN 'FOB' OR 'C&F' OR 'CIF' OR 'C+I'.

        IF itab_zycit036-origem = 'FAT'.

          READ TABLE itab_zycit003 WITH KEY

                      nrseq = itab_zycit036-nrseq

                      ebeln = itab_zycit036-ebeln

                      ebelp = itab_zycit036-ebelp.

          IF sy-subrc = 0.

            READ TABLE itab_zycit263 WITH KEY

                                 nrseq = itab_zycit003-nrseq

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F02

 

...

* >> Início da inclusão:

FORM trata_icms_exo.

  DATA: v_ls TYPE /pws/zycit036-vlmov,

        v_li TYPE /pws/zycit036-vlmov.

  LOOP AT itab_zycit100 WHERE exonera EQ 'X'.

    CLEAR itab_zycit036.

    DELETE itab_zycit036

                WHERE codigo EQ 'ICMS'

                  AND origem EQ 'NF'

                  AND ebeln = itab_zycit100-ebeln

                  AND ebelp = itab_zycit100-ebelp.

    READ TABLE itab_zycit003 WITH KEY

                  ebeln = itab_zycit100-ebeln

                  ebelp = itab_zycit100-ebelp.

    itab_zycit036-mandt      = sy-mandt.

    itab_zycit036-nrseq      = itab_zycit100-nrseq.

    itab_zycit036-ebeln      = itab_zycit100-ebeln.

    itab_zycit036-ebelp      = itab_zycit100-ebelp.

    itab_zycit036-codigo     = 'ICMS'.

    itab_zycit036-origem     = 'NF'.

    itab_zycit036-bukrs      = /pws/zycit001-bukrs.

    itab_zycit036-werks      = itab_zycit003-werks.

    itab_zycit036-codmod     = 'D'.

    itab_zycit036-waers_mov  = /pws/zycbt007-waersb.

    itab_zycit036-rate       = itab_zycit003-aliqicms.

    itab_zycit036-embarca    = /pws/zycit001-embarca.

    itab_zycit036-usernamec = sy-uname.

    itab_zycit036-dtuserc   = sy-datum.

    itab_zycit036-hruserc   = sy-uzeit.

    itab_zycit036-vlmov = ( ( itab_zycit003-aliqicms / 100 ) *

                    itab_zycit100-baseicms ) * '0.6666-'.

    v_ls = '0.08-' * itab_zycit100-baseicms.

    v_li = '0.04-' * itab_zycit100-baseicms.

    IF v_ls > itab_zycit036-vlmov.

      itab_zycit036-vlmov = v_ls.

    ELSEIF v_li < itab_zycit036-vlmov.

      itab_zycit036-vlmov = v_li.

    ENDIF.

    APPEND itab_zycit036.

  ENDLOOP.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

    itab_zycit036-vlreal = itab_zycit036a-vlreal.

    itab_zycit036-vlmov  = itab_zycit036a-vlmov.

    MODIFY itab_zycit036 TRANSPORTING vlreal vlmov

        WHERE ebeln  = itab_zycit036a-ebeln

          AND ebelp  = itab_zycit036a-ebelp

          AND nrseq  = itab_zycit036a-nrseq

          AND nrseqori = itab_zycit036a-nrseqori

          AND origem   = itab_zycit036a-origem

          AND codigo = itab_zycit036a-codigo.

  ENDLOOP.

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

  PERFORM trata_icms_exo.

* << Fim da inclusão

ENDFORM.

...

 

...

         WHERE tpnf EQ itab_global-tpnf AND

         bukrs EQ space.

    ENDIF.

  ENDIF.

  LOOP AT itab_global.

    CLEAR itab_zycbt035_aux.

    CLEAR itab_zycit100.

    READ TABLE itab_zycit100 WITH KEY nrseq = itab_global-nrseq

                                      ebeln = itab_global-ebeln

                                      ebelp = itab_global-ebelp.

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

    IF itab_zycit100-vlpis    IS INITIAL AND

       itab_zycit100-vlcofins IS INITIAL.

      CONTINUE.

    ENDIF.

* << Fim da exclusão

    CLEAR itab_zycit003.

    READ TABLE itab_zycit003 WITH KEY nrseq = itab_global-nrseq

                                      ebeln = itab_global-ebeln

                                      ebelp = itab_global-ebelp.

    CLEAR itab_ekkn.

    READ TABLE itab_ekkn WITH KEY ebeln = itab_global-ebeln

                                  ebelp = itab_global-ebelp.

    CLEAR itab_matuse.

    READ TABLE itab_matuse WITH KEY ebeln = itab_global-ebeln

                                    ebelp = itab_global-ebelp.

...

 

...

    ELSEIF itab_matuse-knttp = 'F' AND itab_matuse-j_1bmatuse NE '3'.

      CLEAR itab_aufk.   REFRESH itab_aufk.

      SELECT SINGLE aufnr prctr FROM aufk INTO itab_aufk

        WHERE aufnr EQ itab_ekkn-aufnr.

      itab_zycbt035_aux-d_prctr = itab_aufk-prctr.

      itab_zycbt035_aux-c_prctr = itab_aufk-prctr.

    ENDIF.

    MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse.

    itab_zycbt035_aux-werks     = itab_zycit003-werks.

    itab_zycbt035_aux-d_gsber   = itab_zycit003-gsber.

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

    IF itab_zycit100-exonera EQ 'X'.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_global-nrseq

                                        ebeln  = itab_global-ebeln

                                        ebelp  = itab_global-ebelp

                                        codigo = 'ICMS'

                                        origem = 'NF'.

      IF sy-subrc NE 0 .

        SELECT SINGLE * FROM /pws/zycit036

        INTO itab_zycit036

          WHERE nrseq  = itab_global-nrseq

            AND ebeln  = itab_global-ebeln

            AND ebelp  = itab_global-ebelp

            AND codigo = 'ICMS'

            AND origem = 'NF'.

      ENDIF.

      itab_zycbt035_aux-imposto = 'ICMS'.

      itab_zycbt035_aux-wrbtr = abs( itab_zycit036-vlmov ).

      itab_zycbt035_aux-bschl   = '40'.

      APPEND itab_zycbt035_aux.

      itab_zycbt035_aux-bschl   = '50'.

      APPEND itab_zycbt035_aux.

    ENDIF.

    IF itab_zycit100-vlpis    IS INITIAL AND

       itab_zycit100-vlcofins IS INITIAL.

      CONTINUE.

    ENDIF.

* << Fim da inclusão

    IF NOT itab_zycit100-vlpis IS INITIAL.

      CLEAR itab_zycit398.

      READ TABLE itab_zycit398 WITH KEY tpnf     = itab_global-tpnf

                                        tributos = 'PIS'.

      itab_zycbt035_aux-imposto = 'PIS'.

      itab_zycbt035_aux-debcred = itab_zycit398-creditar.

      itab_zycbt035_aux-wrbtr   = abs( itab_zycit100-vlpis ).

      itab_zycbt035_aux-bschl   = '40'.

      APPEND itab_zycbt035_aux.

      itab_zycbt035_aux-bschl   = '50'.

...

 

...

    READ TABLE itab_zycit398 WITH KEY tpnf     = itab_global-tpnf

                                      tributos = 'ICMSST'.

    IF sy-subrc EQ 0 AND itab_zycit398-creditar EQ 'S'.

      IF NOT itab_zycit100-vlicms_st IS INITIAL.

        itab_zycbt035_aux-imposto = 'BST'.

        itab_zycbt035_aux-wrbtr   = abs( itab_zycit100-baseicms_st ).

        itab_zycbt035_aux-bschl   = '40'.

        APPEND itab_zycbt035_aux.

        itab_zycbt035_aux-bschl   = '50'.

        APPEND itab_zycbt035_aux.

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

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycbt035_aux WHERE imposto EQ 'ICMS'.

    CLEAR itab_zycbt035_aux2.

    itab_zycbt035_aux2-imposto  = itab_zycbt035_aux-imposto.

    itab_zycbt035_aux2-tribicms = itab_zycbt035_aux-tribicms.

    itab_zycbt035_aux2-matuse   = itab_zycbt035_aux-matuse.

    itab_zycbt035_aux2-bschl    = itab_zycbt035_aux-bschl.

    itab_zycbt035_aux2-bklas    = itab_zycbt035_aux-bklas.

    itab_zycbt035_aux2-werks    = itab_zycbt035_aux-werks.

    itab_zycbt035_aux2-d_gsber  = itab_zycbt035_aux-d_gsber.

    itab_zycbt035_aux2-wrbtr    = itab_zycbt035_aux-wrbtr.

    itab_zycbt035_aux2-d_prctr  = itab_zycbt035_aux-d_prctr.

    itab_zycbt035_aux2-c_prctr  = itab_zycbt035_aux-c_prctr.

    IF itab_zycbt035_aux2-bschl EQ '50'.

      CLEAR itab_cta. REFRESH itab_cta.

      PERFORM seek_account_number

              TABLES itab_cta

              USING /pws/zycie041-bukrs

                    'IPA'

                    itab_zycbt035_aux2-werks

                    itab_zycbt035_aux2-bklas

                    itab_zycbt035_aux2-matuse

                    space

                    space.

      READ TABLE itab_cta INDEX 1.

      itab_zycbt035_aux2-ktosl = 'IPA'.

      IF itab_cta-konts IS INITIAL.

        CLEAR itab_cta. REFRESH itab_cta.

        PERFORM seek_account_number

                TABLES itab_cta

                USING /pws/zycie041-bukrs

                      'IPA'

                      itab_zycbt035_aux2-werks

                      space

                      itab_zycbt035_aux2-matuse

                      space

                      space.

        READ TABLE itab_cta INDEX 1.

* << Fim da inclusão

      ENDIF.

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

      itab_zycbt035_aux2-d_newko = itab_cta-konts.

      CLEAR itab_zycbt035_aux2-ps_psp_pnr.

      PERFORM verify_null_field

                USING itab_zycbt035_aux2-d_newko 'D_NEWKO'

                                                  text-016.

    ELSEIF itab_zycbt035_aux2-bschl EQ '40'.

      itab_zycbt035_aux2-tribicms = 1.

      CLEAR itab_cta. REFRESH itab_cta.

      PERFORM seek_account_number

              TABLES itab_cta

              USING /pws/zycie041-bukrs

                   'ICR'

                   itab_zycbt035_aux2-werks

                   itab_zycbt035_aux2-bklas

                   itab_zycbt035_aux2-tribicms

                   itab_zycbt035_aux2-matuse

                   space.

      itab_zycbt035_aux2-ktosl = 'ICR'.

      READ TABLE itab_cta INDEX 1.

      itab_zycbt035_aux2-d_newko = itab_cta-konts.

* << Fim da inclusão

    ENDIF.

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

    COLLECT itab_zycbt035_aux2.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_zycbt035_aux WHERE imposto EQ 'PIS'.

    CLEAR itab_zycbt035_aux2.

    MOVE: itab_zycbt035_aux-bschl   TO itab_zycbt035_aux2-bschl  ,

          itab_zycbt035_aux-imposto TO itab_zycbt035_aux2-imposto,

          itab_zycbt035_aux-matuse  TO itab_zycbt035_aux2-matuse ,

...

 

...

  CLEAR v_cont.

  DESCRIBE TABLE itab_global LINES v_cont.

  CLEAR v_tabix.

  LOOP AT itab_global.

    v_tabix = v_tabix + 1.

    CLEAR itab_zycbt035_aux.

    CLEAR itab_zycit100.

    READ TABLE itab_zycit100 WITH KEY nrseq = itab_global-nrseq

                                      ebeln = itab_global-ebeln

                                      ebelp = itab_global-ebelp.

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

    IF itab_zycit100-vlpis    IS INITIAL AND

       itab_zycit100-vlcofins IS INITIAL

      OR ( itab_zycit100-codregtripiscofi EQ '5'

      OR  itab_zycit100-codregtripiscofi EQ '3' ).

      CONTINUE.

    ENDIF.

* << Fim da exclusão

    CLEAR itab_zycit003.

    READ TABLE itab_zycit003 WITH KEY nrseq = itab_global-nrseq

                                      ebeln = itab_global-ebeln

                                      ebelp = itab_global-ebelp.

    CLEAR lt_ekkn.

    READ TABLE lt_ekkn WITH KEY ebeln = itab_global-ebeln

                                ebelp = itab_global-ebelp.

    CLEAR itab_matuse.

    READ TABLE itab_matuse WITH KEY ebeln = itab_global-ebeln

                                    ebelp = itab_global-ebelp.

...

 

...

           EXPORTING

                ebeln        = itab_zycit003-ebeln

                ebelp        = itab_zycit003-ebelp

           IMPORTING

                centro_lucro = itab_zycbt035_aux-d_prctr.

      itab_zycbt035_aux-c_prctr = itab_zycbt035_aux-d_prctr.

    ENDIF.

    MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse.

    itab_zycbt035_aux-werks     = itab_zycit003-werks.

    itab_zycbt035_aux-d_gsber   = itab_zycit003-gsber.

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

    IF itab_zycit100-exonera EQ 'X'.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_global-nrseq

                                        ebeln  = itab_global-ebeln

                                        ebelp  = itab_global-ebelp

                                        codigo = 'ICMS'

                                        origem = 'NF'.

      IF sy-subrc NE 0 .

        SELECT SINGLE * FROM /pws/zycit036

        INTO itab_zycit036

          WHERE nrseq  = itab_global-nrseq

            AND ebeln  = itab_global-ebeln

            AND ebelp  = itab_global-ebelp

            AND codigo = 'ICMS'

            AND origem = 'NF'.

      ENDIF.

      itab_zycbt035_aux-imposto = 'ICMS'.

      itab_zycbt035_aux-wrbtr = abs( itab_zycit036-vlmov ).

      itab_zycbt035_aux-bschl   = '40'.

      APPEND itab_zycbt035_aux.

      itab_zycbt035_aux-bschl   = '50'.

      APPEND itab_zycbt035_aux.

    ENDIF.

    IF itab_zycit100-vlpis    IS INITIAL AND

       itab_zycit100-vlcofins IS INITIAL

      OR ( itab_zycit100-codregtripiscofi EQ '5'

      OR  itab_zycit100-codregtripiscofi EQ '3' ).

      CONTINUE.

    ENDIF.

* << Fim da inclusão

    IF NOT itab_zycit100-vlpis IS INITIAL.

      CLEAR itab_zycit398.

      READ TABLE itab_zycit398 WITH KEY tpnf     = itab_global-tpnf

                                        tributos = 'PIS'.

      IF sy-subrc EQ 0.

        itab_zycbt035_aux-lei102 = itab_zycit398-lei102.

        itab_zycbt035_aux-imposto = 'PIS'.

        itab_zycbt035_aux-debcred = itab_zycit398-creditar.

        CLEAR itab_zycit036.

        READ TABLE itab_zycit036 WITH KEY nrseq  = itab_global-nrseq

...

 

...

    READ TABLE itab_zycit398 WITH KEY tpnf     = itab_global-tpnf

                                      tributos = 'COFINS'.

    IF sy-subrc EQ 0 AND itab_zycit398-creditar EQ 'S'.

      IF NOT itab_zycit100-vlcofins IS INITIAL.

        itab_zycbt035_aux-imposto = 'BCOF'.

        itab_zycbt035_aux-wrbtr   = abs( itab_zycit100-basecofins ).

        itab_zycbt035_aux-bschl   = '40'.

        APPEND itab_zycbt035_aux.

        itab_zycbt035_aux-bschl   = '50'.

        APPEND itab_zycbt035_aux.

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

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycbt035_aux WHERE imposto EQ 'ICMS'.

    CLEAR itab_zycbt035_aux2.

    itab_zycbt035_aux2-imposto  = itab_zycbt035_aux-imposto.

    itab_zycbt035_aux2-tribicms = itab_zycbt035_aux-tribicms.

    itab_zycbt035_aux2-matuse   = itab_zycbt035_aux-matuse.

    itab_zycbt035_aux2-bschl    = itab_zycbt035_aux-bschl.

    itab_zycbt035_aux2-bklas    = itab_zycbt035_aux-bklas.

    itab_zycbt035_aux2-werks    = itab_zycbt035_aux-werks.

    itab_zycbt035_aux2-d_gsber  = itab_zycbt035_aux-d_gsber.

    itab_zycbt035_aux2-wrbtr    = itab_zycbt035_aux-wrbtr.

    itab_zycbt035_aux2-d_prctr  = itab_zycbt035_aux-d_prctr.

    itab_zycbt035_aux2-c_prctr  = itab_zycbt035_aux-c_prctr.

    IF itab_zycbt035_aux2-bschl EQ '50'.

      CLEAR itab_cta. REFRESH itab_cta.

      PERFORM seek_account_number

              TABLES itab_cta

              USING /pws/zycie041-bukrs

                    'IPA'

                    itab_zycbt035_aux2-werks

                    itab_zycbt035_aux2-bklas

                    itab_zycbt035_aux2-matuse

                    space

                    space.

      READ TABLE itab_cta INDEX 1.

      itab_zycbt035_aux2-ktosl = 'IPA'.

      IF itab_cta-konts IS INITIAL.

        CLEAR itab_cta. REFRESH itab_cta.

        PERFORM seek_account_number

                TABLES itab_cta

                USING /pws/zycie041-bukrs

                      'IPA'

                      itab_zycbt035_aux2-werks

                      space

                      itab_zycbt035_aux2-matuse

                      space

                      space.

        READ TABLE itab_cta INDEX 1.

* << Fim da inclusão

      ENDIF.

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

      itab_zycbt035_aux2-d_newko = itab_cta-konts.

      CLEAR itab_zycbt035_aux2-ps_psp_pnr.

      PERFORM verify_null_field

                USING itab_zycbt035_aux2-d_newko 'D_NEWKO'

                                                  text-016.

    ELSEIF itab_zycbt035_aux2-bschl EQ '40'.

      itab_zycbt035_aux2-tribicms = 1.

      CLEAR itab_cta. REFRESH itab_cta.

      PERFORM seek_account_number

              TABLES itab_cta

              USING /pws/zycie041-bukrs

                   'ICR'

                   itab_zycbt035_aux2-werks

                   itab_zycbt035_aux2-bklas

                   itab_zycbt035_aux2-tribicms

                   itab_zycbt035_aux2-matuse

                   space.

      itab_zycbt035_aux2-ktosl = 'ICR'.

      READ TABLE itab_cta INDEX 1.

      itab_zycbt035_aux2-d_newko = itab_cta-konts.

* << Fim da inclusão

    ENDIF.

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

    COLLECT itab_zycbt035_aux2.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_zycbt035_aux WHERE imposto EQ 'PIS' OR

    imposto EQ 'PISP' .

    CLEAR itab_zycbt035_aux2.

    MOVE: itab_zycbt035_aux-bschl   TO itab_zycbt035_aux2-bschl  ,

          itab_zycbt035_aux-matuse  TO itab_zycbt035_aux2-matuse ,

...