Monday, 24 August 2015

MATERIALIZED VIEWS



When the table on which we are creating is having a primary key then use the below script.

CREATE MATERIALIZED VIEW TTL_SMS_PINLESS_MV

BUILD IMMEDIATE

REFRESH FAST

NEXT SYSDATE + 4/24

AS

SELECT

ID SMS_ID,

MDN MDN,

MSG RESPONSE_MSG,

LAST_UPDATED_DATE REQUEST_DATE,

TIPPS_MSG SUBSCRIPTION_STATUS

FROM

SMS_PINLESS@CRME2E_TO_CCSMS;

If the table not having any primary key then use the below script.

CREATE MATERIALIZED VIEW TTL_PPM_CIRCLE_MAPPING_MV

REFRESH COMPLETE WITH ROWID

AS

SELECT "PPM_CIRCLE_MAPPING_REF"."PPM_CIRCLE" "PPM_CIRCLE","PPM_CIRCLE_MAPPING_REF"."PPM_CIRCLE_DESC" "PPM_CIRCLE_DESC","PPM_CIRCLE_MAPPING_REF"."CRM_CIRCLE" "CRM_CIRCLE","PPM_CIRCLE_MAPPING_REF"."MSS_CIRCLE" "MSS_CIRCLE"

FROM "PPM_CIRCLE_MAPPING_REF"@PPMSIT.US.ORACLE.COM "PPM_CIRCLE_MAPPING_REF";

Refreshing a Materialized View

begin

dbms_mview.refresh('mv name','F/C');

end;

Altering a materialized View

ALTER MATERIALIZED VIEW PREP_DATA_USAGE_RECORDS_MV

REFRESH COMPLETE

START WITH SYSDATE

NEXT SYSDATE+0.1/24

alter MATERIALIZED VIEW PREP_DATA_USAGE_RECORDS_MV compile;

Drop Materialized View

drop materialized view MVIEW_NAME

UPDATABLE MATERIALIZED VIEWS:

Read-Only Materialized Views
You can make a materialized view read-only during creation by omitting the FOR UPDATE
clause or disabling the equivalent option in the Replication Management tool.
Read-only materialized views use many of the same mechanisms as updatable
 materialized views, except that they do not need to belong to a materialized view group.

In addition, using read-only materialized views eliminates the possibility of
a materialized view introducing data conflicts at the master site or master
materialized view site, although this convenience means that updates cannot
be made at the remote materialized view site. The following is an example of a
read-only materialized view:

CREATE MATERIALIZED VIEW hr.employees AS
SELECT * FROM hr.employees@orc1.world;
Updatable Materialized Views
You can make a materialized view updatable during creation by including the FOR UPDATE
 clause or enabling the equivalent option in the Replication Management tool. For changes made to an updatable materialized view to be pushed back to the master during refresh, the updatable materialized view must belong to a materialized view group.

Updatable materialized views enable you to decrease the load on master sites because users can make changes to the data at the materialized view site. The following is an example of an updatable materialized view:

CREATE MATERIALIZED VIEW hr.departments FOR UPDATE AS
SELECT * FROM hr.departments@orc1.world;

The following statement creates a materialized view group:

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'hr_repg',
master => 'orc1.world',
propagation_mode => 'ASYNCHRONOUS');
END;
/

The following statement adds the hr.departments materialized view to the materialized view group, making the materialized view updatable:

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'departments',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

You can also use the Replication Management tool to create a materialized view group and add a materialized view to it.

--------------------------------------------------------------------------------

Note:

Do not use column aliases when you are creating an updatable materialized view. Column aliases cause an error when you attempt to add the materialized view to a materialized view group using the CREATE_MVIEW_REPOBJECT procedure.
An updatable materialized view based on a master table or master materialized view that has defined column default values does not automatically use the master's default values.
Updatable materialized views do not support the DELETE CASCADE constraint.

--------------------------------------------------------------------------------

See Also:

"Materialized View Groups" for more information
Oracle9i SQL Reference for more information about column aliases


Writeable Materialized Views
A writeable materialized view is one that is created using the FOR UPDATE clause but is not part of a materialized view group. Users can perform DML operations on a writeable materialized view, but if you refresh the materialized view, then these changes are not pushed back to the master and the changes are lost in the materialized view itself. Writeable materialized views are typically allowed wherever fast-refreshable read-only materialized views are allowed.

--------------------------------------------------------------------------------

Note:

Most of the documentation about materialized views only refers to read-only and updatable materialized views because writeable materialized views are rarely used.


