`
lzkyo
  • 浏览: 465830 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Java中调用BAPI或RFC(转)

 
阅读更多

JCo是一个高性能的,基于JNI的中间件,它实现了SAPRFCRemote Function Call)协议。

      1JCo的安装

          sapjco.jar加入项目的classpath中。

       把 librfc32.dll 和 sapjcorfc.dll copy 到system32里(机子上如果有SAP就不用了)

      2、与SAP的连接

      JCo支持两种连接方式,direct connectionsconnection pools

      direct connections

      import com.sap.mw.jco.*

      public TutorialConnect1() {
         JCO.Client mConnection;
         try {
            mConnection = JCO.createClient("001", // SAP client
                                                         "",           // userid
                                                         "****",               // password
                                                         null,                 // language
                                                         "",         // server host name
                                                         "00");                // system number          mConnection.connect();                                                                           
         mConnection.disconnect();
         } catch (Exception ex) {
         }
     }

      connection pools

      static final String POOL_NAME = "Pool";
      public TutorialConnect2() {
         JCO.Client mConnection;
         try {
            JCO.Pool pool = JCO.getClientPoolManager().getPool(POOL_NAME);
            if (pool == null) {
               OrderedProperties properties = OrderedProperties.load("/logon.properties");
               JCO.addClientPool(POOL_NAME,  // pool name
                                                 5,          // maximum number of connections
                                                 logonProperties); // properties
            }
            mConnection = JCO.getClient(POOL_NAME);
         } catch (Exception ex) {
         } finally {                                                                                                                            //
返回连接到连接池,否则会导致无可用连接
            JCO.releaseClient(mConnection);
         }
      }

      logon.properties文件的定义:

      jco.client.client=001
      jco.client.user=userid
      jco.client.passwd=****
      jco.client.ashost=hostname
      jco.client.sysnr=00

      3、对SAP进行操作

      SAP中有JCO.Repository对象,包含着SAPRFM的运行环境元数据。

      JCO.Repository mRepository;
      mRepository = new JCO.Repository("ARAsoft", mConnection); 
      
构造器中包含两个参数,第一个是一个任意名称,第二个是连接池或JCO.Client对象。

      IFunctionTemplate对象包含着某个特定的RFM元数据,JCO.Function则代表着一个包含所有参数的RFM。它们之间的关系类似JavaClassObject的关系。 

      IFunctionTemplate ft = mRepository.getFunctionTemplate("BAPI_SALESORDER_GETLIST");
      //ft
为空表示没有在SAP发现对应的RFM
      if (ft == null) return null;
      JCO.Function function = ft.getFunction();

      JCO.ParameterList对象包含做Function的输入、输出和表参数。

      client = JCO.getClient(SID);    //Pool中取得Client
      JCO.ParameterList input = function.getImportParameterList();
      //
设置参数,参数名为第二个参数,参数值为第一个参数,
      input.setValue("0000001200", "CUSTOMER_NUMBER"   );
      input.setValue(      "1000", "SALES_ORGANIZATION");
      client.execute(function);

分享到:
评论

相关推荐

    SAP BAPI和RFC接口技术

    在SAP系统中,RFC(Remote Function Call)接口技术和BAPI(Business Application Programming Interface)接口技术是两个非常重要的技术概念。下面我们将对这两个技术进行详细的介绍。 RFC接口技术 RFC接口技术是...

    java使用jco调用rfc案例

    调用BAPI的方法与调用自定义RFC类似,只是需要替换相应BAPI的名称。 在实际应用中,可能还需要处理异常,进行错误检查,以及对批量操作进行优化。例如,如果需要调用多个RFC,可以考虑使用JCO的批处理功能来提高...

    RFC BAPI

    SAP提供了JCo(Java Connector)库,使得Java应用程序可以直接调用SAP系统的BAPI,无需额外的中间件。这种整合方式极大地提升了跨平台应用的效率和性能。 #### 六、结论 BAPI与RFC的结合,为SAP系统的集成和扩展...

    JAVA与ABAP之间通过RFC互传数据_JCO实例及API

    RFC是一种标准的ABAP调用机制,允许外部系统调用ABAP模块或函数模块,就像它们是在ABAP环境中直接调用一样。以下我们将详细介绍如何设置JCo环境、创建RFC连接以及发送和接收数据。 首先,确保你的项目中包含了JCo库...

    sap jco rfc abap bapi java jar sapjco3.dll

    接着,可以通过创建RFC连接,调用SAP的BAPI或RFC函数模块。BAPI是SAP提供的标准接口,封装了业务逻辑,而RFC则允许开发自定义的跨系统功能。 总的来说,SAP JCO 3.0.5版本提供了在Java环境中访问和操作SAP系统的...

    SAP_RFC ,远程调用SAP

    总结,SAP_RFC和BAPI是SAP系统与其他系统集成的关键技术,通过C#调用BAPI,我们可以实现跨系统的业务流程自动化。在实际应用中,需要根据具体需求配置和处理BAPI的输入输出参数,以满足业务逻辑。理解并熟练运用这些...

    SAP接口相关文档及用例-主要是BAPI、JCO方面的知识介绍,并提供了测试样例

    本压缩包中的测试样例可能包含了使用Java调用BAPI和JCO的示例代码。这些样例有助于开发者快速理解和应用上述概念,例如,创建一个简单的Java程序,连接到SAP系统,调用一个BAPI,如BAPI_MATERIAL_GETDETAIL,获取...

    自定义BAPI的基本过程.doc

    要在不同系统间调用BAPI,首先需要在SM59中设置RFC(Remote Function Call)连接,指定目标R/3系统的服务器和系统编号。在ABAP环境中,可以通过SE38编写程序调用BAPI,例如使用`Call Function "ZBAPIXXXXX" ...

    BAPI 比较详细的BAPI资料

    3. **调用BAPI**:在客户端程序中,使用适当的语言(如Java、ABAP、.NET等)编写代码,通过HTTP、RFC等方式调用BAPI。 4. **处理结果**:BAPI执行后,会返回结果,需要在客户端程序中处理这些结果,通常是解析XML...

    BAPI操作手册

    以调用BAPI_MATERIAL_STOCK_GET为例,这个BAPI用于获取物料库存信息: 1. **准备输入参数**:如MATNR(物料号)和WERKS(工厂代码)。 2. **创建函数实例**:在编程环境中创建BAPI_MATERIAL_STOCK_GET的实例。 3. *...

    JCO与BAPI的使用

    调用BAPI时,如同调用ABAP中的Function Module,但BAPI不抛出异常,而是通过一个名为'return'的参数来返回错误信息。这个'return'参数的结构因BAPI而异,需要根据具体BAPI的文档进行处理。 2. JCO的使用 2.1 JCO...

    SAP资料集有ABAP-PP-MM-RFC-BAPI-JCO等.rar

    PP-MM-RFC-BAPI-JCO等.rar"的压缩包文件包含了多个与SAP相关的学习资料,涵盖了许多关键模块和技术,包括ABAP编程、生产计划(PP)、物料管理(MM)、远程功能调用(RFC)、业务对象接口(BAPI)以及Java与SAP的集成...

    BAPI与JCO的使用

    在ABAP中调用BAPI的方法与调用功能模块的方法类似,但需要注意的是BAPI没有异常(Exception)的概念,调用的成功与否是通过参数`RETURN`来判断的。`RETURN`参数在不同的BAPI中可能有不同的结构,可能是结构(structure)...

    SAP Java JCo 3.1.3 Windows 平台 64bit

    这个接口允许开发者使用 Java、JavaScript 或 HTML5 来构建应用程序,同时无缝集成 SAP 功能,例如调用 RFC(远程功能调用)或 BAPI(业务对象函数调用)。 1. **RFC 调用**:RFC 是 SAP 系统提供的一种标准通信...

    java调用sap开发包 sapjco3

    这个库包括了必要的接口、类和方法,使得开发者可以在Java中执行远程功能调用(RFC)和BAPI(Business Application Programming Interface)。 二、环境准备 1. 安装JDK:确保你的开发环境已经安装了Java ...

    RFC Programming in ABAP

    - 使用ABAP代码调用RFC函数模块,或者在其他系统(如Java、.NET)中使用SDK或HTTP请求来调用。 ### 3. RFC技术细节 - **使用ABAP调用RFC** - 使用`CALL FUNCTION`语句来调用本地或远程RFC。 - 示例代码: ```...

    SAP_RFC总结

    RFC允许外部系统(如Java、Python或其他编程语言的应用程序)与SAP系统进行集成。BAPI(Business Application Programming Interface)作为RFC的一种特例,专门处理业务逻辑,它是预定义的、封装了特定业务功能的...

Global site tag (gtag.js) - Google Analytics