mm estrutura do tax code

32
Tax Code - Página : 1 Estrutura do Tax Code Muito foi mexido na estrutura original dos tax codes para permitir o desenvolvimento do sistema de localização para o Brasil. Algumas funcionalidades Standard foram alteradas e outras extendidas. Como exemplo de funcionalidades alteradas temos o valor da “Taxa- de-Imposto” que no Standard, aceita que se digite diretamente o percentual de imposto, ao passo que para o Brasil, só aceita os valores 100 e -100, indicando que esta linha de configuração do Tax Code está ativa. Com relação as extensões, o R/3 permite a customização do sistema para que a rotina de cálculo dos impostos seja feita externamente ao sistema, sendo exatamente o que ocorre com a localização Brasil, por exemplo, a rotina original que considerava apenas o Vendor para determinação correta dos impostos, agora considera Vendor, ship-from, ship-to, uso do material, etc… substituindo as fórmulas originais para tratamento dos impostos pelas “Fórmulas de Condição” que são nada mais do que “programas chamados” pelo sistema, que executam algumas operações internas e retornam os parâmetros já calculados para o R/3. Condition Formulas 301 IPI for the industrialization case (301 + 302 may occur together) 302 IPI for the consumption case (301 + 302 may occur together) 303 ICMS for all cases 304 Substituicao Tributaria 305 ICMS complement (in MM) and ICMS Zona Franca discount (in SD) 306 ISS (only calculated in SD) 307 ICMS Sub.Trib. on freight offset 308 not used 309 Zero value Embora possa-se configurar diferentes valores e formas de cálculo diretamente nas customizações de tax codes, as “Fórmulas de SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Upload: dri0510

Post on 29-Nov-2015

203 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: MM Estrutura Do Tax Code

Tax Code - Página : 1

Estrutura do Tax Code

Muito foi mexido na estrutura original dos tax codes para permitir o desenvolvimento do sistema de localização para o Brasil. Algumas funcionalidades Standard foram alteradas e outras extendidas.

Como exemplo de funcionalidades alteradas temos o valor da “Taxa-de-Imposto” que no Standard, aceita que se digite diretamente o percentual de imposto, ao passo que para o Brasil, só aceita os valores 100 e -100, indicando que esta linha de configuração do Tax Code está ativa.

Com relação as extensões, o R/3 permite a customização do sistema para que a rotina de cálculo dos impostos seja feita externamente ao sistema, sendo exatamente o que ocorre com a localização Brasil, por exemplo, a rotina original que considerava apenas o Vendor para determinação correta dos impostos, agora considera Vendor, ship-from, ship-to, uso do material, etc… substituindo as fórmulas originais para tratamento dos impostos pelas “Fórmulas de Condição” que são nada mais do que “programas chamados” pelo sistema, que executam algumas operações internas e retornam os parâmetros já calculados para o R/3.

Condition Formulas301 IPI for the industrialization case (301 + 302 may occur together)302 IPI for the consumption case (301 + 302 may occur together)303 ICMS for all cases304 Substituicao Tributaria305 ICMS complement (in MM) and ICMS Zona Franca discount (in SD)306 ISS (only calculated in SD)307 ICMS Sub.Trib. on freight offset308 not used309 Zero value

Embora possa-se configurar diferentes valores e formas de cálculo diretamente nas customizações de tax codes, as “Fórmulas de Condição” aliadas às rotinas de cálculo de impostos ( ambas em ABAP/4 ) têm prioridade na utilização dos mesmos, ou seja, a customização, juntamente com os dados da compra da mercadoria, simplesmente oferecem as informações às fórmulas e programas e são estes que decidem como estas informações serão processadas.

Veja por exemplo, na configuração do Tax Code C3, que embora as linhas de complemento de ICMS estivessem ativas, as mesmas não foram calculadas na emissão do pedido; isto porque a “Fórmula de Condição” ( 305 no caso ) analisou as condições de material, ship-from, ship-to, entre outras e “decidiu” que esta linha deveria ter valor zero.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 2: MM Estrutura Do Tax Code

Tax Code - Página : 2

Na configuração de Tax Code ( C3 )

CgImposto ChCta Taxa-de-imposto Nível De-nível TpCondiçICMS Ind.Clear.Off. ICC 275 230 IC1O Nível 300 300 0 IPI consumo entr. NVV 100,000 310 100 IPI2 ICMS ativo fixo entr VS2 315 100 ZCM2 ICMS consumo entr. NVV 100,000 330 100 ICM2 Sub.Tr.consumo entr. NVV 340 100 ICS2 ICMS complemento ICP 100,000 350 100 ICOP ICMS complemento 100 ICX 100,000- 360 350 ICOX Nível 500 500 0 IPI do SD saída MW1 510 100 IPI3 ICMS do SD saída MW2 520 100 ICM3

No detalhe do Pedido

TipC Denominação Montante Moeda Valor condição BRL BASB Montante base 150,00 Cálculo ext. 15,00 BRL 150,00 Nível 200 15,00 BRL 150,00 Nível 300 15,00 BRL 150,00 IPI2 IPI consumo entr. 12,000 % 23,54 ICM2 ICMS consumo entr. 21,000 % 46,13 ICOP ICMS complemento 100,000 % 0,00 ICOX ICMS complemento 100 100,000-% 0,00 Nível 500 21,97 BRL 219,67 Outros impostos 21,97 BRL 219,67

Estrutura de Funcionamento

Na tela de Registros de Tipos de Condição ( transação OBQ1 ), pode-se definir as diferentes condições que farão parte do cálculo dos impostos. O campo “Sequencia de Acesso” define como este registro será tratado, ou seja: Em branco : levado em conta no cálculo dos montantes independentemente do tax