BEGIN

DBMS_REPCAT.CREATE_MATERIALIZED VIEW_REPOBJECT(

gname => '"REP_GP1"',

sname => '"PUBS"',

oname => '"STORE"',

type => 'SNAPSHOT',

min_communication => TRUE);

END;

/

What is difference between View and Materialized View in Database or SQL?

Difference between View and Materialized view is one of the popular SQL interview question, much like truncate vs delete,  correlated vs noncorrelated subquery or primary key vs unique key.  This is one of the classic question which keeps appearing in SQL interview now and then and you simply can’t afford not to learn about them. Doesn’t matter if you are a programmer, developer or DBA, this SQL questions is common to all. Views are concept which not every programmer familiar of, it simply not in the category of CRUD operation or database transactions or SELECT query, its little advanced concept for average programmer. Views allows a level of separation than original table in terms of access rights but it always fetch updated data. Let’s see What is View in database, What is materialized View and difference between view and materialized view in database.


What is View in database
What is difference between View vs Materialized View in database or SQL?Views are logical virtual table created by “select query” but the result is not stored anywhere in the disk and every time we need to fire the query when we need data, so always we get updated or latest data from original tables. Performance of the view depend upon our select query. If we want to improve the performance of view we should avoid to use join statement in our query or if we need multiple joins between table always try to use index based column for joining as we know index based columns are faster than non index based column. View allow to store definition of the query in the database itself.
What is Materialized View in database
Materialized views are also logical view of our data driven by select query but the result of the query will get stored in the table or disk, also definition of the query will also store in the database .When we see the performance of Materialized view it is better than normal View because the data of materialized view will stored in table and table may be indexed so faster for joining also joining is done at the time of materialized views refresh time so no need to every time fire join statement as in case of view.

Difference between View vs Materialized View in database

Based upon on our understanding of View and Materialized View, Let’s see, some short difference between them :
1) First difference between View and materialized view is that, In Views query result is not stored in the disk or database but Materialized view allow to store query result in disk or table.
2) Another difference between View vs materialized view is that, when we create view using any table,  rowid of view is same as original table but in case of Materialized view rowid is different.
3) One more difference between View and materialized view in database is that, In case of View we always get latest data but in case of Materialized view we need to refresh the view for getting latest data.
4) Performance of View is less than Materialized view.
5) This is continuation of first difference between View and Materialized View, In case of view its only the logical view of table no separate copy of table but in case of Materialized view we get physically separate copy of table
6) Last difference between View vs Materialized View is that, In case of Materialized view we need extra trigger or some automatic method so that we can keep MV refreshed, this is not required for views in database.
When to Use View vs Materialized View in SQL
Mostly in application we use views because they are more feasible,  only logical representation of table data no extra space needed. We easily get replica of data and we can perform our operation on that data without affecting actual table data but when we see performance which is crucial for large application they use materialized view where Query Response time matters so Materialized views are used mostly with data ware housing or business intelligence application.


Wednesday, 19 August 2015

Zoom Functionality in Oracle Apps

CALLING FORM USING ZOOM FUNCTIONALITY

Login to ERP and select inventory responsibility and click change organization.
Select your organization and navigate to miscellaneous transaction form.
Click on Help > Diagnostics > Custom code > Personalization
A password window will appear asking for password for apps.

Personalization form will be displayed.



Add a record to create a menu, insert values from
Seq no = 10
Description = Create a menu
Level = Function
Enabled = Yes
On condition tab select
Trigger Event = WHEN-NEW-FORM-INSTANCE
This will set a trigger to fire every time we enters into form.
On actions tab insert the values as
Seq no = 10
Type = Menu
Description = Creating a menu
Language = All
Enabled = Yes
Menu entry = Menu 1
Menu label = OnHand Quantity
This will create a menu named OnHand Quantity.



Close both forms and invoke miscellaneous transaction form again.
Click on Tools
Check that it shows the menu OnHand Quantity.




Check the item field in the table.
To check this click in item field and then click on Help > Diagnostics > Examine
Copy the block name and field name.



