6 Dec 2010

Delivery in Oracle Applications




What is Delivery in Oracle Apps

A Delivery consists of a set of lines that are scheduled to be shipped to a customer’s ship to location on a specific date and time. A delivery can include lines from different sales orders as well as back orders.
 Deliveries can either be created manually and then lines are assigned to the delivery or users can auto-create deliveries when pick releasing a sales order lines.
 If deliveries are auto-created they will be by grouped by oracles mandatory grouping criteria ship from location and ship to location, Location. However, additional grouping criteria can be included such as:
 ■ Customer
 ■ Freight Terms
 ■ FOB Code
 ■ Intermediate Ship To Location
 ■ Ship Method

Deliveries are the entities which are regarded as the shipment number of an order line and to the deliveries users will assign the tracking numbers, bill of lading and container information.


Delivery Creation


Manual Delivery Creation:
 Deliveries can be manually created by users by navigating to the deliveries window, here the user will key in all the delivery details, once the delivery is created the user needs to assign order lines to the deliveries, in case any of the oracle grouping rules are violated the user will be intimated.

To create a delivery:
1. Navigate to the Delivery window.
2. Enter a Name and Org Code for the delivery.
3. Select the Initial Ship from location and the Ultimate Ship to.
At this point, you can save the delivery. If the user wishes he can enter the additional details
4. Save the Work

Auto- Create Deliveries:
When the Order is pick released the user can auto create the deliveries at that time and by selecting the Auto Create Delivery : Yes , Oracle will create the delivery and assign the eligible order lines to the delivery.

Additionally the user can pick release the orders without creating deliveries but then navigate to the shipping Transactions Screen where he can auto-create delivery and assign it to order lines. When auto-creating deliveries in case the order has multiple linesOne or more deliveries can be created depending on the default delivery grouping criteria set up in the Shipping Parameters. For example, if two groups of delivery
lines have different Ship To addresses, a different delivery number is assigned to each group.


To auto-create deliveries:
1. Navigate to the Query Manager window, and find the delivery lines.
The delivery lines are displayed in the Shipping Transactions form.
2. Select the delivery lines for which you want to create a delivery.
3. From the Actions menu, select Auto-create Deliveries.
4. Click Go to create a delivery or deliveries for the selected lines.
You can view the delivery name created for the delivery lines in the Delivery
column in the Lines/LPNs tab.
5. Choose the Delivery tab to view or add additional delivery details.
6. Save your work.


Whenever a delivery is created in the system the status of the delivery is OPEN , till the delivery is open user can manipulate the delivery by assigning or un-assigning lines to it.

When the user performs shipping of an Order line by selecting the Option : Ship Confirm from shipping transactions Window , he is basically Ship confirming the Delivery.
When the user ship confirms a Delivery Line he can perform the following operations





Ship all the Quantities to the Order Lines
 1.Partially ship some of the quantities of the order lines by updating the same in the shipping transactions window, in case of partial shipment of the delivery line the order line will be split up by the system
 2.Back order the quantities of the order line, In such a case the order line is backordered, the inventory is moved back from Stage to source sub-inventory, the released_status of the line is updated to 'B' and the user is required to pick release the line again
 3.The user can specify the Tracking number,bill of lading number, carton details and the serial numbers of the parts in case of serial controlled items.
 4.Specify the Shipping documents to be printed e.g : Bill of Lading

Once the user performs Ship Confirm operation on the delivery the delivery status is changed to 'CLOSED', no further changes can be performed on the delivery.




System Changes :
 1.When a delivery is created a new row is inserted into the table : wsh_new_deliveries
 2.When the user assigns a delivery line to the order line the table wsh_delivery_assignements is updated with the delivery id , this table keeps a track of the delivery assigned to order line as it also tracks the delivery detail id of the order line
 3.The delivery id is the shipment number of the order line
 4.All the changes can be seen by the user on the front end by navigating to : Order Line --> Actions Button --> Additional Line Information --> Delivery Tab --> View Delivery Details , this screen will show the user all the delivery and pick release information of the sales order

 delivery tables join

 Following query will join delivery, order and item tables...


SELECT wdd.source_header_number,
       wdd.source_line_id,
       wdd.delivery_detail_id,
       wdd.released_status,
       oe_interfaced_flag,
       inv_interfaced_flag,
       wdd.creation_date,
       mtl.transaction_id,
       l.flow_status_code,
       l.open_flag,
       l.cancelled_flag
  FROM wsh_delivery_details wdd,
       mtl_material_transactions mtl,
       oe_order_lines_all l
 WHERE     l.line_id = wdd.source_line_id
       AND wdd.delivery_detail_id = mtl.picking_line_id
       AND wdd.source_code = 'OE'
       AND wdd.oe_interfaced_flag = 'Y'
       AND wdd.released_status = 'Y'

9 Nov 2010

Request vs Request Set


What are Request Groups and Request Sets :

Generally, we group similar functionality concurrent programs into a request set

 For an example:
1. Load a AR Invoice data file into staging table for an inbound interface
2. Import the step 1 data into Oracle  interface tables
3. Launch the Oracle standard Auto invoice import program
4. Generate an BI publisher report and send notification.

 All these 4 programs are different yet, they are inter-related.