code e das fórmulas de condições. Ex.: BASB – Preço Base MWST : estará sujeito as configurações de impostos bem como as “decisões”

tomadas pelas fórmulas. Ex. ICM1

A rotina de impostos, baseada no Esquema de Cálculo ( TAXBRJ ), começará então a analisar os impostoss na seguinte forma:

Leitura das condições ativas definidas pelo tax code; Para cada linha ativa, analisa o Preço do Item, Produto, Estado de Origem, Estado

de Destino, País de Orígem, Sujeição a Substituição Tributária ou não, Condições de Venda da mercadoria ( Exemplo: Consignação ), Informações do Tax Code ( 100, 100- e Fórmulas de Condições definidas ), e demais customizações dos impostos ( Ex.: Alíquotas) e decide se haverá incidência do imposto para esta condição ou não.

Caso haja, são checados então as configurações contábeis para lançamento dos impostos.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 3: MM Estrutura Do Tax Code

Tax Code - Página : 3

Observações: O sistema Standard vem hoje com uma série de opções de impostos que tem seus valores definidos segundo uma série de informações (Preço do Item, Produto, Estado de Origem, Estado de Destino, País de Orígem, Sujeição a Substituição Tributária ou não, Condições de Venda da mercadoria (Exemplo: Consignação), Informações do Tax Code ( 100, 100- e Fórmulas de Condições definidas )). Quaisquer condições diferentes das apresentadas pelo sistema standard ( ICM1, IPI1, STFR, ICS1…) podem incorrer em erros, principalmente com relação a parte fiscal, sendo que sua utilização deve ser feita de forma extremamente criteriosa.

Fica como sujestão, quando da ocorrência de situações onde seja necessário criar um novo tax code específico, que seja feito um estudo das características de cada uma das conditions type e se existe alguma maneira de “enganar” o sistema

Genéricos

Caso seja necessário adicionar novas funcionalidades ao sistema, pode-se alterar a estrutura das fórmulas, que nada mais são do que pequenos programas feitos em ABAP/4. Nossa sugestão é de que sejam criadas novas fórmulas em substituição das originais. As fórmulas na verdade servem apenas para definir algumas variáveis para o sistema principal, como valores dos impostos, valor base e percentuais.

Para editar uma fórmula:IMG >> Contab.financeira >> Opções básicas contab.financeira >> IVA >> Configuração >> Verificar esquemas de cálculo >> Esquemas >> Seleciona o TAXBRJ >> Controle >> Seleciona a Fórmula desejada >> F4 >> Seleciona a fórmula desejada >> Texto de Origem.

Obs.: Para que esta operação funcione, é necessário que se tenha acesso a edição de programas, ou seja, senha de desenvolvedor.

Programas e funções envolvidas com Impostos:SAPLJ1BR Impostos: cálc.externo imposto SAPLF80T Atualização de tabelas de imposto SAPLTAX1 Impostos SAPLTAX2 Repartição de impostos SAPLFYTX Interface de sistemas fiscais externos

J_1BDETERMINE_JURISDICTION **J_1BCALCULATE_TAXES **

** Estas funções podem ser definidas pelo path : IMG >> Contab.financeira >> Opções básicas contab.financeira >> IVA >> Configuração >> Cálculo de impostos externo >> Definir destino lógicoOu ainda podem ser visualizadas via transação SE37.Os programas SAPLF80T, SAPLTAX1, SAPLTAX2, SAPLFYTX não serão apresentados em detalhe neste relatório uma vez que são programas auxiliares, com funcões pouco relevantes, neste momento, para determinação de possíveis novas funcionalidades.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 4: MM Estrutura Do Tax Code

Tax Code - Página : 4

______________________________________________________________________

Programas

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 5: MM Estrutura Do Tax Code

Tax Code - Página : 5

SAPLJ1BR Impostos: cálc.externo imposto Este é o principal programa utilizado para determinação das taxas e impostos para a Localização Brasil. Nele são analizadas as informações do processo ( no caso de compras, material, ship-from, ship-to, usage… ) e determinadas os valores corretos.Em seu processamento, esta rotina executa as seguintes checagens:

Existência exclusão de base de ICMSTaxas AtivasUso do material : 1=industrialization 2=consumption Processamento de FreteMovimento de entrada ou saídaAplicação das taxasExistência de IPI Split para fornecedor “não industrial”Sujeição de Customer a IPI / ICMS / Sub. Trib.

Active taxes(1): IPI / ICMS / Sub.Trib Active taxes(2): Complement of ICMS / ISS

Percentual de IPI pelo NBM-code, valor base, excessão e direito tributárioSe não encontrado, pega o default

Acesso ao ICMS pelo country, state+from, state+to, material Se encontrado, pega : rate / valor base, excessão e direito tributárioSe não encontrado, pega o default

Comp.ICMS required in MM for state+to Comp.ICMS exception rules found: pega base e exemptionSe não encontrado, pega o default Comp.ICMS finalmente determinado

Regras para Sub.Trib Ou pega o default ( 0 ) ou faz cálculo em cima dos dados encontrados

Regras para percentual ISS encontrada para o material, pega o percentualSe não, pega o default do sistema ( sem ISS ) Preenchimento do ICMS e IPI nos registros ativos ('X' = YES)Sub.Trib.ICMS encontrado, determina taxa e base

Checa se é um processo de Retorno de MM, ou retorno de InvoiceSe Conhecimento: Determina os novos Vendor e Jurisdiction ( estado )

