Monday, 2 May 2011

Purchase Order Approval hierarchy


Purchase Order > Approval hierarchy



The setting up of approval hierarchy for PO requires few mandatory setup , which start with employee /Buyer information.These are the following steps required.
  • Define the employee and his/her superiors
  • Define the positions for the employee and the superiors
N --> Setup --> Personnel --> Positions
  • assign the employee and the superiors to a position
-->Setup --> Personnel --> Jobs
  • define an approval group which allows him/her to approve PO's up to the approval limit. Same for the superiors.
--> Setup --> Personnel --> Position Hierarchy
  • Make sure the document type (e.g. PO) allows 'Owner can Approve' (checkbox)
  • Assign the approval groups to the correct positions
  • Create a position hierarchy for every org according to your wishes
  • Assign the hierarchies to the document type
  • Run the concurrent request 'Fill Employee Hierarchy'
approval
and , finally the above can be understood in the data diagram as below.
buyers

Comparing Purchase Orders


Comparing Purchase Orders

Here are the comparison of different purchase orders. The details of the different types of po's.
Lets take a quick look on different types of Purchase Orders , and some of the important tips before implementing within Oracle ebs-Suite of PO module.
  • Standard Purchase Orders: You generally create standard purchase orders for one-time purchase of various items. You create standard purchase orders when you know the details of the goods or services you require, estimated costs, quantities, delivery schedules, and accounting distributions.
    • Suggested Use: Choose a standard purchase order when you require vendor commitment to specific items/services, quantities and delivery schedules, but a long-term agreement is not appropriate.
  • Blanket Purchase Agreements: You create blanket purchase agreements when you know the detail of the goods or services you plan to buy from a specific supplier in a period, but you do not yet know the detail of your delivery schedules. You can use blanket purchase agreements to specify negotiated prices for your items before actually purchasing them. Blanket purchase agreements can be created for a single organization or to be shared by different business units of your organization (global agreements).
  • Much organization it is sometimes called as "standing order" or an "open order".
    • Suggested Use: Choose a blanket agreement when you've negotiated volume discounts and want to create releases against these negotiated volumes, or when you commit to specific items, quantities or amounts.
  • Blanket Releases: You can issue a blanket release against a blanket purchase agreement to place the actual order (as long as the release is within the blanket agreement affectivity dates).
  • Contract Purchase Agreements/Order: You create contract purchase agreements with your suppliers to agree on specific terms and conditions without indicating the goods and services that you will be purchasing. You can later issue standard purchase orders referencing your contracts.
    • Suggested Use : Negotiate pricing on your entire volume of business. Use a contract to manage terms and conditions for this type of negotiation; couple it with a catalog quotation to reference pricing on a per item basis when you create standard purchase order lines.
  • Global Agreements: You may need to negotiate based on an enterprises' total global purchase volume to enable centralizing the buying activity across a broad and sometimes diverse set of businesses. Using global agreements (a special type of blanket purchase agreement), buyers can negotiate enterprise-wide pricing, business by business, then execute and manage those agreements in one central shared environment. Enterprise organizations can then access the agreement to create purchase orders that leverage pre-negotiated prices and terms.
  • Planned Purchase Orders: A planned purchase order is a long-term agreement committing to buy items or services from a single source. You must specify tentative delivery schedules and all details for goods or services that you want to buy, including charge account, quantities, and estimated cost.
    • Suggested Use: Choose a planned purchase order when you want to encumber the order before creating releases. Also use to provide vendor scheduling for capacity management while issuing releases to confirm order commitment.
Apart from these there are few more types may be defined as per there industry segment , but more or less they can be fit into any one of the above mentions type.

compare pO

Reports in Purchase Order


Reports Options for accessing Purchase Order informations