Now invoke the personalization form.
Create a new record.
Seq = 20
Description = Copy values and Call onhand quantity
Level = Function
Enabled = Yes
On condition tab select
Trigger event = MENU1
Remain will left default
On Actions tab select
Seq = 1
Type = Property
Description = Copy value for item
Language = All
Enabled = All
Object Type = Global variable
Target object = ITEM
Property name = Value
Value = =:MTL_TRX_LINE.ITEM
Seq = 10
Type = Buitlin
Description = Call Form
Language = All
Enabled = All
Builtin type = Launch Function
Function code = INV_INVMATWB
Function name = Material Workbench
Note:- when you select Function code the Function name will automatically be detected.
The trigger type as menu1 specifies that this trigger will be fired when click on the menu1 which is
Onhand Quantity.
The record on seq 1 will create a global variable and the item selected on the form will be copied to this global variable which we will pass to the form will be called by this menu.
The record on the seq 10 will call a form because builtin launch function is used to do so in this case the function name INV_INVMATWB calls the onhand quantity form.
If you want to know the form name navigate to that form call personalization form and see the function name for that form.




Close both the forms
Recall the miscellaneous transaction form select any item and click to Tools > Onhand Quantity

It will display the onhand quantity form.



Once the form is called its half done you have called form and you have done half of the zooming functionality.
Click on the item / revision field to check the table field in the item diction.
Click Help > Diagnostics > Examine
Copy values for block and field.



Now navigate to Help > Diagnostics > Custom Code > Personalization.
This will call the personalization form for Onhand Quantity form.


Create a record
Seq =10
Description = Moving values from global variable
Level = Function
Enabled = Yes
On conditions tab
Trigger event = WHEN-NEW-FORM-INSTANCE
Leave remaining as default.
Move to actions tab
Insert values as
Seq = 10
Type = Property
Description = Transferring values from global variable
Language = All
Enabled = Yes
Object type = item
Target object = MATERIAL_QF.ITEM
Property name = Value
Value = =:global.item
Create a new record as
Seq = 11
Type = Builtin
Description = Move to next block
Language = All
Enabled = Yes
Builtin type = DO_KEY
Argument = Next_Block
Seq = 12
Type = Builtin
Description = Move to next fielf
Language = All
Enabled = Yes
Builtin type = DO_KEY
Argument = Next_Item
In Seq 10 the value from Global variable is copied to the Item filed in the Onhand Quantity Form. It only copies the value to item field and moves to cursor to first field. When we click on find button it will display all the items. Now this is because the item is only copied to the field but not actually validated, this thing is handled in Seq11 and Seq 12. As cursor is on the first field of this form and the item is the first field of the second block Seq 11 moves the navigation to the first field on the second block and Seq 12 moves the navigation to the second field of the second block, as the cursor first came in the item field when it navigates out of the item field it gets validated. Now if we find the records it displays only particular records.





Save and close all the forms.
Invoke Miscellaneous transaction form select any item and then select Onhand Quantity from the tools menu it will display the Onhand Quantity form and copies the value and also validates it. Enter further criteria’s if you have to and click on find button it will display the item specific records.


Friday, 31 July 2015

P2P Cycle in Oracle Apps

Requisition to Pay Cycle (Procure to Pay) in Oracle

  1. Go to Purchasing > Requisitions > Requisition Summary.
  • In the Find Requisitions window, enter requisition number found in the
    previous step and click on Find.
  1. Go to Purchasing > Autocreate.
  • From Edit > Clear > Record, clear any query criteria that may be defaulted.
  • Enter requisition number and click Find.
  • Check the checkbox to the left of the line, and click on Automatic.
  • Enter the Supplier and Supplier site such as the following and click on Create

  
If you are doing it first time for the selected items or due to some problem your regular supplier is not in condition to supply goods. In that case you might need to go for RFQ (Request for Quotation) and then depending on quotations from different suppliers, PO will be released.
(Requisition -> RFQ -> Quotation -> PO/Release)
  1. The Purchase Order form will automatically open with the PO that got created.
  • Click on the Approve button.
  • Click on the OK button in the Approval Documents window to approve the PO.
  • Note down the PO number, and verify that the status is Approved






  1. Go to Purchasing > Receiving > Receipts.
  • Enter Purchase Order number and click on Find.
  • In the Receipts window, check the checkbox to the left of the line and enter
    1. Destination Type : Inventory
    2. Subinventory : FGI
    3. Save the receipt. 





  1. Go to Purchasing > Receiving > Receiving Transactions Summary.
  • Enter the Purchase Order number and click on Find.
  • Click on the Transactions button.
  • Verify a Receive and Delivery transaction. This means that the B2B item has been received into Inventory.


  1. Payables > Invoices > Entry > Invoices


