Quantcast
Channel: pacesettergraam
Viewing all articles
Browse latest Browse all 314

PLSQL Logic to AME Approver Resultset as Table Type

$
0
0

In some cases when we have to bring the approvers to the display screen to show it is better to have a query so that it can be easily mapped with VO.

For Example as the below query

SELECT SEQ_NUM, FULL_NAME APPRIVER_FULL_NAME, APPROVER_POSITION approver_position, APPROVER_ROLE APPROVER_ROLE, ROWNUM SEQ_N, USER_NAME, PERSON_ID, USER_ID, USED_IN, TENDER_REQUEST_ID, REQUEST_TYPE FROM THE ( SELECT CAST ( XX_GET_APPROVERS_LIST (:1) AS xxqf_et_approvers_table) FROM DUAL)

So In the below query it fetches all the details based on the query getting from table type. So below is the sample format for creating table function based on AME output.

 

CREATE OR REPLACE FUNCTION XX_GET_APPROVERS_LIST(l_request_id in number)
RETURN xx_approvers_table
as
l_approvers_list xx_approvers_table
:= xx_approvers_table ();
— l_request_id NUMBER := 7333;
g_next_approvers ame_util.approversTable2;
l_completeYNO VARCHAR2 (100);
applicationId NUMBER := 201;
LN_USER_NAME VARCHAR2 (1000);
lc_name VARCHAR2 (200);

l_approvers_list xxqf_et_approvers_table
:= xxqf_et_approvers_table ();
l_request_type VARCHAR2 (50);
l_requisition_id NUMBER;
l_rfq_id NUMBER;

cursor get_info_pos_based(p_pos_id in number) is select papf.person_id, fu.user_id, papf.full_name, fu.user_name
from per_all_people_f papf, per_all_assignments_f paaf , fnd_user fu
where papf.person_id = paaf.person_id and fu.employee_id = papf.person_id
and paaf.position_id = p_pos_id
and sysdate between papf.effective_start_date and papf.effective_end_date
and sysdate between paaf.effective_start_date and paaf.effective_end_date
and rownum =1;

l_person_id number;
l_user_id number;
lc_full_name varchar2(2000);
lc_user_name varchar2(5000);
lc_position_name varchar2(5000);
lc_request_type varchar2(1000);

BEGIN

select REQUEST_TYPE into lc_request_type from xxqf_et_tender_eval_request where TENDER_REQUEST_ID = l_request_id;

ame_api2.getAllApprovers7 (
applicationIdIn => 20003,
transactionTypeIn => ‘XX_HIER’,
transactionIdIn => l_request_id,
approvalProcessCompleteYNOut => l_completeYNO,
approversOut => g_next_approvers);

IF g_next_approvers.COUNT > 0
THEN
FOR I IN 1 .. g_next_approvers.COUNT
LOOP
if (substr(g_next_approvers (I).NAME, 0, 4) = ‘POS:’)
then
DBMS_OUTPUT.PUT_LINE (‘AT MR POSITION Based Hierarchy’);
open get_info_pos_based(substr(g_next_approvers (I).NAME, 5));
fetch get_info_pos_based into l_person_id, l_user_id, lc_full_name, lc_user_name;
close get_info_pos_based;
l_approvers_list.EXTEND;
l_approvers_list (l_approvers_list.COUNT) :=
XXQF_ET_APPROVERS_T (
g_next_approvers (I).approver_order_number,
lc_user_name,
l_person_id,
l_user_id,
lc_full_name,
g_next_approvers (I).display_name,
‘MR Appr Hierarchy’,
‘BOTH’,
l_request_id,
lc_request_type);

else
l_approvers_list.EXTEND;
l_approvers_list (l_approvers_list.COUNT) :=
XXQF_ET_APPROVERS_T (
g_next_approvers (I).approver_order_number,
g_next_approvers (I).NAME,
g_next_approvers (I).approver_order_number,
g_next_approvers (I).approver_order_number,
g_next_approvers (I).display_name,
g_next_approvers (I).approval_status,
‘MR Appr Hierarchy’,
‘BOTH’,
l_request_id,
g_next_approvers (I).NAME);
end if;
END LOOP;
END IF;

FOR I IN (SELECT * FROM TABLE (l_approvers_list))
LOOP
NULL;
DBMS_OUTPUT.PUT_LINE (
‘ AFTER EXTEND Testing the Data :’
|| I.USER_NAME
|| ‘ display_name :’); –For Testing the Values
END LOOP;

RETURN l_approvers_list;
END;

 


Viewing all articles
Browse latest Browse all 314

Trending Articles