How many reports options available in Oracle Purchasing(PO) to access purchase order information.
They are 15-16 reports provide the access PO information in reporting format.Lets summarize some of them, these listing are based on the availability as per Oracle 11i10.2.
1. Purchase Order Detail Report
This report can be used to review all, specific standard, or planned purchase orders. This is used for review the open purchase orders to
determine how much you still have to receive and how much your supplier has already billed you.
2. Printed Change Orders (Landscape) Report
This report is used to print changed purchase orders in landscape format. Oracle Purchase provides a default format for the preprinted form.
3.Printed Change Orders (Portrait) ReportThis report can be used to provides the same information as the landscape version, but printed in portrait format.
4.Printed Purchase Orders (Landscape Report)
This report can be used to print purchase orders in landscape format.Oracle Purchase provides a default format for the preprinted form.
5.Printed Purchase Orders (Portrait) ReportThis report contains the same information as the landscape version, but is printed in portrait format.
6.Blanket and Planned PO Status ReportThis report can be used to review purchase order transactions for blanket purchase agreements and planned purchase orders. Information will print for releases existing against the orders. If no release exists, only the purchase order header information is printed.
7.Contract Status Report
This review the status of your contract and list purchase order information regarding each contract using this report.
8.Purchase Agreement Audit ReportThis report is used to review purchase order transactions for items normally required to buy using blanket purchase agreements. Oracle Purchase shows you when you purchased items using a standard purchase order that you could have purchased using a blanket purchase agreement.
9.Purchase Order and Releases Detail Report
This report can be used to review detail information for your blanket purchase agreements and planned purchase orders. The quantity ordered, receive and billed and the quantity due to be received are displayed so you can monitor the status Purchase Order Commitment by Period Report
10.Open Purchase Orders Report (by Buyer)This report is used to review all or specific open purchase orders for specific buyers.
11.Open Purchase Order Report (by Cost Centre)This report can be used to review all or specific open purchase orders relating to order charged to one or more cost centre suing this report.
12.Purchasing Activity Register ReportThis report can be used to review purchase order monetary activity carried out for a time interval, such as a day or month.
13.Purchase Order Distribution Detail ReportThis report can be used to review account distribution for a purchase order.
14.Purchase Summary Report by CategoryThis report can used to review the number of orders you place with vendors for a given category of item.
15.Cancelled Purchase Orders Report
This is used to review cancelled purchase orders.
16. Standard Notes ListingThis is used to review standard notes.

Integration with In Oracle Purchasing


Integration with In Oracle Purchasing


..why integration is important ..
Integration is an extremely important part to ERP's. ERP's main goal is to integrate data and processes from all areas of an organization and unify it for easy access and work flow. ERP's usually accomplish integration by creating one single database that employs multiple modules providing different areas of an organization with various business functions.
Oracle Purchasing Integration
Oracle Purchasing works in conjunction with other Oracle Applications to share information.
  • Oracle EDI Gateway: Electronic Data InterchangePOintegration
  • Oracle Inventory: Items, demand, receipts
  • Oracle Master Scheduling/MRP: Demand
  • Oracle Order Management: Internal requisition
  • Oracle Work in Process: Outside processing
  • Oracle Human Resources: Employees
  • Oracle Project Manufacturing: Project Details
  • Oracle Quality: Quality Details
  • Oracle Payables: Invoice Matching
  • Oracle General Ledger :Journal Entries, Set of Books
  • Oracle Supplier Scheduling: Approved Supplier List (ASL)
  • Oracle Assets: Asset Details
  • Oracle Bill of Material: Resources
  • Oracle Cost Management :P ricing

When Oracle Inventory, Oracle Master Scheduling/MRP, and Oracle Purchasing are used in conjunction, they share supply information. The following information is shared:
  • Open purchase orders.
  • Open releases.
POintegration1
By using Oracle Project Manufacturing and oracle Purchasing, you can now specify project sand tasks for your requisition and purchasing transactions. Specifically, you can specify projects and tasks for the Inventory and Shop Floor destination types.
POintegration2
By using Oracle Workflow and Oracle Purchasing, you can automate the approval and document creation processes by using predefined Workflow processes.
POintegration3