• A request group is a collection of  concurrent programs. A System Administrator defines request groups in order to control user access to concurrent programs. Only a System Administrator can create a request group.

 • Request sets define run and print options, and possibly, parameter values, for a collection of reports or concurrent program. End users and System Administrators can define request sets. A System Administrator has request set privileges beyond those of an end user.

 •A request security group defines the concurrent programs, including requests and request sets that may be run by an application user under a particular responsibility. When a request group is assigned to a responsibility, it becomes a request security group.

 •You can run the same set of concurrent requests regularly by defining a request set,and then submitting the request set from the Submit Requests form. As System Administrator, you can include any Standard Request Submission report or concurrent program in the request sets you define. When end users define a request set, they can only select from reports and programs that belong to their responsibility’s request security group.


Request vs Request Set

              Reports or concurrent programs that are not included in a request security group on an individual basis, but that do belong to a request set included in a request security group, have the following privileges:

 • Users cannot use the Submit Requests form to run single requests and request sets that are not in their responsibility’s request security group.

 • Users can, however, run request sets that contain requests that are not in their request security group, if the request set is in their request security group.



Following Query lists all the Request Sets which are created with the given Concurrent Program .


SELECT DISTINCT user_request_set_name
  FROM fnd_request_sets_tl
 WHERE request_set_id IN
          (SELECT request_set_id
             FROM fnd_request_set_programs
           WHERE concurrent_program_id =
                     (SELECT concurrent_program_id
                        FROM fnd_concurrent_programs_tl
                       WHERE UPPER(user_concurrent_program_name)= UPPER (:p_conc_prog_name)));

6 Nov 2010

API to add concurrent program to a request group


API to add concurrent program to a request group 



Here is the way to add a concurrent program to a request group from back end.

 DECLARE

   v_program_short_name    VARCHAR2 (200);
   v_program_application   VARCHAR2 (200);
   v_request_group         VARCHAR2 (200);
   v_group_application     VARCHAR2 (200);
   v_check                 VARCHAR2 (2);

BEGIN

   v_program_short_name  := 'XX_CONC_PROG_SHORT_NAME';
   v_program_application := 'XX Order Management';
   v_request_group       := 'XX Request Group';
   v_group_application   := 'XXFND';


   apps.fnd_program.add_to_group
(program_short_name  => v_program_short_name,
 program_application => v_program_application,
 request_group       => v_request_group,
 group_application   => v_group_application
  );

  --COMMIT;

  END;





  SELECT 'Y'
  INTO   v_check
    FROM   FND_REQUEST_GROUPS FRG,
             FND_REQUEST_GROUP_UNITS FRGU,
               FND_CONCURRENT_PROGRAMS FCP
      WHERE  FRG.request_group_id       = FRGU.REQUEST_GROUP_ID
      AND    FRG.application_id         = FRGU.application_id
    AND    FRGU.request_unit_id       = FCP.concurrent_program_ID
    AND fcp.CONCURRENT_PROGRAM_NAME='XX_CONC_PROG_SHORT_NAME'

4 Oct 2010

FNDLOAD utility in Oracle Apps






In this blog we will see what is FNDLOAD and why/how we use in Oracle Apps.

What is FNDLOAD:


This is utility provided by Oracle to migrate objects/entities from one instance to another.


Why do we need to migrate?

Good question :-) . Generally we need development in one server (let us call it instance hence forth) and business users will test in another instance and finally production would be final instance. So every time, we cannot and should NOT define concurrent programs/Request groups/Flex fields/Menus and messages etc…,
To make our life simple we will use utility.


How it works?


It is 2 step process,
1)      Download


2)      Upload


Download

 Using download command we will generate a .ldt file, which will hold the definition of entity.
Ex: We want to migrate a concurrent program from  instance 'Dev' to another.
First we need to download the definition from 'Dev' instance.
We will see the commands for the same in the later section for now just understand the concept.



Upload

Here we will load the definition of entity into new instance. (You need not to manually define the executable and concurrent program ;-D sounds good..isn't it? )

Using FNDLOAD we can migrate following entities



  1. Concurrent Programs
  2. Request Groups
  3. Profile Values
  4. Form Personalizations 
  5. Value Set Definitions
  6. Fnd Messages 
  7. Lookup Values
  8. User Definitions 
  9. Request Sets 
  10. Responsibilities
  11. Form Functions


Here are few commands:

Concurrent Programs
Download:
FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_ORACLE_INTERFACE_PROG.ldt PROGRAM_NAME APPLICATION_SHORT_NAME="XXCUST" CONCURRENT_PROGRAM_NAME="XX_CUSTOM_ORACLE_INTERFACE_PROG"


  • This command will create XX_CUSTOM_ORACLE_INTERFACE_PROG.ldt file in your server.
  • XXCUST will be your custom Application Shortname where concurrent program is registered
  • XX_CUSTOM_ORACLE_INTERFACE_PROG Will be the name of your request group
  • PROGRAM_NAME is your conc program short name.


Upload:
FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_ORACLE_INTERFACE_PROG.ldt

References:

For the commands  and usage you can refer below site:


10 Jul 2010

REP-0110: Unable to open file error while running RDF report

REP-0110: Unable to open file error while running RDF report



Forcing NLS_NUMERIC_CHARACTERS to: '.,' for XDO processing

 APPLLCSP Environment Variable set to :

 Current NLS_LANG and NLS_NUMERIC_CHARACTERS Environment Variables are :
American_America.UTF8

'.,'


REP-0004: Warning: Unable to open user preference file.
REP-1070: Error while opening or saving a document.
REP-0110: Unable to open file '/u01/MYDEV/apps/apps_st/appl/XXCUST/12.0.0/reports/US/XXCUST_INVOICE_REP.rdf'.




1) Check if the file has 755 permissions in the .../reports/US directory
2) Make sure your file moved in BINARY mode to the UNIX box