Showing posts with label APPS. Show all posts
Showing posts with label APPS. Show all posts

Thursday, 5 June 2014

Query To Find Out Available APIs In Oracle E-Business Modules

Execute the below query with required parameters in WHERE clause to get all the APIs present in a module.

select substr(a.OWNER,1,20)
, substr(a.NAME,1,30)
, substr(a.TYPE,1,20)
, substr(u.status,1,10) Stat
, u.last_ddl_time
, substr(text,1,80) Description
from dba_source a, dba_objects u
WHERE 2=2
and u.object_name = a.name
and a.text like '%Header%'
and a.type = u.object_type
and a.name like 'PO_%'
order by
a.owner, a.name;


Happy Coding :)

Monday, 2 June 2014

UOM Creation Script: Oracle EBS R12

Below mentioned is the sample script for Unit of Measure Conversion.

DECLARE
  x_row_id                          VARCHAR2(100) :=NULL;
  x_unit_of_measure         VARCHAR2(100) :='TESTUOM1';
  x_unit_of_measure_tl    VARCHAR2(100) :='TESTUOM1';
  x_attribute_category      VARCHAR2(100) :=NULL;
  x_attribute1             VARCHAR2(100) :=NULL;
  x_attribute2             VARCHAR2(100) :=NULL;
  x_attribute3             VARCHAR2(100) :=NULL;
  x_attribute4             VARCHAR2(100) :=NULL;
  x_attribute5             VARCHAR2(100) :=NULL;
  x_attribute6             VARCHAR2(100) :=NULL;
  x_attribute7             VARCHAR2(100) :=NULL;
  x_attribute8             VARCHAR2(100) :=NULL;
  x_attribute9             VARCHAR2(100) :=NULL;
  x_attribute10            VARCHAR2(100) :=NULL;
  x_attribute11            VARCHAR2(100) :=NULL;
  x_attribute12            VARCHAR2(100) :=NULL;
  x_attribute13            VARCHAR2(100) :=NULL;
  x_attribute14            VARCHAR2(100) :=NULL;
  x_attribute15            VARCHAR2(100) :=NULL;
  x_request_id             NUMBER        :=1;
  x_disable_date          DATE          :=NULL;
  x_base_uom_flag                                 VARCHAR2(100) :='N';
  x_uom_code                                          VARCHAR2(100) :='TUM';
  x_uom_class                                          VARCHAR2(100) :='MASS';
  x_description                                         VARCHAR2(100) :='MASS';
  x_creation_date                                     DATE          := SYSDATE;
  x_last_update_date                               DATE          := SYSDATE;
  x_last_update_login                              NUMBER;
  x_program_application_id                    NUMBER :=1;
  x_program_id                                          NUMBER := 1;
  x_program_update_date                      DATE   :=sysdate;
  l_user_id                                                NUMBER :=1318;
BEGIN
  apps.mo_global.init ('PO');
  apps.mo_global.set_policy_context ('S', 204);
  apps.fnd_global.apps_initialize ( user_id => 1318, resp_id => 50578, resp_appl_id => 201 );
  BEGIN
    apps.mtl_units_of_measure_tl_pkg.insert_row( x_row_id ,
                                                x_unit_of_measure ,
                                                x_unit_of_measure_tl ,
                                                x_attribute_category ,
                                                x_attribute1 ,
                                                x_attribute2 ,
                                                x_attribute3 ,
                                                x_attribute4 ,
                                                x_attribute5 ,
                                                x_attribute6 ,
                                                x_attribute7 ,
                                                x_attribute8 ,
                                                x_attribute9 ,
                                                x_attribute10 ,
                                                x_attribute11 ,
                                                x_attribute12 ,
                                                x_attribute13 ,
                                                x_attribute14 ,
                                                x_attribute15 ,
                                                x_request_id ,
                                                x_disable_date ,
                                                x_base_uom_flag ,
                                                x_uom_code ,
                                                x_uom_class ,
                                                x_description ,
                                                x_creation_date ,
                                                l_user_id ,
                                                x_last_update_date ,
                                                l_user_id ,
                                                x_last_update_login ,
                                                x_program_application_id ,
                                                x_program_id ,
                                                x_program_update_date );
    IF(x_row_id IS NOT NULL ) THEN
      dbms_output.put_line('UOM CREATED SUCCESSFULLY');
      dbms_output.put_line(' ROW ID : '||x_row_id);
      BEGIN
        INSERT
        INTO apps.mtl_uom_conversions
          (
            inventory_item_id,
            unit_of_measure,
            uom_code,
            uom_class,
            last_update_date,
            last_updated_by,
            creation_date,
            created_by,
            last_update_login,
            conversion_rate,
            default_conversion_flag
          )
          VALUES
          (
            0,
            x_unit_of_measure,
            x_uom_code,
            x_uom_class,
            SYSDATE,
            1318,
            SYSDATE,
            1318,
            -1,
            1.10,
            'N'
          );
      END;
