`
yjjssixa
  • 浏览: 4752 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Jco 调用SAP BAPI 函数 获取物料主数据详细信息

阅读更多
公司在做物料主数据管理系统的时候,有时候会出现 物料  主数据缺失的情况,经过各种考量,准备通过Jco 调用ABAP 函数获取所需信息,开发测试的过程中也发生了不少情况,经过分析,问题最终得到了解决,记录下来给大家参考。

1、创建项目SAP_PART_OBTAIN,并引入相关jar包(jco-3.0.jar),将 sapjco3.dll放入“c:\windows\system32” 目录下。jar 包和dll 文件下载需要有 SAP 账号,可向负责sap 的同事咨询获取。

2、SAP 通讯账号的配置,在项目的根目录下创建名称为“as_pool.jcoDestination”的文件,文件的具体内容如下:

jco.client.ashost=192.168.100.16
jco.client.sysnr=00
jco.client.client=800
jco.client.user= username
jco.client.passwd= password
jco.client.lang=en
jco.destination.pool_capacity=3
jco.destination.peak_limit=10

3、创建到SAP 的jco 连接,关键方法如下:

    public static synchronized void reConnection() {
        try{
            destination = JCoDestinationManager.getDestination("as_pool");
        } catch (Exception e) {
        	e.printStackTrace();
        }
    }


其中的参数as_pool 就是步骤2创建的文件名。

4、建立连接后就 可以 跟sap 进行交互。

   
public static void main(String[] args) {
               String functionName = "BAPI_MATERIAL_GET_ALL";//ABAP 函数名称
               String partNo ="12345678"//参数
        try {
		destination = SAPConnector.getDestination();//建立连接
		repository = destination.getRepository();
                jCoFunction = repository.getFunction(functionName);
                inputParams = jCoFunction.getImportParameterList();
	        inputParams.setValue("MATERIAL",partNo); // 设置输入参数的值
	        jCoFunction.execute(destination);
                outputParams = jCoFunction.getExportParameterList();
//通过 SAP 提供的结构(structure)\表格(table)和 字段 来获取 数据,可在此封装成对象返回。

        } catch (Exception e) {
            e.printStackTrace();
        }
    }



5、其实 上述对于一般的开发者比较简单,在测试的过程中也发现了不少问题。
   例如,在公司的平台上查询到的物料主数据信息通过 sap 获取不了,且没有
  任何异常提示,最终跟  负责sap的同事 详细咨询后发现 缺少了 权限,这不能不说是一个没有考虑周全的地方,希望后面 相关程序提供者 更新的时候 能够弥补 下 此缺陷。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics