Oracle Certification, Database Administration, SQL, Application, Programming Reference Books
Moving Menu from one Application instance to Another Application Instance

  spool menus_&app
  set echo on
  SET VERIFY OFF;

  prompt
  prompt This script will copy Release 10.5 menus registered
         under the
  prompt application you specify to a new, custom application so
  prompt as to be preserved during Release 10.7 upgrade.
  prompt
  accept Old_Application_Name char prompt 'Enter Old Application Name: '
  accept New_Application_Name char prompt 'Enter New Application Name: '
  prompt

  prompt
  prompt Creating new "&&New_Application_Name" application...

  select greatest( max(application_id)+1, 20000 )
  from fnd_application;
  col application_name format a35 trunc

  select application_id,application_name
  from fnd_application
  where application_name = '&&Old_Application_Name';

  select application_id,application_name
  from fnd_application
  where application_id>20000;

  accept Old_Appid number prompt 'Enter Old Application ID: '
  accept New_Appid number prompt 'Enter New Application ID: '
  REM Insert the new application row

  -- USER_ID 0 is APPLSYS
  -- abbr needs to be changed!!!
  insert into fnd_application (
  APPLICATION_ID,
  APPLICATION_SHORT_NAME,
  APPLICATION_NAME,
  LAST_UPDATE_DATE,
  LAST_UPDATED_BY,
  CREATION_DATE,
  CREATED_BY,
  LAST_UPDATE_LOGIN,
  APPLICATION_ABBREV,
  APPLICATION_PREFIX,
  DESCRIPTION,
  BASEPATH)
  select &&new_appid,
  'K'||APPLICATION_SHORT_NAME,
  '&&New_APPLICATION_NAME',
  SYSDATE, 0,
  SYSDATE, 0,
  0,
  APPLICATION_ABBREV,
 'APP',
 '10.5 Copy of '||APPLICATION_NAME,
  BASEPATH
  from fnd_application@devl
  where application_name = '&&Old_Application_Name'
  and not exists
  (select 1 from fnd_application
  where application_name = '&&New_Application_Name');

  commit;

  prompt
  prompt Copying all "&&Old_Application_Name" menus...

  insert into fnd_menu
  (APPLICATION_ID, MENU_ID, MENU_NAME,
  USER_MENU_NAME,
  LAST_UPDATE_DATE, LAST_UPDATED_BY,
  CREATION_DATE, CREATED_BY,
  LAST_UPDATE_LOGIN,
  ROOT_MENU,
  DESCRIPTION)
  select
  &&new_appid, MENU_ID, MENU_NAME,
  USER_MENU_NAME,
  LAST_UPDATE_DATE, LAST_UPDATED_BY,
  CREATION_DATE, CREATED_BY,
  LAST_UPDATE_LOGIN,
  ROOT_MENU,
  DESCRIPTION
  from fnd_menu@devl
  where application_id=&&old_appid;

  insert into fnd_menu_entry
  (APPLICATION_ID, MENU_ID, MENU_ENTRY_SEQUENCE,
  PROMPT,
  ACTION_TYPE_ID, ACTION_APPLICATION_ID,
  ACTION_ID,
  LAST_UPDATE_DATE, LAST_UPDATED_BY,
  CREATION_DATE, CREATED_BY,
  LAST_UPDATE_LOGIN,
  DESCRIPTION,
  ACTION_ARGUMENTS, FORM_NAME, FORM_ID)
  select
  &&new_appid, MENU_ID, MENU_ENTRY_SEQUENCE,
  PROMPT,
  ACTION_TYPE_ID, ACTION_APPLICATION_ID,
  ACTION_ID,
  LAST_UPDATE_DATE, LAST_UPDATED_BY,
  CREATION_DATE, CREATED_BY,
  LAST_UPDATE_LOGIN,
  DESCRIPTION,
  ACTION_ARGUMENTS, FORM_NAME, FORM_ID
  from fnd_menu_entry@devl
  where application_id=&&old_appid;

  commit;

  prompt
  prompt Updating applicable sub-menus to use
  prompt "&&New_Application_Name" menus...

  update fnd_menu_entry
  set action_application_id=&&new_appid
  where action_type_id='M'
  and action_application_id=&&old_appid;

  prompt
  prompt Updating applicable responsibilities to use
  prompt "&&New_Application_Name" menus...

  update fnd_responsibility
  set menu_application_id = &&new_appid
  where menu_application_id = &&old_appid
  and last_updated_by<>1;

commit;

Return to : Oracle Database, SQL, Application, Programming Tips