commit;
    END IF;
    dbms_output.put_line('Unit of Measure created succesfully with UOM CODE '||'TESTUOM1');
  END;
  dbms_session.reset_package() ;
END;

Execute the below script for confirmation that UOM has been created.

SELECT * FROM apps.mtl_units_of_measure WHERE uom_code='TUM';


FNDLOAD for AOL Objects

Below mentioned are the list of FNDLOAD to Download and Upload for different AOL objects.

Functions

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_FUNCTION.ldt FUNCTION FUNCTION_NAME="XX_CUSTOM_FUNCTION"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_FUNCTION.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

Menus

FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_MENU.ldt MENU MENU_NAME="XX_CUSTOM_MENU"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afsload.lct /u01/XX_CUSTOM_MENU.ldt UPLOAD_MODE=REPLACE

Messages

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct /u01/XX_CUSTOM_MESG.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME="XXCUST" MESSAGE_NAME="XX_CUSTOM_MESG"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afmdmsg.lct /u01/XX_CUSTOM_MESG.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


Concurrent Programs

FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct /u01/XX_CUSTOM_CP.ldt PROGRAM APPLICATION_SHORT_NAME="XXCUST" CONCURRENT_PROGRAM_NAME="XX_CUSTOM_CP"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct /u01/XX_CUSTOM_CP.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE


Profile Options

FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct /u01/XX_CUSTOM_PRF.ldt PROFILE PROFILE_NAME="XX_CUSTOM_PRF" APPLICATION_SHORT_NAME="XXCUST"

FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afscprof.lct /u01/XX_CUSTOM_PRF.ldt


Descriptive Flex Fields 

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct /u01/XX_PO_REQ_HEADERS_DFF.ldt DESC_FLEX APPLICATION_SHORT_NAME=PO DESCRIPTIVE_FLEXFIELD_NAME='PO_REQUISITION_HEADERS'

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.lct /u01/XX_PO_REQ_HEADERS_DFF.ldt


Forms Personalizations

FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct /u01/XX_CUST_PERSONALIZATION.ldt FND_FORM_CUSTOM_RULES function_name="XX_CUST_FUNC"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct /u01/RCVRCERC.ldt









Thursday, 29 May 2014

Requisition Import API : Oracle EBS R12

In Oracle EBS R12 we can create Requisition from GUI as well as we can import the Requisition using import program "Requisition Import".

Follow the below steps to import requisition:

Step:1  Validate all the entities and insert in PO_REQUISITIONS_INTERFACE_ALL

INSERT
INTO apps.PO_REQUISITIONS_INTERFACE_ALL
  (
    interface_source_code,
    org_id,
    destination_type_code,
    authorization_status,
    preparer_id,
    charge_account_id,
    source_type_code,
    unit_of_measure,
    line_type_id,
    quantity,
    destination_organization_id,
    deliver_to_location_id,
    deliver_to_requestor_id,
    item_id,
    need_by_date,
    suggested_vendor_name,
    unit_price
  )
  VALUES
  (
    'IMPORT_INV',
    204,                        --(Validate against apps.org_organization_definitions table)
    'INVENTORY',
    'INCOMPLETE',
    25,                         --(Validate against apps.per_all_people_f tabel)
    13185,                   --(Vlidate against apps.mtl_system_items_b corresponding to item and inv org),
    'VENDOR',           --SOURCE_TYPE_CODE,
    'METRICTON',   --UNIT_OF_MEASURE
    1,                           --(Validate against PO_LINE_TYPES)
    100,                       --QUANTITY
    204,                       --DESTINATION_ORGANIZATION_ID,
    27108,                   --DELIVER_TO_LOCATION_ID,
    25,                         --DELIVER_TO_REQUESTOR_ID
    208955,                 --(Validate against mtl_system_items_b)
    SYSDATE,           --NEED_BY_DATE
    'Staples',               --SUGGESTED_VENDOR_NAME
    1                             --UNIT_PRICE
  );

Step:2 Submit "Requisition Import" program.

BEGIN
  APPS.FND_GLOBAL.APPS_INITIALIZE ( USER_ID => 1318, RESP_ID => 50578, RESP_APPL_ID => 201 );
  APPS.FND_REQUEST.SET_ORG_ID('204');
  V_REQUEST_ID := APPS.FND_REQUEST.SUBMIT_REQUEST (APPLICATION => 'PO' --Application,
                                                  ,PROGRAM => 'REQIMPORT'    --Program,
                                                  ,ARGUMENT1 => ''                       --Interface Source code,
                                                  ,ARGUMENT2 => ''                       --Batch ID,
                                                  ,ARGUMENT3 => 'ALL'               --Group By,
                                                  ,ARGUMENT4 => ''                       --Last Req Number,
                                                  ,ARGUMENT5 => 'N'                    --Multi Distributions,
                                                  ,ARGUMENT6 => 'Y'                    --Initiate Approval after ReqImport
                                                  );
  COMMIT;