-Enter the supplier, amount and other details.
  1. Match the invoice with Receipt or with PO. Open Invoice > Match (B) > Enter PO / Receipt Number > Find (B)





  1. Validate Invoice: Open Invoice > Actions… 1 (B)
  1. Verify Invoice Status:



   
  1. Create Accounting and initiate Payment: Open Invoice > Actions… 1 (B)

  • Enter Payment details and Save:
    
  1. Make Payment/s:

  
  • Review Payment: Payment Overview (B)
  
  1. Verify PO Status:

 

Tuesday, 28 July 2015

Archive for the ‘Inbound Interfaces’ Category

Interface Tables:
  • AP_INVOICES_INTERFACE
  • AP_INVOICE_LINES_INTERFACE
  • AP_INTERFACE_REJECTIONS (Error Table)
Base Tables:
  • AP_INVOICES_ALL
  • AP_INVOICE_LINES_ALL (in R12)
  • AP_INVOICE_DISTRIBUTIONS_ALL
Concurrent Program:
  • Payables Open Interface Import
Interface tables:
  • AP_SUPPLIERS_INT
  • AP_SUPPLIER_SITES_INT
  • AP_SUP_SITE_CONTACT_INT
  • AP_SUPPLIER_INT_REJECTIONS (Error table for Supplier, Site and Contact inbound based on parent_table column)
Base Tables:
  • PO_VENDORS
  • PO_VENDOR_SITES_ALL
  • PO_VENDOR_CONTACTS
Concurrent programs:
  • Supplier Open Interface Import
  • Supplier Sites Open Interface Import
  • Supplier Site Contacts Open Interface Import
Request Set:
  • Supplier Open Interface Request Set (Contain all 3 above mentioned concurrent programs)
Interface Tables:
  • MTL_SYSTEM_ITEMS_INTERFACE
  • MTL_ITEM_REVISIONS_INTERFACE
  • MTL_ITEM_CATEGORIES_INTERFACE
  • MTL_INTERFACE_ERRORS (Error Table)
Base Tables:
  • MTL_SYSTEM_ITEMS_B
  • MTL_ITEM_REVISIONS_B
  • MTL_CATEGORIES_B
  • MTL_CATEGORY_SETS_B
Concurrent program:
  • Import Items
Interface Tables:
  • RCV_TRANSACTIONS_INTERFACE
  • RCV_HEADERS_INTERFACE
  • PO_INTERFACE_ERRORS (Error Table)
Base Tables:
  • RCV_SHIPMENT_HEADERS
  • RCV_SHIPMENT_LINES
  • RCV_TRANSACTIONS
Concurrent Program:
  • Receiving Transaction Processor
Interface Tables:
  • PO_HEADERS_INTERFACE
  • PO_LINES_INTERFACE
  • PO_DISTRIBUTIONS_INTERFACE
  • PO_INTERFACE_ERRORS where interface_type = ‘PO_DOCS_OPEN_INTERFACE’ (Error Table)
Base Tables:
  • PO_HEADERS_ALL
  • PO_LINES_ALL
  • PO_DISTRIBUTIONS_ALL
  • PO_LINE_LOCATIONS_ALL
Concurrent Program:
  • Import Standard Purchase Orders (To import Standard Purchase Orders)
  • Import Price Catalogs(To import Catalog Quotations, Standard Quotations, and Blanket Purchase Agreements)
Interface Tables:
  • PO_REQUISITIONS_INTERFACE_ALL
  • PO_REQ_DIST_INTERFACE_ALL
  • PO_INTERFACE_ERRORS where interface_type =’REQIMPORT’ (Error Table)
Base Tables:
  • PO_REQUISITIONS_HEADERS_ALL
  • PO_REQUISITION_LINES_ALL
  • PO_REQ_DISTRIBUTIONS_ALL
Concurrent Program:
  • Requisition Import

Monday, 27 July 2015

mtl_onhand_quantity Details through API (inv_quantity_tree_pub.query_quantities)

/* Formatted on 2015/07/27 14:30 (Formatter Plus v4.8.8) */
CREATE OR REPLACE PROCEDURE xxklk_proc_item_onhand (
   errbuf          VARCHAR2,
   retcode         NUMBER,
   v_org_id   IN   NUMBER
)
AS
   x_return_status         VARCHAR2 (50);
   x_msg_count             VARCHAR2 (50);
   x_msg_data              VARCHAR2 (50);
   v_item_id               NUMBER;
   -- v_org_id                NUMBER;
   v_qoh                   NUMBER;
   v_rqoh                  NUMBER;
   v_atr                   NUMBER;
   v_att                   NUMBER;
   v_qr                    NUMBER;
   v_qs                    NUMBER;
   v_segment1              VARCHAR2 (50);
   v_lot_control_code      BOOLEAN;
   v_serial_control_code   BOOLEAN;

   CURSOR c1
   IS
      SELECT inventory_item_id, segment1
        FROM mtl_system_items_b
       WHERE organization_id = v_org_id;
