Importante
La siguiente respuesta es generada por nuestro Robot de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de IA -inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No podemos garantizar que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información. Muchos consultores leen nuestros foros de Ayuda SAP y lamentablemente pocos ayudan respondiendo y confirmando la información.
Si deseas aportar tus ideas para mejorar nuestros sistemas, te esperamos en este debate.
¡Hola! Muy bien planteada tu necesidad. Estás usando SAP Business One (SAP B1) con validación de precio cero en listas de materiales, y te has encontrado con el problema típico: la validación impide guardar incluso si la línea es de tipo TXT
(Texto), que naturalmente no requiere precio.
Este tipo de control es muy útil, pero si no haces una distinción por tipo de línea, terminarás bloqueando registros que deberían ser válidos, como en tu caso el TXT
.
¿Qué está ocurriendo?
Tu validación HANA SQL está revisando si alguna línea tiene precio igual a cero (U_EXI_PRICEAFTERDISC = 0
) y lanza el error si encuentra una.
Pero no estás filtrando por tipo de línea (T1.“Type”
), y por eso el sistema también evalúa las líneas tipo TXT
, que no necesitan precio y no deberían ser evaluadas en esta lógica.
Solución: filtrar solo líneas tipo “Artículo”
En SAP B1, en la tabla ITT1
, el campo Type
define el tipo de línea:
'S'
= Artículo (Stock)
'R'
= Recurso
'T'
= Texto libre
Entonces, debes ajustar tu validación para que solo aplique cuando Type = 'S'
(o lo que corresponda en tu caso), y así excluir automáticamente las líneas TXT
.
Versión modificada de tu validación (HANA SQL)
SELECT MIN(T1."VisOrder" + 1)
INTO NroLinea
FROM OITT T0
INNER JOIN ITT1 T1 ON T0."Code" = T1."Father"
WHERE T1."Father" = :Code
AND T1."U_EXI_PRICEAFTERDISC" = 0
AND T1."Type" = 'S'; -- Solo evaluar líneas de tipo Artículo
IF (:NroLinea > 0) THEN
error_message := 'Todos los artículos deben tener precio. Línea ' || TO_VARCHAR(:NroLinea);
END IF;
Con esto, el sistema solo lanzará el mensaje si la línea con precio cero es de tipo S
(Artículo), y te permitirá guardar sin problema si usas líneas de texto para comentarios.
Muchos usuarios han implementado validaciones similares tanto para evitar precios cero como para garantizar coherencia entre listas de materiales, órdenes de producción y ventas. La clave está en detectar el tipo de línea y usar las uniones correctas (como haces con ITT1
y OITT
), pero evitando validar líneas decorativas o informativas como las de tipo TXT
.
Resumen Consultoria-SAP
Tu validación para evitar artículos con precio cero en SAP B1 es correcta, pero debe ajustarse para excluir las líneas de tipo texto (Type = 'T'
). Puedes lograrlo fácilmente filtrando por T1."Type" = 'S'
en tu consulta SQL. De esta forma, la validación solo se aplicará a los artículos y no bloqueará líneas de comentarios u observaciones, como las de tipo TXT
. Esta solución se enmarca en el uso del módulo de Producción (MRP / BOM) y controles de negocio en SAP Business One.
¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!