TN en SAP B1 for HANA

Estimados, estoy haciendo un TN en SAP B1 For HANA que bloquee pedidos solo con items que superen mi nivel máximo que tengo configurado en los datos maestros. 1.- en el primer select guardo el campo Quantity de POR1 en la variable cnt1 .
2.- en el segundo select guardo el campo T3.“Quantity” de OITW para luego comparar. ya corrí unas pruebas pero no está funcionando, quisiera ver si ustedes han trabajando en algo parecido para darme una mejor idea.
este es el TN:

--bloquea OC o pedido cuando la cantidad T1."Quantity" sea mayor al nivel maximo de stock
IF :object_type = '22' AND :transaction_type='A' THEN
SELECT T1."Quantity" into cnt1 
FROM OPOR  T0 
 INNER JOIN POR1  T1 ON T0."DocEntry" = T1."DocEntry" 
 INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" 
 --INNER JOIN OITW T3 ON T2."ItemCode" = T3."ItemCode" 
where T1."DocEntry" = list_of_cols_val_tab_del;
--and T1."Quantity" > T3."MaxStock"; 

SELECT T3."Quantity" into cnt2 
FROM OPOR  T0 
 INNER JOIN POR1  T1 ON T0."DocEntry" = T1."DocEntry" 
 INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" 
 INNER JOIN OITW T3 ON T2."ItemCode" = T3."ItemCode" 
where T1."DocEntry" = list_of_cols_val_tab_del;


IF :cnt1 > :cnt2 then
error:= 1002;
error_message := 'supera el nivel maximo de stock';

END IF;
END IF; 

me arroja este error

[SAP AG][LIBODBCHDB DLL][HDBODBC] General error;1299 no data found: "SBO_SP_TRANSACTIONNOTIFICATION": line 45 col 1 (at pos 1488): [1299] (range 3) no data found exception: no data found

Gracias de antemano

no soy experto y trato de ayudar, pero que pasa si quitas esta linea:
–and T1.“Quantity” > T3.“MaxStock”;
porque ahi estas comprobando que la cantidad del item en el pedido sea mayor al Stock maximo de ese item, y eso es lo que pretendes hacer en la comparacion final.

IF :cnt1 > :cnt2 then
error:= 1002;
error_message := ‘supera el nivel maximo de stock’;

gracias por tu respuesta @renba78:

de hecho esa linea la tengo comentada, es decir no la toma en cuenta al correr mi sp

CALL "SBO_SP_UTILS_EXISTS" 
			('Select T0."DocEntry"			
				From POR1 T0 
				inner join oitw T1 on T1."ItemCode" = T0."ItemCode"
				Where T0."Quantity" > T1."MaxStock" 
				and T0."DocEntry" = ' || CAST(:DocEntry as nvarchar)
			,ValidaResultadoQuery); 	
	
	if IFNULL(:ValidaResultadoQuery,0) <> 0
	
	then
		error := 1002;
		error_message := 'Supera el nivel basico de Stock';
	end if;
end if;	

```:
validaresultadoQuery es una variable de tipo INT.  con este codigo a mi me funciona bien lo que quieres hacer.
y el SP de UTILS_EXISTS es este:

CREATE PROCEDURE “SBO_SP_UTILS_EXISTS”

(
IN Query nvarchar(1000)
,OUT ExistenRegistros integer
)

LANGUAGE SQLSCRIPT
AS
QueryFinal nvarchar(1200);
–ExistenRegistros integer;
BEGIN
DECLARE EXIT HANDLER FOR SQL_ERROR_CODE 1299–Error NOT DATA FOUND
BEGIN --Accion a realizar si de produce un error 1299
drop table #TempTableExists;
ExistenRegistros:=0;
Select :ExistenRegistros from DUMMY;
END;

create local temporary column table #TempTableExists (	
  "Existe" integer
);

QueryFinal :=
'insert into #TempTableExists
	(Select 1
	 From DUMMY
	 Where Exists ( ' || :Query || ' ))';

			
--Select :QueryFinal From DUMMY;
		
exec (:QueryFinal);

--select * from  #TempTableExists;

Select 1
into ExistenRegistros
from DUMMY
where exists (select 'X' from  #TempTableExists);
	
--select 'X' from  #TempTableExists;

drop table #TempTableExists;

Select IFNULL(:ExistenRegistros,0)
into ExistenRegistros
from DUMMY;

Select :ExistenRegistros from DUMMY;

END;


te dejo ese otro SP porque la verdad no se si ya es predeterminado de SAP, pero en mi base de datos si existe. Prueba tu los codigos y espero te funcionen tan bien como a mi.

Gracias @renba78, haré algunas modificaciones en base a tu solución, espero tener el resultado.
ya te comento como me va

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.