Integration with Oracle Purchasing – Shared Data Flow


in above  I have mention , Integration aspect with oracle other modules. Here is the flow diagram of some of the shared data with other modules.




Information – Help Menu


Information – Help Menu

For those who are very new to oracle application , you should know the help menu has some great functionality for diagnostics purpose.
  • How to see application version, Form shortname and version of form
    (Help) About Oracle application
  • (Help)Diagnostics ->Examine
    • Pass the apps password and investigate the value for some variable.
  • (Help)Diagnostics ->Examine ....Chose $DESCRIPTIVE_FLEXFIELD$block
  • (Help)Diagnostics ->Examine ....Chose $ENVIRONMENT$block
    • This has all primary environment variables.
  • (Help)Diagnostics ->Examine ....Chose $PROFILE$block
    • this shows all profile options given to user who is accessing the application.
  • (Help)Diagnostics ->Examine ....Chose system block...choose LAST_QUERY field
    • This will shows last query used by the form.
  • (Help) Diagnostics -> Display Database error
    • This shows any database error message.
  • (Help) Diagnostics -> Trace(checkbox)
    • The options are on and off for forms tracing. Tracing file (.trc) is put into user dump folder.

AOL – Descriptive Flex Field ( Deep Drive)


AOL – Descriptive Flex Field ( Deep Drive)

As we have seen DFF provide customizable expansion space in the form to capture additional information, which are not provided at present. A DFF describes an application entity, providing form and database expansion space that can be customized.
Why Descriptive Flex fields
  • Customers require more data to be stored than what Oracle provides
  • Oracle gave us additional “space” in most tables to store this data
  • Descriptive Flexfields will survive an upgrade
Global vs Context Sensitive
  • Global Data Elements mean the question will be asked for every occurrence of the Descriptive Flexfield.
  • Context Sensitive Elements are questions asked “depending” on the answer to some other question. This “other” question can use a Reference field from above for its answer.
How Segments Use Underlying Columns
  • A DFF uses columns that are added onto a database table. The table contains any columns that its entity requires.
    The DFF columns provide ‘blank’ columns that you can use to store information which is not already stored in another column of that table.
  • A DFF requires one column for each possible segment and one additional column in which to store structure information(i.e. The context value).
  • You can define as many segments in a single structures as you have DFF columns in your table.
    The DFF columns are usually named as ATTRIBUTEn, where n is a number.
    dff
Implementing Descriptive FlexfiledsFor implementing DFF it requires five steps:
  • Define DFF columns in your Database table
  • Register your table with AOL/ Pl/SQL scripts
  • Register Your DFF with Oracle AOL
  • Create Your DFF in Your Form
  • Add DFF routines to Your Form
Drawbacks of DFF
  1. Disk space is wasted.
  2. DFF has limited segment for global as well as context-sensitive attribute.
  3. No query possible on DFF segment values.

12 Steps for Enabling Flexfields in Oracle Report


12 Steps for Enabling Flexfields in Oracle Report


If any one want to use Flexfield in report, there is minimum steps you have to follow to make things Functional. These are the standard steps as per AOL guide.
Step 1 Define your Before Report Trigger
Here you suppose to call FND SRWINIT from the Before Report Trigger like :
SRW.USER_EXIT('FND SRWINIT');
This user exit sets up information for use by flexfields, user profiles, the concurrent manager, and other Oracle Applications features as discussed in one of previous post.
Step 2 Define your After Report Trigger
Next, is you need to call FND SRWEXIT from the After Report Trigger like :
SRW.USER_EXIT('FND SRWEXIT');
Step 3 Define your required parameters
In this step you need to define the parameters your report needs by using the Data Model Painter. You use these parameters in the user exit calls and SQL statements.
Lexical Parameters
  • P_CONC_REQUEST_ID
  • P_FLEXDATA
