Transaction en HANA (Validar campos en el detalle)

Buen día estimada comunidad, hoy estoy teniendo una duda para resolver una validación que me pidieron.
El punto es que tengo en las líneas del pedido de compras (POR1) el campo “ItemCode” y el campo “Project”, necesito validar que la combinación de esos 2 campos sea única y mostrar un mensaje de error si ya existe en la base de datos o si se repite en el documento.
El campo “ItemCode” puede repetirse N cantidad de veces y el campo “Project” también, pero la combinación de ambos debe ser única.
He pensado resolverlo con un cursor pero no se si sea lo más óptimo para el performance de la base, espero puedan ayudarme,
Saludos y gracias.

Para quienes les interese, lo resolví de la siguiente manera:

IF :object_type='22' and (:transaction_type= 'A' or :transaction_type= 'U' )  then
      Chk:=0;
      contador:=0;
      
      SELECT COUNT(*) INTO Chk  FROM POR1 T1 
            WHERE  T1."DocEntry"=:list_of_cols_val_tab_del AND 
            T1."Project" IN
            (SELECT T2."Project" FROM OPOR T5 INNER JOIN POR1 T2 ON T2."DocEntry" = T5."DocEntry"
            WHERE T5."CANCELED" = 'N' AND T1."ItemCode" = T2."ItemCode" AND T1."LineNum" <> T2."LineNum");
            
      SELECT COUNT(*) INTO contador  FROM POR1 T1 
            WHERE  T1."DocEntry"=:list_of_cols_val_tab_del AND 
            T1."Project" IN
            (SELECT T2."Project" FROM OPOR T5 INNER JOIN POR1 T2 ON T2."DocEntry" = T5."DocEntry"
            WHERE T5."CANCELED" = 'N' AND T1."ItemCode" = T2."ItemCode" AND T2."DocEntry" <> :list_of_cols_val_tab_del);
            
            
            IF (:contador > 0) THEN       
            error :='1005';
            error_message :='TN1005 - La combinación de Artículo + Pedido de Embarque ya existe en otro pedido. ' || :contador;
            ELSEIF (:Chk > 0) THEN
            error :='1005';
            error_message :='TN1005 - Existen combinaciones repetidas de Artículo + Pedido de Embarque en este pedido. ' || :Chk;
      END IF;
END IF;

Espero pueda ser de ayuda para alguien más.
Saludos.

2 Me gusta