EBS创建通用上传实现过程
来源:互联网 发布:java一年经验工资 编辑:程序博客网 时间:2024/05/22 12:27
--用ide编写如下Java文件,后缀为CUXPoExcelImport.java文件,上传到JAVA_HOME然后编译到oracle数据库loadjava -r -f -user apps/apps@ebsprod /u02/oracle/PROD/apps/apps_st/comn/java/classes/CUXPoExcelImport.java,再在form中调用即可
--需要准备jxl.jar文件,上传到JAVA_HOME然后编译loadjava -r -f -user apps/apps@ebsprod /u02/oracle/PROD/apps/apps_st/comn/java/classes/jxl.jar
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DecimalFormat;
import jxl.Cell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import oracle.jdbc.driver.OracleDriver;
public class CUXExcelImport {
public static String ExcelImport(int fileID) {
try {
Connection c = new OracleDriver().defaultConnection();
Statement s = c.createStatement();
ResultSet rs = s
.executeQuery("SELECT file_data FROM fnd_lobs WHERE file_id = "
+ fileID);
rs.next();
Blob blob = rs.getBlob("file_data");
Workbook wb = Workbook.getWorkbook(blob.getBinaryStream());
Sheet bomSheet = wb.getSheet(0);
int bomRows = bomSheet.getRows();
int bomcolumn = bomSheet.getColumns();
for (int i = 1; i < bomRows; i++) {
String ItemNumber = bomSheet.getCell(1, i).getContents();
String UomCode = bomSheet.getCell(2, i).getContents();
Cell ci2 = bomSheet.getCell(3, i);
NumberCell nc2 = (NumberCell) ci2;
double d2 = nc2.getValue();
DecimalFormat decimal2 = new DecimalFormat("#.##");
String Quantity = decimal2.format(d2);
Cell ci3 = bomSheet.getCell(4, i);
NumberCell nc3 = (NumberCell) ci3;
double d3 = nc3.getValue();
DecimalFormat decimal3 = new DecimalFormat("#.##");
String UnitPrice = decimal3.format(d3);
String AllowFlag = bomSheet.getCell(5, i).getContents();
s = c.createStatement();
ResultSet inputIdRs = s
.executeQuery("SELECT CUX_UPLOAD_S.nextval INPUTID FROM dual ");
int inputId = 0;
while (inputIdRs.next()) {
inputId = inputIdRs.getInt("INPUTID");
}
Statement s1 = c.createStatement();
ResultSet inputUserId = s1
.executeQuery("SELECT fnd_global.user_id USER_ID FROM dual");
int user_id = 0;
while (inputUserId.next()) {
user_id = inputUserId.getInt("USER_ID");
}
String query = "INSERT INTO CUX_UPLOAD_INPUT_T(segment1,primary_uom_code,quantity,unit_price,allow_flag,input_id,user_id) "
+ "VALUES( '"
+ ItemNumber
+ "','"
+ UomCode
+ "',"
+ Quantity
+ ","
+ UnitPrice
+ ",'"
+ AllowFlag
+ "',"
+ inputId + "," + user_id + ")";
s.executeUpdate(query);
}
c.commit();
wb.close();
rs.close();
s.close();
c.close();
return "Succeed";
} catch (Exception e) {
return e.getMessage();
}
}
}
--以下为form中调用上传的程序单元
PROCEDURE UPLOAD_FILE IS
access_id NUMBER;
l_server_url VARCHAR2(255);
l_url VARCHAR2(255);
l_gfm_id NUMBER;
button_choice NUMBER;
f_name VARCHAR2(10);
v_col_flag VARCHAR2(20);
BEGIN
-- Get Process ID
access_id := fnd_gfm.authorize(NULL);
-- 获取服务器地址
fnd_profile.get('APPS_WEB_AGENT', l_server_url);
--获取网页地址
l_url := RTRIM(l_server_url, '/') ||
'/fnd_file_upload.displayGFMform?access_id=' ||
to_char(access_id) || chr(38) || 'l_server_url=' || l_server_url;
IF (l_url IS NULL) THEN
RAISE form_trigger_failure;
END IF;
-- 打开网页
fnd_utilities.open_url(l_url);
-- this action is waiting for user select file, and check upgrade
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');
-- Get File ID
l_gfm_id := fnd_gfm.get_file_id(access_id);
IF l_gfm_id IS NOT NULL AND
l_gfm_id > 0 THEN
IF button_choice = 1 THEN
l_gfm_id := l_gfm_id; -- File is selected and upgrade
--此时文件已上传到fnd_lobs表中,内容存放在file_data字段,blob格式
ELSE
l_gfm_id := 0; -- File is selected but not upgrade
END IF;
ELSE
l_gfm_id := -1; -- File is not selected
END IF;
--fnd_message.debug(l_gfm_id);
IF l_gfm_id > 0 THEN
SELECT upper(substr(file_name, instr(file_name, '.', 1, 1) + 1))
INTO f_name
FROM fnd_lobs
WHERE file_id = l_gfm_id;
IF f_name <> 'XLS' THEN
fnd_message.debug('你上传的为' || f_name || '格式文件,请选择XLS格式文件重新上传');
RAISE form_trigger_failure;
ELSE
GOTO upload_flag;
END IF;
<<upload_flag>>
v_col_flag := cux_po_handle_util_pkg.po_excel_import(l_gfm_id);
forms_ddl('commit');
END IF;
END;
--以下为pkg中包的写法
--package
----调用JAVA上传文件
FUNCTION po_excel_import(i_fileid IN NUMBER) RETURN VARCHAR2;
--package body
/**************************************************************
*功能描述:
* 此函数主要用于调用java类,实现文件导入
**************************************************************/
FUNCTION po_excel_import(i_fileid IN NUMBER) RETURN VARCHAR2 IS
LANGUAGE JAVA NAME 'CUXExcelImport.ExcelImport(int) return String';
- EBS创建通用上传实现过程
- EBS FORMS 创建基本过程
- EBS动态创建账户组合实现
- EBS动态创建账户组合实现
- EBS-通用导入
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 创建作业的通用存储过程
- 1类的继承
- 0.2 用代码画画——目标读者、教材特色、内容大纲
- mysql多实例安装
- 虚拟机迁移技术漫谈,第 1 部分(转) 出自IBM
- 9-9 (hash, pb_ds)
- EBS创建通用上传实现过程
- mvn update后java compiler中jdk版本变更
- Linux历史文化
- 2.57亿美元:纸币打破了ICO资金的全部记录
- ubuntu 右击在终端中打开
- ansible的inventory文件含义
- 08.递归函数
- 三个营长与三个和尚
- Django 开发学习笔记(7)- 开发特定主题显示的页面