Ayuda SAP

Emisión para producción TN

Buenas.
Estoy generando un transaction notification en el modulo de Emision para producción que valide la cantidad digitada no sea mayor a lo planificado de la orden de fabricación. Si es que tengo una linea me funciona muy bien pero teniendo 2 lineas o mas ya me arroja el error mas abajo.

TN
IF :object_type = ‘60’ AND (:transaction_type=‘A’) THEN
BEGIN
DECLARE PLANEADO NUMERIC;
DECLARE EMISION NUMERIC;

			SELECT (T3."PlannedQty")  
			INTO  PLANEADO				
			FROM 		OIGE T0
			INNER JOIN IGE1 T2 ON T0."DocEntry" = T2."DocEntry" 
			INNER JOIN WOR1 T3 ON T2."BaseEntry" = T3."DocEntry"
			WHERE 	T0."DocEntry" = :list_of_cols_val_tab_del
			AND T2."ItemCode" = T3."ItemCode"; 
			
			SELECT (T2."Quantity")  
			INTO  EMISION
			FROM 		OIGE T0
			INNER JOIN IGE1 T2 ON T0."DocEntry" = T2."DocEntry"  
			INNER JOIN WOR1 T3 ON T2."BaseEntry" = T3."DocEntry"
			WHERE 		T0."DocEntry" = :list_of_cols_val_tab_del
			AND T2."ItemCode" = T3."ItemCode"; 	

			IF   EMISION > PLANEADO  THEN
				error 			:= 	30014;
				error_message 	:= 	'Cantidad de articulo supera lo planificado.';
			END IF;
			END;
			END IF;

Emisión con una linea funciona:

Agregando 2 líneas me arroja este error:

mensaje del error:
[SAP AG][LIBODBCHDB32 DLL][HDBODBC32] General error;1300 fetch returns more than requested number of rows: “DEMO”.“SBO_SP_TRANSACTIONNOTIFICATION”: line 208 col 5 (at pos 6755): [1300] (range 3) fetch returns more than requested number of rows exception: fetch returns more than requested number of rows

Hola @JorgeBenitez
El problema esta en hacerlo en 2 consultas, prueba de la siguiente manera.

IF :object_type='60' AND ( :transaction_type='A') THEN --SALIDA --CREACION
    
	  SELECT COUNT(T1."DocEntry") INTO cntA FROM "SBO_PRUEBAS".IGE1 T1
	  INNER JOIN "SBO_PRUEBAS".WOR1 T2 ON T1."BaseEntry" = T2."DocEntry" AND T1."BaseLine" = T2."LineNum"
	  WHERE T2."IssuedQty" > T2."PlannedQty" AND T1."DocEntry" = :list_of_cols_val_tab_del;
		
	  IF :cntA > 0 THEN
		 error := 30014;
		 error_message := 'SP** Cantidad de articulo supera lo planificado';
	  END IF;      
 END IF;

Andres Ramirez Jaramillo :colombia:

1 me gusta

Gracias por la respuesta Andres. Me sirvio tu consulta le agrege el Begin y Declare, con eso funciono. Gracias, Saludos.

IF :object_type='60' AND ( :transaction_type='A') THEN --SALIDA --CREACION
    BEGIN 
	  DECLARE CNTA NUMERIC;
	  SELECT COUNT(T1."DocEntry") 
	  INTO CNTA 
	  FROM IGE1 T1
	  INNER JOIN WOR1 T2 ON T1."BaseEntry" = T2."DocEntry" AND T1."BaseLine" = T2."LineNum"
	  WHERE T2."IssuedQty" > T2."PlannedQty" AND T1."DocEntry" = :list_of_cols_val_tab_del;
		
	  IF :CNTA > 0 THEN
		 error := 30014;
		 error_message := 'SP** Cantidad de articulo supera lo planificado';
	  END IF;  
	  END;    
 END IF;