DECLARE
l_request_id NUMBER;
--等待請求字段
l_bl_result BOOLEAN;
l_phase VARCHAR2(240);
l_status VARCHAR2(240);
l_dev_phase VARCHAR2(240);
l_dev_status VARCHAR2(240);
l_message VARCHAR2(240);
l_period_status VARCHAR2(1);
l_start_date DATE;
l_end_date DATE;
l_period_num NUMBER;
l_period_year NUMBER;
CURSOR chk_sec_header_status IS
SELECT 1
FROM gl_ledgers gl
,gl_je_headers gh
WHERE gl.ledger_id = gh.ledger_id
AND gh.je_header_id = 2
AND gl.ledger_category_code = 'PRIMARY'
AND EXISTS (SELECT 1
FROM gl_je_headers gh1
,gl_ledgers gl1
WHERE gh1.parent_je_header_id = gh.je_header_id
AND gl1.ledger_id = gh1.ledger_id
AND gl1.ledger_category_code = 'SECONDARY'
AND gl1.automate_sec_jrnl_rev_flag IN ('Y'
,'A')
AND gh1.status != 'P');
l_has_sec_unpost_hdr_jrnl NUMBER;
BEGIN
fnd_global.apps_initialize(user_id => 1110
,resp_id => 50719
,resp_appl_id => 20007);
--校驗期間
gl_period_statuses_pkg.select_columns(101
,2023
,'2018-07'
,l_period_status
,l_start_date
,l_end_date
,l_period_num
,l_period_year);
IF (nvl(l_period_status
,'X') NOT IN ('O'
,'F')) THEN
fnd_message.set_name(application => 'SQLGL'
,NAME => 'GL_JE_NO_REV_HEADER_BAD_PERIOD');
dbms_output.put_line('Error Message = ' || fnd_message.get);
END IF;
OPEN chk_sec_header_status;
FETCH chk_sec_header_status
INTO l_has_sec_unpost_hdr_jrnl;
IF chk_sec_header_status%FOUND THEN
l_has_sec_unpost_hdr_jrnl := 1;
END IF;
CLOSE chk_sec_header_status;
IF nvl(l_has_sec_unpost_hdr_jrnl
,0) = 1 THEN
fnd_message.set_name(application => 'SQLGL'
,NAME => 'GL_COR_SEC_UNPOSTED_ERROR');
dbms_output.put_line('Error Message = ' || fnd_message.get);
END IF;
UPDATE gl_je_headers b
SET b.accrual_rev_flag = 'Y'
,b.accrual_rev_change_sign_flag = 'Y'
,b.accrual_rev_period_name = '2018-07'
WHERE b.je_header_id = 2;
COMMIT;
l_request_id := fnd_request.submit_request(application => 'SQLGL' --應用簡稱
,program => 'GLPREV' --併發簡稱:日記帳導入
,description => '' --說明
,start_time => '' --請求開始時間,格式爲標準日期格式,爲空表示立即開始
,sub_request => FALSE --是否子請求
,argument1 => fnd_profile.value('GL_ACCESS_SET_ID') --帳套標識或者數據訪問權限集
,argument2 => to_char(2) --日記賬頭ID
,argument3 => chr(0) --參數結束
);
IF l_request_id <= 0 THEN
dbms_output.put_line('提交沖銷日記賬請求失敗 !');
ELSE
COMMIT;
dbms_output.put_line('請求編號:' || l_request_id);
l_bl_result := fnd_concurrent.wait_for_request(request_id => l_request_id
,INTERVAL => 1
, -- interval second for check
max_wait => 360
, -- max_wait, Max amount of time to wait (in seconds)
phase => l_phase
,status => l_status
,dev_phase => l_dev_phase
,dev_status => l_dev_status
,message => l_message);
dbms_output.put_line(' l_phase = ' || l_phase);
dbms_output.put_line(' l_status = ' || l_status);
dbms_output.put_line(' l_dev_phase = ' || l_dev_phase);
dbms_output.put_line(' l_dev_status = ' || l_dev_status);
dbms_output.put_line(' l_message = ' || l_message);
--請求的狀態爲完成並且爲正常
IF l_dev_phase <> 'COMPLETE'
OR l_dev_status <> 'NORMAL' THEN
dbms_output.put_line('Reverse Journal : 沖銷日記賬出現異常錯誤,查看請求: ' || l_request_id);
dbms_output.put_line('Reverse Journal : 沖銷日記賬出現異常錯誤,錯誤消息: ' || l_message);
ELSE
dbms_output.put_line('------>03.Reverse Journal : 沖銷日記賬成功');
END IF;
END IF;
END;
日記賬沖銷分爲 紅字沖銷 和 借貸相反 兩種,上例爲紅字沖銷日記賬。