terça-feira, 30 de junho de 2015

DEBUG - PRICING

  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