Buen día, estoy precisando una mano con POST TN ya que es la primera vez que debo utilizarlo. (luego de 2 años en SAP R3 del lado ABAP volví a B1)
Necesito que al momento de ingresar un item a la OITM (por medio de IF se realiza) se valide que si hay una píeza ingresada anteriormente se le haga un update a un campo de usuario OITM.CAMPO_USUARIO
La validación es la siguiente:
IF :object_type= ‘4’ AND :transaction_type=‘A’ THEN – ingreso a OITM
SELECT COUNT
CASE
WHEN T0.“ItemCode” Like ‘%+’ OR T0.“ItemCode” Like ‘%#’
THEN SUBSTRING (T0.“ItemCode”, 1, (LENGTH (T0.“ItemCode”)-1))
END – el case me valida que la pieza existe con + o # creada
INTO cnt FROM OITM
where “ItemCode” = :list_of_cols_val_tab_del
IF :cnt > 1 THEN – acá me hago lío, necesito saber si al margen del item que se está dando de alta me valide que haya otra en el maestro de artículos. por ejemplo, estoy ingresando la pieza AAA+, pero ya está creada AAA#, esto quiere decir que se debe actualizar el campo de usuario a N, el if sería así?
– en cambio si estoy ingresando AAA+ y no está creada ninguna pieza AAA que siga el proceso normal.
UPDATE “OITM” SET “U_CAMPO_USUARIO” = “Y” WHERE “ItemCode” = :list_of_cols_val_tab_del;
me pueden orientar si es correcto?
muchas gracias a todos por la asistencia.
Segun entiendo, un update sobre un UDF repercute sobre la politica de mantenimiento/garantia de SAP y solo esta permitido si se trata de un UDF de una UDT, que no parece ser el caso que planteas, por lo que tendria cuidado.
Si entendi bien la explicacion, podes probar con el codigo de abajo para Transaction Notification. Restaria sumarle que el error lo muestre en funcion del campo de usuario, pero en tu codigo dice SET “U_CAMPO_USUARIO” = “Y” y en la explicacion actualizar el campo de usuario a N, por lo que habria que aclarar este punto
If :object_type = '4' and (:transaction_type='A') then
cnt := 0;
SELECT count(T0."ItemCode") into cnt
FROM OITM T0
WHERE (SELECT Count(T1."ItemCode")
FROM OITM T1
WHERE T1."ItemCode" = SUBSTRING(T0."ItemCode", 1, (LENGTH(T0."ItemCode")-1))
AND (T0."ItemCode" Like '%+' OR T0."ItemCode" Like '%#')) > 0
AND T0."ItemCode" = :list_of_cols_val_tab_del;
if :cnt>0 then
error := 'error code';
error_message := 'error message';
end if;
End if;
Tal cómo le decía al equipo y cómo dice @ndon NO SE PERMITE UPDATE A UDF DE TABLA NATIVA, no importa que sea UDF, sólo se permite UPDATE a UDT.
Lo bueno es que lo pude resolver al final jajajajaj
Muchas gracias por el tiempo.
Slds