Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)
2014-06-08 19:20
856 查看
2014-06-08 Created By BaoXinjian
一、总结
1. 上传资料
(1).通过调用function<FND_FNDFLUPL>,打开上传文件页面;
(2).从表fnd_lob_access和fnd_lobs中取出文件名放在form画面上;
2. 对dbms_lob中的二进制文件进行处理
(1).通过dbms_lob.converttoclob将二进制文件转换成字符文件;
(2).通过dbms_lob.instr和dbms_lob.substr在字符文件获取字符串记录;
3. 对获取资料放入到临时表,并显示在画面上
(1).通过instr和substr获字符串记录中的字段;
(2).并将字段赋值到集合或表中;
二、步骤
1. 上传资料
2. 对dbms_lob中的二进制文件进行处理
3. 对获取资料放入到临时表,并显示在画面上
Thanks and Regards
一、总结
1. 上传资料
(1).通过调用function<FND_FNDFLUPL>,打开上传文件页面;
(2).从表fnd_lob_access和fnd_lobs中取出文件名放在form画面上;
2. 对dbms_lob中的二进制文件进行处理
(1).通过dbms_lob.converttoclob将二进制文件转换成字符文件;
(2).通过dbms_lob.instr和dbms_lob.substr在字符文件获取字符串记录;
3. 对获取资料放入到临时表,并显示在画面上
(1).通过instr和substr获字符串记录中的字段;
(2).并将字段赋值到集合或表中;
二、步骤
1. 上传资料
DECLARE access_id NUMBER; l_server_url VARCHAR2(100); l_parameters VARCHAR2(100); button_choice INTEGER; l_file_id VARCHAR2(100); l_gfm_id INTEGER; BEGIN access_id := fnd_gfm.authorize(NULL); fnd_profile.get('APPS_WEB_AGENT', l_server_url); l_parameters := 'access_id=' || access_id || ' l_server_url=' || l_server_url; fnd_function.EXECUTE(function_name => 'FND_FNDFLUPL', open_flag => 'Y', session_flag => 'Y', other_params => l_parameters); -- Display a modal message for user to indicate file upload -- is completed. fnd_message.set_name('FND', 'ATCHMT-FILE-UPLOAD-COMPLETE'); button_choice := fnd_message.question(button1 => 'YES', button2 => NULL, button3 => 'NO', default_btn => 1, cancel_btn => 3, icon => 'question'); IF (button_choice = 3) THEN NULL; ELSIF (button_choice = 1) THEN l_file_id := ''; l_gfm_id := fnd_gfm.get_file_id(access_id); :main.gfm_id := fnd_gfm.get_file_id(access_id); IF l_gfm_id IS NOT NULL THEN SELECT DECODE(INSTR(file_name, '/'),0,file_name,SUBSTR(file_name, INSTR(file_name, '/') + 1)) INTO l_file_id FROM fnd_lobs WHERE file_id = l_gfm_id; IF l_file_id IS NOT NULL THEN :main.filename := l_file_id; SELECT cux_ce_stmt_s.NEXTVAL INTO :main.working_id FROM DUAL; END IF; END IF; END IF; END IF;
2. 对dbms_lob中的二进制文件进行处理
DECLARE c_data CLOB; l_data BLOB; l_dest_offset INTEGER := 1; l_scr_offset INTEGER := 1; l_lang_context INTEGER := DBMS_LOB.default_lang_ctx; l_warn INTEGER; n_offset INTEGER; n_clob_size INTEGER; n_pos INTEGER; v_buf VARCHAR2(4000); BEGIN DBMS_LOB.createtemporary(c_data, FALSE, DBMS_LOB.SESSION); SELECT file_data INTO l_data FROM fnd_lobs WHERE file_id = 1501905; DBMS_LOB.converttoclob(dest_lob => c_data, src_blob => l_data, amount => DBMS_LOB.lobmaxsize, dest_offset => l_dest_offset, src_offset => l_scr_offset, blob_csid => NLS_CHARSET_ID('UTF8'), lang_context => l_lang_context, warning => l_warn); n_offset := 1; LOOP n_pos := DBMS_LOB.INSTR(lob_loc => c_data, pattern => CHR(10), offset => n_offset, nth => 1); IF NVL(n_pos, 0) = 0 THEN n_pos := n_clob_size + 1; END IF; v_buf := DBMS_LOB.SUBSTR(lob_loc => c_data, amount => n_pos - n_offset, offset => n_offset); n_offset := n_pos + 1; EXIT WHEN n_pos > n_clob_size; END LOOP; IF dbms_lob.istemporary(l_data) > 0 THEN dbms_lob.freetemporary(l_data); END IF; IF dbms_lob.istemporary(c_data) > 0 THEN dbms_lob.freetemporary(c_data); END IF; END IF;
3. 对获取资料放入到临时表,并显示在画面上
DECLARE v_buf VARCHAR2(1000); v_field VARCHAR2(1000); n_delimiter_pos INTEGER; BEGIN v_buf := 'Return Authorization Reference,Adjustment Type,Vendor Number,Site Code- Pay To,Site Code- Ship To,Part Number,Quantity,Subinventory'; LOOP v_field := NULL; n_delimiter_pos := INSTR(v_buf, ','); IF n_delimiter_pos > 0 THEN v_field := LTRIM(RTRIM(SUBSTR(v_buf, 1, n_delimiter_pos - 1))); v_buf := SUBSTR(v_buf, n_delimiter_pos + 1); ELSIF LTRIM(RTRIM(v_buf)) IS NOT NULL THEN v_field := LTRIM(RTRIM(v_buf)); v_buf := NULL; END IF; IF (v_buf IS NULL) THEN EXIT; END IF; END LOOP; END;
Thanks and Regards
相关文章推荐
- 怎样隐藏uploadify上传控件的按钮,然后通过其它控件的事项来触发uploadify控件的文件浏览窗口并现实文件上传功能
- 怎样隐藏uploadify上传控件的按钮,然后通过其它控件的事项来触发uploadify控件的文件浏览窗口并现实文件上传功能
- 一个简单的文件上传功能控件(原创)
- 用xmlhttp将html的数据打包成multipart/form-data格式,实现异步上传文件功能
- 通过HtmlInputFile控件上传文件的类
- 支持预览功能的图片上传控件
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- 文件上传的实现 (马马 2001年09月28日 17:14) PHP同样支持上传文件的功能,但并不是所有支持PHP的网站都支持此功能,特别是免费的网站。 实现上传,首先要在HTML上加入上传文件的“<FORM>”表格。 <form me
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)-.NET教程,Asp.Net开发
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- 通过HtmlInputFile控件上传文件的类
- asp.net 通过HtmlInputFile控件上传文件的类
- 如何扩展VB标准控件的功能
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- javascript构造可以上传文件的form表单(通过js修改enctype) 推荐
- 通过HtmlInputFile控件上传文件的类
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- asp.net2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)