很多EBS的标准报表,特别是EBS R11都只有text格式输出,输出结果不好整理数据,需修改为Excel格式输出。

下面介绍两种类型(Oracle Report, Spawned)的报表如何修改。

Oracle Report类型@ Cost Type Comparison Report
Step1. 复制text格式输出的请求,建立一个XML输出的新的请求。

Step2. 运行请求,得到XML文件

Step3: 根据XML文件编写rtf模块并上传(略)

Spawned Report类型@ Applied Receipts Register
Spawned类型的报表用例1的方式修改行不通,且此类报表是用Pro*C编译上传的,无法看到源码。

但可以通过Trace查看SQL源码,再根据SQL结果编写XML文件。

Step1: 定义请求可调试

Step2: 系统配置文件
如果仅仅是"Enable Trace",收集到的Sql Trace并不包含binds and waits,可通过配置文件设置。(建议设置用户层)

Concurrent: Allow Debugging Yes

Step3: 运行请求
勾选SQL Trace,并选择"SQL Trace with Binds and Waits"

Step4: 查询Trace文件

select name, value
from v$parameter
where name like 'user_dump_dest';

Trace文件中的SQL语句。SQL语句很多,最好是用text输出中的已知字段进行搜索。

Step5: 开发新请求,执行方式为SQL*PLUS
Spawned类型的请求会触发另一个子请求,子请求查询数据存入表中,父请求再输出数据。

子请求参数: 3000, 82, , 50428, 415, 415, 2019/01/01 00:00:00, 2019/01/31 00:00:00, , , , , , , , , , , , , , ,

父请求参数:SUBMIT, AR, RXARARRG, 217, DEFAULT, TEXT, 3000, 82, , 50428, 415, 415, 2019/01/01 00:00:00, 2019/01/31 00:00:00, , , , , , , , , , , , , , ,

那我们可以用执行方式为SQL*PLUS的请求,语句中触发子请求查询数据,再将结果生成XML数据或者直接用HTML显示数据。
–SQL文件

declareretcode                 NUMBER;errbuf                  VARCHAR2(1000);--等待程序:v_request_id            number;l_phase                 varchar2(200); l_status                varchar2(200);  l_dev_phase             varchar2(200); l_dev_status            varchar2(200); l_message               varchar2(200); l_request_status        boolean;   CURSOR user_cursor ISSELECT DEBIT_BALANCING,RECEIPT_CURRENCY_CODE,fnd_date.date_to_displaydate(APPLY_DATE)  APPLY_DATE,CUSTOMER_NUMBER,CUSTOMER_NAME,BATCH_NAME,TRX_NUMBER,RELATED_CUSTOMER,RECEIPT_NUMBER,TRX_CURRENCY_CODE,AMOUNT_APPLIED_TO,AMOUNT_APPLIED_FROM,ACCTD_EARNED_DISCOUNT_TAKEN,ACCTD_UNEARNED_DISCOUNT_TAKEN,ACCTD_AMOUNT_APPLIED_TO,FUNCTIONAL_CURRENCY_CODEFROM AR_RECEIPTS_REP_ITF  --object_type: TableWHERE REQUEST_ID = v_request_idORDER BY DEBIT_BALANCING,RECEIPT_CURRENCY_CODE,APPLY_DATE;
BEGINfnd_file.put_line(fnd_file.log,'Start request:'||'ARRXARRG  '||CURRENT_TIMESTAMP);--submit request: RXARARRGv_request_id := FND_request.SUBMIT_request( 'AR','RXARARRG','', '', false, '&7','&8','','&10','', '',           '&13','&14','','','','','','','','','','','','','','','',CHR(0));Commit;fnd_file.put_line(fnd_file.log,'v_request_id:'||v_request_id);--等待请求fnd_file.put_line(fnd_file.log,'Wait request ARRXARRG,begin:'||CURRENT_TIMESTAMP);l_request_status :=  fnd_concurrent.wait_for_request(v_request_id,5, 120, l_phase, l_status, l_dev_phase, l_dev_status, l_message);fnd_file.put_line(fnd_file.log,'Wait request ARRXARRG,end: '||CURRENT_TIMESTAMP);IF l_request_status THEN IF l_dev_status = 'NORMAL' THEN fnd_file.put_line(fnd_file.log,'Request:'||v_request_id || ' run successfully.'); ELSE fnd_file.put_line(fnd_file.log,'Request '||v_request_id||' did not complete normally ,status :' || l_dev_status); RETURN; END IF; ELSE fnd_file.put_line(fnd_file.log,'Request '||v_request_id||'not finished ,can not see its report!');RETURN; END IF;--generate XML datafnd_file.put_line(fnd_file.output,'<?xml version="1.0" encoding="UTF-8"?>');fnd_file.put_line(fnd_file.output,'<G_XML>');FOR temp in user_cursor LOOPfnd_file.put_line(fnd_file.output,'<G_LINE>');fnd_file.put_line(fnd_file.output,'<DEBIT_BALANCING>' || temp.DEBIT_BALANCING || '</DEBIT_BALANCING>');fnd_file.put_line(fnd_file.output,'<RECEIPT_CURRENCY_CODE>' || temp.RECEIPT_CURRENCY_CODE || '</RECEIPT_CURRENCY_CODE>');fnd_file.put_line(fnd_file.output,'<APPLY_DATE>' || temp.APPLY_DATE || '</APPLY_DATE>');fnd_file.put_line(fnd_file.output,'<CUSTOMER_NUMBER>' || temp.CUSTOMER_NUMBER || '</CUSTOMER_NUMBER>');   -- "<" and "&" is illegal in xml, need to put the data in CDATA   fnd_file.put_line(fnd_file.output,'<CUSTOMER_NAME> <![CDATA[' || temp.CUSTOMER_NAME || ']]> </CUSTOMER_NAME>');fnd_file.put_line(fnd_file.output,'<BATCH_NAME>' || temp.BATCH_NAME || '</BATCH_NAME>');fnd_file.put_line(fnd_file.output,'<TRX_NUMBER>' || temp.TRX_NUMBER || '</TRX_NUMBER>');   fnd_file.put_line(fnd_file.output,'<RELATED_CUSTOMER>' || temp.RELATED_CUSTOMER || '</RELATED_CUSTOMER>');fnd_file.put_line(fnd_file.output,'<RECEIPT_NUMBER>' || temp.RECEIPT_NUMBER || '</RECEIPT_NUMBER>');fnd_file.put_line(fnd_file.output,'<TRX_CURRENCY_CODE>' || temp.TRX_CURRENCY_CODE || '</TRX_CURRENCY_CODE>');   fnd_file.put_line(fnd_file.output,'<AMOUNT_APPLIED_TO>' || temp.AMOUNT_APPLIED_TO || '</AMOUNT_APPLIED_TO>');    fnd_file.put_line(fnd_file.output,'<AMOUNT_APPLIED_FROM>' || temp.AMOUNT_APPLIED_FROM || '</AMOUNT_APPLIED_FROM>');   fnd_file.put_line(fnd_file.output,'<ACCTD_EARNED_DISCOUNT_TAKEN>' || temp.ACCTD_EARNED_DISCOUNT_TAKEN || '</ACCTD_EARNED_DISCOUNT_TAKEN>'); fnd_file.put_line(fnd_file.output,'<ACCTD_UNEARNED_DISCOUNT_TAKEN>' || temp.ACCTD_UNEARNED_DISCOUNT_TAKEN || '</ACCTD_UNEARNED_DISCOUNT_TAKEN>');       fnd_file.put_line(fnd_file.output,'<ACCTD_AMOUNT_APPLIED_TO>' || temp.ACCTD_AMOUNT_APPLIED_TO || '</ACCTD_AMOUNT_APPLIED_TO>'); fnd_file.put_line(fnd_file.output,'<FUNCTIONAL_CURRENCY_CODE>' || temp.FUNCTIONAL_CURRENCY_CODE || '</FUNCTIONAL_CURRENCY_CODE>');  fnd_file.put_line(fnd_file.output,'</G_LINE>');END LOOP;fnd_file.put_line(fnd_file.output,'</G_XML>');END;
/

将SQL文件上传到FTP服务器上

定义执行档

复制text格式输出的请求,建立一个XML输出的新的请求,执行档改为SQL文件。

运行新请求:HUH Applied Receipts Register,点击输出发现能输出部分XML数据,但还是有问题。

是因为XML不支持解析带有“&”字符的数据,加上“<![CDATA[ 内容 ]]>”可解决问题

Step6: 根据XML文件编写rtf模块并上传(略)

EBS 报表开发:标准报表Text输出改为XML输出相关推荐

  1. SAP MM 进销存报表与标准报表MB5B

    SAP MM 进销存报表与标准报表MB5B 提到进销存报表,SAP提供了一个标准报表MB5B.这个报表能显示指定的日期范围内,期初库存(数量与金额),期末库存(数量与金额),总入库数(数量与金额),总 ...

  2. java报表开发之报表总述

    1.什么是报表开发? 报表开发就是根据指定的规则,把业务数据按照一定的形式展现给用户的技术. 2.报表开发发展历史 [手工绘制(效率低.容易出错)] ---->[Excle工具软件(降低了报表开 ...

  3. 动态报表-开发一个报表

    一个足以取代标准QUERY的动态报表 整合了报表的常用功能: 基于表/视图或表连接建立查询(可以对表/视图进行授权管理,以控制用户的查询行为) 统计/明细两层输出(改变用户输出习惯,先快速查看特定纬度 ...

  4. oracle 水晶报表开发,水晶报表连接Oracle做数据报表笔记

    首先,新建一个水晶报表的文件,这个时候要给这个报表文件绑定一个oracle数据源, 选择右侧菜单的这个东西,选择"数据库专家",打开之后是这么一个界面: 选择建立新连接: 这个地方 ...

  5. 帆软报表开发之报表类型

    帆软里一般分为三种报表: 普通报表:传统的格子型报表 聚合报表:复杂的大型报表 决策报表:适用于 设计管理驾驶舱

  6. java报表开发(bi报表开发)

    java报表怎么做? 首先需要做好一张报表的模板,工具最好用iReport, 做好后会生成两种文件. 后缀  .jasper 和 .jrxml 的报表文件. 用Jreport生成报表的,具体的用法网上 ...

  7. plus rss.php,dedecms织梦rss输出改成全文输出

    这里涉及到php部分,大家不要着急,不要大家要学会php后再来,谈到织梦dedecms标签的话我们还可以考虑. 下面我们说下方法吧. 修改方法如下: 1.找rss的模板 templets/plus/r ...

  8. 数据准备 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

  9. 你的报表工具会做数据准备吗 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

最新文章

  1. 续篇:新型Lamda版Html.RenderAction
  2. 深度解读:GAN模型及其在2016年度的进展
  3. 简单的exp全备份脚本及部署过程(step by step)
  4. oracle-第N篇加强专题
  5. 闲置安卓手机改造linux服务器
  6. jQuery- 跟着李南江学编程
  7. 计算机单位上标,Origin绘图时如何标注带有上标(下标)的单位 -电脑资料
  8. 开启windows10系统组策略更新、开启Windows自动更新、关闭自动更新
  9. Arnold置乱变换的代码实现与置乱度分析
  10. 分享雷军二十年前写的代码,全部都是汇编,来看看雷军的编程水平吧。
  11. 使用ESP8266驱动TFT显示屏
  12. 山东理工ACM 1603 Least Common Multiple
  13. 【饭谈】面试官:速斩此子,切不可引狼入室
  14. Arai2自动添加tracker链接的方法
  15. labview调用外部仪器设备案例一(标签打印机)
  16. 李兴华内部JAVA培训视频 (难找啊)
  17. 关闭Windows Defender实时保护,暂时关闭和永久关闭方法
  18. 80C51单片机指令寻址方式
  19. C语言实例:输出八进制,十进制,十六进制,指定位数整数,带符号整数,科学计数法表示的整数
  20. 扫盲:SSL是如何工作的?【转】

热门文章

  1. 【Java应用】使用Java实现机器学习算法:聚类、分类、预测
  2. Facebook技术探究:Delos中的虚拟共识机制
  3. 关于aop,AOP的应用场景?什么事AOP?
  4. 关于2022年国内软件质量调查问卷的一些感悟与收获
  5. 《算法竞赛入门经典》(第二版)代码及详细解释(持续更新!)
  6. 如何抓取 bet365 即时足球比分数据
  7. 关于sudo:no tty present and no askpass program specified
  8. Principles of fMRI 1课程笔记7--fMRI数据的时间分辨率和空间分辨率
  9. springcloud + nacos多环境联调、本地联调(即灰度版本)
  10. PopupWindow