Se IPI Pauta, determina: amount / no unit / uom ( unidade de medida ) / direito tributárioIPI Pauta por unidade de preço

Checa se existe condição de modificação para Sub.Trib. Determina o montante modificado do Sub.Trib. utilizando “calc type” / preço / fator / unidadeDetermina “surcharge” / redução de base 1 / redução de base 2 / ICMS com base reduzida

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 6: MM Estrutura Do Tax Code

Tax Code - Página : 6

Se condição de Sub.Trib. sobre frete for encontradaCalcula o montante base

OBS.: O roteiro acima é extremamente sintético, porém serve para dar uma noção dos assuntos tratados por este programa. Quaisquer informações mais a fundo, necessitaram da ajuda da equipe de programação para análise detalhada do programa.

J_1BDETERMINE_JURISDICTION

FUNCTION J_1BDETERMINE_JURISDICTION

REFRESH LOCATION_RESULTS. IF LOCATION_DATA-STATE NE SPACE. SELECT * FROM J_1BTREGX WHERE LAND1 = LOCATION_DATA-COUNTRY AND BLAND = LOCATION_DATA-STATE. LOCATION_RESULTS = LOCATION_DATA. LOCATION_RESULTS-STATE = J_1BTREGX-TXREG. LOCATION_RESULTS-TXJCD = J_1BTREGX-TXREG. APPEND LOCATION_RESULTS. ENDSELECT. ENDIF.

CLEAR LOCATION_ERR.

ENDFUNCTION.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 7: MM Estrutura Do Tax Code

Tax Code - Página : 7

J_1BCALCULATE_TAXESObs.: Este função controla engloba grande parte da rotina de localização Brasil, e pelo fato de a mesma ser muito extensa, foi anexado neste documento apenas a parte da documentação da mesma.

*"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(TAX_DATA) LIKE COM_TAX STRUCTURE COM_TAX *" VALUE(ADD_DATA) LIKE J_1BTXCALC STRUCTURE J_1BTXCALC *" OPTIONAL *" EXPORTING *" VALUE(TAX_ERR) LIKE COM_ERR STRUCTURE COM_ERR *" VALUE(TAX_RESULT) LIKE COM_TAX STRUCTURE COM_TAX *" VALUE(ADD_RESULT) LIKE J_1BTXCALC *" STRUCTURE J_1BTXCALC *"---------------------------------------------------------------------- *----------------------------------------------------------------------* * * This function can be called in two ways: * * - Via the external tax interface (FV64A300). In this case the* parameters are TAX_DATA, TAX_ERR and TAX_RESULT. Additional * information about the calculated values is exported via * the tables 'NF_VALUES' and 'NF_LAWS'. * * - Via a special formula exit in SD to calculate the taxes * ICMS and ISS based on a net amount as input data. In this * case the parameters are TAX_DATA, TAX_ERR, TAX_RESULT, * ADD_DATA and ADD_RESULT. * * In this special case only the tax values for ICMS and ISS * are returned to the calling exit. Tables NF_VALUES and NF_LAWS * are not changed. The output values are transferred via the * export parameter 'ADD_RESULT'. * * In this special calling case it is possible to do the calculation * of ICMS based on the price per unit and not on the total. * A restriction then is that this calculation does NOT support* any NF discounts and the base must not include ICMS * * * Expected input values: * * - If the function is called from MM or the function is called * from SD with 'ADD_DATA-ONLY_TAX' = 'X' the calculation expects * the amount not including any taxes. * * - If the function is called from SD with the special parameter * in 'ADD_DATA' the calculation expects the amount including * ICMS and ISS (depending on the setting in 'ADD_DATA' * *----------------------------------------------------------------------*

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 8: MM Estrutura Do Tax Code

Tax Code - Página : 8

______________________________________________________________________

Fórmulas

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 9: MM Estrutura Do Tax Code

Tax Code - Página : 9

300 Data for the communication to an external tax system

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_300 **---------------------------------------------------------------------******************************************************************************************* SAP - Sales Tax Interface ************************************************************************************************* Collection of the required data for the communication to ** an external tax system (calculation module). The data is ** collected int an internal communication structure and passed ** over to a function module 'RFC_CALCULATE_TAXES' or the ** corresponding entry in TTXC **---------------------------------------------------------------------*FORM FRM_KONDI_WERT_300.

*********************************************************************** Data definitions and tables ***********************************************************************

* TABLES: TTX_TAXES, "transfer structure* LFA1, "vendor master - global data* T007A, "valid tax indicators* TFDIR, "function modules* TTXC.

TABLES: TTXP, COM_TAX, COM_ERR.

DATA: BEGIN OF XXKOMV OCCURS 10. INCLUDE STRUCTURE KOMV_INDEX. DATA: END OF XXKOMV.

* begin of change J1B_0014 (Brazil localization) DATA: BR_KONP LIKE KONP OCCURS 10 WITH HEADER LINE.* end of change J1B_0014 (Brazil localization)

DATA: MWSKZ LIKE KOMP-MWSKZ, "Steuerkennzeichen PLANT LIKE T001W-WERKS, "Werk PERCENTAGE LIKE KOMV-KBETR, SAVE_XKOMV LIKE KOMV_INDEX, SAVE_COM_TAX LIKE COM_TAX, POSNR LIKE KOMP-KPOSN, EXEMPT_FLAG, COPY_FLAG, COUNTER TYPE I, AMOUNT TYPE P, QUANTITY TYPE P.

* Macros for default handling DEFINE ASSIGN/DEFAULT. IF &2 IS INITIAL. COM_TAX-&1 = &3. ELSE. COM_TAX-&1 = &2. ENDIF. END-OF-DEFINITION.

DEFINE DEFAULT_ON_INITIAL. IF COM_TAX-&1 IS INITIAL OR COM_TAX-&1 = SPACE. COM_TAX-&1 = &2.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 10: MM Estrutura Do Tax Code

Tax Code - Página : 10

ENDIF. END-OF-DEFINITION.

* Avoid recalculation on pricing type 'E'* CHECK: PREISFINDUNGSART <> 'E' AND* KONV-KSTEU <> 'E'.

* Clear global workfields CLEAR: TAXPCT0, TAXAMT0, TAXBAS0, TAXPCT1, TAXAMT1, TAXBAS1, TAXPCT2, TAXAMT2, TAXBAS2, TAXPCT3, TAXAMT3, TAXBAS3, TAXPCT4, TAXAMT4, TAXBAS4, TAXPCT5, TAXAMT5, TAXBAS5, TAXPCT6, TAXAMT6, TAXBAS6, TAXPCT7, TAXAMT7, TAXBAS7, TAXPCT8, TAXAMT8, TAXBAS8, TAXPCT9, TAXAMT9, TAXBAS9, COM_TAX, COM_ERR, TTX_TAXES.

CHECK KOMK-TRTYP NE 'A' AND XKOMV-KSTEU NE 'E' AND KOMP-PRSOK = 'X'.

*----Pricing Copy Logic COPY_FLAG = SPACE. IF XKOMV-KSTEU = 'F'. COPY_FLAG = 'X'. SAVE_XKOMV = XKOMV. "save actual XKOMV-entry COUNTER = 0. LOOP AT XKOMV WHERE KNTYP CA '1234' AND KAPPL = 'TX'. CASE XKOMV-KNTYP. WHEN '1'. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT1 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT1 = QUANTITY. WHEN '2'. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT2 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT2 = QUANTITY. WHEN '3'. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT3 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT3 = QUANTITY. WHEN '4'. COUNTER = COUNTER + 1. IF COUNTER = 1. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT4 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT4 = QUANTITY. ELSEIF COUNTER = 2. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT5 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT5 = QUANTITY.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 11: MM Estrutura Do Tax Code

Tax Code - Página : 11

ELSEIF COUNTER = 3. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT6 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT6 = QUANTITY. ELSEIF COUNTER = 4. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT7 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT7 = QUANTITY. ELSEIF COUNTER = 5. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT8 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT8 = QUANTITY. ELSEIF COUNTER = 6. AMOUNT = XKOMV-KWERT. COM_TAX-TAXAMT9 = AMOUNT. QUANTITY = XKOMV-KBETR. COM_TAX-TAXPCT9 = QUANTITY. ENDIF. ENDCASE. COM_TAX-TAXAMOV = COM_TAX-TAXAMOV + AMOUNT. COM_TAX-TAXPCOV = COM_TAX-TAXPCOV + QUANTITY. CLEAR: AMOUNT, QUANTITY. ENDLOOP. XKOMV = SAVE_XKOMV. "reset XKOMV entry ENDIF.*----End of Pricing Copy Logic

POSNR = KOMP-KPOSN.

* Initialize MWSKZ IF XKOMV-MWSK1 IS INITIAL. MWSKZ = KOMP-MWSKZ. "MWSKZ aus Position (MM/FI) ELSE. MWSKZ = XKOMV-MWSK1. "MWSKZ aus Kondition (SD) ENDIF.

* Tax Exemptions SELECT SINGLE * FROM T007A WHERE KALSM = T005-KALSM AND MWSKZ = MWSKZ. IF T007A-TXREL = 2. " Tax Exempt* in case of tax exempt customers skip the call to ext. package EXEMPT_FLAG = 'X'. ENDIF.

CLEAR PERCENTAGE.* begin of change J1B_0028 (Brazil localization) DATA: J1B_ACTIVE(1) TYPE C. "Indicator Brazil Active CALL FUNCTION 'J_1BSA_COMPONENT_CHECK' EXPORTING COMPONENT = 'BR' EXCEPTIONS COMPONENT_NOT_INSTALLED = 01. IF SY-SUBRC IS INITIAL. CALL FUNCTION 'J_1BSA_COMPONENT_ACTIVE' EXPORTING BUKRS = KOMK-BUKRS COMPONENT = 'BR' EXCEPTIONS

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 12: MM Estrutura Do Tax Code

Tax Code - Página : 12

COMPONENT_NOT_ACTIVE = 1. IF SY-SUBRC = 0.* set PERCENTAGE so that no exemption is processed PERCENTAGE = 100. J1B_ACTIVE = 'X'. ENDIF. ENDIF.* end of change J1B_0028 (Brazil localization) SAVE_XKOMV = XKOMV. LOOP AT XKOMV WHERE KNTYP CA '1234'. PERCENTAGE = PERCENTAGE + XKOMV-KBETR. IF NOT PERCENTAGE IS INITIAL. EXIT. ENDIF. ENDLOOP.* READ TABLE XKOMV INDEX XKOMV_TABIX. XKOMV = SAVE_XKOMV. IF PERCENTAGE IS INITIAL.* in case of tax exempt customers skip the call to ext. package EXEMPT_FLAG = 'X'. ENDIF.

* Initialize TTXD ON CHANGE OF T005-KALSM. SELECT SINGLE * FROM TTXD WHERE KALSM = T005-KALSM. CHECK SY-SUBRC = 0 AND NOT TTXD-XEXTN IS INITIAL. ENDON.

* Read T007A SELECT SINGLE * FROM T007A WHERE KALSM = T005-KALSM AND MWSKZ = MWSKZ. IF SY-SUBRC NE 0. MESSAGE S873(FS) WITH T005-KALSM MWSKZ. KOMP-PRSOK = SPACE. XKOMV-KINAK = 'X'. XKOMV-FXMSG = '899'. CALL FUNCTION 'SET_ERROR_FLAG'. ENDIF.

* Populate COM_TAX COM_TAX-CLIENT = SY-MANDT. " Client COM_TAX-COMP_CODE = KOMK-BUKRS. " Company Code COM_TAX-COUNTRY = KOMK-ALAND. " Country for Tax Determinatio COM_TAX-DOC_NUMBER = KOMK-BELNR. " Document Reference Number* COM_TAX-ACCNT_NO = KOMK-KUNNR. " Customer/Vendor Account Numb COM_TAX-TXJCD_L1 = TTXD-LENG1. " Length of the 1th part of Ju COM_TAX-TXJCD_L2 = TTXD-LENG2. " Length of the 2th part of Ju COM_TAX-TXJCD_L3 = TTXD-LENG3. " Length of the 3th part of Ju COM_TAX-TXJCD_L4 = TTXD-LENG4. " Length of the 4th part of Ju COM_TAX-MATNR = KOMP-MATNR. " Material* begin of change J1B_ (Brazil localization)* com_tax-unit = komp-vrkme. " Sales Unit of Measure* MGLME + MEINS belong together / also on LTAX1U02 and LTAX1U07 COM_TAX-UNIT = KOMP-MEINS. IF COM_TAX-UNIT IS INITIAL. COM_TAX-UNIT = KOMP-VRKME. ENDIF.* end of change J1B_ (Brazil localization) COM_TAX-CURRENCY = KOMK-WAERK. " Currency Key* COM_TAX-TAX_TYPE = ' '. " Indicator: sales/use/rental* COM_TAX-EXEMPT_IND = '0'. " Exempt from Taxes

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 13: MM Estrutura Do Tax Code

Tax Code - Página : 13

* COM_TAX-CREDIT_IND = " Credit/Debit Indicator* COM_TAX-FREIGHT_AM =* COM_TAX-EXEMPT_AMT =

AMOUNT = XKOMV-KAWRT. IF NOT XKOMV-KSTAT IS INITIAL OR XKOMV-KSCHL IS INITIAL. IF AMOUNT IS INITIAL. AMOUNT = XKOMV-KWERT. ENDIF. ENDIF. COM_TAX-AMOUNT = AMOUNT. " Gross Amount

QUANTITY = KOMP-MGLME. COM_TAX-QUANTITY = QUANTITY. " Quantity

IF KOMP-KPOSN <> '999999'. COM_TAX-POS_NO = KOMP-KPOSN. ELSE. IF KOMK-VERSI IS INITIAL. COM_TAX-POS_NO = SPACE. ELSE. COM_TAX-POS_NO = KOMK-VERSI. POSNR(3) = KOMK-VERSI. POSNR+3(3) = '999'. ENDIF. ENDIF.

ASSIGN/DEFAULT TAX_DATE KOMK-FBUDA KOMK-PRSDT. DEFAULT_ON_INITIAL TAX_DATE SY-DATUM.

* Force consumer use tax depending in T007A setting SAVE_XKOMV = XKOMV. "save actual XKOMV-entry LOOP AT XKOMV WHERE KNTYP CA '1234'. T007A-MWSKZ = XKOMV-MWSK1. " get tax code from XKOMV EXIT. ENDLOOP. XKOMV = SAVE_XKOMV. "reset XKOMV entry SELECT SINGLE * FROM T007A WHERE KALSM = T005-KALSM AND MWSKZ = T007A-MWSKZ. IF SY-SUBRC = 0. COM_TAX-TAX_TYPE = T007A-TXIND. "Rental/Lease,Service COM_TAX-EXEMPT_IND = T007A-TXREL. "Tax Relevant Indicator ENDIF.

* Determine decimals for currency CLEAR TCURX. SELECT SINGLE * FROM TCURX WHERE CURRKEY = COM_TAX-CURRENCY. ASSIGN/DEFAULT CURR_DEC TCURX-CURRDEC '002'.

* Determine Jurisdictioncodes for tax calculation PLANT = T001W-WERKS. IF PLANT IS INITIAL. PLANT = KOMP-WERKS. ENDIF. CASE T007A-MWART. WHEN 'A'.* A/R taxes COM_TAX-ACCNT_NO = KOMK-KUNNR. " Customer Account Number COM_TAX-APAR_IND = 'A'. SELECT SINGLE * FROM T001W WHERE WERKS = PLANT. IF SY-SUBRC = 0.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 14: MM Estrutura Do Tax Code

Tax Code - Página : 14

MOVE: T001W-TXJCD TO COM_TAX-TXJCD_SF. ELSE. MOVE: KOMK-TXJCD TO COM_TAX-TXJCD_SF. ENDIF. DEFAULT_ON_INITIAL TXJCD_SF KOMK-TXJCD. MOVE: KOMK-TXJCD TO COM_TAX-TXJCD_ST. WHEN 'V'.* A/P taxes COM_TAX-ACCNT_NO = KOMK-LIFNR. " Vendor Account Number COM_TAX-APAR_IND = 'V'. SELECT SINGLE * FROM LFA1 WHERE LIFNR = KOMK-LIFNR. IF SY-SUBRC = 0. MOVE: LFA1-TXJCD TO COM_TAX-TXJCD_SF. ELSE. MOVE: KOMK-TXJCD TO COM_TAX-TXJCD_SF. ENDIF. DEFAULT_ON_INITIAL TXJCD_SF KOMK-TXJCD. MOVE: KOMK-TXJCD TO COM_TAX-TXJCD_ST. WHEN OTHERS. MESSAGE S874(FS) WITH T007A-MWART. KOMP-PRSOK = SPACE. XKOMV-KINAK = 'X'. XKOMV-FXMSG = '899'. CALL FUNCTION 'SET_ERROR_FLAG'. EXIT. ENDCASE.

* begin of change J1B_0041 (Brazil localization) IF J1B_ACTIVE = 'X' AND EXEMPT_FLAG = SPACE.* fill jurisdiction-code for external customers or vendors CASE T007A-MWART. WHEN 'A'.* A/R taxes IF KOMK-KUNNR <> SPACE. CALL FUNCTION 'J_1BFOREIGN_JURISDICTION' EXPORTING BR_COUNTRY = KOMK-ALAND FOREIGN_COUNTRY = KOMK-LAND1 CHANGING TAX_JCD = COM_TAX-TXJCD_ST EXCEPTIONS FOREIGN_REGION_NOT_FOUND = 4. IF SY-SUBRC = 4. MESSAGE S316(8B) WITH KOMK-LAND1 RAISING TAX_DETERMINATION_ERROR. EXIT. ENDIF. ENDIF. WHEN 'V'.* A/P taxes IF KOMK-LIFNR <> SPACE. CALL FUNCTION 'J_1BFOREIGN_JURISDICTION' EXPORTING BR_COUNTRY = KOMK-ALAND FOREIGN_COUNTRY = LFA1-LAND1 CHANGING TAX_JCD = COM_TAX-TXJCD_SF EXCEPTIONS FOREIGN_REGION_NOT_FOUND = 4. IF SY-SUBRC = 4. MESSAGE S316(8B) WITH LFA1-LAND1

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 15: MM Estrutura Do Tax Code

Tax Code - Página : 15

RAISING TAX_DETERMINATION_ERROR. EXIT. ENDIF. ENDIF. ENDCASE. ENDIF.* end of change J1B_0041 (Brazil localization)

* begin of change J1B_0041 (Brazil localization)* process check only if Brazil is not active IF J1B_ACTIVE = SPACE.* end of change J1B_0041 (Brazil localization) IF KOMK-TXJCD = T001-TXJCD. EXEMPT_FLAG = 'X'. ENDIF.* begin of change J1B_0041 (Brazil localization) ENDIF.* end of change J1B_0041 (Brazil localization)

SAVE_COM_TAX = COM_TAX.

* Try to fill product code from table T007A SELECT SINGLE * FROM TTXP WHERE XEXTN = TTXD-XEXTN AND PROCD = T007A-PROCD. IF SY-SUBRC = 0. COM_TAX-PROD_CODE = TTXP-XPRCD. ENDIF.* PERFORM FIND_EXT_PRODUCT_CODE(RFYTXPCD)* USING KOMP-MATNR TTXD-XEXTN* CHANGING EXT_PRODCD.

* Copy XKOMV to XXKOMV as argument for user-exit REFRESH XXKOMV. SAVE_XKOMV = XKOMV. LOOP AT XKOMV. XXKOMV = XKOMV. APPEND XXKOMV. ENDLOOP. XKOMV = SAVE_XKOMV.* User exit for COM_TAX CALL CUSTOMER-FUNCTION '001' EXPORTING I_KOMK = KOMK I_KOMP = KOMP I_T007A = T007A I_TTXD = TTXD TABLES T_KOMV = XXKOMV CHANGING C_COM_TAX = COM_TAX.

DEFAULT_ON_INITIAL DIVISION KOMK-GSBER. " Business Area DEFAULT_ON_INITIAL TXJCD_POA COM_TAX-TXJCD_SF. " Point of order acc DEFAULT_ON_INITIAL TXJCD_POO COM_TAX-TXJCD_ST. " Point of order ori

IF COM_TAX-TXJCD_SF IS INITIAL. MESSAGE S882(FS) RAISING TAX_DETERMINATION_ERROR. ENDIF.

IF COM_TAX-TXJCD_ST IS INITIAL. MESSAGE S883(FS) RAISING TAX_DETERMINATION_ERROR.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 16: MM Estrutura Do Tax Code

Tax Code - Página : 16

ENDIF.

* Following fields should not be manipulated by the user-exit COM_TAX-CLIENT = SAVE_COM_TAX-CLIENT. COM_TAX-COMP_CODE = SAVE_COM_TAX-COMP_CODE. COM_TAX-COUNTRY = SAVE_COM_TAX-COUNTRY. COM_TAX-DOC_NUMBER = SAVE_COM_TAX-DOC_NUMBER. COM_TAX-POS_NO = SAVE_COM_TAX-POS_NO. COM_TAX-AMOUNT = SAVE_COM_TAX-AMOUNT. COM_TAX-CURRENCY = SAVE_COM_TAX-CURRENCY. COM_TAX-CURR_DEC = SAVE_COM_TAX-CURR_DEC. COM_TAX-TAX_DATE = SAVE_COM_TAX-TAX_DATE. COM_TAX-TXJCD_L1 = SAVE_COM_TAX-TXJCD_L1. COM_TAX-TXJCD_L2 = SAVE_COM_TAX-TXJCD_L2. COM_TAX-TXJCD_L3 = SAVE_COM_TAX-TXJCD_L3. COM_TAX-TXJCD_L4 = SAVE_COM_TAX-TXJCD_L4.

* begin of change J1B_0014 (Brazil localization) IF J1B_ACTIVE = 'X'. CALL FUNCTION 'J_1BNF_TAX_DATA_RESET_PART' EXPORTING KNUMV = KOMK-KNUMV KPOSN = KOMP-KPOSN BUZEI = KOMK-VERSI. ENDIF.* end of change J1B_0014 (Brazil localization)

IF COM_TAX-AMOUNT NE 0 AND EXEMPT_FLAG <> 'X'.

IF KOMK-HWAER = SPACE. KOMK-HWAER = T001-WAERS. ENDIF. IF KOMK-HWAER <> KOMK-WAERK.* begin of change J1B_0041 (Brazil localization)* process message only if Brazil is not active IF J1B_ACTIVE = SPACE.* end of change J1B_0041 (Brazil localization) CALL FUNCTION 'CUSTOMIZED_MESSAGE' EXPORTING I_ARBGB = 'FS' I_DTYPE = 'E' I_MSGNR = '885'.* begin of change J1B_0041 (Brazil localization) ENDIF.* end of change J1B_0041 (Brazil localization) ENDIF.

* Determine DESTINATION for external system ON CHANGE OF TTXD-XEXTN. SELECT SINGLE * FROM TTXC WHERE XEXTN = TTXD-XEXTN AND EVENT = 'TAX'. IF SY-SUBRC <> 0. RAISE RFCDEST_NOT_FOUND. ELSE. TRANSLATE TTXC-RFCDEST TO UPPER CASE. IF TTXC-FUNCNAME IS INITIAL. TTXC-FUNCNAME = 'RFC_CALCULATE_TAXES'. ENDIF. ENDIF. ENDON.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 17: MM Estrutura Do Tax Code

Tax Code - Página : 17

* Let the external system do the calculation CLEAR: COM_TAX-TAXAMT1, COM_TAX-TAXAMT2, COM_TAX-TAXAMT3, COM_TAX-TAXAMT4, COM_TAX-TAXAMT5, COM_TAX-TAXAMT6, COM_TAX-TAXAMT7, COM_TAX-TAXAMT8, COM_TAX-TAXAMT9, COM_TAX-TAXAMOV, COM_TAX-TAXAMT0. CLEAR: COM_TAX-TAXPCT1, COM_TAX-TAXPCT2, COM_TAX-TAXPCT3, COM_TAX-TAXPCT4, COM_TAX-TAXPCT5, COM_TAX-TAXPCT6, COM_TAX-TAXPCT7, COM_TAX-TAXPCT8, COM_TAX-TAXPCT9, COM_TAX-TAXPCOV, COM_TAX-TAXPCT0.

COM_TAX-UPDATE_IND = ' '. " Don't Update Tax Registr

* begin of change J1B_0014 (Brazil localization) DATA: BR_KOMV LIKE KOMV. "XKOMV also contains Index ! BR_KOMV = XKOMV. IF J1B_ACTIVE = 'X'.* fill BR_KONP REFRESH BR_KONP. LOOP AT XKONP. BR_KONP = XKONP-KONP. APPEND BR_KONP. ENDLOOP. CALL FUNCTION 'J_1BCOMPLETE_TAX_DATA' EXPORTING I_KOMK = KOMK I_KOMP = KOMP I_T007A = T007A I_KOMV = BR_KOMV TABLES T_KOMV = XXKOMV T_KONP = BR_KONP.* changing* c_tax = com_tax. ENDIF.* end of change J1B_0014 (Brazil localization)

CALL FUNCTION TTXC-FUNCNAME DESTINATION TTXC-RFCDEST EXPORTING TAX_DATA = COM_TAX IMPORTING TAX_RESULT = COM_TAX TAX_ERR = COM_ERR EXCEPTIONS COMMUNICATION_FAILURE = 01 SYSTEM_ERROR = 02.

IF SY-SUBRC NE 0. MESSAGE S870(FS). KOMP-PRSOK = SPACE. XKOMV-KINAK = 'X'. XKOMV-FXMSG = '899'. CALL FUNCTION 'SET_ERROR_FLAG'. EXIT. ELSEIF COM_ERR-RETCODE <> 0. MESSAGE S872(FS) WITH COM_ERR-ERRCODE COM_ERR-ERRMSG. KOMP-PRSOK = SPACE. XKOMV-KINAK = 'X'. XKOMV-FXMSG = '899'. CALL FUNCTION 'SET_ERROR_FLAG'. EXIT.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 18: MM Estrutura Do Tax Code

Tax Code - Página : 18

ENDIF. ELSE. " gross amount is zero COM_TAX-TAXAMT0 = 0. " Federal Tax Amount COM_TAX-TAXAMT1 = 0. " State Tax Amount COM_TAX-TAXAMT2 = 0. " County Tax Amount COM_TAX-TAXAMT3 = 0. " City/Local Tax Amount COM_TAX-TAXAMT4 = 0. " Distict Tax Amount COM_TAX-TAXAMT5 = 0. " Secondary City Tax Amount COM_TAX-TAXAMT6 = 0. " Other Tax Amount COM_TAX-TAXAMT7 = 0. " Other Tax Amount COM_TAX-TAXAMT8 = 0. " Other Tax Amount COM_TAX-TAXAMT9 = 0. " Other Tax Amount COM_TAX-TAXAMOV = 0. " Total overall Tax Amount

