转:客制FORM调用会计科目弹性域/根据科目取得CODE_COMBINATION_ID
1.首先在创建数据表时,添一个字段用来保存会计科目的ID。如:CODE_COMBINATION_ID
2.在FORM相应的数据块增加两个ITEM,用来显示科目NUMBER与DESCRITION。
例:GL_CODE_NUMBER、GL_CODE_DESC
注 : ENABLE_LIST_LAMP是TEMPLATE模板自带的,无须手工去定义。 将GL_CODE_NUMBER项的LOV设成“ENABLE_LIST_LAMP”,数据库项设为“否”。 将 GL_CODE_NUMBER“从列表中验证”属性设成否。
3.在Form Level 的WHEN-NEW-FORM-INSTANCE Trigger初始化弹性域
FND_KEY_FLEX.Define
(
BLOCK => 'CUX_17_CST_MAPP_RULE_ALL',
FIELD => 'ACCOUNTING',
ID => 'CODE_COMBINATION_ID',
description=>'ACCOUNT_DES',
APPL_SHORT_NAME => 'SQLGL',
CODE => 'GL#',
NUM => '50470',--CHART_OF_ACCOUNTS_ID',
REQUIRED => 'Y',
VALIDATE => 'FULL',
USEDBFLDS => 'N',
DINSERT => 'Y',
allownulls => 'N',
query_security => 'Y',
updateable => 'ALL',
insertable => 'ALL',
vrule =>'\\nSUMMARY_FLAG\\nI\\n' ||
'APPL=SQLGL;NAME=GL_JE_SUMMARY_ACCOUNT\\nN\\0' ||
'GL_GLOBAL\\nDETAIL_POSTING_ALLOWED' ||
'\\nI\\n' ||
'APPL=SQLGL;NAME=GL_JE_POSTING_NOT_ALLOWED\\nY',
where_clause => 'summary_flag <>''Y'''
);4.可以在GL_CODE_NUMBER项的WHEN-VALIDATE-ITEM触发器中,对所选择的科目进行核查。
IF : BlockName.CODE_COMBINATION_ID = -1 then
fnd_message.debug('所选科目组合无效!');
raise form_trigger_failure;
end if;
2.根据会计科目取得CODE_COMBINATION_ID
http://blog.csdn.net/pan_tian/article/details/7535842
网上说当在第一步建表时,可以建一个字段作为外键,基于表GL_CODE_COMBINATIONS(CODE_COMBINATION_id),
这时当保存数据时,CODE_COMBINATION_ID会自动保存过来,不过我没试验成功。
我使用以下方法取得:
:CUX_17_CST_MAPP_RULE_ALL.CODE_COMBINATION_ID:=
fnd_flex_ext.get_ccid(application_short_name => 'SQLGL',
key_flex_code => 'GL#',
structure_number => 50470,
validation_date => to_char(sysdate, 'YYYY/MM/DD HH24:MI:SS'),
concatenated_segments =>:CUX_17_CST_MAPP_RULE_ALL.ACCOUNTING);其中concatenated_segments 参数格式为:'YBHN0.139999.6001100301.10000001.1013579.110101.0.0.0.0'
注意:如果表GL_CODE_COMBINATIONS中不存在所选组合,即不存在这个ID.就会新建一条纪录插入到表GL_CODE_COMBINATIONS中。