END;

Query to Check Concurrent Manager Status

Below mentioned is the query to check concurrent manager status in Oracle APPS.

SELECT DECODE(CONCURRENT_QUEUE_NAME,'FNDICM','Internal Manager','FNDCRM','Conflict Resolution Manager','STANDARD','Standard Manager' ) AS "Concurrent Manager's Name",
max_processes  AS "TARGET Processes",
running_processes AS "ACTUAL Processes"
FROM apps.fnd_concurrent_queues
WHERE CONCURRENT_QUEUE_NAME IN ('FNDICM','FNDCRM','STANDARD');







If status of target process and actual process is non-zero then our concurrent manager is up and running.

Update Purchase Order Line Details : Oracle EBS R12

Oracle has provided standard API to update purchase order line details such as;

  • Line Quantity
  • Unit Price
  • Promise Date 
  • Need by Date
Below is the sample script to update PO Line details using API "po_change_api1_s.update_po".


SET serveroutput ON
DECLARE
v_po_number          NUMBER :='52766';
v_po_line_num       NUMBER :=1;
v_quantity               NUMBER :=200;
v_unit_price            NUMBER :=5;
v_promise_date      DATE   :=SYSDATE;
v_need_by_date    DATE   :=SYSDATE;
v_org_id                  NUMBER :=204 ;
v_revision_num     NUMBER;
v_error_flag            NUMBER :=0;
v_error_msg           VARCHAR2(2000);
v_result                   NUMBER;
            
  BEGIN
      --------INITIALIZING APPS ENVIRONMENT-------------------------------                
           
      apps.mo_global.init ('PO');
      apps.mo_global.set_policy_context ('S',204);
      apps.fnd_global.apps_initialize ( user_id => 1318, resp_id => 50578, resp_appl_id => 201 );

           ----GET REVISION NUMBER FROM TABLE-------
                BEGIN
                      SELECT  revision_num
                      INTO v_revision_num
                      FROM apps.po_headers_all
                      WHERE segment1 = '52766';
                exception
                    WHEN no_data_found THEN
                      v_error_flag := 1;
                      v_error_msg:='ERROR IN FETCHING REVISION NUMBER FROM BASE TABLE (ND) ';
                    WHEN others THEN
                      v_error_flag := 1;
                      v_error_msg:='ERROR IN FETCHING REVISION NUMBER FROM BASE TABLE (OTH) '||sqlcode||' '||sqlerrm;
                END;
          IF (v_error_flag <> 1) THEN
          --------CALLING PO UPDATE API--------
          v_result := apps.po_change_api1_s.update_po(x_po_number => v_po_number,
                                                      x_release_number => NULL, 
                                                      x_revision_number => v_revision_num,
                                                      x_line_number => v_po_line_num, 
                                                      x_shipment_number => 1, 
                                                      new_quantity => v_quantity,
                                                      new_price => v_unit_price, 
                                                      new_promised_date => v_promise_date, 
                                                      new_need_by_date => v_need_by_date,
                                                      launch_approvals_flag => 'Y',
                                                      update_source => NULL,
                                                      VERSION => '1.0',
                                                      x_override_date => NULL, 
                                                      x_api_errors => v_api_errors,
                                                      p_buyer_name => NULL,
                                                      p_secondary_quantity => NULL,
                                                      p_preferred_grade => NULL, 
                                                      p_org_id => v_org_id);
            COMMIT;
            IF(v_result = 1) THEN
                  dbms_output.put_line('PO UPDATED SUCCESSFULLY');  
            ELSE
                  dbms_output.put_line('API Failed to Update');
            END IF;
        END IF;
 exception
        WHEN others THEN
           v_error_msg := 'ERROR in updating PO Lines';
 END ; 


Tuesday, 27 May 2014

Return to Vendor of Purchase Order Receipts Script: Oracle EBS R12

Return to Vendor is done in two steps: "Return to Receiving" and  then "Return to Vendor".
Follow below steps to return the received goods to vendor.

Step:1 Run the following script to find the necessary information to be inserted in RCV_TRANSACTIONS_INTERFACE table.

    SELECT  rsh.receipt_num ,
            ph.segment1 po_number,
            rt.transaction_id ,
            rt.transaction_type ,
            rt.transaction_date ,
            rt.quantity ,
            rt.unit_of_measure ,
            rt.shipment_header_id ,
            rt.shipment_line_id ,
            rt.source_document_code ,
            rt.destination_type_code ,
            rt.employee_id ,
            rt.parent_transaction_id ,
            rt.po_header_id ,
            rt.po_line_id ,
            pl.line_num ,
            pl.item_id ,
            pl.unit_price ,
            rt.po_line_location_id ,
            rt.po_distribution_id ,
            rt.routing_header_id,
            rt.routing_step_id ,
            rt.deliver_to_person_id ,
            rt.deliver_to_location_id ,
            rt.vendor_id ,
            rt.vendor_site_id ,
            rt.organization_id ,
            rt.subinventory ,
            rt.locator_id ,
            rt.location_id,
            rsh.ship_to_org_id
    FROM apps.rcv_transactions rt,
      apps.rcv_shipment_headers rsh,
      apps.po_headers_all ph,
      apps.po_lines_all pl
    WHERE rsh.receipt_num     = '9428'
    AND ph.segment1           = '52762'
    AND ph.po_header_id       = pl.po_header_id
    AND rt.po_header_id       = ph.po_header_id
    AND rt.shipment_header_id = rsh.shipment_header_id
    AND rt.po_line_id         =pl.po_line_id
    AND rt.destination_type_code='INVENTORY'
    AND rt.transaction_type='DELIVER';

Step:2 Return from Deliver to Receiving i.e Return to Receiving

INSERT INTO apps.rcv_transactions_interface
                            (interface_transaction_id,
                             group_id,
                             last_update_date,
                             last_updated_by,
                             creation_date,
                             created_by,
                             last_update_login,
                             transaction_type,
                             transaction_date,
                             processing_status_code,
                             processing_mode_code,
                             transaction_status_code,
                             quantity,
                             unit_of_measure,
                             item_id,
                             employee_id,
                             shipment_header_id,
                             shipment_line_id,
                             receipt_source_code,
                             vendor_id,
                             from_organization_id,
                             from_subinventory,
                             from_locator_id,
                             source_document_code,
                             parent_transaction_id,
                             po_header_id,
                             po_line_id,
                             po_line_location_id,
                             po_distribution_id,
                             destination_type_code,
                             deliver_to_person_id,
                             location_id,
                             deliver_to_location_id,
                             validation_flag
                            )
                            VALUES
                            (apps.rcv_transactions_interface_s.nextval,      --INTERFACE_TRANSACTION_ID
                             apps.rcv_interface_groups_s.nextval,                --GROUP_ID
                             SYSDATE,                                                               --LAST_UPDATE_DATE
                             1318,                                                                          --LAST_UPDATE_BY
                             SYSDATE,                                                               --CREATION_DATE
                             1318,                                                                          --CREATED_BY
                             0,                                                                                --LAST_UPDATE_LOGIN
                             'RETURN TO RECEIVING',                                   --TRANSACTION_TYPE
                             SYSDATE,                                                              --TRANSACTION_DATE
                             'PENDING',                                                             --PROCESSING_STATUS_CODE
                             'BATCH',                                                                --PROCESSING_MODE_CODE
                             'PENDING',                                                             --TRANSACTION_STATUS_CODE
                             25,                                                                            --QUANTITY
                             'METRICTON',                                                      --UNIT_OF_MEASURE
                            208955,                                                                     --ITEM_ID
                             25,                                                                            --EMPLOYEE_ID
                             5048067,                                                                 --SHIPMENT_HEADER_ID
                             5035611,                                                                 --SHIPMENT_LINE_ID
                             'VENDOR',                                                             --RECEIPT_SOURCE_CODE
                             557,                                                                         --VENDOR_ID
                             204,                                                                        --FROM_ORGANIZATION_ID
                             'Stores',                                                                 --FROM_SUBINVENTORY
                             null,                                                                       --FROM_LOCATOR_ID
                             'PO',                                                                       --SOURCE_DOCUMENT_CODE
                             5090687,                                                               --TRANSACTION_ID
                             165864,                                                                 --PO_HEADER_ID
                             232886,                                                                 --PO_LINE_ID
                             323424,                                                                 --PO_LINE_LOCATION_ID
                             329884,                                                                 --PO_DISTRIBUTION_ID
                             'INVENTORY',                                                     --DESTINATION_TYPE_CODE
                             null,                                                                       --DELIVER_TO_PERSON_ID
                             NULL,                                                                   --LOCATION_ID
                             null,                                                                       --DELIVER_TO_LOCATION_ID
                             'Y'                                                                           --Validation_flag

                            ); 
commit;

Step:3 Submit the Receiving Transaction Processor concurrent program

SET serveroutput ON
DECLARE
v_request_id NUMBER;
BEGIN
apps.mo_global.init ('PO');
apps.mo_global.set_policy_context ('S',204);
apps.fnd_global.apps_initialize ( user_id => 1318, resp_id => 50578, resp_appl_id => 201 );
--------CALLING STANDARD RECEIVING TRANSACTION PROCESSOR ---------------------------------

  v_request_id   := apps.fnd_request.submit_request ( application => 'PO', 
                                                      PROGRAM => 'RVCTP', 
                                                      argument1 => 'BATCH', 
                                                      argument2 => apps.rcv_interface_groups_s.currval, 
                                                      argument3 => 204);
                                                      commit;
dbms_output.put_line('Request Id'||v_request_id);                                                 
END;


Step:4 Run the script to check data is inserted in proper way in rcv_transactions.

SELECT * FROM apps.rcv_transactions WHERE po_header_id=165864;

Step:5 Once the goods are transferred to receiving destination return to vendor.

        INSERT INTO apps.rcv_transactions_interface
                                (interface_transaction_id,
                                 group_id,
                                 last_update_date,
                                 last_updated_by,
                                 creation_date,
                                 created_by,
                                 last_update_login,
                                 transaction_type,
                                 transaction_date,
                                 processing_status_code,
                                 processing_mode_code,
                                 transaction_status_code,
                                 quantity,
                                 unit_of_measure,
                                 item_id,
                                 employee_id,
                                 shipment_header_id,
                                 shipment_line_id,
                                 receipt_source_code,
                                 vendor_id,
                                 from_organization_id,
                                 from_subinventory,
                                 from_locator_id,
                                 source_document_code,
                                 parent_transaction_id,
                                 po_header_id,
                                 po_line_id,
                                 po_line_location_id,
                                 po_distribution_id,
                                 destination_type_code,
                                 deliver_to_person_id,
                                 location_id,
                                 deliver_to_location_id,
                                 validation_flag
                                )
                                values
                                (apps.rcv_transactions_interface_s.nextval,     --INTERFACE_TRANSACTION_ID
                                 apps.rcv_interface_groups_s.nextval,              --GROUP_ID
                                 sysdate,                                                                  --LAST_UPDATE_DATE
                                 1318,                                                                        --LAST_UPDATE_BY
                                 sysdate,                                                                  --CREATION_DATE
                                 1318,                                                                        --CREATED_BY
                                 0,                                                                              --LAST_UPDATE_LOGIN
                                 'RETURN TO VENDOR',                                    --TRANSACTION_TYPE
                                 sysdate,                                                                  --TRANSACTION_DATE
                                 'PENDING',                                                             --PROCESSING_STATUS_CODE
                                 'BATCH',                                                                --PROCESSING_MODE_CODE
                                 'PENDING',                                                             --TRANSACTION_STATUS_CODE
                                 25,                                                                            --QUANTITY
                                 'METRICTON',                                                      --UNIT_OF_MEASURE
                                 208955,                                                                    --ITEM_ID
                                 25,                                                                            --EMPLOYEE_ID
                                 5048067,                                                                 --SHIPMENT_HEADER_ID
                                 5035611,                                                                 --SHIPMENT_LINE_ID
                                 'VENDOR',                                                             --RECEIPT_SOURCE_CODE
                                557,                                                                          --VENDOR_ID
                                 204,                                                                         --FROM_ORGANIZATION_ID
                                 'Stores',                                                                    --FROM_SUBINVENTORY
                                 null,                                                                        --FROM_LOCATOR_ID
                                 'PO',                                                                        --SOURCE_DOCUMENT_CODE
                                 5090686,                                                                 --PARENT_TRANSACTION_ID
                                 165864,                                                                   --PO_HEADER_ID
                                 232886,                                                                   --PO_LINE_ID
                                323424,                                                                    --PO_LINE_LOCATION_ID
                                 329884,                                                                   --PO_DISTRIBUTION_ID
                                 'RECEIVING',                                                        --DESTINATION_TYPE_CODE
                                 null,                                                                        --DELIVER_TO_PERSON_ID
                                 null,                                                                       --LOCATION_ID
                                 null,                                                                       --DELIVER_TO_LOCATION_ID
                                 'Y'                                                                           --Validation_flag
                                ); 
commit;

Step:6 Submit the Receiving Transaction Processor concurrent program

SET serveroutput ON
DECLARE
v_request_id NUMBER;
BEGIN
apps.mo_global.init ('PO');
apps.mo_global.set_policy_context ('S',204);
apps.fnd_global.apps_initialize ( user_id => 1318, resp_id => 50578, resp_appl_id => 201 );
--------CALLING STANDARD RECEIVING TRANSACTION PROCESSOR ---------------------------------

  v_request_id   := apps.fnd_request.submit_request ( application => 'PO', 
                                                      PROGRAM => 'RVCTP', 
                                                      argument1 => 'BATCH', 
                                                      argument2 => apps.rcv_interface_groups_s.currval, 
                                                      argument3 => 204);
                                                      commit;
dbms_output.put_line('Request Id'||v_request_id);                                                 
END;

Step:7 Run the script to check data is inserted in proper way in rcv_transactions.

SELECT * FROM apps.rcv_transactions WHERE po_header_id=165864;

Monday, 26 May 2014

Blanket Purchase Order Import Program Script: Oracle EBS R12

To create Blanket Purchase Order(PO) using Oracle standard API please follow below steps.

Step:1 Validate and Insert PO header and line details in PO_HEADERS_INTERFACE and PO_LINES_INTERFACE tables respectively.

SET serveroutput ON
DECLARE
p_supplier VARCHAR2(1000):='Staples';
p_supplier_site VARCHAR2(1000):='STAPLES LA';
p_ship_to_location VARCHAR2(1000):='V1- New York City';
p_bill_to_location VARCHAR2(1000):='V1- New York City';
p_currency VARCHAR2(1000):='USD';
p_buyer VARCHAR2(1000):='Stock, Ms. Pat';
p_item VARCHAR2(1000):='Oil';
p_unit_of_measure VARCHAR2(1000):='METRICTON';
p_unit_price number:=1;
v_org_name       VARCHAR2(30)                               := 'Vision Operations';
v_dest_code      VARCHAR2(30)                               := 'INVENTORY';
v_error_flag NUMBER:= 0;
v_main_error VARCHAR2(1000):= NULL;
v_currency VARCHAR2(1000);
v_agent_id number;
v_org_id NUMBER;
v_vendor_id NUMBER;
v_vendor_site_id NUMBER;
v_ship_to_location_id NUMBER;
v_bill_to_location_id NUMBER;
v_item_id NUMBER;
v_uom_code VARCHAR2(1000);
v_intf_dist_id NUMBER;
v_intf_line_id NUMBER;
v_intf_header_id NUMBER;
v_batch_id NUMBER;
v_line_type_id NUMBER;

