Agora pergunto. ... quem já teve dificuldade em debugar a PRICING (MM/SD) .. duvido q não teve um abap que já não passou por essa experiência e viu aquele código do inferno... e que inferno de código...
Essa dica não vai resolver seu problema, mas pelo menos dá para acompanhar com o funcional o cálculo de impostos durante a pricing.
Ultimamente o que mais debugo é pricing de MM .. a função todo mundo conhece PRICING..
para debugar vc tem que ter em mente que a base de cálculo de imposto é calculado 1 vez,quando entra no pedido, ou quando vc altera o valor, ou recalcula o pedido..
os impostos são calculados na classe CL_TAX_CALC_BR_MM método CALCULATE
que possui o código abaixo...
* Read all tax rates, flags, laws, etc. from
* pricing procedure table (XKOMV)
get_tax_data( ).
* Read special conditions
get_special_conditions( ).
* Determine the taxes that have to be calculated
determine_active_taxes( ).
* Determine which tax groups are already included in net price
determine_taxes_in_price( ).
* Determine tax control data (which usage etc.)
fill_tax_control( ). "1451388 1706673
* Determine additional rates that have to be added as extra term
* in the formula for the tax calculation base.
determine_additional_rate( ).
*Determine net value for aditinal taxes: PIS, Cofins, ISS. Determine net for IPI only MM
determine_adjusted_net( ). "1343532 1451388
* Derive tax data that depend on the actual tax case
* (e.g. normal invoice or conhecimento)
add_tax_data( ).
* Calculate taxes and store results in class members
calculate_taxes( ).
===============
O método get_tax_data( ).
ele verifica a configuração na J1BTAX e associa a configuração dos impostos com as condições da pricing.
Os outros métodos são adicionais e fazem quase a mesma coisa.
O metodo CALCULATE_TAXES()
É o coração do cálculo do valor dos impostos, ao entrar nesse método é calculado desde a base de cálculo dos impostos até o ICMS, PIS, COFINS, etc..
============================
Para descobrir de qual tabela A* foi selecionado o valor do imposto, tem que debugar a função SD_COND_ACCESS dinamicamente é montado a seleção de qual tabela e qual condição para selecionar o valor determinado para uma condição KSCHL.
Essa função é executado tanto para processos de SD e MM.
Para
Nenhum comentário:
Postar um comentário