If you create an Executable without creating a concurrent program, the system will allow to delete the Executable. But once you create the Concurrent Program for that Executable, the system never allows you to delete the program -- it only gives the option to disable the Concurrent Program.
At that point, your only option is to delete the Concurrent Program and its Executable from the back-end. Following is a simple straight-forward query that you can use for deleting a Concurrent Program. This query first checks if the concurrent program and its executable exist in the system. If found, it will delete the program; if not found, it will just display a message.
In this example, 'XX_TEST' is my Concurrent Program's Short Name and 'XX' is the Application Short Name. You will have to use appropriate program name and application short name according to your need.
At that point, your only option is to delete the Concurrent Program and its Executable from the back-end. Following is a simple straight-forward query that you can use for deleting a Concurrent Program. This query first checks if the concurrent program and its executable exist in the system. If found, it will delete the program; if not found, it will just display a message.
In this example, 'XX_TEST' is my Concurrent Program's Short Name and 'XX' is the Application Short Name. You will have to use appropriate program name and application short name according to your need.
-------------------------------------------------------------------------------
-- delete concurrent program definition and executable from back-end
-------------------------------------------------------------------------------
-- syntax:
-- delete_program (program_short_name, application_short_name)
-- delete_executable (program_short_name, application_short_name)
-------------------------------------------------------------------------------
DECLARE
lv_prog_short_name VARCHAR2(240);
lv_appl_short_name VARCHAR2(240);
BEGIN
-- set the variables first
lv_prog_short_name := 'XX_TEST'; -- concurrent program short name
lv_appl_short_name := 'XX'; -- application short name
-- see if the program exists. if found, delete the program
IF fnd_program.program_exists (lv_prog_short_name, lv_appl_short_name) AND
fnd_program.executable_exists (lv_prog_short_name, lv_appl_short_name)
THEN
fnd_program.delete_program(lv_prog_short_name, lv_appl_short_name);
fnd_program.delete_executable(lv_prog_short_name, lv_appl_short_name);
COMMIT;
DBMS_OUTPUT.PUT_LINE (lv_prog_short_name || ' deleted successfully');
-- if the program does not exist in the system
ELSE
DBMS_OUTPUT.PUT_LINE (lv_prog_short_name || ' not found');
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('Error: ' || SQLERRM);
END;
No comments:
Post a Comment