BEGIN
  -----------VALIDATING THE PRICE CURRENCY CODE --------------
  BEGIN
    SELECT currency_code
    into v_currency
    FROM apps.fnd_currencies
    WHERE enabled_flag       = 'Y'
    AND currency_flag        = 'Y'
    AND upper(currency_code) = upper(trim(p_currency));
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'PRICE CURRENCY NOT EXIST IN EBS (WHEN ND) ';
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR WHILE VALIDATING CURRENCY CODE(WHEN OTH) '||' '||SQLCODE||':'||sqlerrm ;
  END;
   --------- --VALIDATING AGENT AND FETCHING THE AGENT_ID-------------------------
  BEGIN
    SELECT ppf.person_id
    INTO v_agent_id
    FROM per_people_f ppf
    WHERE ppf.full_name = p_buyer
    and rownum=1;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'AGENT ID/TRADER PERSON NUMBER NOT EXIST IN EBS(WHEN ND) ';
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error|| 'ERROR WHILE VALIDATING AGENT ID / TRADER PERSON NUMBER(WHEN OTH)-'|| SQLCODE ||':'||sqlerrm;
  END;
  ---------VALIDATING ORAGANIZATION AND FETCHING  ORANIZATION ID-----------------
  BEGIN
    SELECT  organization_id
    INTO v_org_id
    FROM apps.hr_operating_units
    WHERE NAME = v_org_name
    and rownum=1;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'ORGANIZATION ID/INTERNAL COMPANY NUMBER NOT FOUND IN EBS(WHEN ND) '||v_org_name;
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR WHILE VALIDATING ORGANIZATION ID/INTERNAL COMPANY NUMBER (WHEN OTH)-'||v_org_name||' '||SQLCODE||' '|| sqlerrm;
  END;
  ---------------------VALIDATING THE VENDOR NAME AND FETCHING VENDOR_ID----------------------
  BEGIN
    SELECT vendor_id
    INTO v_vendor_id
    FROM apps.po_vendors
    WHERE upper(vendor_name) = upper(p_supplier);
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'VENDOR ID/COUNTERPART COMPANY NUMBER NOT EXISTS IN EBS (WHEN ND) '||p_supplier;
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR WHILE VALIDATING VENDOR ID/COUNTERPART COMPANY NUMBER (WHEN OTH) '||p_supplier||' '||SQLCODE||' '||sqlerrm;
  END;
  ---------------------VALIDATING THE VENDOR SITE ID----------------------------
  BEGIN
    SELECT vendor_site_id
    INTO v_vendor_site_id
    FROM apps.po_vendor_sites_all
    WHERE upper(vendor_site_code) = upper(p_supplier_site)
    AND vendor_id                 = v_vendor_id
    AND org_id                    = v_org_id;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'VENDOR SITE ID NOT EXIST IN EBS (WHEN ND) '||p_supplier_site;
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR WHILE VALIDATING VENDOR SITE ID(WHEN OTH)-'||p_supplier_site||' '||SQLCODE||':'|| sqlerrm;
  END;
  --------VALIDATING THE SHIP TO LOCATION AND FETCHING SHIP_TO_LOCATION_ID-------------
  BEGIN
    SELECT location_id
    INTO v_ship_to_location_id
    FROM hr_locations_all
    WHERE location_code = p_ship_to_location;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'SHIP TO LOCATION ID/DESTINATION LOCATION NUMBER NOT FOUND IN EBS (WHEN ND)-'||p_ship_to_location;
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'ERROR WHILE VALIDATING SHIP TO LOCATION ID/DESTINATION LOCATION NUMBER (WHEN OTH)'||p_ship_to_location||' '||SQLCODE||':'||sqlerrm;
  END;
  -------------------VALIDATING THE BILL TO LOCATION AND FETCHING THE BILL_TO_LOCATION_ID--------------------------
  BEGIN
    SELECT location_id
    INTO v_bill_to_location_id
    FROM hr_locations_all
    WHERE location_code = p_bill_to_location ;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' BILL TO LOCATION ID NOT EXISTS IN EBS (WHEN ND) '||p_bill_to_location;
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR WHILE VALIDATING BILL TO LOCATION ID(WHEN OTH) '||p_bill_to_location||':'||SQLCODE||':'||sqlerrm;
  END;
  ----------------VALIDATING THE ITEM AND FETCHING ITEM ID----------------------
  BEGIN
    SELECT inventory_item_id
    INTO v_item_id
    FROM apps.mtl_system_items
    WHERE enabled_flag  = 'Y'
    AND SYSDATE         > TRUNC(NVL(start_date_active, SYSDATE -1))
    AND SYSDATE         < TRUNC(NVL(end_date_active, SYSDATE   + 1))
    AND segment1        = p_item
    AND organization_id = v_org_id;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'ITEM ID/COMODITY NOT FOUND IN EBS PLEASE CHECK FOR REFERENCE DATA MAPPING FOR TRADE ';
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'ERROR WHILE VALIDATING ITEM ID/COMODITY FOR TRADE '||p_item||' '||SQLCODE||' '||sqlerrm;
  END;
  ------------------- VALIDATE UNIT_PRICE---------------------
  BEGIN
    IF(NVL(p_unit_price,0) < 1) THEN
      v_error_flag        := 1;
      v_main_error        := v_main_error||' UNIT_PRICE CANNOT BE LESS THAN ZERO OR NULL FOR OBLIGATION ';
    END IF;
  END;
  -------------- VALIDATE UNIT_OF_MEASURE------------------------
  BEGIN
    SELECT uom_code
    INTO v_uom_code
    FROM apps.mtl_units_of_measure
    WHERE SYSDATE              < TRUNC(NVL(disable_date, SYSDATE + 1))
    AND upper(unit_of_measure) = upper(p_unit_of_measure);
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'NO UOM FOUND IN EBS FOR UOM CODE '||p_unit_of_measure;
  WHEN too_many_rows THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'MULTIPLE UOM CODE FOUND IN EBS FOR UOM '||p_unit_of_measure;
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR WHILE FETCHING UOM CODE '||p_unit_of_measure||':'||SQLCODE||':'||sqlerrm;
  END;
  ------------ GETTING SEQUESNCE VALUE FOR INTERFACE HEADER ID --------
  SELECT apps.po_headers_interface_s.nextval
  INTO v_intf_header_id
  FROM dual;
  -----------GENERATING BATCH ID--------------------
  SELECT TO_CHAR(SYSDATE,'DDMMYYHHMMSS')
  INTO v_batch_id
  FROM dual;
  ------GETTING INTERFACE LINE ID FROM LINE INTERFACE SEQUENCE----------------
  BEGIN
    SELECT apps.po_lines_interface_s.nextval INTO v_intf_line_id FROM dual;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' Error In Getting Value From Sequence For Line Id ';
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' Error In Getting Value From Sequence For Line Id '||SQLCODE||':'||sqlerrm;
  END;
  -------------Getting Line Type Id for CM line Type --------------
  BEGIN
    SELECT line_type_id
    INTO v_line_type_id
    FROM apps.po_line_types_v
    WHERE NVL(inactive_date,SYSDATE+1) > SYSDATE
    AND line_type                      = 'Goods';
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := 'ERROR WHILE FETCHING LINE TYPE ID(WHEN ND)-';
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_error_flag := v_error_flag||' ERROR WHILE FETCHING LINE TYPE ID(WHEN OTH) '||SQLCODE||':'||sqlerrm;
  END;
  ----------- GETTING INTERFACE DISTRIBTION ID FROM DISTRIBUTION INTERFACE SEQUENCE ----------------
  BEGIN
    SELECT apps.po_distributions_interface_s.nextval
    INTO v_intf_dist_id
    FROM dual;
  EXCEPTION
  WHEN no_data_found THEN
    v_error_flag := 1;
    v_main_error := v_main_error||' ERROR IN GETTING VALUE FROM SEQUENCE FOR DISTRIBUTION ID ';
  WHEN OTHERS THEN
    v_error_flag := 1;
    v_main_error := v_main_error||'ERROR IN GETTING VALUE FROM SEQUENCE FOR DISTRIBUTION ID '||SQLCODE||':'||sqlerrm;
  END;
