EBS Form开发总结(4)

2018-11-22 18:21

:header_blockname.header_table_primary_key) AND ((rec.header_table_col1 =

:header_blockname.header_table_col1) OR ((rec.header_table_col1 IS NULL) AND

(:header_blockname.header_table_col1 IS NULL))) AND ((rec.header_table_col2 =

:header_blockname.header_table_col2) OR ((rec.header_table_col2 IS NULL) AND

(:header_blockname.header_table_col2 IS NULL))) AND ((rec.header_table_col3 =

:header_blockname.header_table_col3) OR ((rec.header_table_col3 IS NULL) AND

(:header_blockname.header_table_col3 IS NULL))) AND ((rec.attribute_category =

:header_blockname.attribute_category) OR ((rec.attribute_category IS NULL) AND

(:header_blockname.attribute_category IS NULL))) AND ((rec.attribute1 = :header_blockname.attribute1) OR ((rec.attribute1 IS NULL) AND

(:header_blockname.attribute1 IS NULL))) AND

((rec.attribute2 = :header_blockname.attribute2) OR ((rec.attribute2 IS NULL) AND

(:header_blockname.attribute2 IS NULL))) AND

((rec.attribute3 = :header_blockname.attribute3) OR ((rec.attribute3 IS NULL) AND

(:header_blockname.attribute3 IS NULL))) AND

((rec.attribute4 = :header_blockname.attribute4) OR ((rec.attribute4 IS NULL) AND

(:header_blockname.attribute4 IS NULL))) AND

((rec.attribute5 = :header_blockname.attribute5) OR ((rec.attribute5 IS NULL) AND

(:header_blockname.attribute5 IS NULL))) AND

((rec.attribute6 = :header_blockname.attribute6) OR ((rec.attribute6 IS NULL) AND

(:header_blockname.attribute6 IS NULL))) AND

((rec.attribute7 = :header_blockname.attribute7) OR ((rec.attribute7 IS NULL) AND

(:header_blockname.attribute7 IS NULL))) AND

((rec.attribute8 = :header_blockname.attribute8) OR ((rec.attribute8 IS NULL) AND

(:header_blockname.attribute8 IS NULL))) AND

((rec.attribute9 = :header_blockname.attribute9) OR ((rec.attribute9 IS NULL) AND

(:header_blockname.attribute9 IS NULL))) AND

((rec.attribute10 = :header_blockname.attribute10) OR ((rec.attribute10 IS NULL) AND

(:header_blockname.attribute10 IS NULL))) AND

((rec.attribute11 = :header_blockname.attribute11) OR ((rec.attribute11 IS NULL) AND

(:header_blockname.attribute11 IS NULL))) AND

((rec.attribute12 = :header_blockname.attribute12) OR ((rec.attribute12 IS NULL) AND

(:header_blockname.attribute12 IS NULL))) AND

((rec.attribute13 = :header_blockname.attribute13) OR ((rec.attribute13 IS NULL) AND

(:header_blockname.attribute13 IS NULL))) AND

((rec.attribute14 = :header_blockname.attribute14) OR ((rec.attribute14 IS NULL) AND

(:header_blockname.attribute14 IS NULL))) AND

((rec.attribute15 = :header_blockname.attribute15) OR ((rec.attribute15 IS NULL) AND

(:header_blockname.attribute15 IS NULL)))) THEN RETURN; ELSE

fnd_message.set_name('FND', 'FORM_RECORD_CHANGED'); fnd_message.error;

RAISE form_trigger_failure; END IF;

EXCEPTION

WHEN app_exception.record_lock_exception THEN

EBS Form开发总结

app_exception.record_lock_error(i); END; END LOOP;

END lock_row;

/*===================================== ** PROCEDURE: update_row()

**=====================================*/ PROCEDURE update_row IS BEGIN

fnd_standard.set_who;

UPDATE header_table_all

SET creation_date = :header_blockname.creation_date, created_by = :header_blockname.created_by,

last_updated_by = :header_blockname.last_updated_by, last_update_date = :header_blockname.last_update_date, last_update_login = :header_blockname.last_update_login,

header_table_primary_key = :header_blockname. header_table_primary_key, header_table_col1 = :header_blockname.header_table_col1, header_table_col2 = :header_blockname.header_table_col2, header_table_col3 = :header_blockname.header_table_col3,

attribute_category = :header_blockname.attribute_category, attribute1 = :header_blockname.attribute1, attribute2 = :header_blockname.attribute2, attribute3 = :header_blockname.attribute3, attribute4 = :header_blockname.attribute4, attribute5 = :header_blockname.attribute5, attribute6 = :header_blockname.attribute6, attribute7 = :header_blockname.attribute7, attribute8 = :header_blockname.attribute8, attribute9 = :header_blockname.attribute9, attribute10 = :header_blockname.attribute10, attribute11 = :header_blockname.attribute11, attribute12 = :header_blockname.attribute12, attribute13 = :header_blockname.attribute13, attribute14 = :header_blockname.attribute14, attribute15 = :header_blockname.attribute15 WHERE ROWID = :header_blockname.row_id;

IF (SQL%NOTFOUND) THEN RAISE no_data_found; END IF;

END update_row;

/*===================================== ** PROCEDURE: delete_row()

**=====================================*/ PROCEDURE delete_row IS BEGIN

DELETE FROM header_table_all

WHERE header_table_primary_key = :header_blockname.header_table_primary_key;

IF (SQL%NOTFOUND) THEN RAISE no_data_found; END IF;

END delete_row;

END header_blockname_private;

代码根据实际情况可做局部修改。

EBS Form开发总结

最后在Header块和Line块上增加以下4个块级触发器:

名称 ON-INSERT ON-LOCK ON-UPDATE ON-DELETE

内容 XXX_private.insert_row; XXX_private.lock_row; XXX_private.update_row; XXX_private.delete_row;

2.10 手电筒查询

如果不用手电筒查询可跳过此步。 1.块查询

从APPSTAND.fmb中复制QUERY_FIND对象组至在开发中的form,复制时选择复制,允许修改。

为QUERY_FIND窗口设置窗口名称和最小化窗口名称,并把子类设置为WINDOW。 QUERY_FIND数据块的导航,前一个数据块选择自身,后一个数据块选择目标块(Header块)。

在QUERY_FIND数据块上加上搜索条件所需的ITEM,置于QUERY_FIND画布。 将QUERY_FIND画布的子类设为CANVAS,并对布局做适当调整。 添加以下触发器代码:

名 项名 ERY_FIND ERY_FIND ERY_FIND ERY_FIND 触发器 KEY-块级 NXTBLK WHEN-FIND BUTTON-PRESSED WHEN-NEW BUTTON-PRESSED WHEN-CLEAR BUTTON-PRESSED PRE-QUERY QUERY-FIND 注意点:

代码 :parameter.G_query_find := 'TRUE'; app_find.find('HEADER_BLOCKNAME'); :parameter.G_query_find := 'FALSE'; app_find.new('HEADER_BLOCKNAME '); app_find.clear; if :Parameter.g_query_find = 'TRUE' then /*将QUERY_FIND上的限制条件应用到目标块上*/ :Parameter.g_query_find := 'FALSE'; end if; app_find.query_find('MAIN','QUERY_FIND','QUERY_FIND'); ADER_BLOCKNAME 块级 ADER_BLOCKNAME 块级 1. 参数g_query_find对大小写敏感,只有全大写的TRUE和FALSE能起作用。

EBS Form开发总结

2. 如果希望在Line上点击手电筒也弹出查询界面,那在Line块上增加一个与Header块相同的QUERY-FIND触发器。

3. QUERY_FIND上的非范围式限制条件可直接对目标项赋值,而范围式限制条件需要使用app_find的相关方法,从附加的库APPCODE中可以找到APP_FIND的程序包规格,从定义上很容易明白方法的作用和用法。

4.范围查询时需要将目标项的查询长度加大,一般加到300。

2.LOV查询

创建用以保存条件值的同名参数,如header_id、order_number和booked_date。 构建一个LOV,起名为QUERY_FIND,把条件值返回给前面创建的参数。 添加以下目标块上的块级触发器代码:

名称

PRE-QUERY

QUERY-FIND

注意点:

代码

if :Parameter.g_query_find = 'TRUE' then /*将同名参数的值应用到目标块上*/ :Parameter.g_query_find := 'FALSE'; end if;

app_find.query_find('QUERY_FIND');

1. 参数g_query_find对大小写敏感,只有全大写的TRUE和FALSE能起作用。 2. 如果希望在Line上点击手电筒也弹出查询界面,那在Line块上增加一个与Header块相同的QUERY-FIND触发器。

2.11 上传编译

上传fmb文件至服务器。 编译命令如下:

cd $AU_TOP/forms/ZHS

frmcmp_batch module=$CUX_TOP/forms/fmb/CUXXXXXX.fmb userid=apps/apps output_file=$CUX_TOP/forms/ZHS/ CUXXXXXX.fmx

注意点:必须在$AU_TOP/forms/ZHS或$AU_TOP/forms/US下进行编译。

EBS Form开发总结

3.常用功能

3.1 TAB页Folder

数据块的显示项总宽度过大,采用非TAB页Folder会迫使用户频繁使用下方的横向滚动条;数据块的显示项存在较为明显的分类。以上两种情况,可以考虑将Folder开发成TAB页的形式。

TAB页Folder与非TAB页Folder的开发过程有相同或相似的部分,以下内容以基本步骤为基础,重点描述两类Folder开发中的不同。 1.画布

TAB页folder的项不直接放在MAIN画布上,需要增加一个TAB画布,参考属性如下:

属性名称 名称 画布类型 子类信息

视图端口的X轴位置 视图端口的Y轴位置 视图端口宽度 视图端口高度 窗口 属性值 MAIN_TAB 标签 TAB_CANVAS 0.25

按实际情况设置(一般保持与Header区域相差0.25) 窗口宽度-0.5

1+0.25*Line块显示的记录数 MAIN

TAB画布的标签页的子类设置为TAB_PAGE,根据实际需要设置多个标签页,每个标签页的名称保持与对应的folder堆叠画布名称一致。

TAB页folder的固定项放置在一个专门的FIX画布上,参考属性如下:

属性名称 名称 画布类型 子类信息

视图端口的X轴位置 视图端口的Y轴位置 视图端口宽度 视图端口高度 宽度 高度 窗口

属性值 MAIN_TAB_FIX 堆叠 CANVAS_STACKED_FIXED_FIELD 0.25

MAIN_TAB视图端口的Y轴位置+0.25 窗口宽度-0.5

0.5+0.25*Line块显示的记录数 窗口宽度-0.5

0.5+0.25*Line块显示的记录数 MAIN

TAB页folder的非固定项也是放置于子类为CANVAS_STACKED的堆叠画布上,可有多个,需要注意的是名称应当保持与对应TAB画布的标签页名称一致。参考属性如下:

EBS Form开发总结


EBS Form开发总结(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学社团活动英语作文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: