Package Spec:
CREATE
OR REPLACE PACKAGE APPS.XX_GL_ACCOUNT_EXTRACT_PKG
AS
PROCEDURE LOG (p_msg IN VARCHAR2);
PROCEDURE export_gl_account_details (
p_errbuf OUT
VARCHAR2,
p_retcode OUT
NUMBER
);
END
XX_GL_ACCOUNT_EXTRACT_PKG;
/
Package Body:
CREATE
OR REPLACE PACKAGE BODY APPS.xx_gl_account_extract_pkg
AS
g_conc_success NUMBER := 0;
g_conc_warning NUMBER := 1;
g_conc_error NUMBER := 2;
PROCEDURE LOG (p_msg IN VARCHAR2)
IS
l_msg
VARCHAR2 (32000)
:= TO_CHAR (SYSTIMESTAMP,
'HH.MI.SS.FF') || '-'
|| p_msg;
BEGIN
fnd_file.put_line (fnd_file.LOG, l_msg);
END LOG;
PROCEDURE export_gl_account_details (
p_errbuf OUT
VARCHAR2,
p_retcode OUT
NUMBER
)
AS
/*--
Cursor to get the Vendor Details --*/
CURSOR c_gl_account_details (p_run_date
DATE)
IS
SELECT gcc.segment1 company,
(SELECT NVL (ffvv1.attribute1,
ffvv1.description
)
FROM fnd_flex_value_sets
ffvs1, fnd_flex_values_vl ffvv1
WHERE ffvs1.flex_value_set_name
= 'XX Company'
AND ffvv1.flex_value_set_id
= ffvs1.flex_value_set_id
AND ffvv1.flex_value =
gcc.segment1) company_description,
gcc.segment2 plant,
(SELECT NVL (ffvv2.attribute1,
ffvv2.description)
FROM fnd_flex_value_sets
ffvs2,
fnd_flex_values_vl
ffvv2
WHERE
ffvs2.flex_value_set_name = 'XX Plant'
AND ffvv2.flex_value_set_id
= ffvs2.flex_value_set_id
AND ffvv2.flex_value =
gcc.segment2) plant_name,
gcc.segment3 department,
(SELECT ffvv3.description
FROM fnd_flex_value_sets ffvs3,
fnd_flex_values_vl
ffvv3
WHERE ffvs3.flex_value_set_name
= 'XX Department'
AND ffvv3.flex_value_set_id
= ffvs3.flex_value_set_id
AND ffvv3.flex_value =
gcc.segment3) department_name,
gcc.segment4 natural_account,
(SELECT ffvv4.description
FROM fnd_flex_value_sets
ffvs4,
fnd_flex_values_vl
ffvv4
WHERE ffvs4.flex_value_set_name
= 'XX Account'
AND ffvv4.flex_value_set_id
= ffvs4.flex_value_set_id
AND ffvv4.flex_value =
gcc.segment4)
natural_account_description,
gcc.segment5 sub_account,
(SELECT ffvv5.description
FROM fnd_flex_value_sets
ffvs5,
fnd_flex_values_vl
ffvv5
WHERE ffvs5.flex_value_set_name
= 'XX Sub-Account'
AND ffvv5.flex_value_set_id
= ffvs5.flex_value_set_id
AND ffvv5.flex_value =
gcc.segment5)
sub_account_description,
gcc.segment6 future_use
FROM gl_code_combinations gcc,
fnd_id_flex_structures ffs
WHERE ffs.id_flex_code = 'GL#'
AND ffs.id_flex_structure_code =
'XX_ACCT_FLEXFIELD'
AND gcc.chart_of_accounts_id =
ffs.id_flex_num
AND NVL (gcc.end_date_active,
SYSDATE) >= SYSDATE
AND gcc.detail_posting_allowed_flag
= 'Y'
AND gcc.enabled_flag = 'Y';
/*
-- Variable declarations --*/
l_utl_file UTL_FILE.file_type;
l_current_time fnd_lookup_values.meaning%TYPE := '';
l_run_date DATE;
/*
-- Output File Directory -- */
l_outfile_path VARCHAR2 (4000) := 'COR360_OUT_DATA_DIR';
l_file_name VARCHAR2 (240);
l_create_dir VARCHAR2 (500);
l_rec_count NUMBER := 0;
l_file_name2 VARCHAR2 (240);
l_time_comp VARCHAR2 (100)
:=
TO_CHAR (SYSDATE, 'YYYYMMDDHH24MISS');
l_sftp_request_id NUMBER;
l_sftpuser VARCHAR (50);
l_sftppasswrd VARCHAR (50);
l_remote_dir VARCHAR (50);
BEGIN
/*-------------In the main program
------------------*/
LOG ('Directory File Path: ' ||
l_outfile_path);
/*-------Set the Output File Name
-----------*/
l_file_name := 'AP_' || l_time_comp ||
'_account.txt';
BEGIN
l_utl_file :=
UTL_FILE.fopen
(l_outfile_path, l_file_name, 'W', 32767);
/*--Writing Column Headers---*/
UTL_FILE.put (l_utl_file, 'COMPANY');
UTL_FILE.put (l_utl_file, '|' ||
'COMPANY_DESCRIPTION');
UTL_FILE.put (l_utl_file, '|' ||
'PLANT');
UTL_FILE.put (l_utl_file, '|' ||
'PLANT_NAME');
UTL_FILE.put (l_utl_file, '|' ||
'DEPARTMENT');
UTL_FILE.put (l_utl_file, '|' ||
'DEPARTMENT_NAME');
UTL_FILE.put (l_utl_file, '|' ||
'NATURAL_ACCOUNT');
UTL_FILE.put (l_utl_file, '|' ||
'NATURAL_ACCOUNT_DESCRIPTION');
UTL_FILE.put (l_utl_file, '|' ||
'SUB_ACCOUNT');
UTL_FILE.put (l_utl_file, '|' ||
'SUB_ACCOUNT_DESCRIPTION');
UTL_FILE.put (l_utl_file, '|' ||
'FUTURE_USE');
UTL_FILE.new_line (l_utl_file);
/*-------- Write records ---------*/
FOR c_gl_account_rec IN
c_gl_account_details (l_run_date)
LOOP
--UTL_FILE.put (l_utl_file,
'VENDOR');
UTL_FILE.put (l_utl_file,
c_gl_account_rec.company);
UTL_FILE.put (l_utl_file,
'|' ||
c_gl_account_rec.company_description
);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.plant);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.plant_name);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.department);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.department_name);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.natural_account);
UTL_FILE.put (l_utl_file,
'|' ||
c_gl_account_rec.natural_account_description
);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.sub_account);
UTL_FILE.put (l_utl_file,
'|' || c_gl_account_rec.sub_account_description
);
UTL_FILE.put (l_utl_file, '|' ||
c_gl_account_rec.future_use);
UTL_FILE.new_line (l_utl_file);
l_rec_count := l_rec_count + 1;
END LOOP;
UTL_FILE.fclose (l_utl_file);
l_file_name2 := 'AP_' || l_time_comp || '_account.ctl';
l_utl_file :=
UTL_FILE.fopen
(l_outfile_path, l_file_name2, 'W', 32767);
UTL_FILE.put (l_utl_file, 'ROWCOUNT');
UTL_FILE.new_line (l_utl_file);
UTL_FILE.put (l_utl_file,
l_rec_count);
UTL_FILE.fclose (l_utl_file);
fnd_file.put_line (fnd_file.LOG,
'Submitting SFTP Program');
EXCEPTION
WHEN UTL_FILE.invalid_operation
THEN
p_retcode := g_conc_error;
LOG
( 'Error occured when attempting as trying to
do invalid operation'
|| SQLERRM
|| ' '
|| SQLCODE
);
UTL_FILE.fclose_all;
WHEN UTL_FILE.invalid_path
THEN
p_retcode := g_conc_error;
LOG
( 'Error occured when attempting to write a
file into server: '
|| SQLERRM
|| ' '
|| SQLCODE
);
UTL_FILE.fclose_all;
WHEN UTL_FILE.invalid_mode
THEN
p_retcode := g_conc_error;
LOG ('Invalid mode: ' || SQLERRM ||
' ' || SQLCODE);
UTL_FILE.fclose_all;
WHEN UTL_FILE.invalid_filehandle
THEN
p_retcode := g_conc_error;
LOG ('invalid filehandle' ||
SQLERRM || ' ' || SQLCODE);
UTL_FILE.fclose_all;
WHEN UTL_FILE.read_error
THEN
p_retcode := g_conc_error;
LOG ('read error' || SQLERRM || ' '
|| SQLCODE);
UTL_FILE.fclose_all;
WHEN UTL_FILE.internal_error
THEN
p_retcode := g_conc_error;
LOG ('internal error' || SQLERRM ||
' ' || SQLCODE);
UTL_FILE.fclose_all;
WHEN OTHERS
THEN
p_retcode := g_conc_error;
LOG ('other error' || SQLERRM || '
' || SQLCODE);
UTL_FILE.fclose_all;
END;
EXCEPTION
WHEN OTHERS
THEN
p_retcode := g_conc_error;
LOG ('Error occured in the main
program: ' || SQLERRM || ' '
|| SQLCODE
);
END;
END
xx_gl_account_extract_pkg;
/
No comments:
Post a Comment