dbms_output.put_line(v_main_error);
  --===========================Inserting Records IN Interface Table ==================================-----------------
  IF v_error_flag <> 1 THEN
    BEGIN
      INSERT
      INTO apps.po_headers_interface
        (
          interface_header_id,
          action,
          process_code,
          document_type_code,
          batch_id,
          document_num,
          currency_code, 
          approval_required_flag,
          approval_status,
          vendor_id,
          terms_id,
          fob,
          org_id,
          agent_id,
          effective_date,
          vendor_site_id,
          ship_to_location_id,
          bill_to_location_id
        )
        VALUES
        (
          v_intf_header_id,       -- INTERFACE_HEADER_ID
          'ORIGINAL',             -- ACTION
          'PENDING' ,             -- PROCESS_CODE
          'BLANKET',              -- DOCUMENT_TYPE_CODE
          v_batch_id,
          NULL,                   -- DOCUMENT_NUM
          v_currency,             -- CURRENCY_CODE
          'Y',                    -- APPROVAL_REQUIRED_FLAG
          'APPROVED',             -- APPROVAL_STATUS
          v_vendor_id,            -- VENDOR_ID
          NULL,                   -- V_PAYEMENT_TERM_ID,          
          NULL,                   -- V_DELIVERY_TERM,              
          v_org_id,               -- ORG_ID
          v_agent_id,             -- AGENT_ID
          to_date(SYSDATE),       -- EFFECTIVE_DATE
          v_vendor_site_id,       -- VENDOR_SITE_ID
          v_ship_to_location_id,  -- SHIP_TO_LOCATION_ID
          v_bill_to_location_id   -- BILL_TO_LOCATION_ID
        );
      IF SQL%notfound THEN
        v_error_flag := 1;
        v_main_error := v_main_error||' '||'Record Not Inserted in Header Interface Table';
      ELSE
        dbms_output.put_line('Inserted Records In Header Interface Table');
      END IF;
      IF v_error_flag <> 1 THEN
        BEGIN
          INSERT
          INTO apps.po_lines_interface
            (
              interface_line_id,
              interface_header_id,
              line_num,
              uom_code,
              item_id,
              unit_price,
              need_by_date,
              promised_date,
              line_type_id,
              ship_to_organization_id,
              ship_to_location,
              note_to_receiver
            )
            VALUES
            (
              v_intf_line_id,         --INTERFACE_LINE_ID
              v_intf_header_id,       --INTERFACE_HEADER_ID
              NULL,                   --LINE_NUM
              v_uom_code,             --UNIT_OF_MEASURE
              v_item_id,              --ITEM_ID
              p_unit_price,           --UNIT_PRICE
              SYSDATE,                --NEED_BY_DATE
              SYSDATE,                --PROMISED_DATE
              v_line_type_id,         --LINE_TYPE_ID
              NULL,                   --SHIP_TO_ORGANIZATION_ID
              v_ship_to_location_id,  --SHIP_TO_LOCATION
              NULL                    --NOTE_TO_RECEIVER
            );
          IF SQL%notfound THEN
            v_error_flag := 1;
            v_main_error := v_main_error||' '||'Record Not Inserted in Lines Interface Table';
          ELSE
            dbms_output.put_line('Inserted Records In Lines Interface Table');
          END IF;
       END;
      END IF;
    END;
  END IF;
 commit;
END;

Step:2 Once the records are inserted in PO header and line interface tables run the API Import Price Catalogs(POXPDOI) to import Blanket Purchase Order.

SET serveroutput ON
DECLARE
v_request_id NUMBER;
v_org_id     NUMBER := 204;
BEGIN
  apps.mo_global.init ('PO');
  apps.mo_global.set_policy_context ('S', 204);
  apps.fnd_global.apps_initialize ( user_id => 1318, resp_id => 50578, resp_appl_id => 201 );
  v_request_id :=apps.fnd_request.submit_request 
                                            ('PO' ,
                                            'POXPDOI' ,
                                            'Import Price Catalogs' ,
                                              SYSDATE ,
                                              FALSE ,
                                              NULL ,
                                              'Blanket' ,
                                              NULL ,
                                              'N' ,
                                              'N' ,
                                              'APPROVED' ,
                                              NULL ,
                                              NULL ,
                                              v_org_id,   -- operating unit ID
                                              'N' ,
                                              NULL ,
                                              NULL ,
                                              NULL ,
                                              NULL );
  dbms_output.put_line(v_request_id);
commit;
END;

Step:3 Once concurrent program gets completed you can query the Blanket PO.