JCO 创建物料代码(SAP)

这个是我之前在 http://topic.csdn.net/u/20080314/11/874152de-a244-49b1-98c6-2a1e59e46dc6.html 中提出的那个问题的解决方法(在代码注释中有解释),呵  其实在发那个帖子后很快就解决了  现在把代码全部发出来供大家参考一下  希望对大家有帮助!

 package com.sap.victor.test;

import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.JCO;

public class SAP_Create_Item {

public static void main(String str[]) {
SAP_Create_Item app = new SAP_Create_Item();
}

private int count;

private JCO.Client mConnection;

private JCO.Repository mRepository;

private String[] SAPInterfaces;

private JCO.Function function = null;

private JCO.Table codes = null;

private JCO.Table DATA = null;

public SAP_Create_Item() {
try {

// ===================================================================================//
// 1.配置客户端链接SAP JCO.createClient
// Logon info
// mConnection =
// JCO.createClient("端口号","用户名","密码","语言","sap服务器ip","系统编号");
// ===================================================================================//
mConnection = JCO.createClient("620", // SAP client
"SHIR", // userid
"12345", // password
null, // language
"192.168.5.141", // application server host name
// "192.168.5.118",
"00"); // system number

// =================================//
// 2.创建客户端 mConnection.connect();
// =================================//
mConnection.connect();

// =================================//
// 3.创建SAP仓库
// =================================//
mRepository = new JCO.Repository("ARAsoft", mConnection);
System.out.println("SAP连接成功.");
} catch (Exception ex) {
/*******************************************************************
* 用户名密码、端口号、IP错误在此报错 用户名密码错误报错信息:3600+800+1500  5
* com.sap.mw.jco.JCO$Exception: (103) RFC_ERROR_LOGON_FAILURE:
* ##.#####,#### 端口号错误报错信息: com.sap.mw.jco.JCO$Exception: (103)
* RFC_ERROR_LOGON_FAILURE: ## 502 ######## IP错误报错信息:
* com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION:
* Connect to SAP gateway failed 14000+5500
******************************************************************/
ex.printStackTrace();
System.exit(1);
System.out.println("创建JCO失败!");
}

try {

function = this.createFunction("BAPI_MATERIAL_SAVEDATA");
if (function == null) {
System.out.println("BAPI_MATERIAL_SAVEDATA"
+ " not found in SAP.");
System.out.println("SAP_RFC中没有此函数!");
System.exit(1);
}

// =========================================================//
// 6.1输入值是普通值
// input.setValue("要放入的信息", "RFC字段名");
// ex:input.setValue("200023134", "ITEMID");
// 如果是其它类型setValue方法支持很多输入值;例如浮点数录入:
// input.setValue(Double.parseDouble("1234.125"), "GWSL");
// ========================================================//
//带有控制信息的表头段
JCO.Structure head_data = function.getImportParameterList().getStructure("HEADDATA");
head_data.setValue("000000000121011121", "MATERIAL");//物料号
head_data.setValue("ERSA", "MATL_TYPE");//物料类型
head_data.setValue("M", "IND_SECTOR");//行业领域(L、零售;A、工厂工程/结构;C、化学工业;M、机械工程;P、药品)
head_data.setValue("X", "BASIC_VIEW"); //基本数据视图
head_data.setValue("X", "PURCHASE_VIEW"); //采购视图
head_data.setValue("X", "ACCOUNT_VIEW"); //会计视图 
// head_data.setValue("X", "SALES_VIEW");//销售视图
head_data.setValue("X", "MRP_VIEW");//物料需求计划(MRP)视图
//物料描述(MAKT)
JCO.Table mtl_desc = function.getTableParameterList().getTable("MATERIALDESCRIPTION");
mtl_desc.appendRow();
mtl_desc.setValue("FROM JAVA8 UPDATE", "MATL_DESC");//物料描述
mtl_desc.setValue("ZH", "LANGU_ISO");
mtl_desc.setValue("1", "LANGU");
//客户端层次物料数据(MARA)
JCO.Structure client_data = function.getImportParameterList().getStructure("CLIENTDATA");
// client_data.setValue("140011112", "MATERIAL");
client_data.setValue("EA", "BASE_UOM");//基本计量单位
client_data.setValue("EA", "BASE_UOM_ISO");//ISO 代码的计量基本单位
client_data.setValue("2001", "MATL_GROUP");//物料组
client_data.setValue("9999", "EXTMATLGRP");//外部物料组
//========start====
//此处必须写如果不写会报“字段MARA-MEINS/BAPI_MARA-BASE_UOM(_ISO)被定义为必需的字段; 它不包含条目”
//等错误并且在SAP中看不到相应的数据
JCO.Structure clientx_data = function.getImportParameterList().getStructure("CLIENTDATAX");
clientx_data.setValue("EA", "BASE_UOM");
clientx_data.setValue("EA", "BASE_UOM_ISO");
clientx_data.setValue("2001", "MATL_GROUP");//物料组
clientx_data.setValue("9999", "EXTMATLGRP");//外部物料组
//========end======
//工厂级别的物料数据(MARC)
JCO.Structure plant_data = function.getImportParameterList().getStructure("PLANTDATA");
plant_data.setValue("1100", "PLANT");//工厂
plant_data.setValue("107", "PUR_GROUP");//采购组
plant_data.setValue("KP", "AVAILCHECK");//可用性检查的检查组
plant_data.setValue("PD", "MRP_TYPE");//MRP类型
plant_data.setValue("601", "MRP_CTRLER");//MRP控制者
plant_data.setValue("002", "SM_KEY");//浮动的计划边际码
plant_data.setValue("EX", "LOTSIZEKEY");//批量 (物料计划)
JCO.Structure plantx_data = function.getImportParameterList().getStructure("PLANTDATAX");
plantx_data.setValue("1100", "PLANT");
plantx_data.setValue("KP", "AVAILCHECK");
plantx_data.setValue("PD", "MRP_TYPE");
plantx_data.setValue("601", "MRP_CTRLER");
plantx_data.setValue("002", "SM_KEY");
plantx_data.setValue("EX", "LOTSIZEKEY");

mConnection.execute(function);// 执行配置好的function
JCO.Structure returnStructure = function.getExportParameterList().getStructure("RETURN");
if(!(returnStructure.getString("TYPE").equals("") || returnStructure.getString("TYPE").equals("S"))){
System.out.println(returnStructure.getString("MESSAGE"));
throw new Exception("新增数据失败:" + returnStructure.getString("MESSAGE"));
}
   
function = this.createFunction("BAPI_TRANSACTION_COMMIT");
mConnection.execute(function);
System.out.println("ok");
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
} finally {

// =================================//
// 9.关闭链接
// =================================//
if (mConnection != null) {
mConnection.disconnect();
}
}
}

public JCO.Function createFunction(String name) throws Exception {
try {

// ==========================================//
// 4.从仓库中获得执行函数名的 函数模板
// name:大写的RFC(remote function call)函数名
// ==========================================//
IFunctionTemplate ft = mRepository.getFunctionTemplate(name
.toUpperCase());
if (ft == null)
return null;

// ==========================================//
// 5.从函数模板(IFunctionTemplate)中获得function
// ==========================================//
return ft.getFunction();
} catch (Exception ex) {
throw new Exception("Problem retrieving JCO.Function object.");
}
}
public String doDelete(){
mConnection = JCO.createClient("620", // SAP client
"SHIR", // userid
"12345", // password
null, // language
"192.168.5.141", // application server host name
// "192.168.5.118",
"00"); // system number

mConnection.connect();
String mes ="";
mRepository = new JCO.Repository("ARAsoft", mConnection);
try {
function = this.createFunction("BAPI_MATERIAL_DELETE");
if (function == null) {
System.out.println("BAPI_MATERIAL_DELETE"
+ " not found in SAP.");
System.out.println("SAP_RFC中没有此函数!");
System.exit(1);
}
JCO.ParameterList head = function.getImportParameterList();
head.setValue("121011112", "MATERIAL");
function.setImportParameterList(head);
mConnection.execute(function);
JCO.Structure returnStructure = function.getExportParameterList().getStructure("RETURN");
if(!(returnStructure.getString("TYPE").equals("") || returnStructure.getString("TYPE").equals("S"))){
mes = returnStructure.getString("MESSAGE");
throw new Exception("删除数据失败:" + returnStructure.getString("MESSAGE"));
}
function = this.createFunction("BAPI_TRANSACTION_COMMIT");
mConnection.execute(function);
} catch (Exception e) {
e.printStackTrace();
} finally {

// =================================//
// 9.关闭链接
// =================================//
if (mConnection != null) {
mConnection.disconnect();
}
}
return mes;
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無名VF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值