之前在一个项目上,拿到了几个XDF类型的数据库对象文件,查阅一些资料才找到将这些文件转换为可用的数据库脚本,于是将此转换过程记录下来,供大家和自己以后参考查阅(出于成本的考虑,本站所有附件及程序均存放在百度云盘,望大家理解)。
所有由小潘发布的文章
Form客户化开发大致步骤
客户化一个Form程序,一般会经历如下开发过程(未包括具体代码书写及程序包调用):
1.建立数据库对象(表,视图,序列,同义词等)
2.打开template.fmb文件,更名为CUXGLIMPORT
3.删除Data Blocks下的两个块——BLOCKNAME、DETAILBLOCK,
它们是模版自带的示例主从块。
4.删除Canvases下的一个画布——BLOCKNAME
5.修改Windows下的BLOCKNAME这个Window,在Property Palette中
将Name改为“HEADERS”,将Title改 为“XXXX”
6.修改Forms级触发器PRE-FORM
7.修改Forms级触发器WHEN-NEW-FORM-INSTANCE
8.修改Program Unit下app_custom中的close_window过程
9.创建Block数据块
10.设置Block属性及其Subclass
11.新增CURRENT_RECODE_INDICATOR 子类信息
CURRENT_RECODE_INDICATOR
12.画布创建
13.程序单元
14.块级别触发器on_insert……
注意点:
1.画布和窗口的对应,LOV创建最后在指定的item上面。
2.ROW_ID 属性 row_id 18
3.记录间距为0
4.LOV建立时,需要注意返回项,否则在保存的时候会报错
5.一般情况下请在order by 中写上命令
6.form级别第一个导航块
7.block级别导航块
完成后,通过ftp工具上传至相应服务器目录,最后通过ssh工具编译即可完成。可参考此链接编译form命令:http://www.llku.com/?p=177
后台最终关闭PO单号程序代码
由于客户的PO单是外部系统导入到EBS PO模块,因此会涉及到关闭PO单的操作,可以通过接口关闭PO单。以下是核心代码:
declare
l_action varchar2(100) := 'FINALLY CLOSE';
v_po_header_id number := 1292;
l_return_status varchar2(100);
l_return_code varchar2(100);
l_exc_msg varchar2(100);
l_online_report_id varchar2(100);
p_reasons varchar2(100) := '小潘测试最终关闭PO单';
begin
–初始化
fnd_global.apps_initialize(user_id => 1110, –用户名
resp_id => 50737, –PO职责
resp_appl_id => 201); –PO产品
–调用系统自带功能释放保留款
PO_DOCUMENT_ACTION_PVT.do_manual_close(p_action => l_action,
p_document_id => v_po_header_id,
p_document_type => 'PO',
p_document_subtype => 'STANDARD',
p_line_id => '',
p_shipment_id => '',
p_reason => p_reasons,
p_action_date => to_date(to_char(sysdate,
'DD-MON-YYYY'),
'DD-MON-YYYY'),
p_calling_mode => 'PO',
p_origin_doc_id => NULL,
p_called_from_conc => FALSE,
p_use_gl_date => 'N',
x_return_status => l_return_status,
x_return_code => l_return_code,
x_exception_msg => l_exc_msg,
x_online_report_id => l_online_report_id);
DBMS_OUTPUT.put_line('成功与否标记:' || l_return_status);
DBMS_OUTPUT.put_line('返回代码:' || l_return_code);
DBMS_OUTPUT.put_line('错误消息:' || l_exc_msg);
end;
获取FSG报表明细行定义的SQL
客户要求取出某指定的FSG报表的明细行定义的数据,以下是相关的SQL命令:
SELECT *
FROM (SELECT RRA.NAME,
RRV.SEQUENCE,
RRV.DESCRIPTION,
RRV.NUMBER_CHARACTERS_INDENTED,
RRV.NUMBER_LINES_SKIPPED_BEFORE,
RRV.NUMBER_LINES_SKIPPED_AFTER,
RRV.AMOUNT_TYPE,
RRV.UNIT_OF_MEASURE_ID,
RRV.PARAMETER_NUM,
RRV.PERIOD_OFFSET,
RRV.FACTOR,
RRV.LEVEL_OF_DETAIL,
RRV.DISPLAY_FLAG,
RRV.DISPLAY_ZERO_AMOUNT_FLAG,
RRV.CHANGE_SIGN_FLAG,
RRV.CHANGE_VARIANCE_SIGN_FLAG,
RRV.CALCULATION_PRECEDENCE_FLAG,
RRC.SIGN,
RRC.LEDGER_ID,
RRC.SEGMENT1_LOW || '.' || RRC.SEGMENT2_LOW || '.' ||
RRC.SEGMENT3_LOW || '.' || RRC.SEGMENT4_LOW || '.' ||
RRC.SEGMENT5_LOW || '.' || RRC.SEGMENT6_LOW || '.' ||
RRC.SEGMENT7_LOW || '.' || RRC.SEGMENT8_LOW SEGMENT_LOW,
RRC.SEGMENT1_HIGH || '.' || RRC.SEGMENT2_HIGH || '.' ||
RRC.SEGMENT3_HIGH || '.' || RRC.SEGMENT4_HIGH || '.' ||
RRC.SEGMENT5_HIGH || '.' || RRC.SEGMENT6_HIGH || '.' ||
RRC.SEGMENT7_HIGH || '.' || RRC.SEGMENT8_HIGH SEGMENT_HIGH,
RRC.SEGMENT1_TYPE || '.' || RRC.SEGMENT2_TYPE || '.' ||
RRC.SEGMENT3_TYPE || '.' || RRC.SEGMENT4_TYPE || '.' ||
RRC.SEGMENT5_TYPE || '.' || RRC.SEGMENT6_TYPE || '.' ||
RRC.SEGMENT7_TYPE || '.' || RRC.SEGMENT8_TYPE SEGMENT_HIGH_TYPE,
RRC.RANGE_MODE,
RRC.DR_CR_NET_CODE,
NULL CALCULATION_SEQ,
NULL OPERATOR,
NULL CONSTANT,
NULL AXIS_SEQ_LOW,
NULL AXIS_SEQ_HIGH,
NULL AXIS_NAME_LOW
FROM RG_REPORT_AXIS_SETS_V RRA,
RG_REPORT_AXES_V RRV,
RG_REPORT_AXIS_CONTENTS RRC
WHERE 1 = 1
AND RRC.AXIS_SET_ID = RRA.AXIS_SET_ID
AND RRC.AXIS_SEQ = RRV.SEQUENCE
AND RRA.AXIS_SET_ID = RRV.AXIS_SET_ID
AND RRA.NAME IN ('XXXX_新准则CIRC统计指标')
UNION ALL
SELECT RRA.NAME,
RRV.SEQUENCE,
RRV.DESCRIPTION,
RRV.NUMBER_CHARACTERS_INDENTED,
RRV.NUMBER_LINES_SKIPPED_BEFORE,
RRV.NUMBER_LINES_SKIPPED_AFTER,
RRV.AMOUNT_TYPE,
RRV.UNIT_OF_MEASURE_ID,
RRV.PARAMETER_NUM,
RRV.PERIOD_OFFSET,
RRV.FACTOR,
RRV.LEVEL_OF_DETAIL,
RRV.DISPLAY_FLAG,
RRV.DISPLAY_ZERO_AMOUNT_FLAG,
RRV.CHANGE_SIGN_FLAG,
RRV.CHANGE_VARIANCE_SIGN_FLAG,
RRV.CALCULATION_PRECEDENCE_FLAG,
NULL SIGN,
NULL LEDGER_ID,
NULL SEGMENT_LOW,
NULL SEGMENT_HIGH,
NULL SEGMENT_HIGH_TYPE,
NULL RANGE_MODE,
NULL DR_CR_NET_CODE,
RRC1.CALCULATION_SEQ,
RRC1.OPERATOR,
RRC1.CONSTANT,
RRC1.AXIS_SEQ_LOW,
RRC1.AXIS_SEQ_HIGH,
RRC1.AXIS_NAME_LOW
FROM RG_REPORT_AXIS_SETS_V RRA,
RG_REPORT_AXES_V RRV,
RG_REPORT_CALCULATIONS RRC1
WHERE 1 = 1
AND RRC1.AXIS_SET_ID = RRA.AXIS_SET_ID
AND RRC1.AXIS_SEQ = RRV.SEQUENCE
AND RRA.AXIS_SET_ID = RRV.AXIS_SET_ID
AND RRA.NAME IN ('XXXX_新准则CIRC统计指标')
UNION ALL
SELECT RRA.NAME,
RRV.SEQUENCE,
RRV.DESCRIPTION,
RRV.NUMBER_CHARACTERS_INDENTED,
RRV.NUMBER_LINES_SKIPPED_BEFORE,
RRV.NUMBER_LINES_SKIPPED_AFTER,
RRV.AMOUNT_TYPE,
RRV.UNIT_OF_MEASURE_ID,
RRV.PARAMETER_NUM,
RRV.PERIOD_OFFSET,
RRV.FACTOR,
RRV.LEVEL_OF_DETAIL,
RRV.DISPLAY_FLAG,
RRV.DISPLAY_ZERO_AMOUNT_FLAG,
RRV.CHANGE_SIGN_FLAG,
RRV.CHANGE_VARIANCE_SIGN_FLAG,
RRV.CALCULATION_PRECEDENCE_FLAG,
NULL SIGN,
NULL LEDGER_ID,
NULL SEGMENT_LOW,
NULL SEGMENT_HIGH,
NULL SEGMENT_HIGH_TYPE,
NULL RANGE_MODE,
NULL DR_CR_NET_CODE,
NULL CALCULATION_SEQ,
NULL OPERATOR,
NULL CONSTANT,
NULL AXIS_SEQ_LOW,
NULL AXIS_SEQ_HIGH,
NULL AXIS_NAME_LOW
FROM RG_REPORT_AXIS_SETS_V RRA, RG_REPORT_AXES_V RRV
WHERE 1 = 1
AND RRA.AXIS_SET_ID = RRV.AXIS_SET_ID
AND RRA.NAME IN ('XXXX_新准则CIRC统计指标')
AND NOT EXISTS (SELECT 1
FROM RG_REPORT_AXIS_CONTENTS T
WHERE T.AXIS_SET_ID = RRA.AXIS_SET_ID
AND T.AXIS_SEQ = RRV.SEQUENCE)
AND NOT EXISTS (SELECT 1
FROM RG_REPORT_CALCULATIONS T2
WHERE T2.AXIS_SET_ID = RRA.AXIS_SET_ID
AND T2.AXIS_SEQ = RRV.SEQUENCE)
)
WHERE 1 = 1
ORDER BY NAME, SEQUENCE;
Oracle财务系统服务器停复机后易忽略点
在某些情况下,各类系统所在的服务器会被执行停复机操作,这是不可避免的。对于一般的系统,重启服务器后,可能直接重启相应的数据库和应用即可正常使用,但是对Oracle EBS财务系统,除了正常的启动数据库和应用的服务以外(如果是RAC还需单独启动RAC服务),还需要进行另外一项额外的工作,启动VNC服务,以便能在系统运行输出报表的数据调用图形化界面错误,具体的错误画面如下图所示,错误代码为:REP-3000: Internal error starting Oracle Toolkit.
此时只需按照下面的操作命令执行即可:
以root用户登录,运行命令:
命令1:vncserver
用VNC-Viewer登录,密码是第一次运行vncserver提示所输入的密码,如果忘记,可直接网上搜索更改VNC密码的文档,很简单的重置密码操作,
运行命令:
命令2:xhost +
环境检查,运行命令,弹出时钟窗口为正常(apptest为应用用户,10.0.1.1为服务器IP):
以应用用户apptest登录,运行命令:
命令3: su – apptest
命令4: export DISPLAY=10.0.1.1:1.0
命令5: xclock
出现如下图所示的现象即可:
如果在操作中发现未知错误,通过以下命令 ps -ef|grep -i vnc 找出vnc的服务,全部kill -9 id,重新按照步骤操作即可。