一般来说,键弹性域都是直接在FORM界面上进行创建,创建完之后会自动进行编译。
现在项目上需要做MCAT的键弹性域API导入并编译。
FND_ID_FLEX_STRUCTURES_PKG.INSERT_ROW
FND_ID_FLEX_SEGMENTS_PKG.INSERT_ROW
在调用上面2个APi插入数据结构之后,提交编译弹性域请求:弹性域视图生成器
发现新增的弹性域结构并没有生成在MTL_CATEGORIES_B_KFV视图当中!
查看FORM代码,发现在反选"冻结弹性域定义"的时候会删除fnd_compiled_id_flexs表的数据。
trace追踪,在选择"冻结弹性域定义"并在当前记录保存的时候插入fnd_compiled_id_flexs表数据。
fnd_compiled_id_flexs在保存的地方有这样的代码:
PROCEDURE compile_key_flexfield IS
BEGIN
--
-- Compile the flexfield if the freeze_flex_definition
-- flag is set. If compilation is sucessful generate
-- flexfield views.
--
IF (:struct.freeze_flex_definition_flag = 'Y') THEN
fnd_message.set_name('FND', 'FLEX-COMPILING FLEX DEF');
fnd_message.show;
user_exit('FND COMPID ' ||