最近学习了EBS 开发报表输出的两种格式:
1.文本格式
CREATE OR REPLACE PROCEDURE giti_inv_fh_rpt(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
l_date_from IN VARCHAR2,
l_date_to IN VARCHAR2 ) IS
--创建游标 mycur
--游标的开始
CURSOR mycur IS
---需求名称:各工厂库存旬报
SELECT rownum ro,
hou.NAME organization_name,
ms.segment2 order_type,
msi.segment1 item_code,
giti_item_pkg.get_item_class(msi.segment1) class1,
SUM(mmt.transaction_quantity) quantity,
mmt.subinventory_code sub_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
FROM inv.mtl_material_transactions mmt,
inv.mtl_sales_orders ms,
inv.mtl_system_items_b msi,
hr.hr_all_organization_units hou
WHERE mmt.transaction_source_type_id = 2
AND mmt.transaction_source_id = ms.sales_order_id
AND msi.inventory_item_id = mmt.inventory_item_id
AND msi.organization_id = 83
AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
AND mmt.transaction_date >= fnd_date.垃圾广告ical_to_date(l_date_from)--to_date(l_date_from, 'yyyy/mm/dd ')
AND mmt.transaction_date < fnd_date.垃圾广告ical_to_date(l_date_to)+1 --to_date(l_date_to, 'yyyy/mm/dd') + 1
AND hou.organization_id = mmt.organization_id
AND mmt.transaction_quantity < 0
GROUP BY rownum,
hou.NAME,
hou.organization_id,
ms.segment2,
msi.segment1,
mmt.subinventory_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD')
UNION ALL
SELECT rownum,
hou.NAME organization_name,
ms.segment2 order_type,
msi.segment1 item_code,
giti_item_pkg.get_item_class(msi.segment1) ,
SUM(mmt.transaction_quantity) quantity,
mmt.subinventory_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
FROM inv.mtl_material_transactions mmt,
inv.mtl_sales_orders ms,
inv.mtl_system_items_b msi,
hr.hr_all_organization_units hou
WHERE mmt.transaction_source_type_id = 12
AND mmt.transaction_source_id = ms.sales_order_id
AND msi.inventory_item_id = mmt.inventory_item_id
AND msi.organization_id = 83
AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
AND mmt.transaction_date >= fnd_date.垃圾广告ical_to_date(l_date_from) --to_date(l_date_from, 'yyyy/mm/dd ')
AND mmt.transaction_date < fnd_date.垃圾广告ical_to_date(l_date_to)+1 --to_date(l_date_to, 'yyyy/mm/dd') + 1
AND hou.organization_id = mmt.organization_id
AND mmt.transaction_quantity < 0
GROUP BY hou.NAME,
rownum,
hou.organization_id,
ms.segment2,
msi.segment1,
mmt.subinventory_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD');
--游标的结束
l_print_line VARCHAR2(4000);
--l_dem VARCHAR2(10) := ',';
l_k VARCHAR2(30) := ' ';
BEGIN
fnd_file.put_line(fnd_file.output, lpad('各工厂库存情况旬报表', 78));
l_print_line := '序号'||l_k||'组织名称' || l_k || '销售类型' || l_k || '品号' || l_k||'大类' ||l_k|| '销售数量' || l_k || '子库名称/子库' || l_k || '交易日';
fnd_file.put_line(fnd_file.output, l_print_line);
FOR rec IN mycur
LOOP
l_print_line :=rec.ro||l_k|| rec.organization_name ||' '|| rec.order_type ||' '|| rec.item_code ||' '||rec.class1 ||' ' || rec.quantity || ' '|| rec.sub_code ||' '|| rec.transaction_date;
fnd_file.put_line(fnd_file.output, l_print_line);
END LOOP;
fnd_file.put_line(fnd_file.output, lpad('***报表结束***', 80));
END giti_inv_fh_rpt;
/
2.html 格式
--------用html输出报表----------------
CREATE OR REPLACE PACKAGE giti_inv_xbb IS
-- Author : YUWEILIANG
-- Created : 2009-4-28 7:57:25
-- Purpose : 各工厂库存情况旬报表
PROCEDURE giti_inv_fh_rpt(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
l_date_from IN VARCHAR2,
l_date_to IN VARCHAR2);
PROCEDURE print_line(g_srs_flag IN VARCHAR2,
p_line_type IN VARCHAR2,
p_line_content IN VARCHAR2);
END giti_inv_xbb;
/
CREATE OR REPLACE PACKAGE BODY giti_inv_xbb IS
PROCEDURE giti_inv_fh_rpt(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
l_date_from IN VARCHAR2,
l_date_to IN VARCHAR2) IS
--创建游标 mycur
--游标的开始
--需求名称:各工厂库存旬报
CURSOR mycur IS
SELECT rownum ro,
hou.NAME organization_name,
ms.segment2 order_type,
msi.segment1 item_code,
SUM(mmt.transaction_quantity) quantity,
mmt.subinventory_code sub_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
FROM inv.mtl_material_transactions mmt,
inv.mtl_sales_orders ms,
inv.mtl_system_items_b msi,
hr.hr_all_organization_units hou
WHERE mmt.transaction_source_type_id = 2
AND mmt.transaction_source_id = ms.sales_order_id
AND msi.inventory_item_id = mmt.inventory_item_id
AND msi.organization_id = 83
AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
AND mmt.transaction_date >= to_date(l_date_from, 'yyyy-mm-dd ')
AND mmt.transaction_date < to_date(l_date_to, 'yyyy-mm-dd') + 1
AND hou.organization_id = mmt.organization_id
AND mmt.transaction_quantity < 0
GROUP BY rownum,
hou.NAME,
hou.organization_id,
ms.segment2,
msi.segment1,
mmt.subinventory_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD')
UNION ALL
SELECT rownum,
hou.NAME organization_name,
ms.segment2 order_type,
msi.segment1 item_code,
SUM(mmt.transaction_quantity) quantity,
mmt.subinventory_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
FROM inv.mtl_material_transactions mmt,
inv.mtl_sales_orders ms,
inv.mtl_system_items_b msi,
hr.hr_all_organization_units hou
WHERE mmt.transaction_source_type_id = 12
AND mmt.transaction_source_id = ms.sales_order_id
AND msi.inventory_item_id = mmt.inventory_item_id
AND msi.organization_id = 83
AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
AND mmt.transaction_date >= to_date(l_date_from, 'yyyy-mm-dd ')
AND mmt.transaction_date < to_date(l_date_to, 'yyyy-mm-dd') + 1
AND hou.organization_id = mmt.organization_id
AND mmt.transaction_quantity < 0
GROUP BY hou.NAME,
rownum,
hou.organization_id,
ms.segment2,
msi.segment1,
mmt.subinventory_code,
to_char(mmt.transaction_date, 'YYYY-MM-DD');
--游标的结束
l_temp_string VARCHAR2(10000);
BEGIN
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '
');
print_line('Y', 'OUTFILE', '各工厂库存旬报表' || '');
print_line('Y', 'OUTFILE', '<!-- ========================================================= -->');
print_line('Y', 'OUTFILE', '<!-- Copyright (c) 2008 GITI Corporation -->');
print_line('Y', 'OUTFILE', '<!-- All rights reserved -->');
print_line('Y', 'OUTFILE', '<!-- ========================================================= -->');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', ' div.breakafter { page-break-after:always; }');
print_line('Y', 'OUTFILE', ' .tableheader { background: #ccce99; color: #546699;}');
print_line('Y', 'OUTFILE', ' div.breakbefore { page-break-before:always; }');
print_line('Y',
'OUTFILE',
' body {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
print_line('Y',
'OUTFILE',
' table {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '
各工厂库存旬报表 ');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '
序号 | 组织名称 | 销售类型 | 品号 | 销售数量 | 子库名称/子库 | 交易日 |
---|---|---|---|---|---|---|
' || nvl(rec.ro, 0) || ' | ' || nvl(rec.organization_name, '-') || ' | ' || nvl(rec.order_type, '-') || ' | ' || nvl(rec.item_code, '-') || ' | ' || nvl(TO_CHAR(rec.quantity), '-') || ' | ' || nvl(rec.sub_code, '-') || ' | ' || nvl(rec.transaction_date, NULL) || ' |
Exception ');
print_line('Y', 'OUTFILE', ' ' || 'ERROR' || '');
print_line('Y', 'OUTFILE', '
');
print_line('Y', 'OUTFILE', ' ' || SQLERRM || '');
print_line('Y', 'OUTFILE', '
');
print_line('Y', 'OUTFILE', '');
print_line('Y', 'OUTFILE', '');
END;
PROCEDURE print_line(g_srs_flag IN VARCHAR2,
p_line_type IN VARCHAR2,
p_line_content IN VARCHAR2) IS
BEGIN
IF g_srs_flag = 'N' THEN
htp.p(p_line_content);
ELSE
IF p_line_type = 'OUTFILE' THEN
fnd_file.put_line(fnd_file.output, p_line_content);
ELSIF p_line_type = 'LOGFILE' THEN
fnd_file.put_line(fnd_file.log, p_line_content);
END IF;
END IF;
END print_line;
END giti_inv_xbb;
/
或者
CREATE OR REPLACE PACKAGE BODY CUX_BOE_CUST_PERIOD_RPT IS
g_conc_request_id CONSTANT NUMBER := fnd_global.conc_request_id;
g_srs_flag VARCHAR2(1) := 'Y';
g_formt_mask VARCHAR2(100) := 'YYYY-MM-DD';
PROCEDURE MAIN(ERRBUF OUT VARCHAR2,
RETCODE OUT VARCHAR2,
P_POLICY_ID IN NUMBER,
P_PERIOD IN VARCHAR2) IS
LV_HEADER VARCHAR2(10000) := '
佳通轮胎有限公司客户当前手续费报表
<!--
body {background-color: #ffffff;}
.subheader1 {font-family: Arial, Helvetica, Geneva, sans-serif;
font-size: 13pt;
font-weight: bold;
color: #336699;}
.tableheader {font-family: Arial, Helvetica, Geneva, sans-serif;
font-size: 10pt;
font-weight: bold;
background: #cccc99;
color: #336699;
text-align: left;}
.tabledata {font-family: Arial, Helvetica, Geneva, sans-serif;
font-size: 10pt;
background: #f7f7e7;
color: #000000;}
-->
佳通轮胎有限公司客户当前手续费报表
销售中心 | 收款编号 | 客户编码 | 客户名称 | 特惠客户 | 全免客户 | 银行信息 | 收款日期 | 汇票到期日 | 释放日期 | 收款金额 | 手续费 | 总超出金额 | 汇票比例 | 总汇票比例 | 特惠比率 | 减免比例 | 基础比率 | 超额比率 | 银行/天数比率 | 金额固定 | 组合比率 | 累计增加 | 最终比率 |
银行/天数固定
银行/金额比率
银行/金额固定
金额比率
准确计息比率
天数比率
天数固定
传送标志
冻结状态
手续费率
';
LV_BODY VARCHAR2(3000) := '
TEXT01
TEXT02
TEXT03
TEXT04
TEXT05
TEXT06
TEXT07
TEXT08
TEXT09
TEXT10
TEXT11
TEXT12
TEXT13
TEXT14
TEXT15
TEXT16
TEXT17
TEXT58
TEXT68
TEXT19
TEXT20
TEXT21
TEXT22
TEXT23
TEXT24
TEXT25
TEXT26
TEXT27
TEXT28
TEXT29
TEXT30
TEXT31
TEXT32
TEXT18
';
LV_STRING VARCHAR2(3000);
LV_TAIL VARCHAR2(200) := '';
CURSOR C_RECEIPTS(P_ORG_ID IN NUMBER) IS
SELECT CUST.NAME, --销售中心
CUST.RECEIPT_NUMBER, --收款编号
CUST.REMITTED_AMOUNT, --收款金额
CUST.CUSTOMER_NUMBER, --客户编码
CUST.CUSTOMER_NAME, --客户名称
DECODE(CUST.ATTRIBUTE1, 'Y', '是', 'N', '否') SPEC_BENE_FLAG, --特惠客户
DECODE(CUST.ATTRIBUTE2, 'Y', '是', 'N', '否') ALLOW_ALL_FREE_FLAG, --全免客户
CUST.BANK_NAME, --银行信息
CUST.RECEIPT_DATE, --收款日期
CUST.DUE_DATE, --汇票到期日期
CUST.RELEASE_DATE RELE_DATE, --释放日期
CUST.SOURCE_LINES_AMOUNT CHARGE_AMT, --手续费
get_cust_base_rule(CUST.ORG_ID,CUST.POLICY_ID,CUST.CUSTOMER_ID) NEW_BASE_RULE, --基础比率
get_cust_overtake_rule(CUST.ORG_ID,CUST.POLICY_ID,CUST.CUSTOMER_ID) NEW_OVERTAKE_RULE,--超额比率
CBCR.BASE_RULE, --手续费率
DECODE(SUBSTR(CUST.PERIOD_NAME, 4, 5),
'07',
DECODE(CUST.ATTRIBUTE2, --brain.chen on 2007.05.31
'Y',
'',
DECODE(T.ATTRIBUTE6,
'Y',
CBCR.MAIN_ADJ_RULE,
'N',
CBCR.OTHER_ADJ_RULE)),
T.ATTRIBUTE10 --08年银行比率
)BANK_RULE, -- 银行比率
T.ATTRIBUTE11 BANK_AMOUNT, --银行固定 08年政策新增
T.ATTRIBUTE4 AMT_RULE, --金额比率
T.ATTRIBUTE9 AMT_AMOUNT, --金额固定 08年政策新增
T.ATTRIBUTE5 PREC_RULE, --准确计息比率
T.ATTRIBUTE3 DAYS_RULE, --天数比率
T.ATTRIBUTE8 DAYS_AMOUNT, --天数固定 08年政策新增
DECODE(SUBSTR(CUST.PERIOD_NAME, 4, 5),
'07',
CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
NVL(T.ATTRIBUTE5, 1) * NVL(DECODE(T.ATTRIBUTE6,
'Y',
CBCR.MAIN_ADJ_RULE,
'N',
CBCR.OTHER_ADJ_RULE), 1),
CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
NVL(T.ATTRIBUTE5, 1)) COMB_RULE, --组合比率
NVL(T.ATTRIBUTE11, 0) + NVL(T.ATTRIBUTE9, 0) + NVL(T.ATTRIBUTE8, 0) TOTAL_AMOUNT, --累计增加 08年政策
CUST.SPEC_RULE, --特惠比率
DECODE(SUBSTR(CUST.PERIOD_NAME, 4, 5),
'07',
CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
NVL(T.ATTRIBUTE5, 1) * NVL(CUST.SPEC_RULE, 1) *
NVL(DECODE(T.ATTRIBUTE6,
'Y',
CBCR.MAIN_ADJ_RULE,
'N',
CBCR.OTHER_ADJ_RULE),
1),
NVL(T.ATTRIBUTE15,
--CUST.SOURCE_LINES_AMOUNT / NVL(CUST.REMITTED_AMOUNT, CUST.SOURCE_LINES_AMOUNT)
DECODE(NVL(CUST.REMITTED_AMOUNT,0),
0,
DECODE(NVL(CUST.SOURCE_LINES_AMOUNT, 0),
0,
0,
1),
NVL(CUST.SOURCE_LINES_AMOUNT, 0) / CUST.REMITTED_AMOUNT)
--MODI BY LEONFENG 20080108
)
)F_RULE, --最终比率
DECODE(CUST.IMPORT_FLAG, 'Y', '是', 'N', '否') IMPORT_FLAG,
CUST.BOE_SCALE, --汇票比率
T.ATTRIBUTE1, --减免比率
CUST.TOTAL_BOE_SCALE, --总汇票比率
CUST.OVER_AMOUNT, --总超出金额
T.ATTRIBUTE16, --银行金额比例
T.ATTRIBUTE17, --银行金额固定
DECODE(CUST.FREEZE_FLAG,
'Y',
'冻结',
'释放') FREEZE_FLAG
FROM CUX.CUX_BILL_OF_EXCHANGES_ALL T,
CUX_BOE_CALC_RULE CBCR,
CUX_BOE_TM_INTERFACE_V CUST
WHERE T.DOCUMENT_ID = CUST.DOCUMENT_ID
AND CBCR.CALC_RULE_ID = T.ATTRIBUTE2
AND CUST.POLICY_ID = CBCR.POLICY_ID
AND CUST.ORG_ID =
DECODE(P_ORG_ID, 88, CUST.ORG_ID, P_ORG_ID, P_ORG_ID) --FND_GLOBAL.ORG_ID
AND CUST.POLICY_ID = P_POLICY_ID
AND CUST.PERIOD_NAME = P_PERIOD
ORDER BY CUST.RECEIPT_NUMBER;
V_START_DATE DATE;
V_END_DATE DATE;
V_ORG_ID NUMBER;
BEGIN
--100总公司显示所有OU的报表,其他分公司只显示当前OU的报表
V_ORG_ID := FND_GLOBAL.ORG_ID;
CUX_CONC_UTL.OUT_MSG(LV_HEADER);
FOR REC IN C_RECEIPTS(V_ORG_ID) LOOP
LV_STRING := LV_BODY;
LV_STRING := REPLACE(LV_STRING, 'TEXT01', NVL(REC.NAME, ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT02',
NVL(TO_CHAR(REC.RECEIPT_NUMBER), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT03',
NVL(REC.CUSTOMER_NUMBER, ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT04',
NVL(REC.CUSTOMER_NAME, ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT05',
NVL(REC.SPEC_BENE_FLAG, ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT06',
NVL(REC.ALLOW_ALL_FREE_FLAG, ''));
LV_STRING := REPLACE(LV_STRING, 'TEXT07', NVL(REC.BANK_NAME, ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT08',
NVL(TO_CHAR(REC.RECEIPT_DATE, 'YYYY-MM-DD'),
''));
LV_STRING := REPLACE(LV_STRING,
'TEXT09',
NVL(TO_CHAR(REC.DUE_DATE, 'YYYY-MM-DD'), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT10',
NVL(TO_CHAR(REC.RELE_DATE, 'YYYY-MM-DD'), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT11',
NVL(TO_CHAR(REC.REMITTED_AMOUNT), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT12',
NVL(TO_CHAR(ROUND(REC.CHARGE_AMT, 4)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT13',
NVL(TO_CHAR(ROUND(REC.OVER_AMOUNT, 4)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT14',
NVL(TO_CHAR(ROUND(REC.BOE_SCALE, 4)), ''));
--银行固定
LV_STRING := REPLACE(LV_STRING,
'TEXT15',
NVL(TO_CHAR(ROUND(REC.TOTAL_BOE_SCALE, 4)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT16',
NVL(TO_CHAR(ROUND(REC.SPEC_RULE, 4)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT17',
NVL(TO_CHAR(REC.ATTRIBUTE1), ''));
--基础比率
LV_STRING := REPLACE(LV_STRING,
'TEXT58',
NVL(TO_CHAR(REC.NEW_BASE_RULE), ''));
--超额比率
LV_STRING := REPLACE(LV_STRING,
'TEXT68',
NVL(TO_CHAR(REC.NEW_OVERTAKE_RULE), ''));
--金额比率
LV_STRING := REPLACE(LV_STRING,
'TEXT18',
NVL(TO_CHAR(REC.BASE_RULE), ''));
--金额固定
LV_STRING := REPLACE(LV_STRING,
'TEXT19',
NVL(TO_CHAR(REC.BANK_RULE), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT20',
NVL(TO_CHAR(REC.AMT_AMOUNT), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT21',
NVL(TO_CHAR(ROUND(REC.COMB_RULE, 4)), ''));
--天数固定
LV_STRING := REPLACE(LV_STRING,
'TEXT22',
NVL(TO_CHAR(ROUND(REC.TOTAL_AMOUNT, 4)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT23',
NVL(TO_CHAR(ROUND(REC.F_RULE, 6)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT24',
NVL(TO_CHAR(REC.BANK_RULE), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT25',
NVL(TO_CHAR(ROUND(REC.ATTRIBUTE16, 6)), ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT26',
NVL(TO_CHAR(ROUND(REC.ATTRIBUTE17, 6)), ''));
--汇票比例
LV_STRING := REPLACE(LV_STRING,
'TEXT27',
NVL(TO_CHAR(round(REC.AMT_RULE, 4)), ''));
--减免比例
LV_STRING := REPLACE(LV_STRING,
'TEXT28',
NVL(TO_CHAR(REC.PREC_RULE), ''));
--总超出金额
LV_STRING := REPLACE(LV_STRING,
'TEXT29',
NVL(TO_CHAR(ROUND(REC.DAYS_RULE, 4)), ''));
--总汇票比例
LV_STRING := REPLACE(LV_STRING,
'TEXT30',
NVL(TO_CHAR(ROUND(REC.DAYS_AMOUNT, 4)), ''));
--传送标志
LV_STRING := REPLACE(LV_STRING,
'TEXT31',
NVL(REC.IMPORT_FLAG, ''));
LV_STRING := REPLACE(LV_STRING,
'TEXT32',
NVL(REC.FREEZE_FLAG, ''));
CUX_CONC_UTL.OUT_MSG(LV_STRING);
END LOOP;
CUX_CONC_UTL.OUT_MSG(LV_TAIL);
END MAIN;
PROCEDURE CUXZGSAT(ERRBUF OUT VARCHAR2,
RETCODE OUT VARCHAR2,
P_ORG_ID IN NUMBER,
P_PERIOD IN VARCHAR2) IS
l_start_date DATE;
l_end_date DATE;
CURSOR C_RECEIPTS(p_start_date DATE, p_end_date DATE) IS
SELECT hou.name ORG_NAME,
hp.party_name cust_name,
flv.meaning boe_doc_type,
boe.remittor_name,
boe.issue_bank_name,
boe.date_of_issue,
boe.due_date,
boe.remitted_amount,
boe.document_number1 || boe.document_number2 || boe.document_number3 document_number,
boe.remittee_name,
boe.receive_bank_name,
boe.receive_bank_account_name,
boe.issue_bank_account_name,
boe.agreement_number,
boe.currency_code,
boe.issue_bank_number,
boe.issue_bank_address,
get_first_endor(boe.document_id)first_endor,
get_second_endor(boe.document_id)second_endor,
cr.receipt_number
FROM cux.cux_bill_of_exchanges_all boe,
ar_cash_receipts_all cr,
ar_cash_receipt_history_all crh,
ar_cash_receipt_history_all crhc,
hz_cust_accounts hca,
hz_parties hp,
fnd_lookup_values flv,
HR_ORGANIZATION_UNITS HOU
WHERE 1 = 1
AND boe.related_document_id = cr.cash_receipt_id
AND cr.cash_receipt_id = crh.cash_receipt_id
AND crh.first_posted_record_flag = 'Y'
AND cr.cash_receipt_id = crhc.cash_receipt_id
AND crhc.current_record_flag = 'Y'
AND crhc.status <> 'REVERSED'
AND cr.pay_from_customer = hca.cust_account_id(+)
AND hca.party_id = hp.party_id(+)
AND flv.lookup_code(+) = boe.document_type
AND flv.LANGUAGE(+) = 'ZHS'
AND flv.lookup_type(+) = 'CUX_BOE_DOC_TYPE'
AND crh.gl_date between nvl(p_start_date, crh.gl_date) and nvl(p_end_date, crh.gl_date)
AND CR.ORG_ID = DECODE(P_ORG_ID,88,CR.ORG_ID,NVL(P_ORG_ID,CR.ORG_ID))
AND CRH.ORG_ID = DECODE(P_ORG_ID,88,CRH.ORG_ID,NVL(P_ORG_ID,CRH.ORG_ID))
AND CRHC.ORG_ID = DECODE(P_ORG_ID,88,CRHC.ORG_ID,NVL(P_ORG_ID,CRHC.ORG_ID))
AND CR.ORG_ID = HOU.organization_id
;
V_START_DATE DATE;
V_END_DATE DATE;
V_ORG_ID NUMBER;
l_temp_string VARCHAR2(4000);
l_org_name VARCHAR2(500);
BEGIN
IF P_ORG_ID IS NOT NULL THEN
SELECT ou.name
INTO l_org_name
FROM hr_operating_units ou
WHERE ou.organization_id = P_ORG_ID;
END IF;
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '
');
print_line(g_srs_flag, 'OUTFILE', '银行票据信息' || l_org_name || '');
print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
print_line(g_srs_flag, 'OUTFILE', '<!-- Copyright (c) 2006 Hand Corporation -->');
print_line(g_srs_flag, 'OUTFILE', '<!-- All rights reserved -->');
print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', ' div.breakafter { page-break-after:always; }');
print_line(g_srs_flag, 'OUTFILE', ' .tableheader { background: #cccc99; color: #336699;}');
print_line(g_srs_flag, 'OUTFILE', ' div.breakbefore { page-break-before:always; }');
print_line(g_srs_flag, 'OUTFILE', ' body {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
print_line(g_srs_flag, 'OUTFILE', ' table {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '
银行票据信息 ');
print_line(g_srs_flag, 'OUTFILE', '
业务实体 : | ' || l_org_name || ' |
打印时间 : | ' || to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || ' |
');
print_line(g_srs_flag, 'OUTFILE', '
l_temp_string := '
' ||
'
业务实体' ||
'
客户名称' ||
'
汇票类型' ||
'
出票人全称' ||
'
付款银行名称' ||
'
出票日期' ||
'
到日期' ||
'
出票金额' ||
'
汇票编号' ||
'
收款人名称' ||
'
收款人开户银行' ||
'
收款人帐号' ||
'
出票人帐号' ||
'
承兑协议编号' ||
'
付款币种' ||
'
付款行行号' ||
'
付款行地址' ||
'
第一背书人' ||
'
第二背书人' ||
'
收款编号' ||
'';
print_line(g_srs_flag, 'OUTFILE', l_temp_string);
BEGIN
SELECT START_DATE, END_DATE
INTO l_start_date, l_end_date
FROM GL_PERIOD_STATUSES
WHERE CLOSING_STATUS IN ('O', 'C', 'N')
AND APPLICATION_ID = 101
AND SET_OF_BOOKS_ID = 1
AND ADJUSTMENT_PERIOD_FLAG = 'N'
--AND TO_CHAR(SYSDATE, 'YYYY') = PERIOD_YEAR
AND PERIOD_NAME = P_PERIOD;
EXCEPTION
WHEN OTHERS THEN
l_start_date := null;
l_end_date := null;
END;
FOR x IN C_RECEIPTS(l_start_date, l_end_date)
LOOP
l_temp_string := '
' ||
'' || x.ORG_NAME || '' ||
'' || nvl(x.cust_name, '') || '' ||
'' || x.boe_doc_type || '' ||
'' || x.remittor_name || '' ||
'' || x.issue_bank_name || '' ||
'' || to_char(x.date_of_issue, 'YYYY-MM-DD') || '' ||
'' || to_char(x.due_date, 'YYYY-MM-DD') || '' ||
'' || to_char(round(x.remitted_amount, 2)) || '' ||
'' || x.document_number || '' ||
'' || x.remittee_name || '' ||
'' || x.receive_bank_name || '' ||
'' || x.receive_bank_account_name || '' ||
'' || x.issue_bank_account_name || '' ||
'' || nvl(x.agreement_number, '') || '' ||
'' || x.currency_code || '' ||
'' || x.issue_bank_number || '' ||
'' || x.issue_bank_address || '' ||
'' || nvl(x.first_endor, '') || '' ||
'' || nvl(x.second_endor, '') || '' ||
'' || x.receipt_number || '' ||
'';
print_line(g_srs_flag, 'OUTFILE', l_temp_string);
END LOOP;
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '');
print_line(g_srs_flag, 'OUTFILE', '');
EXCEPTION
WHEN OTHERS THEN
print_line(g_srs_flag, 'OUTFILE', '
异常错误发生 ');
print_line(g_srs_flag, 'OUTFILE', '
');
print_line(g_srs_flag, 'OUTFILE', ' ' || SQLERRM || '');
print_line(g_srs_flag, 'OUTFILE', '
');
print_line(g_srs_flag, 'OUTFILE', '
转载于:http://blog.itpub.net/13996372/viewspace-607788/