This document is step by step guide on how to calling BAPI in Java with SAP Enterprise connector.
SAP BAPI is remote enabled function module, and we can call it with JCO library. SAP Enterprise Connector is a wizard to generate proxy code for calling remote function module.
1. Install NWDS
First download NWDS from SDN, SAP NetWeaver Composition Environment 7.1 SR5 - Trial Version
You should register an account in SDN first.
Extract downloaded files to temp folder. Then install NWDS follow the installation instruction..
2. Create Java Project
Start Netweaver Development Studio, create Java project.
Add related library to build path:
3. Create proxy class with SAP Enterprise Connector
Select the function module , and click Finish button, Waiting for NWDS will generate proxy codes.
4. Test generated proxy class
JCO.Client jcoClient = JCO.createClient(
"800",
"CP.WANG",
"justin65",
"EN",
"/H/eclass.efglobe.com/H/sapecc",
"01");
jcoClient.setProperty("jco.client.codepage", "4110");
CompanyCode_PortType proxy = new CompanyCode_PortType();
proxy.messageSpecifier.setJcoClient(jcoClient);
jcoClient.connect();
Bapi_Companycode_Getlist_Input input = new Bapi_Companycode_Getlist_Input();
try {
Bapi_Companycode_Getlist_Output output = proxy.bapi_Companycode_Getlist(input);
Bapi0002_1Type[] codes = output.getCompanycode_List();
if(codes!=null && codes.length> 0){
int len = codes.length;
for(int i=0;i<len;i++){
System.out.printf("%-10s", codes[i].getComp_Code());
System.out.print(new String(new String(codes[i].getComp_Name()).getBytes("UTF-8"),"GBK"));
System.out.println();
}
}
} catch (ApplicationFaultException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemFaultException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jcoClient.disconnect();
Question:
1. Exception:RFC_ERROR_COMMUNICATION
Exception in thread "main" com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: SAP_CMINIT3 : rc=20 > Connect to SAP gateway failed
Connect_PM GWHOST=sapecc, GWSERV=sapgw01, SYSNR=01
LOCATION CPIC (TCP/IP) on local host
ERROR hostname 'sapecc' unknown
TIME Sat Jun 20 16:08:59 2009
RELEASE 710
COMPONENT NI (network interface)
VERSION 39
RC -2
MODULE ninti.c
LINE 895
DETAIL NiPGetHostByName: 'sapecc' not found
SYSTEM CALL getaddrinfo
COUNTER 1
at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeConnect(Native Method)
at com.sap.mw.jco.rfc.MiddlewareRFC$Client.connect(MiddlewareRFC.java:1125)
at com.sap.mw.jco.JCO$Client.connect(JCO.java:3138)
at com.rfc.test.RFCTest.main(RFCTest.java:36)
Solution: When you connect to SAP system in java with JCO.Client , if you want to use SAP router string , please replace SAP host name with “/Hrouter_string/Hhostname” format.
2. Exception :
java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [no sapjcorfc in java.library.path]. java.library.path [C:\Program Files\Java\jdk1.6.0_11\jre\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;E:\oracle\product\10.2.0\db_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programiles\Java\jdk1.6.0_11\bin;;D:\OpenSource\apache-ant-1.7.0\bin;D:\Program Files\MySQL\MySQL Server 5.0\bin ]
at com.sap.mw.jco.JCO.<clinit>(JCO.java:776)
at com.rfc.test.RFCTest.getCmp(RFCTest.java:62)
at com.jt.CompanyPanel.setData(CompanyPanel.java:28)
at desktopapplication1.DesktopApplication1View.showCompanyCode(DesktopApplication1View.java:248)
Solution: Copy sapjcorfc.dll, librfc32.dll into C:\Windows\System32, these files exist in SAP JCO library, and you could download from SAP Service Market Place, quick link connectors.
http://searchsap.techtarget.com/generic/0,295582,sid21_gci1095552,00.html
Summary:
Read reference of JCO before programming. Follow the install guide of JCO library.
分享到:
相关推荐
SAP开发过程中常用到的BAPI函数总结: 将服务器文件下载到本地 READ_TEXT 分类计量点和计量凭证处理 SAPOFFICE 通知单 修改用户状态的BAPI 修改服务订单的bapi 修改订单的bapi
Delphi通过BAPI连接SAP.7z
SAP中很多情况下客户提出增强的需求时,我们通常会用到BAPI或者BADI。虽然你可以在SAP中直接输入TCd:BAPI来查找。但是并不是所有的BAPI都能查得到的。希望这个清单能够帮到你。
SAP .NET Connector 2.0用于在.Net环境下,调用SAP的BAPI接口函数,实现数据交互。 官方提供的SAP .NET Connector 2.0安装包,只支持在VS 2003 (.Net1.1)的环境下安装使用。目前VS2003已经基本废弃,但.Net连接...
三、委外PO的收货(这里使用BAPI_GOODSMVT_CREATE) *&---------------------------------------------------------------------* *& Report ZTEST_WWJG *& *&---------------------------------------------------...
批量修改物料凭证内容
里面有sap fi模块常用BAPI的名字,希望对大家有用
如果我们找BAPI可以通过SAP标准事物代码:BAPI查询到已经释放的BAPI. 如果只知道事物代码,可以通过下面的方式查询相应的BAPI.
SAP ABAP开发过程中常用的bapi,供开发参照使用。。。
BAPI创建教程
SAP中的函数和bapi简介,是给应用顾问看的,不是给ABAP看的。
BAPI_User_Guide word文档 BAPI函数使用手册,适合SAP开发者的帮助文件。
什么是BAPI BAPI: Business Application Programming Interface 商业...5.BAPI是sap提供的基于业务对象的函数,它处理的对象是r/3的业务相关business object, 比如单据类销售订单,组织,公司等,它们是一系列实体。
如何通过BAPI批量修改工单的工艺路线,采用函数,特殊注意点:未包含在函数行的参数字段中,需要用到增强字段,再通过订单的增强完成
bapi应用大全。去除加上前导零。收货bapi,领用bapi.根据领用凭证冲销领用的bapi.根据收货凭证进行冲销收货的bapi根据数量进行收货冲销的bapi,物料属性转移的bapi.
SAP BAPI program example
SAP常用后台表&BAPI
ABAP开发中调用BAPI执行业务,有时会遇到所需字段在标准BAPI没提供,可以通过该方法实现字段扩展
sap bapi list 所以的SAP 自带的BAPI