BEGIN
   -- Set the variable values
   OPEN c1;

   LOOP
      FETCH c1
       INTO v_item_id, v_segment1;

      EXIT WHEN c1%NOTFOUND;
       --end loop;
      -- v_item_id := '45';
      -- v_org_id := 207;
      v_qoh := NULL;
      v_rqoh := NULL;
      v_atr := NULL;
      v_lot_control_code := FALSE;
      v_serial_control_code := FALSE;
      -- Set the org context
      fnd_client_info.set_org_context (22);
      -- Call API
      inv_quantity_tree_pub.query_quantities
               (p_api_version_number       => 1.0,
                p_init_msg_lst             => 'F',
                x_return_status            => x_return_status,
                x_msg_count                => x_msg_count,
                x_msg_data                 => x_msg_data,
                p_organization_id          => v_org_id,
                p_inventory_item_id        => v_item_id,
                p_tree_mode                => apps.inv_quantity_tree_pub.g_transaction_mode,
                -- or 3
                p_is_revision_control      => FALSE,
                p_is_lot_control           => v_lot_control_code,
                -- is_lot_control,
                p_is_serial_control        => v_serial_control_code,
                p_revision                 => NULL,             -- p_revision,
                p_lot_number               => NULL,           -- p_lot_number,
                p_lot_expiration_date      => SYSDATE,
                p_subinventory_code        => NULL,    -- p_subinventory_code,
                p_locator_id               => NULL,           -- p_locator_id,
                -- p_cost_group_id            => NULL,       -- cg_id,
                p_onhand_source            => 3,
                x_qoh                      => v_qoh,       -- Quantity on-hand
                x_rqoh                     => v_rqoh,
                                                 --reservable quantity on-hand
                x_qr                       => v_qr,
                x_qs                       => v_qs,
                x_att                      => v_att,  -- available to transact
                x_atr                      => v_atr    -- available to reserve
               );
      /* DBMS_OUTPUT.put_line ('name: ' || v_segment1);
        DBMS_OUTPUT.put_line ('On-Hand Quantity: ' || v_qoh);
        DBMS_OUTPUT.put_line ('Available to reserve: ' || v_atr);
        DBMS_OUTPUT.put_line ('Quantity Reserved: ' || v_qr);
        DBMS_OUTPUT.put_line ('Quantity Suggested: ' || v_qs);
        DBMS_OUTPUT.put_line ('Available to Transact: ' || v_att);
        DBMS_OUTPUT.put_line ('Available to Reserve: ' || v_atr);*/
      fnd_file.put_line
         (fnd_file.LOG,
          '*************************************************************************'
         );
      fnd_file.put_line (fnd_file.LOG, 'Name of the Item' || v_segment1);
      fnd_file.put_line (fnd_file.LOG, 'Item code: ' || v_item_id);
      fnd_file.put_line (fnd_file.LOG, 'On-Hand Quantity: ' || v_qoh);
      fnd_file.put_line (fnd_file.LOG, 'Available to reserve: ' || v_atr);
      fnd_file.put_line (fnd_file.LOG, 'Quantity Reserved: ' || v_qr);
      fnd_file.put_line (fnd_file.LOG, 'Available to Transact: ' || v_att);
      fnd_file.put_line (fnd_file.LOG, 'Available to Reserve: ' || v_atr);
   END LOOP;

   CLOSE c1;
EXCEPTION
   WHEN OTHERS
   THEN
      fnd_file.put_line (fnd_file.LOG, 'Errors' || SQLERRM);
END;

--------------------------------------------------------------------------------------------
THE FOLLOWING Result CAN FETCH FROM ABOVE SCRIPT
--------------------------------------------------------------------------------

Quantity on hand
Reservable quantity
Quantity reserved
Quantity suggested
 Available To Transact
Quantity Available To Reserve 

How to register PLSQL procedure as Concurrent Program


To register a PLSQL procedure as concurrent program we have four steps

