129782419-debugando-taxbrj

6
www.localizationforum.com Introdução Este manual tem por finalidade auxiliar consultores a debugar a função J_1BCALCULATE_TAXES, pertencente ao pacote J1BA de localização Brasil no sistema SAP ERP. Público-alvo Consultores que trabalham com localização Brasil nos módulos de MM/SD e FI. Pré-requisitos ¾ Conhecimentos intermediários de localização Brasil ¾ Conhecimentos de ABAP ¾ Conhecimentos de debug Debugando a função A seguir são apresentadas as diferentes seções da função, com a respectiva explicação sobre a finalidade de cada uma delas e como identificá-las no código: 1. Preparação dos dados relevantes para cálculo de impostos por aplicação de chamada: *----------------------------------------------------------------------* * fill application dependent parameters * *----------------------------------------------------------------------* Î Aplicações de chamada: MM-IM, MM-IV, MM-PUR-PO, MM-SRV ou SD. Î Dados relevantes: parâmetros-chave (e.g. fornecedor, cliente, NCM, etc) 2. Preparação dos impostos a serem calculados a. Determinação das características dos impostos ativos (tabela taxes[]) PERFORM determine_active_tax_types TABLES taxes. Î Taxes[] é preenchida a partir das informações das condições ativas no IVA, da tabela J_1BAJV e da chave de contas atribuída no procedimento de cálculo Î Taxes[] dirá quais as características dos impostos a serem calculados (É dedutível? É um serviço? Está Incluso no preço líquido? É retido na fonte?) Etc...) b. Seleção dos impostos ativos (tabela calc[]) PERFORM determine_calc_taxes

Upload: rivalino-pereira

Post on 24-Apr-2015

345 views

Category:

Documents


42 download

TRANSCRIPT

Page 1: 129782419-Debugando-TAXBRJ

www.localizationforum.com

IntroduçãoEste manual tem por finalidade auxiliar consultores a debugar a função J_1BCALCULATE_TAXES,pertencente ao pacote J1BA de localização Brasil no sistema SAP ERP.

Público-alvoConsultores que trabalham com localização Brasil nos módulos de MM/SD e FI.

Pré-requisitos Conhecimentos intermediários de localização Brasil Conhecimentos de ABAP Conhecimentos de debug

Debugando a funçãoA seguir são apresentadas as diferentes seções da função, com a respectiva explicação sobre afinalidade de cada uma delas e como identificá-las no código:

1. Preparação dos dados relevantes para cálculo de impostos por aplicaçãode chamada:*----------------------------------------------------------------------** fill application dependent parameters **----------------------------------------------------------------------* Aplicações de chamada: MM-IM, MM-IV, MM-PUR-PO, MM-SRV ou SD.

Dados relevantes: parâmetros-chave (e.g. fornecedor, cliente, NCM,etc)

2. Preparação dos impostos a serem calculados

a. Determinação das características dos impostos ativos(tabela taxes[])

PERFORM determine_active_tax_typesTABLES taxes.

Taxes[] é preenchida a partir das informações das condições ativas noIVA, da tabela J_1BAJV e da chave de contas atribuída no procedimento decálculo

Taxes[] dirá quais as características dos impostos a serem calculados(É dedutível? É um serviço? Está Incluso no preço líquido? É retido nafonte?) Etc...)

b. Seleção dos impostos ativos(tabela calc[])

PERFORM determine_calc_taxes

Page 2: 129782419-Debugando-TAXBRJ

www.localizationforum.com

TABLES taxesUSING calc.

Calc[] é preenchida a partir do conteúdo da tabela interna Taxes[](2.a.)

Calc[] dirá quais partes da função J_1BCALCULATE_TAXES deverão serprocessadasem função do imposto a ser calculado

3. Leitura dos parâmetros de cálculo dos impostos ativos por tipo de imposto(perform determine_X_parameters, onde ‘X’ é o nome do imposto)

Determinação da alíquota, base, direito fiscal e outras informaçõesrelevantesde cada imposto.

Calc[] (2.b.) dirá quais partes da função J_1BCALCULATE_TAXES deverãoserprocessadas em função do imposto a ser calculado

