Java中连接SAP进行RFC调用

1、首先创建Java Project。
2、把sapjco.jar添加到该Project的Java项目构建路径中(添加外部Jar)。
3、在资源管理器中把librfc32.dll、sapjcorfc.dll放到Project的根目录下。
4、编写Jco程序:
方法一:
public class SapJco {
static JCO.Client mConnection = null;
static JCO.Repository mRepository;
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  try {
   mConnection = JCO.createClient("200",// SAP client
     "******", // userid
     "*******", // password
     "EN", // language (null for the default language)
     "IP地址", // application server host name
     "10"); // system number
   mConnection.connect();
   JCO.Function function = SapJco.createFunction("RFC函数名");
   JCO.Table codes = null;
   codes = function.getTableParameterList().getTable("ITAB");
   
    codes.appendRow();
    codes.setValue("9220", "WERK");
    codes.setValue("90", "LINE");
    codes.setValue("12345", "AUFNR");
    codes.setValue("12", "SERIALNO");
    codes.setValue("ss", "WERKNAME");
    codes.setValue("x1", "LINETXT");
    codes.setValue("33", "XINGHAO");
    codes.setValue("21", "NUM1");
    codes.setValue("093000", "BEGINTIME");
    codes.setValue("103000", "ENDTIME");
    codes.setValue("", "DEL");
   mConnection.execute(function);
   
   System.out.println(mConnection.getAttributes());
  } catch (Exception ex) {
   ex.printStackTrace();
   System.exit(1);
  } finally {
   mConnection.disconnect();
  }
}
public static JCO.Function createFunction(String name) throws Exception {
  mRepository = new JCO.Repository("ARAsoft", mConnection);
  try {
   IFunctionTemplate ft = mRepository.getFunctionTemplate(name
     .toUpperCase());
   if (ft == null)
    return null;
   return ft.getFunction();
  } catch (Exception ex) {
   throw new Exception("Problem retrieving JCO.Function object.");
  }
}
}

方法二:
把logon.properties文件放到编译后文件所在目录下,
文件内容如下:
jco.client.client=200
jco.client.user=*****
jco.client.passwd=****
jco.client.ashost=IP地址
jco.client.sysnr=10

Java文件内容
public class TestJco {
static final String POOL_NAME = "Pool";
public static void main(String[] arg){
  JCO.Pool pool = JCO.getClientPoolManager().getPool(TestJco.POOL_NAME);
  JCO.Client mConn = null;
  OrderedProperties logonProperties = null;
  try{
   logonProperties =
    OrderedProperties.load("logon.properties");
  }
  catch(Exception ie){
   System.out.println("不能读取配置文件!");
  }
   
  if (pool == null) {  
   JCO.addClientPool(TestJco.POOL_NAME, // pool name
     5, // maximum number of connections
     logonProperties); // properties
  }
  mConn = JCO.getClient(TestJco.POOL_NAME);
  
  JCO.Repository mRepository;
  mRepository = new JCO.Repository("ARAsoft", mConn);
  
  try {
   IFunctionTemplate ft =
    mRepository.getFunctionTemplate("BAPI_COMPANYCODE_GETLIST");
   
   JCO.Function fun = ft.getFunction();
   
   mConn.execute(fun);
   
  }
  catch (Exception ex) {
   System.out.println("生成RFC Funtion错误!");
  }
   
  System.out.println(mConn.getAttributes());
  JCO.releaseClient(mConn);
}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
调用 SAPRFC 接口,需要使用 SAP 提供的 Java Connector(SAP JCo)库。在使用 SAP JCo 调用 RFC 接口时,需要在 SAP JCo 的配置文件设置系统 ID(System ID),以便正确地连接SAP 系统。 要配置 SAP JCo 的系统 ID,需要进行以下步骤: 1. 打开 SAP JCo 的配置文件 sapjco3.properties,该文件通常位于应用程序的 classpath 下。 2. 在 sapjco3.properties 文件添加以下配置项: ``` jco.client.sysnr=<系统编号> jco.client.client=<客户端> jco.client.user=<用户名> jco.client.passwd=<密码> jco.client.lang=<语言> jco.client.ashost=<应用服务器主机名> jco.client.saprouter=<SAP 路由器> ``` 其,<系统编号> 是 SAP 系统的编号,<客户端> 是 SAP 客户端的编号,<用户名> 和 <密码> 是 SAP 用户的登录信息,<语言> 是登录时使用的语言代码,<应用服务器主机名> 是 SAP 应用服务器的主机名,<SAP 路由器> 是可选的 SAP 路由器配置。 3. 在 Java 代码使用 SAP JCo 的 API 调用 RFC 接口时,可以使用以下代码获取 SAP JCo 的配置信息: ``` JCoDestination destination = JCoDestinationManager.getDestination("<destination>"); ``` 其,<destination> 是 SAP JCo 的目标名称,可以在 sapjco3.properties 文件配置。 4. 使用 SAP JCo 的 API 调用 RFC 接口时,需要使用 SAP JCo 的函数模块名称和函数模块的输入参数,例如: ``` JCoFunction function = destination.getRepository().getFunction("<function_module>"); if (function == null) { throw new RuntimeException("<function_module> not found in SAP system."); } function.getImportParameterList().setValue("<parameter_name>", "<parameter_value>"); function.execute(destination); ``` 其,<function_module> 是 SAP RFC 函数模块的名称,<parameter_name> 和 <parameter_value> 是函数模块的输入参数名称和值。 以上是 Java 调用 SAP RFC 接口时配置系统 ID 的基本步骤。具体的配置和调用方法可能会因不同的 SAP 系统和 RFC 接口而有所不同,需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChampaignWolf

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

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

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

打赏作者

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

抵扣说明:

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

余额充值