Step : 1 → Create Executable
Step : 2 → Create concurrent program and link to Executable
Step : 3 → Create Parameters and link Value Sets
Step : 4 → Assign the registered Concurrent Program to a request group
Step : 1 → Create Executable
Concurrent is a program that user will invoke directly from the oracle apps. Imagine that each time to run a package or procedure a customer has to login to his database and running and for that we have to educate the client. Instead of this, registering a concurrent is best method to run the API because user will be assigned to responsibility and then he can run the program. It is a way to deliver to customer.
To register a program as concurrent open Oracle apps and go to the following Navigation
The Navigation is
Login into Oracle Applications –> Go to Application Developer Responsibility –> Concurrent –> Executable
This Executable is for running a program.
1
FIELDS:
  • Executable: This is User Understandable Name
  • Short Name: This is Unique and for system reference
  • Application: Under which application you want to register this Conc. Program
  • Description: Description
  • Execution Method: Based on this field, your file has to be placed in respective directory or database.
  • Execution File Name: This is the actual Report file name. If you register a PL/SQL Procedure in a package you have to give the packagename.procedure. You don’t need to specify any parameters in procedure here.
Action: Save
Step : 2 → Create concurrent program and link to Executable
The Navigation is
Application Developer –> Concurrent –> Program
2
FIELDS:
  • Program: User Understandable Program Name
  • Short Name: This should be unique name and for system reference
  • Application: Enter the application under which you want to register this conc.prog
  • Executable Name: Enter the User Understandable Executable Name
  • Method: This will be populated automatically from Executable Definition
  • Output Format: Select the format of the output you want
  • Output Style: Select A4 to print on A4 Paper
  • Printer: You can default any printer or you can enter while submitting concurrent program. 
Make sure you link the Executable’s short name and Concurrent program’s Executable name.
Step : 3 → Create Parameters and link Value Sets
Create Parameters and it is Better to Create Value Set
To create parameter the Navigation is
Application Developer –> Application –> Validation → Set
3
There are many types to get List of Values. So I go with the table.
To get data from table,select validation type as table and click the Edit Information Button Enter the Value and ID to be passed.
4
Linking value set to parameter and the Navigation is
Application Developer –> Concurrent –> Program
Enter the following here. And click on parameters to define parameters and in parameter form you can also enter default type
5
The above is Example for creating a parameter.
Just observe the below screenshot. Here There is a selection in Enabled. If it is
Checked then the parameter gets enabled and When the Display button is checked we can see the display in Oracle apps concurrent page.We can also give the Default type.
6
The below is another sample of a parameter. It is better to choose FND_DATE_STANDARD and we have to check for the format. This format is (DD-MON-YYYY)
7
To Enter a Date and if we are not in need of Value Set
Number : Click on LOV in Value Set and search by typing %Num%
Char : Click on LOV in Value Set and search by typing %CHAR%
DateTime : Click on LOV in Value Set and search by typing %Stan%Date%
8
Query to Check for Concurrent and the info about the Log file
select cp.plsql_dir, cp.plsql_out, cp.plsql_log
from fnd_concurrent_requests cr, fnd_concurrent_processes cp
where cp.concurrent_process_id = cr.controlling_manager — and cr.request_id = <running request id>
Till now we have created a Executable and Concurrent Program. Now our Objective is to attach inside a request group to run the concurrent.
Step : 4 → Assign the registered Concurrent Program to a request group
Now select a responsibility for which the concurrent has to run and that responsibility has the Request set. We have to make sure that we attach the concurrent program to the responsibility. I have chosen the Responsibility as Global HRMS Manager. Now when you query it you will get the Request group as shown in the below screenshot.
The Navigation is
System Administrator –> Security –> Responsibility Define
9
Now you have to attach this to a Request Group and make it run.
Get the Request group and attach you concurrent here.
The Navigation is
System Administrator –> Security –> Responsibility Request
10
Now go to your Responsibility to run concurrent program.
Note:
When you are using your custom application it may not be in Data group(standard). You may not get it listed while searching in the submit request.
So Just go to the Below Navigation and check the responsibility Data group. In the below screen shot it is above the marking. The mark represents the Request group and top of it si Data group. So if your application is in Data group then you can see in Request Group.
Refer till two below screen shots.
11
To add to Request group go to the Data group and Query the attached name. In my case it is standard.
12
Note over
13
Submit a new Request and run your concurrent. Here you may be prompted the parameter. Just Remember we had three parameters and we disabled the one so now we got two left.
14
15
After submission we get the Request Id for our reference.
16
Now we have our output. We can view the output but ours is a procedure so there will be nothing. But we can view the log whether this program worked or not.

Thats it your API is deployed. Enjoy it.