129782419-debugando-taxbrj
TRANSCRIPT
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
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
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).
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.
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 **---------------------------------------------------*
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.