Introduction:
This Post illustrates the steps required to upload the GL budget data using the interface program.
Steps
Create the Staging Table.
Compile the given Package.
Register the Concurrent Program -(Custom GL Budget Upload Interface Program).
Load the Budget Data into Staging Table
Run the Custom GL Budget Upload Interface Program.
Code
–Staging tables
CREATE TABLE “XX_GL_BUDGET_STG”
(“BUDGET_NAME” VARCHAR2(15 BYTE),
“BUDGET_ENTITY_NAME” VARCHAR2(50 BYTE),
“CURRENCY_CODE” VARCHAR2(15 BYTE),
“FISCAL_YEAR” NUMBER(15,0),
“UPDATE_LOGIC_TYPE” VARCHAR2(1 BYTE),
“SEGMENT1” VARCHAR2(25 BYTE),
“SEGMENT2” VARCHAR2(25 BYTE),
“SEGMENT3” VARCHAR2(25 BYTE),
“SEGMENT4” VARCHAR2(25 BYTE),
“SEGMENT5” VARCHAR2(25 BYTE),
“SEGMENT6” VARCHAR2(25 BYTE),
“PERIOD1_AMOUNT” NUMBER,
“PERIOD2_AMOUNT” NUMBER,
“PERIOD3_AMOUNT” NUMBER,
“PERIOD4_AMOUNT” NUMBER,
“PERIOD5_AMOUNT” NUMBER,
“PERIOD6_AMOUNT” NUMBER,
“PERIOD7_AMOUNT” NUMBER,
“PERIOD8_AMOUNT” NUMBER,
“PERIOD9_AMOUNT” NUMBER,
“PERIOD10_AMOUNT” NUMBER,
“PERIOD11_AMOUNT” NUMBER,
“PERIOD12_AMOUNT” NUMBER,
“LAST_UPDATE_DATE” DATE,
“LAST_UPDATED_BY” NUMBER(15,0),
“STATUS” VARCHAR2(30 BYTE),
“ERROR_MESSAGE” VARCHAR2(3000 BYTE),
“CREATION_DATE” DATE,
“CREATED_BY” NUMBER
);
/
CREATE TABLE “XX_GL_BUDGET_ARCH”
(“BUDGET_NAME” VARCHAR2(15 BYTE),
“BUDGET_ENTITY_NAME” VARCHAR2(50 BYTE),
“CURRENCY_CODE” VARCHAR2(15 BYTE),
“FISCAL_YEAR” NUMBER(15,0),
“UPDATE_LOGIC_TYPE” VARCHAR2(1 BYTE),
“SEGMENT1” VARCHAR2(25 BYTE),
“SEGMENT2” VARCHAR2(25 BYTE),
“SEGMENT3” VARCHAR2(25 BYTE),
“SEGMENT4” VARCHAR2(25 BYTE),
“SEGMENT5” VARCHAR2(25 BYTE),
“SEGMENT6” VARCHAR2(25 BYTE),
“PERIOD1_AMOUNT” NUMBER,
“PERIOD2_AMOUNT” NUMBER,
“PERIOD3_AMOUNT” NUMBER,
“PERIOD4_AMOUNT” NUMBER,
“PERIOD5_AMOUNT” NUMBER,
“PERIOD6_AMOUNT” NUMBER,
“PERIOD7_AMOUNT” NUMBER,
“PERIOD8_AMOUNT” NUMBER,
“PERIOD9_AMOUNT” NUMBER,
“PERIOD10_AMOUNT” NUMBER,
“PERIOD11_AMOUNT” NUMBER,
“PERIOD12_AMOUNT” NUMBER,
“LAST_UPDATE_DATE” DATE,
“LAST_UPDATED_BY” NUMBER(15,0),
“STATUS” VARCHAR2(30 BYTE),
“ERROR_MESSAGE” VARCHAR2(3000 BYTE),
“CREATION_DATE” DATE,
“CREATED_BY” NUMBER,
“ARCH_DATE” DATE
);
/
CREATE OR REPLACE PACKAGE xx_gl_budget_interface_pkg AUTHID CURRENT_USER
AS
TYPE t_split_array IS TABLE OF VARCHAR2 (4000);
PROCEDURE xx_update_stage (
p_rowid IN UROWID,
p_status IN VARCHAR2,
p_error_message IN VARCHAR2
);
PROCEDURE xx_gl_budget_interface (
retcode OUT NUMBER,
errbuff OUT VARCHAR2,
p_budget_entity IN VARCHAR2,
p_budget_name IN VARCHAR2
);
PROCEDURE call_fnd_global (
p_user_id NUMBER,
p_resp_id NUMBER,
p_resp_appl_id NUMBER
);
PROCEDURE call_conc_program (
p_budget_entity IN VARCHAR2,
p_budget_name IN VARCHAR2
);
END;
/
CREATE OR REPLACE PACKAGE BODY xx_gl_budget_interface_pkg
AS
ln_conc_program_id NUMBER := fnd_profile.VALUE (‘CONC_REQUEST_ID’);
ln_resp_id NUMBER := fnd_profile.VALUE (‘RESP_ID’);
ln_appl_id NUMBER := fnd_profile.VALUE (‘RESP_APPL_ID’);
ln_user_id NUMBER := fnd_profile.VALUE (‘USER_ID’);
PROCEDURE xx_update_stage (
p_rowid IN UROWID,
p_status IN VARCHAR2,
p_error_message IN VARCHAR2
)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
BEGIN
UPDATE xx_gl_budget_stg
SET error_message = p_error_message,
status = p_status,
last_update_date = SYSDATE,
last_updated_by = -1
WHERE 1 = 1 AND ROWID = p_rowid;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG, ‘Error In Update stg’);
END;
COMMIT;
END xx_update_stage;
PROCEDURE xx_gl_budget_interface (
retcode OUT NUMBER,
errbuff OUT VARCHAR2,
p_budget_entity IN VARCHAR2,
p_budget_name IN VARCHAR2
)
IS
lv_error_flag VARCHAR2 (1);
lv_error_message VARCHAR2 (3000);
lv_budget_name gl_budgets.budget_name%TYPE;
lv_g_currency_code apps.gl_currencies.currency_code%TYPE;
lv_budget_entity_name apps.gl_budget_entities.NAME%TYPE;
lv_currency_code gl_sets_of_books.currency_code%TYPE;
ln_code_combination_id NUMBER;
ln_budget_version_id NUMBER;
ln_set_of_books_id NUMBER;
lv_description VARCHAR2 (500);
ln_ins_count NUMBER := 0;
ln_err_count NUMBER := 0;
ln_tot_count NUMBER := 0;
CURSOR c1
IS
SELECT ROWID rid, stg.*
FROM xx_gl_budget_stg stg
WHERE status = ‘PENDING’
AND budget_entity_name = p_budget_entity
AND budget_name = p_budget_name;
BEGIN
fnd_file.put_line
(fnd_file.LOG,
‘####################################################### ValidationProgram Started #######################################################’
);
fnd_file.put_line (fnd_file.LOG, ‘P_BUDGET_ENTITY#’ || p_budget_entity);
fnd_file.put_line (fnd_file.LOG, ‘P_BUDGET_NAME#’ || p_budget_name);
fnd_file.put_line (fnd_file.LOG, ‘Responsbility ID#’ || ln_resp_id);
fnd_file.put_line (fnd_file.LOG, ‘Application ID#’ || ln_appl_id);
fnd_file.put_line (fnd_file.LOG, ‘User ID#’ || ln_user_id);
FOR cur_stg_data IN c1
LOOP
ln_tot_count := ln_tot_count + 1;
fnd_file.put_line
(fnd_file.LOG,
‘******************************************************************************************************************************’
);
fnd_file.put_line (fnd_file.LOG,
‘Budget Name#’ || cur_stg_data.budget_name
);
fnd_file.put_line (fnd_file.LOG,
‘Fiscal Year#’ || cur_stg_data.fiscal_year
);
fnd_file.put_line (fnd_file.LOG,
‘Currency Code#’ || cur_stg_data.currency_code
);
fnd_file.put_line (fnd_file.LOG,
‘Budget Entity Name#’
|| cur_stg_data.budget_entity_name
);
lv_error_flag := NULL;
lv_error_message := NULL;
lv_budget_name := NULL;
ln_budget_version_id := NULL;
lv_budget_entity_name := NULL;
lv_currency_code := NULL;
lv_description := NULL;
ln_set_of_books_id := NULL;
lv_g_currency_code := NULL;
ln_code_combination_id := NULL;
–Check the below are the required filed have a vaules
IF cur_stg_data.budget_name IS NULL
THEN
lv_error_flag := ‘E’;
lv_error_message := ‘BUDGET_NAME IS mandatory ‘;
fnd_file.put_line (fnd_file.LOG, ‘ BUDGET_NAME IS mandatory’);
END IF;
IF cur_stg_data.fiscal_year IS NULL
THEN
lv_error_flag := ‘E’;
lv_error_message := ‘FISCAL_YEAR IS mandatory ‘;
fnd_file.put_line (fnd_file.LOG, ‘FISCAL_YEAR IS mandatory ‘);
END IF;
IF cur_stg_data.currency_code IS NULL
THEN
lv_error_flag := ‘E’;
lv_error_message := ‘CURRENCY_CODE IS mandatory ‘;
fnd_file.put_line (fnd_file.LOG, ‘CURRENCY_CODE IS mandatory ‘);
END IF;
IF cur_stg_data.budget_entity_name IS NULL
THEN
lv_error_flag := ‘E’;
lv_error_message := ‘BUDGET_ENTITY_NAME IS mandatory ‘;
fnd_file.put_line (fnd_file.LOG,
‘BUDGET_ENTITY_NAME IS mandatory ‘
);
END IF;
fnd_file.put_line (fnd_file.LOG,
‘Flag Status(Location 1 #) ‘
|| NVL (lv_error_flag, ‘NO ERR’)
);
IF NVL (lv_error_flag, ‘X’) <> ‘E’
THEN
–Get the budget name and version id
BEGIN
SELECT budget_name, budget_version_id
INTO lv_budget_name, ln_budget_version_id
FROM gl_budget_versions
WHERE TRIM (budget_name) = TRIM (cur_stg_data.budget_name);
EXCEPTION
WHEN OTHERS
THEN
lv_budget_name := NULL;
ln_budget_version_id := NULL;
lv_error_flag := ‘E’;
lv_error_message :=
lv_error_message || ‘-‘ || ‘Budget Name Not Available ‘;
fnd_file.put_line (fnd_file.LOG,
‘Budget Name Not Available ‘
);
END;
BEGIN
–Get the budget entity name and set of book id
SELECT gbe.NAME, gsob.set_of_books_id,
gsob.currency_code, gbe.description
INTO lv_budget_entity_name, ln_set_of_books_id,
lv_currency_code, lv_description
FROM gl_budget_entities gbe, gl_sets_of_books gsob
WHERE gsob.set_of_books_id = gbe.set_of_books_id
AND TRIM (gbe.NAME) = TRIM (cur_stg_data.budget_entity_name);
EXCEPTION
WHEN OTHERS
THEN
lv_budget_entity_name := NULL;
lv_currency_code := NULL;
lv_description := NULL;
ln_set_of_books_id := NULL;
lv_error_flag := ‘E’;
lv_error_message :=
lv_error_message
|| ‘-‘
|| ‘Budget entity Name Not Available ‘;
fnd_file.put_line (fnd_file.LOG,
‘Budget entity Name Not Available ‘
);
END;
BEGIN
–get the currency code
SELECT currency_code
INTO lv_g_currency_code
FROM apps.gl_currencies
WHERE TRIM (currency_code) = TRIM (cur_stg_data.currency_code);
EXCEPTION
WHEN OTHERS
THEN
lv_g_currency_code := NULL;
lv_error_flag := ‘E’;
lv_error_message :=
lv_error_message || ‘-‘ || ‘Currency Not Available ‘;
fnd_file.put_line (fnd_file.LOG, ‘Currency Not Available’);
END;
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Name#’ || lv_budget_name
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Version ID#’ || ln_budget_version_id
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Entity Name#’
|| lv_budget_entity_name
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Entity Currency Code#’
|| lv_currency_code
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Entity Set Of Book ID#’
|| ln_set_of_books_id
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Entity Description#’
|| lv_description
);
fnd_file.put_line (fnd_file.LOG,
‘DB Currency Code#’ || lv_g_currency_code
);
–Validate the give currency code matched with budget currency code
IF NVL (lv_error_flag, ‘X’) <> ‘E’
AND lv_currency_code IS NOT NULL
AND lv_g_currency_code IS NOT NULL
AND lv_g_currency_code <> lv_currency_code
THEN
lv_error_flag := ‘E’;
lv_error_message :=
lv_error_message
|| ‘-‘
|| ‘Currency code Not Match with entity ‘;
fnd_file.put_line (fnd_file.LOG,
‘Currency code Not Match with entity ‘
|| lv_g_currency_code
|| ‘ # ‘
|| lv_currency_code
);
END IF;
fnd_file.put_line (fnd_file.LOG,
‘Concatenated Segments#’
|| cur_stg_data.segment1
|| ‘.’
|| cur_stg_data.segment2
|| ‘.’
|| cur_stg_data.segment3
|| ‘.’
|| cur_stg_data.segment4
|| ‘.’
|| cur_stg_data.segment5
|| ‘.’
|| cur_stg_data.segment6
);
–validate the Code combinations
BEGIN
SELECT code_combination_id
INTO ln_code_combination_id
FROM gl_code_combinations_kfv
WHERE concatenated_segments =
cur_stg_data.segment1
|| ‘.’
|| cur_stg_data.segment2
|| ‘.’
|| cur_stg_data.segment3
|| ‘.’
|| cur_stg_data.segment4
|| ‘.’
|| cur_stg_data.segment5
|| ‘.’
|| cur_stg_data.segment6;
EXCEPTION
WHEN OTHERS
THEN
lv_error_flag := ‘E’;
ln_code_combination_id := NULL;
lv_error_message :=
lv_error_message
|| ‘-‘
|| ‘Code combination not available ‘;
fnd_file.put_line (fnd_file.LOG,
‘Code combination not available ‘
);
END;
fnd_file.put_line (fnd_file.LOG,
‘Code combination ID#’
|| ln_code_combination_id
);
fnd_file.put_line (fnd_file.LOG,
‘Flag Status(Location 2) ‘
|| NVL (lv_error_flag, ‘NO ERR’)
);
–if there is no error in the record then it will go and insert the interface table
IF NVL (lv_error_flag, ‘X’) <> ‘E’
THEN
ln_ins_count := ln_ins_count + 1;
fnd_file.put_line
(fnd_file.LOG,
‘Insert the data into GL BUDGET INTERFACE Table’
);
BEGIN
INSERT INTO gl_budget_interface
(budget_name,
budget_entity_name,
currency_code,
fiscal_year,
update_logic_type,
segment1, segment2,
segment3, segment4,
segment5, segment6,
period1_amount,
period2_amount,
period3_amount,
period4_amount,
period5_amount,
period6_amount,
period7_amount,
period8_amount,
period9_amount,
period10_amount,
period11_amount,
period12_amount, last_update_date,
last_updated_by
)
VALUES (TRIM (cur_stg_data.budget_name),
TRIM (cur_stg_data.budget_entity_name),
TRIM (cur_stg_data.currency_code),
cur_stg_data.fiscal_year,
cur_stg_data.update_logic_type,
cur_stg_data.segment1, cur_stg_data.segment2,
cur_stg_data.segment3, cur_stg_data.segment4,
cur_stg_data.segment5, cur_stg_data.segment6,
cur_stg_data.period1_amount,
cur_stg_data.period2_amount,
cur_stg_data.period3_amount,
cur_stg_data.period4_amount,
cur_stg_data.period5_amount,
cur_stg_data.period6_amount,
cur_stg_data.period7_amount,
cur_stg_data.period8_amount,
cur_stg_data.period9_amount,
cur_stg_data.period10_amount,
cur_stg_data.period11_amount,
cur_stg_data.period12_amount, SYSDATE,
ln_user_id
);
xx_update_stage (cur_stg_data.rid,
‘INTERFACED’,
lv_error_message
);
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line
(fnd_file.LOG,
‘Error Insert the data into GL BUDGET INTERFACE Table’
);
lv_error_flag := ‘E’;
lv_error_message :=
‘Error Insert the data into GL BUDGET INTERFACE Table’;
xx_update_stage (cur_stg_data.rid,
‘ERROR’,
lv_error_message
);
END;
fnd_file.put_line (fnd_file.LOG,
‘insert Record Count #’ || ln_ins_count
);
ELSE
xx_update_stage (cur_stg_data.rid, ‘ERROR’,
lv_error_message);
END IF;
ELSE
xx_update_stage (cur_stg_data.rid, ‘ERROR’, lv_error_message);
END IF;
END LOOP;
COMMIT;
fnd_file.put_line
(fnd_file.LOG,
‘####################################################### Validation Program Completed #######################################################’
);
fnd_file.put_line
(fnd_file.output,
‘——————————————————————————————————————————————-‘
);
fnd_file.put_line (fnd_file.output,
RPAD (‘Record Status ‘, 30)
|| RPAD (‘Record Count #’, 15)
);
FOR stg_data IN (SELECT status, COUNT (*) cnt
FROM xx_gl_budget_stg
WHERE budget_entity_name = p_budget_entity
AND budget_name = p_budget_name
GROUP BY status)
LOOP
fnd_file.put_line (fnd_file.output,
RPAD (stg_data.status, 30)
|| RPAD (stg_data.cnt, 10)
);
END LOOP;
fnd_file.put_line
(fnd_file.output,
‘——————————————————————————————————————————————-‘
);
fnd_file.put_line (fnd_file.output,
RPAD (‘Budget Name #’, 30)
|| RPAD (‘Budget Entity Name #’, 30)
|| RPAD (‘Currency Code #’, 20)
|| RPAD (‘Fiscal Year #’, 20)
|| RPAD (‘Segments #’, 20)
|| RPAD (‘Status #’, 10)
|| RPAD (‘Error Msg #’, 50)
);
fnd_file.put_line
(fnd_file.output,
‘——————————————————————————————————————————————-‘
);
FOR error_data IN (SELECT *
FROM xx_gl_budget_stg
WHERE status NOT IN (‘INTERFACED’, ‘PENDING’)
AND budget_entity_name = p_budget_entity
AND budget_name = p_budget_name)
LOOP
fnd_file.put_line (fnd_file.output,
RPAD (error_data.budget_name, 30)
|| RPAD (error_data.budget_entity_name, 30)
|| RPAD (error_data.currency_code, 20)
|| RPAD (error_data.fiscal_year, 20)
|| RPAD ( error_data.segment1
|| ‘.’
|| error_data.segment2
|| ‘.’
|| error_data.segment3
|| ‘.’
|| error_data.segment4
|| ‘.’
|| error_data.segment5,
20
)
|| RPAD (error_data.status, 10)
|| RPAD (error_data.error_message, 50)
);
END LOOP;
fnd_file.put_line
(fnd_file.output,
‘——————————————————————————————————————————————-‘
);
IF ln_ins_count >= 1
THEN
fnd_file.put_line
(fnd_file.LOG,
‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Call the standard Concurrent program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’
);
BEGIN
call_conc_program (p_budget_entity => p_budget_entity,
p_budget_name => p_budget_name
);
END;
fnd_file.put_line
(fnd_file.LOG,
‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End the standard Concurrent program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’
);
END IF;
BEGIN
BEGIN
INSERT INTO xx_gl_budget_arch
(budget_name, budget_entity_name, currency_code,
fiscal_year, update_logic_type, segment1, segment2,
segment3, segment4, segment5, segment6,
period1_amount, period2_amount, period3_amount,
period4_amount, period5_amount, period6_amount,
period7_amount, period8_amount, period9_amount,
period10_amount, period11_amount, period12_amount,
last_update_date, last_updated_by, status,
error_message, creation_date, created_by, arch_date)
SELECT budget_name, budget_entity_name, currency_code,
fiscal_year, update_logic_type, segment1, segment2,
segment3, segment4, segment5, segment6, period1_amount,
period2_amount, period3_amount, period4_amount,
period5_amount, period6_amount, period7_amount,
period8_amount, period9_amount, period10_amount,
period11_amount, period12_amount, last_update_date,
last_updated_by, status, error_message, creation_date,
created_by, SYSDATE
FROM xx_gl_budget_stg
WHERE budget_entity_name = p_budget_entity
AND budget_name = p_budget_name;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line
(fnd_file.LOG,
‘Error Insert the data into xx_GL_BUDGET_ARCH’
);
END;
BEGIN
DELETE FROM xx_gl_budget_stg
WHERE budget_entity_name = p_budget_entity
AND budget_name = p_budget_name;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line
(fnd_file.LOG,
‘Error in clear the staging table xx_GL_BUDGET_STG’
);
END;
COMMIT;
END;
END;
PROCEDURE call_fnd_global (
p_user_id NUMBER,
p_resp_id NUMBER,
p_resp_appl_id NUMBER
)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
fnd_global.apps_initialize (user_id => p_user_id,
resp_id => p_resp_id,
resp_appl_id => p_resp_appl_id
);
COMMIT;
END;
PROCEDURE call_conc_program (
p_budget_entity IN VARCHAR2,
p_budget_name IN VARCHAR2
)
IS
lv_budget_name gl_budgets.budget_name%TYPE;
ln_budget_version_id NUMBER;
lv_error_flag VARCHAR2 (1);
l_request_id NUMBER;
lv_budget_entity_name apps.gl_budget_entities.NAME%TYPE;
ln_set_of_books_id NUMBER;
ln_budget_entity_id NUMBER;
BEGIN
lv_budget_entity_name := NULL;
ln_set_of_books_id := NULL;
lv_budget_name := NULL;
ln_budget_version_id := NULL;
ln_set_of_books_id := NULL;
lv_error_flag := NULL;
ln_budget_entity_id := NULL;
BEGIN
SELECT budget_name, budget_version_id
INTO lv_budget_name, ln_budget_version_id
FROM gl_budget_versions
WHERE TRIM (budget_name) = TRIM (p_budget_name);
EXCEPTION
WHEN OTHERS
THEN
lv_budget_name := NULL;
ln_budget_version_id := NULL;
lv_error_flag := ‘E’;
fnd_file.put_line (fnd_file.LOG, ‘Budget Name Not Available ‘);
END;
BEGIN
SELECT gbe.NAME, gsob.set_of_books_id,
budget_entity_id
INTO lv_budget_entity_name, ln_set_of_books_id,
ln_budget_entity_id
FROM gl_budget_entities gbe, gl_sets_of_books gsob
WHERE gsob.set_of_books_id = gbe.set_of_books_id
AND TRIM (gbe.NAME) = TRIM (p_budget_entity);
EXCEPTION
WHEN OTHERS
THEN
lv_budget_entity_name := NULL;
ln_set_of_books_id := NULL;
ln_budget_entity_id := NULL;
lv_error_flag := ‘E’;
fnd_file.put_line (fnd_file.LOG,
‘Budget entity Name Not Available ‘
);
END;
BEGIN
call_fnd_global (ln_user_id, ln_resp_id, ln_appl_id);
END;
fnd_file.put_line (fnd_file.LOG,
‘Budget Name#’ || lv_budget_name || ”
|| p_budget_name
);
fnd_file.put_line (fnd_file.LOG,
‘Budget Version ID#’ || ln_budget_version_id
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Entity Name#’
|| lv_budget_entity_name
|| ‘ ‘
|| p_budget_entity
);
fnd_file.put_line (fnd_file.LOG,
‘DB Budget Entity Set Of Book ID#’
|| ln_set_of_books_id
);
fnd_file.put_line (fnd_file.LOG,
‘Submitting the concurrent program’
|| ln_user_id
|| ‘#’
|| ln_resp_id
|| ‘#’
|| ln_appl_id
);
IF NVL (lv_error_flag, ‘X’) <> ‘N’
THEN
BEGIN
l_request_id :=
fnd_request.submit_request
(application => ‘SQLGL’,
program => ‘GLBBSU’,
description => NULL,
start_time => SYSDATE,
sub_request => FALSE,
argument1 => ln_set_of_books_id,
argument2 => ln_appl_id,
argument3 => lv_budget_name,
argument4 => ln_budget_version_id,
argument5 => lv_budget_entity_name,
argument6 => ln_budget_entity_id
);
END;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
‘Error in submitting the concurrent program’
|| SUBSTR (SQLERRM, 1, 250)
);
raise_application_error
(-20001,
‘Error in submitting the concurrent program’
|| SQLERRM
);
END;
END;
/
Got any queries?
Do drop a note by writing us at venkatesh.b@staging.doyensys.com or use the comment section below to ask your questions