D_FILE.PUT&FND_FILE.PUT_LINE

FND_FILE可用于写 

FND_FILE.PUT

procedure FND_FILE.PUT

    (which               IN          NUMBER,

     buff                IN          VARCHAR2);

Use this procedure to write text to a file (without a new line character). Multiple calls to FND_FILE.PUT will 

produce concatenated text. Typically used with FND_FILE.NEW_LINE.

Arguments (input)

 

which

 

Log file or output file. Use either FND_FILE.LOG or FND_FILE.OUTPUT.

 

buff

 

Text to write.

FND_FILE.PUT_LINE

procedure FND_FILE.PUT_LINE

    (which               IN          NUMBER,

     buff                IN          VARCHAR2);

Use this procedure to write a line of text to a file (followed by a new line character). You will use this utility

most often.

Arguments (input)

 

which

 

Log file or output file. Use either FND_FILE.LOG or FND_FILE.OUTPUT.

 

buff

 

Text to write.

PROCEDURE pre_query IS BEGIN BEGIN -- 执行INSERT语句 insert into apps.cux_arcszj_t (A,B,C) values ('1','1','1'); -- 提交事务 COMMIT; EXCEPTION WHEN OTHERS THEN -- 错误处理 MESSAGE('Error occurred during pre-query insert: ' || SQLERRM); RAISE FORM_TRIGGER_FAILURE; END; app_folder.event('PRE-QUERY'); -- Voluation app_query.reset('INVOICE'); IF :parameter.g_query_find = 'TRUE' THEN IF :invoice_qf.check_lpn = 'Y' THEN app_find.query_range(:invoice_qf.order_number_from, :invoice_qf.order_number_to, 'INVOICE.SOURCE_HEADER_NUMBER'); app_find.query_range(:invoice_qf.item_number_from, :invoice_qf.item_number_to, 'INVOICE.ITEM_NUMBER'); -- 添加动态 LPN 查询条件 DECLARE user_id NUMBER := FND_GLOBAL.USER_ID; query_string VARCHAR2(2000); BEGIN IF user_id IS NULL THEN MESSAGE('USER_ID is NULL.'); RAISE FORM_TRIGGER_FAILURE; END IF; query_string := 'MASTER_CONTAINER_NAME IN (SELECT LPN_NUMBER FROM TEST_XSJS WHERE ID = ' || TO_CHAR(user_id) || ')'; app_query.append('INVOICE', query_string); EXCEPTION WHEN OTHERS THEN MESSAGE('Error: ' || SQLERRM); RAISE FORM_TRIGGER_FAILURE; END; -- 添加发货日期范围 IF :invoice_qf.shipment_date_from IS NOT NULL AND :invoice_qf.shipment_date_to IS NOT NULL THEN app_find.query_date_range(:invoice_qf.shipment_date_from, :invoice_qf.shipment_date_to, 'INVOICE.SHIPMENT_DATE'); ELSIF :invoice_qf.shipment_date_from IS NOT NULL THEN app_find.query_range(:invoice_qf.shipment_date_from, NULL, 'INVOICE.SHIPMENT_DATE'); ELSIF :invoice_qf.shipment_date_to IS NOT NULL THEN app_find.query_range(NULL, :invoice_qf.shipment_date_to, 'INVOICE.SHIPMENT_DATE'); END IF; IF :invoice_qf.shipment_number IS NOT NULL THEN app_query.append('INVOICE', 'delivery_detail_id in (select detail_id from cux_detail_id_temp) '); END IF; IF :invoice_qf.width IS NOT NULL THEN copy(:invoice_qf.width, 'INVOICE.WIDTH'); END IF; IF :invoice_qf.thick IS NOT NULL THEN copy(:invoice_qf.thick, 'INVOICE.THICK'); END IF; IF :invoice_qf.party_site_number IS NOT NULL THEN copy(:invoice_qf.party_site_number, 'INVOICE.PARTY_SITE_NUMBER'); END IF; ELSE app_find.query_range(:invoice_qf.order_number_from, :invoice_qf.order_number_to, 'INVOICE.SOURCE_HEADER_NUMBER'); app_find.query_range(:invoice_qf.item_number_from, :invoice_qf.item_number_to, 'INVOICE.ITEM_NUMBER'); app_find.query_range(:invoice_qf.lpn_from, :invoice_qf.lpn_to, 'INVOICE.MASTER_CONTAINER_NAME'); app_find.query_date_range(:invoice_qf.shipment_date_from, :invoice_qf.shipment_date_to, 'INVOICE.SHIPMENT_DATE'); IF :invoice_qf.shipment_number IS NOT NULL THEN app_query.append('INVOICE', 'delivery_detail_id in (select detail_id from cux_detail_id_temp)'); END IF; IF :invoice_qf.width IS NOT NULL THEN copy(:invoice_qf.width, 'INVOICE.WIDTH'); END IF; IF :invoice_qf.thick IS NOT NULL THEN copy(:invoice_qf.thick, 'INVOICE.THICK'); END IF; IF :invoice_qf.party_site_number IS NOT NULL THEN copy(:invoice_qf.party_site_number, 'INVOICE.PARTY_SITE_NUMBER'); END IF; :parameter.g_query_find := 'FALSE'; END IF; END IF; :invoice_qf.lpn_from:= TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'); copy(:headers.client_id, 'INVOICE.CUST_ACCOUNT_ID'); copy(:headers.org_id, 'INVOICE.ORG_ID'); END pre_query; 我这样写了之后insert into apps.cux_arcszj_t (A,B,C) values ('1','1','1');没有执行,点击查询之后结果正常显示,提示FRM-41009
最新发布
10-14
<think>我们正在讨论OracleEBS中的`fnd_key_flex.update_definition`过程。这是一个用于更新键弹性域定义的程序。在使用过程中可能会遇到各种问题,比如参数传递错误、并发冲突、弹性域状态不匹配等。根据Oracle官方文档,`fnd_key_flex.update_definition`属于弹性域API的一部分,通常用于在弹性域定义创建后更新其属性。该过程位于`FND_KEY_FLEX`包中。使用步骤通常包括:1.初始化弹性域定义(使用`fnd_key_flex.define`或通过查询获取现有定义)2.设置需要更新的字段(通过`fnd_key_flex`包中的set_*过程)3.调用`fnd_key_flex.update_definition`提交更改常见错误及排查:1.**无效参数错误**:确保所有参数都正确传递,特别是应用ID、弹性域代码、结构编号等。2.**弹性域未找到**:检查弹性域是否已经定义且处于活动状态。3.**并发更新冲突**:在更新之前,确保没有其他用户正在修改同一弹性域定义。4.**验证错误**:更新后,调用`fnd_key_flex.validate_definition`验证弹性域定义是否有效。示例代码框架(伪代码):```plsqlDECLAREl_flex_structfnd_key_flex.structure_type;BEGIN--获取现有弹性域结构(示例)fnd_key_flex.get_structure(application_id=>101,--应用ID,例如GL为101id_flex_code=>'GL#',--弹性域代码structure_id=>101,--结构编号structure=>l_flex_struct);--修改需要更新的属性,例如描述l_flex_struct.description:='NewDescription';--设置更新字段(通过set_*过程,但注意:直接修改结构体可能不够,需要调用相应的设置过程)--实际上,更新操作通常通过update_definition直接传递整个结构体,但需要先设置上下文--调用更新过程fnd_key_flex.update_definition(application_id=>101,id_flex_code=>'GL#',structure=>l_flex_struct);--提交COMMIT;EXCEPTIONWHENOTHERSTHEN--错误处理DBMS_OUTPUT.PUT_LINE('Error:'||SQLERRM);ROLLBACK;END;```注意:实际使用中,更新弹性域定义需要谨慎,因为可能影响大量数据。如果遇到错误,可以检查:-通过`fnd_key_flex.validate_definition`验证结构是否有效-查看`fnd_id_flex_structures`表确认结构是否存在-检查参数类型和顺序是否正确另外,更新弹性域定义可能需要特定的权限,并且可能触发一些验证规则,比如段数变化、值集变化等,这些变化可能导致更新失败。相关问题:1.如何创建新的键弹性域定义?2.如何删除键弹性域定义?3.键弹性域和描述性弹性域在API使用上有何区别?4.如何通过API更新键弹性域的段?根据以上思路,我们给出详细回答。</think>### Oracle EBS `fnd_key_flex.update_definition` 使用指南与错误排查 `fnd_key_flex.update_definition` 是 Oracle EBS 弹性域管理的关键 API,用于更新键弹性域(Key Flexfield)的配置定义。以下是详细使用方法及常见错误解决方案: --- #### 一、基本使用方法 **语法结构**: ```plsql FND_KEY_FLEX.UPDATE_DEFINITION( application_id IN NUMBER, id_flex_code IN VARCHAR2, structure IN OUT NOCOPY FND_KEY_FLEX.STRUCTURE_TYPE ); ``` **参数说明**: - `application_id`:应用ID(如 GL 为 101) - `id_flex_code`:弹性域代码(如会计科目为 "GL#") - `structure`:弹性域结构对象(需先通过 `fnd_key_flex.get_structure` 获取) **操作步骤**: 1. **获取现有结构**: ```plsql DECLARE l_struct FND_KEY_FLEX.STRUCTURE_TYPE; BEGIN FND_KEY_FLEX.GET_STRUCTURE( application_id => 101, id_flex_code => 'GL#', structure_id => 10101, -- 结构编号 structure => l_struct ); END; ``` 2. **修改结构属性**: ```plsql l_struct.description := '2024新科目结构'; -- 更新描述 l_struct.enabled_flag := 'Y'; -- 启用状态 ``` 3. **执行更新**: ```plsql FND_KEY_FLEX.UPDATE_DEFINITION( application_id => 101, id_flex_code => 'GL#', structure => l_struct ); COMM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值