Problema con proceso de aprobació
Estoy intentando validar el margen de ganancia por cada línea del documento en la Oferta de Ventas, considerando que cada producto maneja un margen diferente según su grupo.
El objetivo es que, cuando alguna línea no cumpla con el margen mínimo definido, el documento sea enviado automáticamente a proceso de autorización.
Para eso definí esta consulta, pero no me funciona por el filtrado, la consulta no tira error pero tampoco hace que se dispare la validación:
SELECT DISTINCT ‘TRUE’
FROM OQUT H
INNER JOIN QUT1 L ON H.DocEntry = L.DocEntry
INNER JOIN OITM I ON L.ItemCode = I.ItemCode
INNER JOIN OITB G ON I.ItmsGrpCod = G.ItmsGrpCod
WHERE H.DocNum = $[$149.8.number]
AND ISNULL(L.Price, 0) <> 0
AND ISNULL(I.AvgPrice, 0) <> 0
AND L.Price <
I.AvgPrice / (1 - (
CASE
WHEN G.ItmsGrpNam = ‘Artículos’ THEN 10
ELSE 0
END / 100.0
))
Aquí dice que es su primer consulta, le recomiendo que para una mejor respuesta pase primero por Presentaciones , de no hacerlo corre el riesgo que de las ideas o propuestas que reciba sean opuestas o alejadas de lo que pretende encontrar. Bajo esa idea mi respuesta es posible que no le sirva.
Revisando su consulta, parece que busca en las tablas FROM OQUT, pero en el momento de “Crear”, creo que los datos aún están “en el aire”. Por eso, al filtrar por H.DocNum, la consulta no encuentra nada y devuelve el “vacío”, lo que se interpreta como un “No requiere autorización”.
Tal vez deba comparar el precio directamente desde la matriz de la OV activa.
Le puedo compartir una idea, pero es eso, una idea. Deberá personalizar para que funcione correctamente:
SELECT 'TRUE'
FROM DUMMY
WHERE $[$38.11.NUMBER] > 0
AND EXISTS (
SELECT 1
FROM OITM I
INNER JOIN OITB G ON I.ItmsGrpCod = G.ItmsGrpCod
WHERE I.ItemCode = $[$38.1.0]
AND CAST($[$38.11.NUMBER] AS DECIMAL(19,6)) < (
I.AvgPrice / (1 - (
CASE
WHEN G.ItmsGrpNam = 'Artículos' THEN 10
ELSE 0
END / 100.0
))
)
)
A veces el SAP lee los valores de la pantalla como texto; entonces si convierte el precio a un DECIMAL intentamos que no falle.
Recuerde, el campo AvgPrice debe estar actualizado, de lo contrario, cualquiera a 0 lo validará como falso.
No leer:
Adicionalmente, la forma en la que escribimos es una forma de presentación. Espero que no me lo tome a mal, sin embargo algunas frases de apertura y cortesía tienen mejor aceptación e incrementa sus posibilidades de recibir más respuestas. Es un foro donde aún responden personas y ocasionalmente la IA @csapBot
Es con lo que puedo participar de su consulta.
Saludines