: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开发总结
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EBS Form开发总结(4)在线全文阅读。
相关推荐: