TN para restringir el registro de datos duplicados

Cordial saludo, estoy haciendo un TN en SAP Hana para que no se puedan registrar datos duplicados en un campo especifico de un UDO, de momento tengo lo siguiente:

La idea es que cuando el T0.“U_NumReg” ya se encuentra en el select el contador CNT sea igual a 1 y de esta forma pueda mostrar el mensaje de error, sin embargo no me ha logrado funcionar

CNT:= 0;
IF object_type = 'OK1_lQPAD_PCALIDAD' AND (:transaction_type='A' OR :transaction_type='U') THEN


	SELECT CASE WHEN T0."U_NumReg" IN (SELECT DISTINCT "U_NumReg" FROM "@OK1_LQPAD_PRUECALID" ) THEN (CNT:=1) ELSE (CNT:=0) END
	FROM "@OK1_LQPAD_PRUECALID"  T0
	WHERE T0."DocEntry" = :list_of_cols_val_tab_del  
	;

	--------IF :NumRgt IN (SELECT DISTINCT T0."U_NumReg" FROM "@OK1_LQPAD_PRUECALID" ) THEN
	IF :CNT>0 THEN

	error := 2;   
        error_message := '**** AMS - 008 Este registro de calidad ya existe en el sistema ';           
	
	END IF;
END IF;

Hola @camilog, podrías intentar con el siguiente ejemplo:

CNT:= 0;
IF object_type = 'OK1_lQPAD_PCALIDAD' AND (:transaction_type='A' OR :transaction_type='U') THEN
DECLARE registro nvarchar(10);

	SELECT "U_NumReg" INTO registo FROM "@OK1_LQPAD_PRUECALID" WHERE "DocEntry" = :list_of_cols_val_tab_del;
	SELECT COUNT(*) INTO CNT FROM "@OK1_LQPAD_PRUECALID" WHERE "U_NumReg" = :registro;
	
	IF :CNT > 1 THEN
		error := 2;   
        error_message := '**** AMS - 008 Este registro de calidad ya existe en el sistema ';           
	END IF;
END IF;

Cuéntame que tal te va.

4 Me gusta

@JhosserRomero
Excelente muchas gracias, me ha funcionado justo como lo necesitaba.

1 me gusta