a. Parâmetros de IPI

PERFORM determine_ipi_parameters

b. Parâmetros de ICMS

IF calc-icms = 'X'.PERFORM determine_icms_parameters

c. Parâmetros de ICMS Complementar

IF calc-icms_comp = yes.…* get ICMS rate for SHIP_FROM = SHIP_TOPERFORM determine_icms_parameters USING cf-caller

d. Parâmetros de Substituição Tributária ICMS (normal e sobre frete)

IF calc-icms_st = 'X' ORcalc-icms_freight_st = 'X'.

e. Parâmetros de Substituição Tributária (somente frete)

IF calc-icms_freight = 'X' ORcalc-icms_freight_st = 'X'.

f. Parâmetros do ISSQN LC116 (Imposto Sobre Serviço de Qualquer Natureza)(ver nota 747607)

o ISS no Local do Prestador do Serviço (Fornecedor)

IF calc-issp = 'X'.PERFORM determine_issnew_parameters

Page 3: 129782419-Debugando-TAXBRJ

www.localizationforum.com

o ISS no Local do Tomador do Serviço (Cliente)

IF calc-isss = 'X'.PERFORM determine_issnew_parameters

g. Parâmetros de PIS(ver nota 747607)

PERFORM determine_pis_parameters

h. Parâmetros de COFINS(ver nota 747607)

PERFORM determine_cofins_parameters

i. Parâmetros de IRF (Imposto Retido na Fonte, inclusive ISSQN retido nafonte)(ver nota 747607)

PERFORM determine_wht_parameters

4. Cálculo dos impostos ativos

*----------------------------------------------------------------------** start of calculation **----------------------------------------------------------------------*

os parâmetros obtidos no passo 3 são processados em conjunto para ocálculo dos valores dos impostos.

a. Determinação dos impostos inclusos no preço líquido(ver nota 747607)(Leitura da view J_1BKONV em função do procedimento de cálculo de preço utilizado no documento dereferência)

PERFORM determine_additional_rate…CHANGINGlv_additional_ratelv_additional_base

lv_additional_rate e lv_additional_base armazena as alíquotas/basesde PIS/COFINS quando não inclusos no preço líquido, para que estescomponham a base de ICMS. Caso seja um serviço, lv_additional_rate elv_additional_base armazenam as alíquotas/bases de PIS/COFINS e ISS paraa composição da base de cálculo do serviço.

b. Cálculo de ICMS, IPI e ICMS Complementar/DIFAL* de acordo com a utilizaçãodo material.

* somente consumo/ativo (ver notas 679372 e 844630)

(a utilização do IVA – definida na tabela J_1BTXMMCV (4.6C) ou J_1BTAXCODEV (4.7+) –, combinadacom a utilização do material – definida no registro mestre – irá determinar qual fórmula de cálculo seráutilizada para cada tipo de imposto. Influenciam o cálculo também outros parâmetros como Convênio 100,descontos e o processo. No processo de transferência para consumo, por exemplo, não há cálculo deICMS).

Page 4: 129782419-Debugando-TAXBRJ

www.localizationforum.com

o Industrialização/Revenda

IF cf-usage = c_usage-ind. "industrialization*........ Usage is Industrialization ..................................*

o Consumo/Ativo

ELSEIF cf-usage = c_usage-con. "consumption*........ Usage is Consumption ........................................*

c. Cálculo de Substituição Tributária ICMS (inclusive sobre frete)

*----------------------------------------------------------------------** calculate Substituicao Tributaria **----------------------------------------------------------------------*

IF calc-icms_st = yes ANDsubtrib-sur_type <> c_subtrib-no_calc.

Para que haja cálculo de S.T., é preciso que as seguintes condiçõessejam satisfeitas:

1) a condição ICS1 ou ICS2 deve estar ativa no IVA

2) deve ser criada uma entrada em uma das J_1BTXST*, (com o campo"Grp.SubF" vazio para MM). Além disso, deve-se escolher um "Método deCálculo" adequado, diferente de “no-calculation”.

3) para compras de material com uso consumo, a seguinte lógica adicionalse aplica:

“a alíquota de ICMS interna do estado de destino deve ser superior àalíquota interestadual dos estados envolvidos.”

Exemplo:

se o fornecedor está em MG e o comprador está em SP, a alíquota SP-SPdeve ser superior à alíquota MG-SP.

Se essa condição for satisfeita, o valor do ICMS substituído seráexatamente o valor do Complemento ICMS.

Já se o processo ocorrer dentro do mesmo estado, não haverá SubstituiçãoTributária, uma vez que a figura da "sobretaxa" não se aplica no caso deconsumo.

d. Processamento especial para compra de fornecedores equiparados à indústria

(“IPI-Split” é ativado marcando-se o flag ‘Tax Split’ (LFA1-IPISP) no registro mestre de fornecedor eativando-se as condições IPI1 e IPI2 no IVA)

IF cf-ipi_split = yes ANDcalc-ipi = yes.

e. Definição da base de cálculo de PIS/COFINS especial de acordo com autilização do material e definições da filial.

Page 5: 129782419-Debugando-TAXBRJ

www.localizationforum.com

(se utilização = revenda e filial = não contribuinte de IPI nota 947218 se utilização = revenda e filial =Contribuinte de IPI nota 1088901)

IF add_tax_data-mtuse = c_usage-res "947218 AND cf-caller <> c_caller-sd. "947218* base id w/o IPI "1063650 if add_tax_data-ipicontributor = yes. "1063650

lv_base_pico = iic. "1063650 else. "1063650

lv_base_pico = iicip. "947218 endif. "1063650 ENDIF. "947218

f. Cálculo de PIS

IF calc-pis = yes.…PERFORM calculate_pis

g. Cálculo de COFINS

IF calc-cofins = yes.…PERFORM calculate_cofins

h. Cálculo do ISSQN (tanto no Prestador quanto no Tomador do Serviço)

IF calc-issp = yes OR calc-isss = yes.PERFORM calculate_issnew

i. Cálculo da Base dos IRF(ver nota 779617)

IF calc-wht = yes.* Base amount on NF for all WHT types = WHT calculation base* = Net + all taxes excluding SubTrib

j. Cálculo do Valor dos IRF

PERFORM calculate_wht

5. Armazenamento dos direitos fiscais

a. ICMS, IPI, PIS e COFINS

*----------------------------------------------------------------------** table TAX_LAWS **----------------------------------------------------------------------*

6. Arredondamento dos valores calculados(ver nota 701240)

*---------------------------------------------------** R O U N D I N G O F B A S E S **---------------------------------------------------*

Page 6: 129782419-Debugando-TAXBRJ

www.localizationforum.com

7. Mapeamento dos valores para a Nota Fiscal e para o documento contábil

*----------------------------------------------------------------------** TAX_RESULT and table NF_VALUES **----------------------------------------------------------------------*

Os valores fiscais são armazenados na tabela interna NF_VALUES[], queé atualizada a cada chamada da rotina perform fill_nf_data.

* process all tax types / tax groupsLOOP AT taxes.CASE taxes-group.…PERFORM fill_nf_data.

Os valores contáveis são armazenados numa área de memória com o mesmonome da fórmula utilizada do tipo de condição definida na TAXBRJ (e.g.ICM1 = 523)

PERFORM fill_tax_results.…FORM fill_tax_result…* assign values* CASE taxes-formula. "787104CASE taxes_formula. "787104* WHEN 301.WHEN 521.tax_result-taxpct1 = corr_rate.tax_result-taxamt1 = char_amount.tax_result-taxbas1 = char_base.

Por fim, os dados são exportados para áreas de memória globais*(NF_VALUES, NF_LAWS e NF_ICMS_ROUNDING) que serão usada pela aplicaçãode chamada para mapear os valores para a tela correspondente da NotaFiscal.* ou seja, áreas válidas para toda a LUW (Logical Unit of Work)

PERFORM export_nf_values.…FORM export_nf_values.EXPORT nf_values nf_laws nf_icms_rounding TO MEMORY ID c_id_nf.ENDFORM.