Beruflich Dokumente
Kultur Dokumente
Objectives of CRP3:
Process:Functional leaders walk cross-functional teams and potential system users
through final To-Be process models.
System:Most converted data available for review in CRP environment.
Some RICE (Reports, Interfaces, Conversions, Enhancements / Extensions)
components available for business review.
User Input:User will be hands-on in the system completing real business scenarios
from end-to-end.
Validate that any gaps identified during CRP2 have been addressed.
Continue to uncover any system / process issues and potential future phase
business requirements.
Scope:Requests for additional functionality (an increase to the baselined
requirements) would need to be handled as part of the scope management process
within the project and that observations raised are not automatically included in
scope. Only items critical for go-live will be considered.
SQL*Loader is a bulk loader utility used for moving data from external files into the
Oracle database. It supports various load formats, selective loading, and multi-table
loads.
Below are the examples of loading data into Tables using different methods
Include below code in control file to avoid junk data load using SQL
loaderLOAD DATA
CHARACTERSET WE8ISO8859P1
APPEND INTO TABLE XXAP_GENERIC_INVOICES
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(operating_unit
,vendor_number
)
TKPROF Utility
12:53 PM UNIX 3 comments
1) TKPROF is an utility and a unix command to format Raw trace file which is huge
in size. It essentially formats a trace file into a more readable format for
performance analysis.
cd $APPL_TOP
mkdir xxf/
mkdir xxf/1.0.0/
mkdir xxf/1.0.0/admin
mkdir xxf/1.0.0/bin
mkdir xxf/1.0.0/dll
mkdir xxf/1.0.0/forms
mkdir xxf/1.0.0/help
mkdir xxf/1.0.0/html
mkdir xxf/1.0.0/java
mkdir xxf/1.0.0/jlt
mkdir xxf/1.0.0/lib
mkdir xxf/1.0.0/log
mkdir xxf/1.0.0/mds
mkdir xxf/1.0.0/mesg
mkdir xxf/1.0.0/out
mkdir xxf/1.0.0/resource
mkdir xxf/1.0.0/scripts
mkdir xxf/1.0.0/servlets
mkdir xxf/1.0.0/share
mkdir xxf/1.0.0/sql
mkdir xxf/1.0.0/xml
OR
Per_all_people_F
per_person_types
per_person_type_usages
per_addresses
per_contact_Relationships
per_periods_of_service
Per_all_assignments_f
per_pay_groups
per_jobs
per_job_Definitions
per_grades
per_grade_definitions
hr_all_positions
hr_all_position_definitions
hr_all_locations
pay_all_payrolls_F
pay_element_entry_values_F
pay_element_entries_F
pay_elements_links_F
pay_element_types_F
Effective_start_date
Effective_end_date
All the objects in Oracle HRMS or Payroll that end with _x have a where clause
where sysdate between Effective_start_date AND Effective_end_date, therefore
you can use the views that return records as of SYSDATE.
The primary keys of the date tracked columns includes Effective_start_date &
Effective_end_date.
This table make payroll elements eligible to a group of people, you create Element
Links.The Primary key is ELEMENT_LINK_ID with date-track columns.
2. The reason Oracle uses ELEMENT_LINK_ID in Element Entry to work out Costing
Segments based on Payroll Costing Hierarchy.
It is well known that Employee records are stored in PER_ALL_PEOPLE_F. Its a date
track table with primary key being person_Id. This table also has party_Id, because
Oracle creates a party in TCA as soon as a record in per_all_people_f gets created.
This is the most central table in Oracle Payroll. Payroll engine uses this table as the
main driver.
Why so: Because Element Entries are stored against Assignment record.
Usage of per_all_assignments_f?
1. Find position_Id, hence position, or grade, the organization for the persons
assignment.
2. It has foreign key to person_id. Each person Id can have no more than one
primary assignment at any given point in time.
3. Pay run results and also the pay_assignment actions refers to this table.
5.PER_PERSON_TYPES - Person type
This is the master table for Person Types. Some examples of Person Types are
Employees, Casuals, Applicants etc.
For any other date, use the classic p_date between effective_start_date and
effective_end_date.
6.PAY_ELEMENT_ENTRIES_F & PAY_ELEMENT_ENTRY_VALUES_F
This Tables effected when element entry is done,two tables get inserted into when
fresh Element Entries are created.
PAY_ELEMENT_ENTRIES_F
For each assignment you will have one or more records in PAY_ELEMENT_ENTRIES_F
table.
Assignment_id
Element_link_id
ELEMENT_TYPE_ID
This table is date-tracked too. Please do not ask my where there was a need to store
both ELEMENT_TYPE_ID and also ELEMENT_LINK_ID in this table.
Just storing the ELEMENT_LINK_ID could suffice. However, i guess Oracle did so for
Performance reasons.
7.PAY_ELEMENT_ENTRY_VALUES_F
1. US HRMS Manager -> People -> Delete Personal Records. Query the person and
click delete (red cross in the main menu).
2. Call the API HR_PERSON_API.DELETE_PERSON with appropriate parameters.
set the date one day before effective date, and than delete the person record.
Assumtion: The person should not have any absences. Firts delete it, dann delete
the perosn record.
Create a DFF
Login to System Administrator
Application -> Flexfield -> Descriptive -> Segments
Search for Application = Application Object Library
Title = Common Lookups
Now if you want to enable your lookup, you need to uncheck "Freeze Flexfield
Definitions" checkbox on the top left the DFF Segments screen.
this enables you to enter new DFF entries.
Click on Segments
Enter the number, name, prompt, column and value set(if you have one)
Now, switch the responsibility to Application Developer to see the DFFs enabled in
lookup
Open the common lookups screen and query for the lookup name you have given
under "Code" of DFF setup.
Phases in Implementation
The picture below depicts the various phases in implementation of an Oracle Application
Project.
Picture courtesy: UST Global
Top 35 SQL Interview Question asked in Oracle Apps R12 Technical Interview
or
SQL TOP 35 Frequently asked question in Technical Interview
5. How can we use Rownum function/How can get output for first 10 row output
select * from emp minus select * from emp where rownum <= (select
count(*) - &Enter_row_num from emp);
7. Use of Not in,Not Exists and /Department name without allocation of any Employee in it .
select * from dept where deptno not in (select deptno from emp);
OR
select * from dept a where not exists (select * from emp b where
a.deptno = b.deptno);
select distinct sal from emp a where 21 >= (select count(distinct sal)
from emp b where a.sal <= b.sal) order by a.sal desc;
9. To find 11 Min salaries ?
select distinct sal from emp a where 11 >= (select count(distinct sal)
from emp b where a.sal >= b.sal);
delete from emp a where rowid != (select max(rowid) from emp b where
a.empno=b.empno);
16. Select all record Using Less then and greater then.
19. Select all records where ename starts with 'Sonu' and its lenth is 8 char.
20. Select all records where ename end with 'Chauhan'/Use of "%"
23. Select any salary <15000 from emp table using subquery
select * from emp where sal> any(select sal from emp where
sal<15000);
24. Select all salary <5000 from emp table using subquery
select * from emp where sal> all(select sal from emp where sal<5000);
25. Select all the employee group by deptno and sal in descending order.
26. How can I create an empty table emp1 with same structure as emp?
27. How to retrive record where sal between 3000 to 7000? / Use of "Between"
28. Select all records where dept no of both emp and dept table matches.
32. Count the total sal deptno wise where more than 2 employees exist.
What are the differences between system, extensible, and user lookup types in
Oracle Apps R12?
KULDEEP CHAUHAN 5/08/2016 01:15:00 am
What are the differences between system, extensible, and user lookup types in Oracle Apps
R12?
OR
Type of Lookups in Oracle Apps R12
User
Extensible
Updating of start date, end date, enabled fields, and tag is allowed only if the code is not
'seed data'
System
Updating of start date, end date, and enabled fields is not allowed
The main purpose of a lookup is to keep programs flexible and easier to configure. Lookups are
an approach of creating a configurable list of values in E-Business Suite. One of the simplest
examples of a lookup type is gender. A gender lookup will have definitions as shown next:
Code Meaning
M Male
F Female
U Unknown
Suppose that there is a table for employees named PER_ALL_PEOPLE_F and it has the
following columns:
FIRST_NAME
LAST_NAME
DATE_OF_BIRTH
GENDER
The screen that displays an employees gender will display a value of Male, Female, or
Unknown. However, the database column PER_ALL_PEOPLE_F.GENDER will store a value of
M, F, or U. Hence, the screen displays the meaning, whereas the database columns reference
the lookup via a lookup code.
If in the future your organization wants the users to see Undisclosed instead of Unknown,
you will have to make a change to just one record in the lookups table via the lookup screen. By
doing so, you will avoid having to update thousands of records in PER_ALL_PEOPLE_F. Your
new lookup will look like the following:
Code Meaning
M Male
F Female
U Unknown
Here lies the power of the lookups; you do not need to modify thousands of records in a
transactional table. A simple change via the lookup screen will suffice. Using the lookup screen,
you can either create new custom lookups or modify existing lookups.
What are the differences between system, extensible, and user lookup types in Oracle Apps
R12?ORType of Lookups in Oracle Apps R12
User
Extensible
Updating of start date, end date, enabled fields, and tag is allowed only if the code is not
'seed data'
System
The following table shows the differences between system, extensible, and user lookup types:
Brief, some pre-seeded lookups given by Oracle cannot be modified. For example, Oracle has a
lookup type called a termination type as shown in above figure. Oracle has some rules defined
within the Payroll Engine program that read the value of a termination type code for employees
before calculating their final salaries. Such lookup codes, if changed, can affect the logic within
the Payroll Engine. For this reason, Oracle flags some lookups as system lookups, and the
Lookup Entry screen will not let you modify those lookup codes.
How can a lookup type be directly attached to a flexfield segment to do validations in Oracle
Apps R12?
To do this, create a value set of Table type that validates against FND_LOOKUP_VALUES using
the desired lookup. In this manner, you can validate flexfield segments against lookup values.
The point here is that a lookup type cannot be directly attached to a flexfield segment to do
validations; however, it is indirectly possible to do so.
Examples and use cases where we use lookups in Oracle Apps R12.
So through this manner, Lookup also gives you the flexibility to change hard-code Value in
Code.
In this example, Country_ID is the hidden ID column and Country_Name is the value
column of the Country_Value_Set value set. The Model segment uses the hidden ID
column of the previous value set, Country_Value_Set, to compare against its WHERE
clause. The end user never sees the hidden ID value for this example.
"Example of $FLEX$ Syntax Used in Oracle Apps ($flex$ in oracle apps) "
Query to find Locked Object in Oracle Apps R12
How can find Locked Object in Oracle Apps R12 ?or How can find Locked object name and
Oracle User name in Oracle Apps R12 ?
Query 1 -
SELECT b.owner
, b.object_name
, a.oracle_username
, a.os_user_name
FROM v$locked_object a
, all_objects b
WHERE a.object_id = b.object_id
Query 2 -
SELECT c.owner
, c.object_name
, c.object_type
, b.SID
, b.serial#
, b.status
, b.osuser
, b.machine
FROM v$locked_object a
, v$session b
, dba_objects c
WHERE b.SID = a.session_id
AND a.object_id = c.object_id;
Query 3 -
SELECT a.session_id
, a.oracle_username
, a.os_user_name
, b.owner "OBJECT OWNER"
, b.object_name
, b.object_type
, a.locked_mode
FROM ( SELECT object_id
, session_id
, oracle_username
, os_user_name
, locked_mode
FROM v$locked_object ) a
, ( SELECT object_id
, owner
, object_name
, object_type
FROM dba_objects ) b
WHERE a.object_id = b.object_id;
How can make entry for "TNSNAMES.ORA" on the local host for Oracle Application
(In Oracle Apps R12).
Then
In the Host File please make entry for -
Important -: Default setup for Oracle Vision Instance to connect database and Application
Note - You can also Explorer the path directly .Follow the given below directory for the
same .
C:\Windows\System32\drivers\etc
Pre-Requisites:
- You must have the backend access to database and the Unix Box.
- Must have a good idea about the functional flow of the Applications.
Lets begin with the methods. As already mentioned, there are three ways of
debugging the Applications and they are:
1. Debug Log
3. FRD Log
Lets discuss the ways in which this can be obtained and how to read them.
This is one of the most commonly used debug methods. This gives a fair idea of the
application as of which package is failing and which value is not getting passed to
which parameter and so on.. more importantly, the backend data flow.
Step 1:
========
The first and foremost thing in this process is to enable the debug messages. This
can be achieved by setting the following Profile Options at the User Level.
Please note that you can set the profile options only if you have the access to
System Administrator Responsibility.
FND: Debug Log Filename NULL -- To store the file in an external file, if NULL,
the values are written in a table
Step 2:
======
Once the Profile options are set, the next step is to find the initial value from where
our debugging routine will start. To identify this value, you will have to login to the
Database by using SQL Developer/TOAD and then execute the following Query:
SELECT MAX(LOG_SEQUENCE)
FROM FND_LOG_MESSAGES
This will give a value. Keep this value for future references.
Step 3:
======
Now, try to reproduce the issue and ensure that you try to stay on track in
reproducing the issue and leave out extraneous steps so that you don't end up with
debug messages that are not relevant to your issue. It is ideal to not have anyone
else using the Responsibility you have enabled debug for, so that only messages
pertaining to your testcase are picked up.
Step 4:
======
Once the issue is reproduced, stop at the step next to the error, like Click OK to the
error and then the next step is to ensure that you retrieve the debug log messages
generated by your test case. To retrieve the messages, execute the below query in
SQL Developer/TOAD.
Now, spool this file to an excel sheet and save it in your system.
Step 5:
======
The next step in the process is to read the retrieved messages. Here is how you can
interpret the messages generated.
create_person (+)
LoadDataSources (+)
cacheSetupForOtherEntities (+)
G_DATASOURCE_LOADED = N
l_str = 'USER_ENTERED'
l_str = 'USER_ENTERED'
l_str = 'USER_ENTERED'
l_str = 'USER_ENTERED'
l_str = 'USER_ENTERED'
l_start = 5
i=1
l_entity_name = 'HZ_PERSON_PROFILES'
l_entity_id = -1
i_content_source_type.COUNT = 0
l_str =
i=2
l_entity_name = 'HZ_ORGANIZATION_PROFILES'
l_entity_id = -2
i_content_source_type.COUNT = 1
l_str = 'USER_ENTERED'
total = 7
cacheSetupForOtherEntities (-)
p_mixnmatch_enabled = N
p_selected_datasources = 'USER_ENTERED'
LoadDataSources (-)
do_create_party (+)
validate_person (+)
validate_person (-)
l_mixnmatch_enabled = N
l_selected_datasources = 'USER_ENTERED'
do_create_update_party_only (+)
do_create_party_name (+)
do_create_party_name (-)
validate_party (+)
validate_party (-)
hz_parties_pkg.Insert_Row (+)
hz_parties_pkg.Insert_Row (-)
do_create_update_party_only (-)
do_create_party_profile (+)
do_create_person_profile (+)
hz_person_profiles_pkg.Insert_Row (+)
do_create_person_name (+)
do_create_person_name (-)
do_create_person_profile (-)
do_create_party_profile (-)
do_process_classification (+)
party_id =
do_process_classification (-)
Event Name:oracle.apps.ar.hz.Person.create Event Key:oracle.apps.ar.hz.Person.create382123Max
For every (+), the control is getting into that Package and for every (-), the
control is coming out of that package. It also depends on what kind of debugging
messages are coded in those packages where the control enters and processes the
code and then passes to the next level.
P.S: Almost all the packages in Oracle Applications, has debugging messages
enabled, however, there are exceptions, where packages may not have debugging
enabled, hence, will not be shown in the debug file.
To find the cause of the issue, the first thing to find in a debug file, is the word
Exception. This will be showing the package name where the error occurs. Just,
open the package in SQL Developer/TOAD and see the SQL being fired.
Check for the values which are being passed to this SQL and see the exception
block of the script. On analyzing further, you will mostly be able to find the value
which is not getting passed or the wrong value being passed to this SQL and the
reason for the error.
Once this is identified, you have to check the Application Settings and modify it
accordingly to have the correct value to be passed to the SQL to prevent it from
erroring out.
What is this?
Oracle Supplied forms are the seeded forms and have a standard functionality attached to
them. Whenever there is a need to change the functionality or change the look and feel of the
forms, we use Forms Personalization or Custom.PLL.
It is not possible to create any new item in the Standard form using Custom.PLL or Forms
Personalization.
How to
Normally a user with some basic knowledge of Oracle Forms and PL/SQL is allowed to modify a
standard form. This can be achieved by setting the profile Option
This enables the diagnostics menu when the particular user logs in and provides access to the
personalization form. Once the form is open, the user can make any modifications for the
specific form and then save and check the effect.
Custom.PLL is mainly used by the developers who have a vast knowledge of PL/SQL and can
attach any logic using PL/SQL which in-turn will implement the business logic when the form
opens. To achieve this, the developer has to first edit Custom.PLL and then add the code in it,
compile and save it in the UNIX box and then deploy it in the applications. The changes will be
reflected only the next time when the application is restarted.
Changing the property of an Item. It can be any property associated with the item.
Calling a different form and passing a value from the calling form to the called form.
$FLEX$ and $PROFILES$ are Special Variables in oracle Apps environment and are used to
hold values at runtime.
Every Oracle Apps technical consultant will be familiar with the term $FLEX$ and $PROFILES$.
Whenever we are working with value sets, we will be using both of these for modifying the data
fetched, for basing the values of a parameter on the other parameter and also fetching the
Profile Option values.
To segregate this based on the functionality
$FLEX$: Used for basing the value of a parameter on another parameter.
$PROFILES$: used for fetching the data stored in the specified profile option value which is
currently active.
Where is it used?
Both these variables are used in the Parameter form of a Concurrent Program and are used at
the Where Clause window in the value set of Table type.
Syntax:
:$FLEX$.previous_value_set_name
Important:
The previous value set name must have already been assigned and saved on a different
parameter.
:$PROFILES$.Profile_option_name
Important:
Profile option name is the Profile Name and not to be confused with the User profile
Name.
Pre-Requisites:
Created an Executable and a concurrent program which is registered in the Application Object
Library. The Query for the report is as below:
Scenario 1:
Steps:
Create the value set XX_SCENARIO_1 using the validation type as Table.
Create the second value set XX_Sub1 using the validation type as Table and in the where
clause field specify the following code:
where deptno <= :$FLEX$.XX_SCENARIO_1
Working:
In the picture here, the First parameter contains no value, so the second parameter is
disabled as the WHERE clause in value set is equated to NULL, making the field disabled.
When a value is selected in the first parameter, the second parameter gets enabled and
when the LOV is clicked, it shows the departments which are in department number 20
and below it, as we have specified <= in the where clause.
Scenario 2:
Steps:
Working:
Scenario 3:
Use of $PROFILES$ in where clause and Default Value. It is done in the same way as
is used in $FLEX$.
Scenario 4:
Use of Parameter name instead of a value set name in the $FLEX$ Special Variable.
Where Clause of the value set of table type using the parameter name.
Reason:
When we provide the name of the value set in $FLEX$ then we will be able to change
the value of the parameter which is dependent on it. If the value set is used by more
than one parameter then it becomes difficult to get the exact value in the dependent
parameter as it will fetch the values based on the last used value of the value set. It
could have been last used by the first parameter or any other parameter in the form. To
avoid this kind of confusion, the alternative is to provide the name of the Parameter
itself in the $FLEX$ variable. No matter how many times the value set is used, if we
provide the parameter name, we will get the dependent parameter value based on its
parent parameter only. Let me explain this using the pictures below:
The first and third parameter are based on value set names and the second and
fourth parameter are based on parameter name. Since the second parameter is
not initialized, the third parameter (value set based )is also not initialized.
Since the latest value is from Second parameter, hence the value in third is based
on the second parameter. The third value is based on the value of the second
parameter and is irrespective of the value set. Shown in the next picture.
Here the third parameter takes the latest value of the value set, hence shows the
department name corresponding to that and the fourth parameter values are
dependent on the value of the second parameter.
These were some of the basic uses of $FLEX$ and $PROFILES$. Feel free to post
your queries and comments on this topic.
Summary:
The key for enabling a Descriptive Flexfield is to identify the Base table of the related form and
then use the table name to query the Descriptive Flexfield Title. Once the title of the Descriptive
Flexfield is obtained, then we just have to Query the name in the Application Developer
responsibility and then add the desired columns. This will enable the Descriptive Flexfield.
Getting Started:
Lets enable the Descriptive Flexfield of Purchase Order form. The initial screen looks as shown
below and the DFF field is Disabled.
Get the name of the view from which this form is created using the Tools=>Record History
option
Use the utility TOAD to find the base table of this view. We will find that the base table involved
here is PO_HEADERS_ALL.
Now, switch to Application Developer Responsibility and open the form for registering the
Flexfields.
Navigation:
Once the window is queried, then select the Title PO Headers from this window and then
navigate to
Application Developer => Flexfield=> Descriptive => Segments
Now, query this window using the title and the application name. The window is as shown
below:
Now, uncheck the freeze flexfield definition and then add the context field values as per the
need. This is illustrated in the screen below.
Here, I have added A and B as the code and Global Data Elements is default and is always
enabled.
Now, select the code and then add columns to it. It is shown as below
When clicked on Segments, we will get the window as below. We then specify the columns
which will get displayed when this code is selected.
If desired, we can attach the value set also to restrict the user from entering any garbage value.
Now, save this and follow the same steps for enabling the other code(B) also and also ensure
that to show the difference between code A and code B, enable three columns in Code B.
Now, the last step is to specify a default value to the Context Field. I am providing here a
reference field as TYPE_LOOKUP_CODE. Ensure that the checkboxes are checked. The
screen is as below.
Once this is done, we then have to compile the flexfield and save the window. For compiling the
Flexfield definition, we need to first save the window and then check the freeze flexfield
checkbox and then click on Compile.
Now, Login to Purchasing responsibility and then open the Purchase Order form.
This window shows that the DFF field is now enabled. When we click on the DFF window, we
will be getting a screen as below
When the LOV is clicked, we get the values populated by the reference column which we gave
as TYPE_LOOKUP_CODE'.It is shown below
Now, based on the value selected we will get the corresponding columns which is shown in the
subsequent screen.
Hence, this is how a flexfield works. When the data is saved, it will be saved in the base table
on the corresponding Attribute columns as specified in the Application developer responsibility.
What is a Flexfield?
As the name suggests, a Flexfield is a flexible field. A flexfield is a field made up of
segments. Segments are nothing but columns of the base table. Each segment has a
name that can be assigned and a set of valid values. There are two types of Flexfields
in Oracle Applications and they are called as
Key Flexfield
Descriptive Flexfield
With both of these flexfields, users get the ability to customize their application to match
their business needs without programming.
Key flexfield is used to store the key information about an organization whereas
Descriptive flexfields are used to store any additional related information.
Key Flexfield values are stored in Segment columns in the base table whereas
descriptive flexfield values are stored in the Attribute columns of the base table.
Key Flexfields are non-updatable and mostly have only restricted values as input
(Attached Value sets) wheras a the fields in Descriptive Flexfield are updatable.
Key flexfields do not have any context sensitive segments whereas Descriptive flexfields
can be made into context sensitive fields.
Key Flexfields are the mandatory fields whereas descriptive flexfields are not mandatory
by default but can be made mandatory.
Query to find the number of oracle Supplied key flexfields in each application
These were some of the basics involved with Flexfields in Oracle Applications. The next
post will be on how to enable a Descriptive Flexfield in Oracle Applications.