You must always create the P_CONC_REQUEST_ID lexical parameter. "FND SRWINIT" uses this parameter to retrieve information about the concurrent request that started this report.
The P_FLEXDATA parameter holds the SELECT fragment of the SQL query. The initial value is used to check the validity of a query containing this parameter and to determine the width of the column as specified by the column alias. Its initial value is some string that contains columns with a cumulative width more than the expected width required to hold the data. Make sure the width of this column is sufficient. If there are total 30 segments in the table then the safest initial value will be:
(SEGMENT1||'\n'||SEGMENT2||'\n'||SEGMENT3 ... SEGMENT30)
You determine the width by determining the length of that string. That length is roughly the number of characters in the table alias plus the length of the column name, times the number of segments your code combinations table contains, times the number of structures you expect, plus more for delimiter characters as shown in the string above.
Step 4 Define your rest other parameters
You define the rest of the parameters your report needs by using the Data Model Painter. You use these parameters in the user exit calls and SQL statements.
Step 5 Call FND FLEXSQL from your Before Report Trigger to populate P_FLEXDATA
Next, given that you want to display flexfield information like concatenated values and descriptions, and arrange them in order, you make one call to FND FLEXSQL from the Before Report Trigger specifying the lexical parameters. This call changes the value of the lexical parameter P_FLEXDATA at runtime to the SQL fragment that selects all flexfields value data. For example, the parameter changes to (SEGMENT1||'\n'||SEGMENT2||'\n'||SEGMENT3||'\n'||SEGMENT4).
When you incorporate this lexical parameter into the SELECT clause of a query, it enables the query to return the concatenated segment values that are needed as input to other AOL user exits. These exits then retrieve the actual flexfield information for display purposes.
Here is an example FND FLEXSQL call. Notice that the arguments are very similar to other flexfield routine calls; CODE= and NUM= designate the key flexfield and its structure, respectively. For a report on a different key flexfield (such as the System Items flexfield), you would use a different CODE and NUM.
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');
You should always reference any source column/parameter that is used as a source for data retrieval in the user exit. This guarantees that this column/parameter will contain the latest value and is achieved by "SRW.REFERENCE" call as shown above.
Step 6 Call FND FLEXSQL from your Before Report Trigger to populate other parametersWhat you suppose ti do here is just need to call FND FLEXSQL once for every lexical parameter.
Step 7 Define your report query or queries
Define your report query Q_1:
SELECT &P_FLEXDATA C_FLEXDATA
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM
The query fetches the data required to be used as input for the FLEXIDVAL user exit later.
When the report runs, the call to FND FLEXSQL fills in the lexical parameters. As a result the second query would look something like:
SELECT (SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
SEGMENT4) C_FLEXDATA
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN = 101< /FONT >
Step 8 Create formula columns
Now create columns C_FLEXFIELD and C_DESC_ALL (and any others your report uses) corresponding to the values and descriptions displayed in the report. They all are in group G_1.
Step 9 Populate segment values formula column
Now you need to retrieve the concatenated flexfield segment values and description which you incorporate the flexfields user exits in these columns. In the column definition of C_FLEXFIELD, you incorporate the FND FLEXIDVAL user exit call in the formula field. You pass the concatenated segments along with other information to the user exit, and the user exit populates the concatenated values in this column as specified by the VALUE token. A typical call to populate segment values in this column looks as follows:
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);
Step 10 Populate segment descriptions< /STRONG>

To populate the segment description use DESCRIPTION="C_DESC_ALL" instead of VALUE="C_FLEXFIELD" as in the previous call. The user exit call becomes:
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);
You have created parameters and columns that are containers of all the values to be displayed. Now, in the following steps, you create the layout to display these values on the report.
Step 11 Create your default report layout
First choose Default Layout to generate the default layout. Deselect C_FLEXDATA. Specify a "Label" and a reasonable "Width" for the columns you want to display.
Step 12 Finish your report By adjusting report layout.