procedure event(event_name varchar2) is
form_name VARCHAR2 (30) := NAME_IN ('system.current_form');
block_name VARCHAR2 (30) := NAME_IN ('system.cursor_block');
item_name VARCHAR2 (100) := NAME_IN ('system.current_item');
BEGIN
If ( (event_name='PRE-UPDATE') or (EVENT_NAME = 'WHEN-VALIDATE-RECORD' ) ) and
form_name ='HRWSPSF' and block_name ='POSITIONS' and item_name IN ('SEGMENT1','SEGMENT2','SEGMENT3','LOCATION_ID')
and NAME_IN('SYSTEM.RECORD_STATUS')IN ('CHANGED')
then
DECLARE
L_SEGMENT NUMBER;
L_POS NUMBER;
P_SEGMENT1 VARCHAR2(255):=NAME_IN('POSITIONS.SEGMENT1');
P_SEGMENT2 VARCHAR2(255):=NAME_IN('POSITIONS.SEGMENT2');
P_SEGMENT3 VARCHAR2(255):=NAME_IN('POSITIONS.SEGMENT3');
P_LOCATION_ID NUMBER:=NAME_IN('POSITIONS.LOCATION_ID');
BEGIN
SELECT count(*) into L_SEGMENT
FROM hr_all_positions_f hapf,
per_position_definitions ppd
WHERE hapf.position_definition_id = ppd.position_definition_id
AND PPD.SEGMENT1 = P_SEGMENT1
AND PPD.SEGMENT2=P_SEGMENT2
AND hapf.business_group_id = 111
AND HAPF.LOCATION_ID = P_LOCATION_ID;
IF (L_SEGMENT>=1) THEN
FND_MESSAGE.SET_NAME('PER','IGFMIS_DUPLICATE_POSITION');
FND_MESSAGE.error;
RAISE form_trigger_failure;
END IF;
SELECT count(*) into L_POS
FROM per_position_definitions ppd
WHERE PPD.SEGMENT3 = P_SEGMENT3;
IF (L_POS>=1) THEN
FND_MESSAGE.SET_NAME('PER','IGFMIS_DUPLICATE_POSITION_CODE');
FND_MESSAGE.error;
RAISE form_trigger_failure;
END IF;
END;
END IF;
end event;
動作していません。検証は、位置と場所フィールドの挿入と更新で行う必要があります。IF 条件が機能していないと思います。適切な IF 条件を知る必要があります。特定のフィールドのみを検証する方法。