COM_TAX-TAXPCT0 = 0. " Federal Tax Rate COM_TAX-TAXPCT1 = 0. " State Tax Rate COM_TAX-TAXPCT2 = 0. " County Tax Rate COM_TAX-TAXPCT3 = 0. " City/Local Tax Rate COM_TAX-TAXPCT4 = 0. " District Tax Rate COM_TAX-TAXPCT5 = 0. " Secondary City Tax Rate COM_TAX-TAXPCT6 = 0. " Other Tax Rate COM_TAX-TAXPCT7 = 0. " Other Tax Rate COM_TAX-TAXPCT8 = 0. " Other Tax Rate COM_TAX-TAXPCT9 = 0. " Other Tax Rate COM_TAX-TAXPCOV = 0. " Total overall Tax Rate ENDIF.

* Save in external memory IF KOMK-VRGAR <> SPACE AND KOMP-KPOSN = '999999'. "Called via RW-IN - dont save in memory ELSE. CALL FUNCTION 'US_TAXES_UPDATE_TAX_MEMORY' EXPORTING I_KPOSN = POSNR I_MWSKZ = MWSKZ I_XEXTN = TTXD-XEXTN I_TAXIN = COM_TAX. ENDIF.

* Fill global workfields from internal structure TAXAMT0 = COM_TAX-TAXAMT0. TAXAMT1 = COM_TAX-TAXAMT1. TAXAMT2 = COM_TAX-TAXAMT2. TAXAMT3 = COM_TAX-TAXAMT3. TAXAMT4 = COM_TAX-TAXAMT4. TAXAMT5 = COM_TAX-TAXAMT5. TAXAMT6 = COM_TAX-TAXAMT6. TAXAMT7 = COM_TAX-TAXAMT7. TAXAMT8 = COM_TAX-TAXAMT8. TAXAMT9 = COM_TAX-TAXAMT9.

TAXPCT0 = COM_TAX-TAXPCT0. TAXPCT1 = COM_TAX-TAXPCT1. TAXPCT2 = COM_TAX-TAXPCT2. TAXPCT3 = COM_TAX-TAXPCT3. TAXPCT4 = COM_TAX-TAXPCT4. TAXPCT5 = COM_TAX-TAXPCT5. TAXPCT6 = COM_TAX-TAXPCT6. TAXPCT7 = COM_TAX-TAXPCT7. TAXPCT8 = COM_TAX-TAXPCT8. TAXPCT9 = COM_TAX-TAXPCT9.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 19: MM Estrutura Do Tax Code

Tax Code - Página : 19

* begin of change J1B_0020 (Brazil localization) IF J1B_ACTIVE = 'X'. TAXBAS1 = COM_TAX-TAXBAS1. TAXBAS2 = COM_TAX-TAXBAS2. TAXBAS3 = COM_TAX-TAXBAS3. TAXBAS4 = COM_TAX-TAXBAS4. TAXBAS5 = COM_TAX-TAXBAS5. TAXBAS6 = COM_TAX-TAXBAS6. TAXBAS7 = COM_TAX-TAXBAS7. TAXBAS8 = COM_TAX-TAXBAS8. TAXBAS9 = COM_TAX-TAXBAS9. ENDIF.* end of change J1B_0020 (Brazil localization)

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 20: MM Estrutura Do Tax Code

Tax Code - Página : 20

301 IPI for the industrialization case (301 + 302 may occur together)

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_301 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*FORM FRM_KONDI_WERT_301.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT1. XKWERT = TAXAMT1. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT1. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS1 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 21: MM Estrutura Do Tax Code

Tax Code - Página : 21

302 IPI for the consumption case (301 + 302 may occur together)

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_302 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_302.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT2. XKWERT = TAXAMT2. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT2. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS2 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 22: MM Estrutura Do Tax Code

Tax Code - Página : 22

303 ICMS for all cases

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_303 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_303.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT3. XKWERT = TAXAMT3. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT3. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS3 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 23: MM Estrutura Do Tax Code

Tax Code - Página : 23

304 Substituicao Tributaria

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_304 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_304.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT4. XKWERT = TAXAMT4. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT4. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS4 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 24: MM Estrutura Do Tax Code

Tax Code - Página : 24

305 ICMS complement (in MM) and ICMS Zona Franca discount (in SD)

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_305 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_305.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT5. XKWERT = TAXAMT5. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT5. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS5 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 25: MM Estrutura Do Tax Code

Tax Code - Página : 25

306 ISS (only calculated in SD)

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_306 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_306.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT6. XKWERT = TAXAMT6. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT6. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS6 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 26: MM Estrutura Do Tax Code

Tax Code - Página : 26

307 ICMS Sub.Trib. on freight offset

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_307 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_307.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT7. XKWERT = TAXAMT7. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT7. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS7 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti

Page 27: MM Estrutura Do Tax Code

Tax Code - Página : 27

309 Zero value

*---------------------------------------------------------------------** FORM FRM_KONDI_WERT_309 **---------------------------------------------------------------------** Set tax values and percentage into condition structure and ** fill tax base amount **---------------------------------------------------------------------*

FORM FRM_KONDI_WERT_309.

CHECK KOMK-TRTYP NE 'A'.* take over rates and values from internal fields IF XKOMV-KBETR NE 0. XKOMV-KWERT = TAXAMT9. XKWERT = TAXAMT9. IF XKOMV-KAWRT NE 0. XKOMV-KBETR = TAXPCT9. ENDIF. ELSE.* reset fields for zero percent tax codes XKOMV-KBETR = 0. XKWERT = 0. ENDIF.

TAXBAS9 = XKOMV-KAWRT.

ENDFORM.

SAP Brasil - Fone: (011) 5503-2400 Marcos Roberto Pinotti