create or replace PACKAGE BODY XXX_6666_reversal_pkg
IS
--==============================================================================
-- GLOBAL CONSTANTS
--==============================================================================
CN_PROJECT_CLASS CONSTANT VARCHAR2(60) := 'Revenue Recognition Method';
CN_CLASS_CODE CONSTANT VARCHAR2(30) := 'ASC606';
CN_REVERSAL_EVENT_TYPE CONSTANT VARCHAR2(30) := 'REVENUE 6666 CONTRA';
CN_EVENT_QUALIFIER CONSTANT VARCHAR2(30) := 'T6666';
CN_6666_CONT_EVENT_QUALIFIER CONSTANT VARCHAR2(30) := 'T6666 Contra';
CN_606_EVENT_QUALIFIER CONSTANT VARCHAR2(30) := 'T606';
PROCEDURE Debug( p_message IN VARCHAR2
) IS
lv_message VARCHAR2(200);
BEGIN
lv_message := SUBSTR(p_message,1,240);
fnd_file.put_line(fnd_file.log, lv_message);
END Debug;
PROCEDURE XXX_reversal_proc (
p_project_id NUMBER ,
p_project_num VARCHAR2,
p_program_mode VARCHAR2,
p_as_of_date DATE,
p_event_type VARCHAR2,
p_task VARCHAR2
) IS
-- +====================================================================+
-- LOCAL VARIABLES
-- +====================================================================+
ln_event_id NUMBER;
ln_line_num NUMBER := 0;
ln_msg_count NUMBER := 0;
ln_seq_val NUMBER := 0;
ld_complete_date DATE;
lv_flexfield_name VARCHAR2(100) := 'PA_EVENTS_DESC_FLEX';
lv_msg_data VARCHAR2(100);
lv_bill_hold_flag VARCHAR2(3) := 'N';
lv_product_code VARCHAR2(100) := 'XXX';
lv_flag VARCHAR2(3):='S';
lv_6666_rev_task VARCHAR2(40);
-- lc_proj_rate_type VARCHAR2(30); -- Commented on 20-DEC-17
-- ln_proj_ex_rate NUMBER; -- Commented on 20-DEC-17
-- lc_projfunc_rate_type VARCHAR2(30); -- Commented on 20-DEC-17
-- ln_projfunc_ex_rate NUMBER; -- Commented on 20-DEC-17
-- +====================================================================+
-- Declaring PLSQL TABLE TYPE VARIABLES.
-- +====================================================================+
lt_in_tbl_type pa_event_pub.event_in_tbl_type;
lt_out_tbl_type pa_event_pub.event_out_tbl_type;
-- +====================================================================+
-- lcu_6666_reversal Cursor is used to fetch the events data.
-- +====================================================================+
CURSOR lcu_6666_reversal
IS
SELECT pp.segment1,
pe.project_id,
pe.organization_id,
round(-1 * sum(pe.bill_trans_rev_amount),2) trx_rev_amt,
pe.bill_trans_currency_code trx_rev_curr,
pe.PROJECT_CURRENCY_CODE proj_curr,
round(-1 * sum(pe.PROJECT_REVENUE_AMOUNT)) proj_rev_amt,
pe.PROJFUNC_CURRENCY_CODE projfunc_curr,
round(-1 * sum(pe.PROJFUNC_REVENUE_AMOUNT)) projfunc_rev_amt
FROM
pa_projects pp,
pa_project_classes_v ppc,
pa_tasks pt,
pa_events pe,
pa_event_types pet
WHERE ppc.class_category = CN_PROJECT_CLASS
AND ppc.class_code = CN_CLASS_CODE
AND ppc.project_id = pp.project_id
AND pp.project_id = p_project_id
AND pp.project_id = pt.project_id
AND pe.project_id = pp.project_id
AND pt.task_id = pe.task_id
AND pe.revenue_distributed_flag = 'Y'
AND pe.event_type = pet.event_type
AND pet.attribute3 = CN_EVENT_QUALIFIER
AND nvl(pe.attribute7,'@#$') != CN_EVENT_QUALIFIER
AND pe.completion_date <= p_as_of_date
GROUP BY pp.segment1,
pe.project_id,
pe.organization_id,
pe.bill_trans_currency_code
,pe.PROJECT_CURRENCY_CODE
,pe.projfunc_currency_code
HAVING SUM(pe.bill_trans_rev_amount) != 0
order by 1;
-- +====================================================================+
-- lcu_6666_task Cursor used to fetch the 6666 reversal Task.
-- +====================================================================+
CURSOR lcu_6666_task(p_project_id NUMBER)
IS
SELECT task_number
FROM pa_tasks pt
WHERE pt.project_id = p_project_id
AND pt.attribute6 = CN_6666_CONT_EVENT_QUALIFIER;
BEGIN
debug('XXX_reversal_proc => begining of procedure');
FOR rev_rec IN lcu_6666_reversal
LOOP
debug('XXX_reversal_proc => Inside rev_rec loop');
SELECT XXX_REV_SEQ.NEXTVAL INTO ln_seq_val FROM DUAL;
debug('XXX_reversal_proc => ln_seq_val Sequence value '||ln_seq_val);
lv_flag := 'S';
debug('XXX_reversal_proc => LV_FLAG '||LV_FLAG);
debug('XXX_reversal_proc => projfunc_curr '||rev_rec.projfunc_curr);
debug('XXX_reversal_proc => proj_curr '||rev_rec.proj_curr);
IF LV_FLAG <> 'E' then
debug('XXX_6666_main => prepare data for Creating event');
ln_line_num := 1;
lt_in_tbl_type(ln_line_num).p_project_number := rev_rec.segment1;
lt_in_tbl_type(ln_line_num).p_event_type := p_event_type;
lt_in_tbl_type(ln_line_num).p_description := 'Revenue reversal for project: '||rev_rec.segment1;
lt_in_tbl_type(ln_line_num).p_completion_date := p_as_of_date;
lt_in_tbl_type(ln_line_num).p_task_number := lv_6666_rev_task;
lt_in_tbl_type(ln_line_num).p_organization_name := lv_org_name;
lt_in_tbl_type(ln_line_num).p_bill_trans_bill_amount := 0;
lt_in_tbl_type(ln_line_num).p_bill_trans_rev_amount := rev_rec.trx_rev_amt;
lt_in_tbl_type(ln_line_num).p_desc_flex_name := lv_flexfield_name;
lt_in_tbl_type(ln_line_num).p_attribute2 := rev_rec.Organization_Id;
lt_in_tbl_type(ln_line_num).p_attribute7 := CN_EVENT_QUALIFIER;
lt_in_tbl_type(ln_line_num).p_bill_hold_flag := lv_bill_hold_flag;
lt_in_tbl_type(ln_line_num).p_bill_trans_currency_code := rev_rec.trx_rev_curr;
lt_in_tbl_type(ln_line_num).p_pm_event_reference := '6666 REVERSAL' || ln_seq_val;
-- lt_in_tbl_type(ln_line_num).P_project_rate_type := lc_proj_rate_type; -- Commented on 20-DEC-17
-- lt_in_tbl_type(ln_line_num).P_project_exchange_rate := ln_proj_ex_rate; -- Commented on 20-DEC-17
-- lt_in_tbl_type(ln_line_num).P_projfunc_rate_type := lc_projfunc_rate_type; -- Commented on 20-DEC-17
-- lt_in_tbl_type(ln_line_num).P_projfunc_exchange_rate := ln_projfunc_ex_rate; -- Commented on 20-DEC-17
-- +====================================================================+
-- Calling PA_EVENT_PUB api,
-- to create a reversal event for 6666 revenue events.
-- +====================================================================+
debug('XXX_6666_main => calling API');
pa_event_pub.create_event(
p_api_version_number => 1.0,
p_commit => fnd_api.g_true,
p_init_msg_list => fnd_api.g_true,
p_pm_product_code => lv_product_code,
p_event_in_tbl => lt_in_tbl_type,
p_event_out_tbl => lt_out_tbl_type,
p_msg_count => ln_msg_count,
p_msg_data => lv_msg_data,
p_return_status => lv_return_status
);
COMMIT;
IF lv_return_status='S' THEN
SELECT pe.event_id INTO ln_event_id
FROM pa_events pe
WHERE pe.PM_EVENT_REFERENCE = '6666 REVERSAL' || ln_seq_val
AND pe.organization_id = ln_org_id;
ln_event_id := 0;
UPDATE PA_EVENTS pe SET pe.attribute7 = CN_EVENT_QUALIFIER
WHERE pe.project_id = rev_rec.project_id
AND pe.revenue_distributed_flag = 'Y'
-- AND pe.event_type = rev_rec.event_type
-- AND pe.task_id = rev_rec.task_id
AND nvl(pe.attribute7,'@#$') != CN_EVENT_QUALIFIER
AND pe.completion_date <= p_as_of_date;
COMMIT;
ELSE
debug('XXX_reversal_proc => Return Status: '||lv_return_status);
END IF;
END IF;
END LOOP;
debug('XXX_reversal_proc => end of procedure');
EXCEPTION
WHEN NO_DATA_FOUND THEN
debug('XXX_reversal_proc => No data found to reverse for the project number:' ||p_project_num);
WHEN OTHERS THEN
debug('XXX_reversal_proc => Error is '||SQLCODE||','||SQLERRM||' for project number:' ||p_project_num);
END XXX_reversal_proc;
PROCEDURE XXX_6666_main(
errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
p_project_from IN VARCHAR2,
p_project_to IN VARCHAR2,
p_period IN VARCHAR2,
p_program_mode IN VARCHAR2
)
IS
-- +====================================================================+
-- Local VARIABLES
-- +====================================================================+
lv_resp_name VARCHAR2(100);
lv_user_name VARCHAR2(100);
ln_request_id NUMBER;
ld_as_of_date DATE;
lv_6666_event_type VARCHAR2(40);
lv_flag CHAR(1);
lv_6666_rev_task VARCHAR2(40);
CURSOR lcu_6666_main
IS
SELECT pp.segment1 project_number
,pp.project_id
FROM pa_projects pp,
pa_project_classes_v ppc,
pa_events pe,
pa_event_types pet
WHERE ppc.class_category = CN_PROJECT_CLASS
AND ppc.class_code = CN_CLASS_CODE
AND ppc.project_id = pp.project_id
AND pp.project_id = pe.project_id
and pe.event_type = pet.event_type
and pet.attribute3 = CN_EVENT_QUALIFIER
AND pp.segment1 BETWEEN NVL(p_project_from,pp.segment1) AND NVL(p_project_to,pp.segment1)
AND nvl(pe.attribute7,'@#$') != CN_EVENT_QUALIFIER
GROUP BY pp.segment1
,pp.project_id;
-- +====================================================================+
-- lcu_org_name Cursor used to fetch the organisation name.
-- +====================================================================+
CURSOR lcu_org_name(p_org_id number)
IS
SELECT hou.NAME
FROM hr_operating_units hou
WHERE hou.organization_id = p_org_id;
BEGIN
debug('XXX_6666_main => begining of procedure');
-- +====================================================================+
-- Initalizing the variables.
-- +====================================================================+
ln_org_id := fnd_global.org_id;
ln_request_id := fnd_global.conc_request_id;
lv_resp_name := fnd_profile.value('RESP_NAME');
lv_user_name := fnd_profile.value('USERNAME');
-- +====================================================================+
-- Initalizing session.
-- +====================================================================+
mo_global.set_policy_context('S',ln_org_id);
SELECT TO_DATE(fnd_date.canonical_to_date(p_period),'YY-MON-DD')
INTO ld_as_of_date
FROM dual;
OPEN lcu_org_name(ln_org_id);
FETCH lcu_org_name INTO lv_org_name;
IF lcu_org_name%NOTFOUND THEN
lv_flag := 'E';
debug('XXX_6666_main => Organization name not found');
END IF;
CLOSE lcu_org_name;
FOR lr_rec_6666_main IN lcu_6666_main
LOOP
-- +====================================================================+
-- | Calling procedure XXX_reversal_proc to create the reversal
-- | event.
-- +====================================================================+
XXX_reversal_proc(lr_rec_6666_main.project_id
,lr_rec_6666_main.project_number
,p_program_mode
,ld_as_of_date
,CN_REVERSAL_EVENT_TYPE
,lv_6666_rev_task);
END LOOP;
debug('XXX_6666_main => Complete generating events');
-- +====================================================================+
-- Printing output in concurrent program output.
-- +====================================================================+
IF p_program_mode = 'FINAL' THEN
report_success;
report_errors;
ELSE
draft_output;
report_errors;
END IF;
debug('XXX_6666_main => end of procedure');
EXCEPTION
WHEN NO_DATA_FOUND THEN
debug('XXX_6666_main => No data found to reverse for the given projects from '||p_project_from || ' to ' || p_project_to);
WHEN OTHERS THEN
debug('XXX_6666_main => Error is: '||SQLCODE||','||SQLERRM);
END XXX_6666_main;
END XXX_6666_reversal_pkg;
/
SHO ERRORS
/
IS
--==============================================================================
-- GLOBAL CONSTANTS
--==============================================================================
CN_PROJECT_CLASS CONSTANT VARCHAR2(60) := 'Revenue Recognition Method';
CN_CLASS_CODE CONSTANT VARCHAR2(30) := 'ASC606';
CN_REVERSAL_EVENT_TYPE CONSTANT VARCHAR2(30) := 'REVENUE 6666 CONTRA';
CN_EVENT_QUALIFIER CONSTANT VARCHAR2(30) := 'T6666';
CN_6666_CONT_EVENT_QUALIFIER CONSTANT VARCHAR2(30) := 'T6666 Contra';
CN_606_EVENT_QUALIFIER CONSTANT VARCHAR2(30) := 'T606';
PROCEDURE Debug( p_message IN VARCHAR2
) IS
lv_message VARCHAR2(200);
BEGIN
lv_message := SUBSTR(p_message,1,240);
fnd_file.put_line(fnd_file.log, lv_message);
END Debug;
PROCEDURE XXX_reversal_proc (
p_project_id NUMBER ,
p_project_num VARCHAR2,
p_program_mode VARCHAR2,
p_as_of_date DATE,
p_event_type VARCHAR2,
p_task VARCHAR2
) IS
-- +====================================================================+
-- LOCAL VARIABLES
-- +====================================================================+
ln_event_id NUMBER;
ln_line_num NUMBER := 0;
ln_msg_count NUMBER := 0;
ln_seq_val NUMBER := 0;
ld_complete_date DATE;
lv_flexfield_name VARCHAR2(100) := 'PA_EVENTS_DESC_FLEX';
lv_msg_data VARCHAR2(100);
lv_bill_hold_flag VARCHAR2(3) := 'N';
lv_product_code VARCHAR2(100) := 'XXX';
lv_flag VARCHAR2(3):='S';
lv_6666_rev_task VARCHAR2(40);
-- lc_proj_rate_type VARCHAR2(30); -- Commented on 20-DEC-17
-- ln_proj_ex_rate NUMBER; -- Commented on 20-DEC-17
-- lc_projfunc_rate_type VARCHAR2(30); -- Commented on 20-DEC-17
-- ln_projfunc_ex_rate NUMBER; -- Commented on 20-DEC-17
-- +====================================================================+
-- Declaring PLSQL TABLE TYPE VARIABLES.
-- +====================================================================+
lt_in_tbl_type pa_event_pub.event_in_tbl_type;
lt_out_tbl_type pa_event_pub.event_out_tbl_type;
-- +====================================================================+
-- lcu_6666_reversal Cursor is used to fetch the events data.
-- +====================================================================+
CURSOR lcu_6666_reversal
IS
SELECT pp.segment1,
pe.project_id,
pe.organization_id,
round(-1 * sum(pe.bill_trans_rev_amount),2) trx_rev_amt,
pe.bill_trans_currency_code trx_rev_curr,
pe.PROJECT_CURRENCY_CODE proj_curr,
round(-1 * sum(pe.PROJECT_REVENUE_AMOUNT)) proj_rev_amt,
pe.PROJFUNC_CURRENCY_CODE projfunc_curr,
round(-1 * sum(pe.PROJFUNC_REVENUE_AMOUNT)) projfunc_rev_amt
FROM
pa_projects pp,
pa_project_classes_v ppc,
pa_tasks pt,
pa_events pe,
pa_event_types pet
WHERE ppc.class_category = CN_PROJECT_CLASS
AND ppc.class_code = CN_CLASS_CODE
AND ppc.project_id = pp.project_id
AND pp.project_id = p_project_id
AND pp.project_id = pt.project_id
AND pe.project_id = pp.project_id
AND pt.task_id = pe.task_id
AND pe.revenue_distributed_flag = 'Y'
AND pe.event_type = pet.event_type
AND pet.attribute3 = CN_EVENT_QUALIFIER
AND nvl(pe.attribute7,'@#$') != CN_EVENT_QUALIFIER
AND pe.completion_date <= p_as_of_date
GROUP BY pp.segment1,
pe.project_id,
pe.organization_id,
pe.bill_trans_currency_code
,pe.PROJECT_CURRENCY_CODE
,pe.projfunc_currency_code
HAVING SUM(pe.bill_trans_rev_amount) != 0
order by 1;
-- +====================================================================+
-- lcu_6666_task Cursor used to fetch the 6666 reversal Task.
-- +====================================================================+
CURSOR lcu_6666_task(p_project_id NUMBER)
IS
SELECT task_number
FROM pa_tasks pt
WHERE pt.project_id = p_project_id
AND pt.attribute6 = CN_6666_CONT_EVENT_QUALIFIER;
BEGIN
debug('XXX_reversal_proc => begining of procedure');
FOR rev_rec IN lcu_6666_reversal
LOOP
debug('XXX_reversal_proc => Inside rev_rec loop');
SELECT XXX_REV_SEQ.NEXTVAL INTO ln_seq_val FROM DUAL;
debug('XXX_reversal_proc => ln_seq_val Sequence value '||ln_seq_val);
lv_flag := 'S';
debug('XXX_reversal_proc => LV_FLAG '||LV_FLAG);
debug('XXX_reversal_proc => projfunc_curr '||rev_rec.projfunc_curr);
debug('XXX_reversal_proc => proj_curr '||rev_rec.proj_curr);
IF LV_FLAG <> 'E' then
debug('XXX_6666_main => prepare data for Creating event');
ln_line_num := 1;
lt_in_tbl_type(ln_line_num).p_project_number := rev_rec.segment1;
lt_in_tbl_type(ln_line_num).p_event_type := p_event_type;
lt_in_tbl_type(ln_line_num).p_description := 'Revenue reversal for project: '||rev_rec.segment1;
lt_in_tbl_type(ln_line_num).p_completion_date := p_as_of_date;
lt_in_tbl_type(ln_line_num).p_task_number := lv_6666_rev_task;
lt_in_tbl_type(ln_line_num).p_organization_name := lv_org_name;
lt_in_tbl_type(ln_line_num).p_bill_trans_bill_amount := 0;
lt_in_tbl_type(ln_line_num).p_bill_trans_rev_amount := rev_rec.trx_rev_amt;
lt_in_tbl_type(ln_line_num).p_desc_flex_name := lv_flexfield_name;
lt_in_tbl_type(ln_line_num).p_attribute2 := rev_rec.Organization_Id;
lt_in_tbl_type(ln_line_num).p_attribute7 := CN_EVENT_QUALIFIER;
lt_in_tbl_type(ln_line_num).p_bill_hold_flag := lv_bill_hold_flag;
lt_in_tbl_type(ln_line_num).p_bill_trans_currency_code := rev_rec.trx_rev_curr;
lt_in_tbl_type(ln_line_num).p_pm_event_reference := '6666 REVERSAL' || ln_seq_val;
-- lt_in_tbl_type(ln_line_num).P_project_rate_type := lc_proj_rate_type; -- Commented on 20-DEC-17
-- lt_in_tbl_type(ln_line_num).P_project_exchange_rate := ln_proj_ex_rate; -- Commented on 20-DEC-17
-- lt_in_tbl_type(ln_line_num).P_projfunc_rate_type := lc_projfunc_rate_type; -- Commented on 20-DEC-17
-- lt_in_tbl_type(ln_line_num).P_projfunc_exchange_rate := ln_projfunc_ex_rate; -- Commented on 20-DEC-17
-- +====================================================================+
-- Calling PA_EVENT_PUB api,
-- to create a reversal event for 6666 revenue events.
-- +====================================================================+
debug('XXX_6666_main => calling API');
pa_event_pub.create_event(
p_api_version_number => 1.0,
p_commit => fnd_api.g_true,
p_init_msg_list => fnd_api.g_true,
p_pm_product_code => lv_product_code,
p_event_in_tbl => lt_in_tbl_type,
p_event_out_tbl => lt_out_tbl_type,
p_msg_count => ln_msg_count,
p_msg_data => lv_msg_data,
p_return_status => lv_return_status
);
COMMIT;
IF lv_return_status='S' THEN
SELECT pe.event_id INTO ln_event_id
FROM pa_events pe
WHERE pe.PM_EVENT_REFERENCE = '6666 REVERSAL' || ln_seq_val
AND pe.organization_id = ln_org_id;
ln_event_id := 0;
UPDATE PA_EVENTS pe SET pe.attribute7 = CN_EVENT_QUALIFIER
WHERE pe.project_id = rev_rec.project_id
AND pe.revenue_distributed_flag = 'Y'
-- AND pe.event_type = rev_rec.event_type
-- AND pe.task_id = rev_rec.task_id
AND nvl(pe.attribute7,'@#$') != CN_EVENT_QUALIFIER
AND pe.completion_date <= p_as_of_date;
COMMIT;
ELSE
debug('XXX_reversal_proc => Return Status: '||lv_return_status);
END IF;
END IF;
END LOOP;
debug('XXX_reversal_proc => end of procedure');
EXCEPTION
WHEN NO_DATA_FOUND THEN
debug('XXX_reversal_proc => No data found to reverse for the project number:' ||p_project_num);
WHEN OTHERS THEN
debug('XXX_reversal_proc => Error is '||SQLCODE||','||SQLERRM||' for project number:' ||p_project_num);
END XXX_reversal_proc;
PROCEDURE XXX_6666_main(
errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
p_project_from IN VARCHAR2,
p_project_to IN VARCHAR2,
p_period IN VARCHAR2,
p_program_mode IN VARCHAR2
)
IS
-- +====================================================================+
-- Local VARIABLES
-- +====================================================================+
lv_resp_name VARCHAR2(100);
lv_user_name VARCHAR2(100);
ln_request_id NUMBER;
ld_as_of_date DATE;
lv_6666_event_type VARCHAR2(40);
lv_flag CHAR(1);
lv_6666_rev_task VARCHAR2(40);
CURSOR lcu_6666_main
IS
SELECT pp.segment1 project_number
,pp.project_id
FROM pa_projects pp,
pa_project_classes_v ppc,
pa_events pe,
pa_event_types pet
WHERE ppc.class_category = CN_PROJECT_CLASS
AND ppc.class_code = CN_CLASS_CODE
AND ppc.project_id = pp.project_id
AND pp.project_id = pe.project_id
and pe.event_type = pet.event_type
and pet.attribute3 = CN_EVENT_QUALIFIER
AND pp.segment1 BETWEEN NVL(p_project_from,pp.segment1) AND NVL(p_project_to,pp.segment1)
AND nvl(pe.attribute7,'@#$') != CN_EVENT_QUALIFIER
GROUP BY pp.segment1
,pp.project_id;
-- +====================================================================+
-- lcu_org_name Cursor used to fetch the organisation name.
-- +====================================================================+
CURSOR lcu_org_name(p_org_id number)
IS
SELECT hou.NAME
FROM hr_operating_units hou
WHERE hou.organization_id = p_org_id;
BEGIN
debug('XXX_6666_main => begining of procedure');
-- +====================================================================+
-- Initalizing the variables.
-- +====================================================================+
ln_org_id := fnd_global.org_id;
ln_request_id := fnd_global.conc_request_id;
lv_resp_name := fnd_profile.value('RESP_NAME');
lv_user_name := fnd_profile.value('USERNAME');
-- +====================================================================+
-- Initalizing session.
-- +====================================================================+
mo_global.set_policy_context('S',ln_org_id);
SELECT TO_DATE(fnd_date.canonical_to_date(p_period),'YY-MON-DD')
INTO ld_as_of_date
FROM dual;
OPEN lcu_org_name(ln_org_id);
FETCH lcu_org_name INTO lv_org_name;
IF lcu_org_name%NOTFOUND THEN
lv_flag := 'E';
debug('XXX_6666_main => Organization name not found');
END IF;
CLOSE lcu_org_name;
FOR lr_rec_6666_main IN lcu_6666_main
LOOP
-- +====================================================================+
-- | Calling procedure XXX_reversal_proc to create the reversal
-- | event.
-- +====================================================================+
XXX_reversal_proc(lr_rec_6666_main.project_id
,lr_rec_6666_main.project_number
,p_program_mode
,ld_as_of_date
,CN_REVERSAL_EVENT_TYPE
,lv_6666_rev_task);
END LOOP;
debug('XXX_6666_main => Complete generating events');
-- +====================================================================+
-- Printing output in concurrent program output.
-- +====================================================================+
IF p_program_mode = 'FINAL' THEN
report_success;
report_errors;
ELSE
draft_output;
report_errors;
END IF;
debug('XXX_6666_main => end of procedure');
EXCEPTION
WHEN NO_DATA_FOUND THEN
debug('XXX_6666_main => No data found to reverse for the given projects from '||p_project_from || ' to ' || p_project_to);
WHEN OTHERS THEN
debug('XXX_6666_main => Error is: '||SQLCODE||','||SQLERRM);
END XXX_6666_main;
END XXX_6666_reversal_pkg;
/
SHO ERRORS
/