A resposta para a vida, a pricing e tudo mais… xkomv_bewerten
A resposta para a vida, a pricing e tudo mais… xkomv_bewerten
Não, não é o 42 a resposta. É XKOMV_BEWERTEN a resposta para tudo, e no caso do meu exemplo o número é 198. Pega a visão aí embaixo.
“De onde vem o valor do passo 198 (Base líquida) da pricing RVABRA”?
A pergunta do milhão que me fizeram foi essa. E porquê foi feita? Porque esse passo é meio diferentão mesmo, não tem FromTo, não tem subtotal e tbm não tem fórmula na pricing, mas surge um valor ali.
Eu não tinha nem idéia da resposta mas fiquei curioso e fui atrás da razão.
Como que eu analisei isso? fui atrás do XKOMV_BEWERTEN que eu já conhecia… Bewerten é algo como avaliar ou atribuir um valor, nesse caso faz sentido pois esse form lê a XKOMV e atribuir os valores para as condições da pricing na XKOMV.
Aqui está o glorioso ponto do código onde a mágica começa:
Dentro desse XKOMV_BEWERTEN tem um loop na estrutura XKOMV, essa estrutura XKOMV vai ter uma linha para cada condição e para cada linha de subtotal da pricing.
Então nesse ponto você pode cuidar pelo xkomv-kschl ou pelo xkomv-stunr (passo da pricing) e ver qual condição está sendo processado, no caso do exemplo o STUNR 198 é o que interessa.
Debugando esse form achei o ponto onde o sistema atribui o valor KWERT (abreviação para Konditionswert, literalmente “valor da condição) para a respectiva linha 198 da XKOMV, dentro do form xkomv_kwert_ermitteln (ermitteln aqui significa determinar):
Nesse form o sistema tem IF que determina que no caso de não haver KSCHL (chave de condição) na respectiva linha então o sistema utiliza o valor acumulado que está na variável ZWISU.
A nota 834174 explica bem o que é o ZWISU, mais ou menos uma variável que utiliza a última condição de preço e vai subtraindo/somando os encargos e descontos após esse preço.
O ZWISU é movimentado para esse arbfeld (uma variável tipo uma work area) e posteriormente é movido para o XKOMV-KWERT que é o valor da condição.
E assim está explicado de onde sai o valor do passo 198 da pricing RVABRA.
Outras utilizações para essa mesma estratégia de análise
A nota 900089 explica também essa lógica do XKOMV_BEWERTEN e vale a pena a leitura para quem quer se aprofundar no assunto de pricing, pois eu foquei mais no valor KWERT do que nas outras informações (escalas, bases ou impostos). Essa estratégia explicou como o valor da linha 198 foi determinado, porém não precisa parar por ai. Utilizando essa mesma lógica de análise é possível analisar o comportamento de QUALQUER CONDIÇÃO da pricing, mas claro que não é tão barbadinha assim.
Esse é o ponto que começa o processamento apenas, então a maior parte da lógica vem depois e no caso de pricing BR é muito mais complicada.
O que vai ser diferente nas outras condições é que se tiver FromTo, subtotal ou fórmula daí o processamento da lógica vai ser mais complexo e você vai ter que analisar mais código para determinar como o valor foi obtido.
No ano passado fiz um treinamento de 8 horas só sobre como debugar pricing e analisar erros de pricing, então posso dizer que o tema é muito longo e hoje vou encerrar por aqui.
Valeu Gurizada,
Renan Correa
Quer ficar ligado nas novidades de localização? Entra no grupo da S4CN no Telegram e segue a gente no canal do Youtube
Mais infos sobre a localização Brasil no ERP, direto da sap, vocês podem conferir no SAP community na tag de S/4HANA logistics for Brazil
Outros posts sobre Localização você pode conferir filtrando pela categoria NFE/CTE ou Localização BR Geral.
Outros posts sobre TDF você pode conferir filtrando pela categoria TDF/DRC.
Vou testar hj mesmo !!
Pode testar, essa é garantida… inclusive se achar alguma outra idéia legal de analisar posta aí depois tbm, talvez existam jeitos mais fáceis…
Foi longe na investigação….