370 likes | 723 Vues
Oracle Financials – APEX. Presented by : Ian Drever Chitra Kanakaraj The University of Waikato. Presentation Contents. Business Requirements Design Considerations Configuring Oracle Financials to link to Application Express
E N D
Oracle Financials – APEX Presented by : Ian Drever Chitra Kanakaraj The University of Waikato
Presentation Contents • Business Requirements • Design Considerations • Configuring Oracle Financials to link to Application Express • Configuring Oracle Financials to link to a page within an Application Express application • How this works in practice • Questions
Business Requirements • The University decided to implement Oracle Projects to manage costing and billing for research and other projects. • The Research Office had developed a comprehensive stand alone Microsoft Access database to control Research at the university. • Oracle Financials was to be the prime source for research project information • APEX would provide additional information associated with managing research projects • Ownership of the APEX application would remain with the Research Office • A large number of staff may require access to research project information
Design Considerations • The user must be able to open the APEX project details from within an open project in Oracle Projects • Single sign on is required • Access would be required to Project Information without requiring access to Oracle Projects • Oracle Projects would provide the base source data • APEX would store additional data • Oracle Projects would capture transactional and revenue costing • APEX would not update Oracle Projects data
Configuring Oracle Financials to link to Application Express
Step 1: Create a profile for launching Application Express • Create the Profile under the Application Developer Responsibility • Name – “Oracle Application Express Launcher”
Step 2: Set the site for the for the profile created in Step 1. • Responsibility – System Administrator • Menu Option: Profile -> System and search for the ‘Oracle Application Express Launcher’. • Set the value at the Site Level as: • “http://<hostname>:<port>/pls/apex”
Step 3: Create a function • Responsibility: System Administrator • Menu Option: Application ->Function • Create Function: APEX_LAUNCH • User Function Name: Projects: Options: APEX_LAUNCH
Step 4: Set the function properties • Set the Property type to “SSWA plsql function”
Step 5: Create a line for the APEX_LAUNCHER on the Web Enabled PL.Sql page Web Enabled PL/SQL page • Menu Option: Security -> Web PL/SQL • Search for the APEX_LAUNCHER function • Set the Type column to“Package”
Step 6: Create a menu entry for APEX. • Menu Option: Application->Menu • Add a line for the LAUNCH APEX prompt
Step 7: Create a menu option line for APEX on the PA_IMP_SUPERUSER_GUI menu
Compile the package APEX_LAUNCHER in the EBS database (APPS) • This package has the procedure APEX_LAUNCH. Process flow in the procedure is as follows • This package: • Sets the url using FND_PROFILE.value('LAUNCH_APEX'); • Passes the application id and the page id 111 in the url • Sends a COOKIE using OWA_COOKIE.send procedure with a name and a value parameter. Use this value parameter to pass the username and password for the APEX login authentication. • Opens a new window using the UnilinkURL. • In the APEX application on page 101 (i.e. logon page), create a process (on load before header) to read the OWA_COOKIE sent from the above procedure and set the USERNAME and PASSWORD. Use the APEX login API wwv_flow_custom_auth_std.login to login the APEX application. • The code is based on this white paper:http://www.oracle.com/technology/products/database/application_express/pdf/Extend_Oracle_Applications_11i.pdf
PROCEDURE apex_launch( application IN NUMBER, • page IN NUMBER DEFAULT 1, • request IN VARCHAR2 DEFAULT NULL, • item_names IN VARCHAR2 DEFAULT NULL, • item_values IN VARCHAR2 DEFAULT NULL) is • user_key VARCHAR(100); • apex_launcher_profile varchar2(2000); • unilink_user varchar2(30); • unilink_url varchar2(150); • BEGIN • -- replace the FND_GLOBAL.user_name with unilink_user • unilink_user := 'UNILINK'; • unilink_url :='http://<server>/pls/htmldb/f?p=114:111:::NO::P101_USERNAME,P101_PASSWORD,P101_FILE_NUMBER,P101_USER_ID:unilink,unilink,,'||FND_GLOBAL.user_id; • BEGIN • SELECT encrypted_user_password • INTO user_key • from fnd_user • where user_name = unilink_user; • EXCEPTION WHEN OTHERS THEN • user_key := ''; • END; • apex_launcher_profile := FND_PROFILE.value('LAUNCH_APEX'); • if apex_launcher_profile IS NULL Then • htp.p ('Please contact System Administrator. '); • htp.p ('Profile - LAUNCH_APEX is null') ; • return; • end if;
unilink_url := apex_launcher_profile||'/pls/htmldb/f?p=114:111:::NO::P101_USERNAME,P101_PASSWORD,P101_FILE_NUMBER,P101_USER_ID:unilink,unilink,,'||FND_GLOBAL.user_id; • -- FND_GLOBAL.user_name gives the login user name for the ESB system • -- in order to pass the valid Apex Unilink user_name a constant value is used. • OWA_UTIL.mime_header('text/html', false); • OWA_COOKIE.send • (name=>'APEX_APPS_'||application, • value=> unilink_user||':'||'unilink', • path=>'/', • domain=>'.waikato.ac.nz' ); • OWA_UTIL.http_header_close; • htp.p(' • <script LANGUAGE="JavaScript"><!-- • history.go(-1); • var v_win; • v_win = window.open("'||unilink_url|| '",' || • '"",' || • '",width=800,height=600,scrollbars,resizable"); • v_win.moveTo ((screen.width/2) - ' || (800 / 2) || ', (screen.height/2) - ' || (600 / 2) || '); • v_win.focus(); • //--></script> • '); • exception when others then • htp.p(SQLERRM); • END;
Set up Page 111 in Apex, this is used by the launcher on Oracle Financials: • Create a blank page in APEX application that needs to be integrated with Oracle EBS, e.g. P111. • Edit page attribute and set the Security - Authentication to ‘Page is Public’. • Create a branch in this page, as follows: Branch Type Branch to Page Accept Processing (not common) Branch Point On Load: Before Header Action – Page 101 (This is my login page id) • Unconditional Branch
Add a process in the 101 Page. • APEX 101 page - before header process • DECLARE • c OWA_COOKIE.cookie; • a wwv_flow_global.vc_arr2; • BEGIN • c := OWA_COOKIE.get('APEX_APPS_'||:APP_ID); • a := htmldb_util.string_to_table(c.vals(1)); • :P101_USERNAME := a(1); • :P101_PASSWORD := a(2); • IF :P101_PASSWORD IS NOT NULL THEN • wwv_flow_custom_auth_std.login( • P_UNAME => :P101_USERNAME, • P_PASSWORD => :P101_PASSWORD, • P_SESSION_ID => v('APP_SESSION'), • P_FLOW_PAGE => :APP_ID||':1' • ); • END IF; • EXCEPTION WHEN OTHERS THEN • :P101_USERNAME := 'Unilink'; • END;
Demonstration • Or how it works in practice • Clicking on the APEX Unilink menu item will open the required application in APEX
The Earth has at least two moons, the latest is a 3-miles-wide (5-km) satellite. • It takes 770 years to complete a horseshoe-shaped orbit around the Earth. • The moon is called Cruithne and will remain in a suspended state around Earth for at least 5,000 years. How many moons does the Earth have?
Configuring Oracle Financials to link to a page within an Application Express application
Prerequisites • Set the responsibility to “Project Implementation Superuser”
Step 2: Access the Help>Diagnostics>Custom Code>Personalize menu option.
Step 3: Update the PA_PAXPREPR_PROJECT function • Add a line for the Trigger event – Initialize Unilink Menu • and Global Variables • Set the Trigger Event to WHEN_NEW_FORM_INSTANCE • Add the responsibilities that you want to access the link
Step 4: Set the function actions • Add line for the Type ‘Menu’ • Enter the Menu Label as ‘APEX UNILINK’
Step 5: Create a line for Call APEX UNILINK in the PA_PAXPREPR_PROJECT • Set the conditions for the “Call APEX Unilink” function • Set the Trigger Event to SPECIAL9 • Add the responsibilities
Step 6: Set the Action argument • Set the Type to “BUILTIN” • Set Builtin Type to Launch a URL
Argument ='http://<apexservername>/pls/htmldb/f?p=114:111:::NO::P101_USERNAME,P101_PASSWORD,P101_FILE_NUMBER,P101_USER_ID:unilink,unilink,'||:PROJECT_FOLDER.SEGMENT1_MIR||','||FND_GLOBAL.user_id • Note: Include the = sign in the argument since we are passing the segment1 value through the url. • The above oracle EBS form personalization is done by using the example given in the following link http://www.scribd.com/doc/46650/Examples-of-Oracle-EBS-Form-Personalization
Practical Application • Or how it works in practice • Clicking on the APEX UNILINK menu option will open the required application page in APEX for the project linked to Oracle Projects.
References & Credits “Oracle Applications Express The Fast Way to Extend Oracle Applications 11i By Rod West, Cabot Consulting” “ORACLE EBS 11I, VERSION 11.5.10 « FORM PERSONALIZATION » Auteur : Joël Asselin Date de création : Octobre 20, 2006 “