`
hoho922
  • 浏览: 32921 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

JCO调用SAP

阅读更多
   关于jco远程调用sap的例子也比较多,在此,本人针对自己的项目做一个比较简单完整的整理,希望对初次接触的人能有所帮助。
步骤主要有一下几点:
1.开发环境配置
  1.1首先要把librfc32.dll,sapjcorfc.dll 这两个文件放到服务器的系统的c:\windows\system32目录下。
  1.2下载 sap.jar;sapjco.jar;sappool.jar放到JAVA应用下.
2.连接池配置,由于调用sap里的相关函数,因此,连接池还是配置一个公共的比较好,不至于每次都配置。
配置文件名为:SAPLogon.properties
#配置client
jco.client.client=800
#sap账号
jco.client.user=zhangsan
#sap账号密码
jco.client.passwd=654321
#sap服务器IP地址,如果是外网访问,则在内网IP前加/H/外网IP/H/192.168.0.88
jco.client.ashost=192.168.0.88 
#系统编号  
jco.client.sysnr=00
#语言
jco.client.lang=en

3.编写java类
package com.thinkway.erp360.presentation.web.controller.sap;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.IRepository;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.PoolManager;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
import com.thinkway.erp360.business.domains.SalesOrderDeliver;
import com.thinkway.erp360.util.DataMethod;

public class Testrfc {
	
		
		private static final String SAPHR_POOL_NAME = "SAP_Poolssss";
	    public static void getSAPPoolConnection() throws IOException {	    	
			PoolManager clientPoolManager = JCO.getClientPoolManager();
			//JCO.Client mClient =null;
			try{
				JCO.Pool pool = clientPoolManager.getPool(SAPHR_POOL_NAME);
				if (pool == null) {
					Properties props = new Properties();
					InputStream is = ZrfcSalesOrder.class.getResourceAsStream("SAPLogon.properties");
					props.load(is);
					JCO.addClientPool(SAPHR_POOL_NAME, // pool name
							10, // maximum number of connections
							props); // properties				
				}
				//mConnection = JCO.getClient(SAPHR_POOL_NAME);
			}catch (Exception ex) {
				System.err.println(ex.getMessage());
			}
			finally{
				//JCO.releaseClient(mConnection);
			}
			
			//return mClient;
		}

	    public static void setConnection(){
	        try{
//	            mConnection = JCO.createClient("400",
//	                                           "rfcuser",
//	                                           "123456",
//	                                           "en",
//	                                           "192.168.10.88",
//	                                           "00");
	        }catch(Exception ex){
	            
	        }

	    }
	    

	    
	    
	    //查询接口:调用Z_ERP360_SALESORDER_GETDELIVER函数
	    public static void querySalesOrderGetlist(){//()throws IOException{
			// setConnection();
			
	    	DataMethod date = new DataMethod();
				try {
					java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
							"ddMMyyyy");
					java.text.SimpleDateFormat sdf1 = new java.text.SimpleDateFormat(
							"ddMMyyyy");
					JCO.Client client;
					getSAPPoolConnection();
					IRepository myRepository = JCO.createRepository(
							"MYRepository", SAPHR_POOL_NAME);
					System.out.println(myRepository.toString());
					IFunctionTemplate ft = myRepository
							.getFunctionTemplate("Z_ERP360_SALESORDER_GETDELIVER");
					JCO.Function funGetList = ft.getFunction();
					JCO.ParameterList input = funGetList
							.getImportParameterList();
			
					String today=(date.getCurrentDate()).toString();  //获取今天日期,并转换为String
                          //输入参数
					input.setValue(sdf.parse("01012012"), "BDATE");
					input.setValue(sdf.parse(today), "EDATE");
							input.setValue("Z000", "IM_WERKS");
										client = JCO.getClient(SAPHR_POOL_NAME);
					client.execute(funGetList);
										JCO.Table tDateRange = funGetList.getTableParameterList()
							.getTable("T_DATA"); //SAP中的输出结构名称为T_DATA
					System.out.println("tDateRange:" + tDateRange.getNumRows());
					SalesOrderDeliver item = new SalesOrderDeliver();
					for (int i = 0; i < tDateRange.getNumRows(); i++) {
						tDateRange.setRow(i);
						item.setAEDAT(tDateRange.getString("LFDAT"));
						item.setBEZEI(tDateRange.getString("BEZEI"));
						item.setBLDAT(tDateRange.getString("BLDAT"));
						item.setBEZEI2(tDateRange.getString("BEZEI2"));
						item.setWADAT(tDateRange.getString("WADAT"));
						item.setKUNNR(tDateRange.getString("KUNNR"));
						item.setLFIMG(tDateRange.getFloat("LFIMG"));
						item.setARKTX(tDateRange.getString("ARKTX"));
						item.setMATNR(tDateRange.getString("MATNR"));
//						item.setMEINS(tDateRange.getString("MEINS"));
						item.setPOSNR(tDateRange.getString("POSNR"));
						item.setVBELN(tDateRange.getString("VBELN"));
						item.setLFART(tDateRange.getString("LFART"));
						item.setVKBUR(tDateRange.getString("VKBUR"));
						item.setVKGRP(tDateRange.getString("VKGRP"));
						item.setVKORG(tDateRange.getString("VKORG"));
						item.setVRKME(tDateRange.getString("VRKME"));
						item.setVTEXT(tDateRange.getString("VTEXT"));
						item.setKODAT(tDateRange.getString("KODAT"));
System.out.println("Record ["
								+ tDateRange.getString("VKORG") + "] 物料号= "
								+ (tDateRange.getString("MATNR")).substring(10, 18) + " 供应商= "
								+ tDateRange.getString("KUNNR") + ", 交货日期 "
								+ tDateRange.getString("KODAT"));
					}
				} catch (Exception e) {
					// TODO: handle exception
				}
	
		};

	    public void closeConnection(){

	        // mConnection.disconnect();

	    }

	    public static final void main(String[] args){   

	    		querySalesOrderGetlist();
	    }     

	}





4.SAPLogon.properties和业务类在同一包下,此时可以测试了。
5.为了更清楚,附件截图为SAP登陆账号,以及函数的一些截图,希望对初次接触的人有所帮助。
  • 大小: 23.9 KB
  • 大小: 39.5 KB
  • 大小: 51.8 KB
  • 大小: 35.8 KB
  • 大小: 43.7 KB
  • 大小: 90.8 KB
分享到:
评论
2 楼 chuan05 2016-01-12  
1 楼 maidou80 2013-06-20  
很好  很详细

相关推荐

    JCO调用SAP 包

    JCO调用SAP包是实现这一通信的关键部分。下面将详细介绍JCO调用SAP的相关知识点。 1. JCO架构: JCO架构基于ABAP(Advanced Business Application Programming)和Java之间的互操作性。它包含三个主要组件:客户端...

    SAPjar包(eclipse中Java使用JCO调用SAP中的RFC函数).zip

    总结,SAP jar包在Eclipse中Java使用JCO调用SAP中的RFC函数涉及到的知识点包括:SAP JCO接口、Eclipse项目配置、SAP系统连接、RFC函数调用、参数传递以及错误处理。通过这种方式,开发者可以利用Java的强大功能与SAP...

    Java 使用JCO远程调用SAP RFC

    Java 使用JCO远程调用SAP RFC java 连接示例 JCO Linux 下安装详细步骤配置 JCO windows下安装详细步骤及配置 JCO linux windwos 所用到地包文件

    jco接口调用方式

    它基于Remote Function Call (RFC)协议,允许Java应用程序调用SAP ABAP函数模块,实现数据的实时交换。JCO不仅支持Java到ABAP的Inbound调用,也支持ABAP到Java的Outbound调用。 JCO接口调用方式主要分为以下几个...

    使用JCo远程调用SAP系统函数

    使用 JCo 远程调用 SAP 系统函数 在本文中,我们将了解如何使用 Java 程序远程调用 ABAP 函数,使用 SAP 提供的 RFC 针对 Java 程序的 API——JCo。 首先,需要安装 JCo,安装过程中需要三个文件:librfc32.dll、...

    JAVA 调用SAP端接口的相关包(sapjco3.jar,sapjco3.dll,sapjcorfc.dll)

    以上就是使用JCo调用SAP端接口的基本流程。需要注意的是,为了确保兼容性和安全性,开发者需要根据SAP系统版本和操作系统选择正确的JCo版本。此外,SAP官方提供了详细的API文档和示例代码,可以帮助开发者更好地理解...

    java使用jco连接SAP

    JCo库提供了可以直接在Java...该API通过JNI调用部署在客户端的SAP的RFC库。该RFC库是用C语言实现的,并且与JCo库 相互独立发布JCo组件的架构,配置,基本使用方法以及调试,如何对RFC方式调用的ABAP函数进行远程调试。

    sapjco30/sapjco3.dll/sapjco3.jar SAP官网2017/7/18更新版本

    开发者可以通过这些API创建JCo连接,定义目的地(destination)信息,如系统ID、用户、密码和端口,然后通过这些目的地调用SAP的功能模块。 "2017/7/18"是这个版本的发布日期,这表明这是SAP在2017年7月18日提供的...

    jco 连接sap图文

    JCO提供了一种基于Java的接口,使得开发者可以调用SAP系统中的函数模块,就像它们是在本地程序中一样。这在跨系统集成、数据同步或自动化业务流程中非常有用。 在实施JCO连接SAP的过程中,你需要完成以下步骤: 1....

    java jco连接sap相关插件及jar包

    为了在Java应用程序中执行SAP RFC,我们需要定义一个`JCoFunction`对象,然后设置参数和表字段,最后通过`execute()`方法调用SAP函数模块。返回的结果可以是单个值,也可以是`JCoTable`对象,可以遍历其中的数据。 ...

    sapjco和sapidoc.rar

    SAP JCo是一个Java API,它提供了一组接口和类,使得开发人员能够创建 RFC 客户端,这些客户端可以调用SAP系统的模块,从而实现数据交换。SAP JCo支持两种主要的编程模型:同步和异步。同步模式下,调用SAP RFC后,...

    最新sapjco3 sapidoc3 2017-12-07下载

    3. RFC调用:通过SAP JCO3提供的API调用SAP系统中的RFC函数。 4. BAPI交互:理解和使用BAPI接口,实现业务逻辑的自动化。 5. IDoc处理:理解IDoc结构,创建和解析IDoc,实现数据交换。 6. 错误处理:编写适当的错误...

    sapjco3-NTAMD64-3.0.6

    1. **远程方法调用(Remote Function Module Call, RFM)**:开发者可以使用SAP JCo调用SAP系统中的函数模块,就像调用本地Java方法一样,实现了Java和ABAP代码之间的无缝交互。 2. **数据转换**:SAP JCo提供了...

    Java 调用 SAP RFC 案例

    在Java中调用SAP RFC,通常需要使用JCo(Java Connector)库,这是SAP官方提供的Java API。JCo允许Java应用程序创建与SAP系统之间的连接,通过RFC接口进行交互。要使用JCo,你需要先在SAP系统中配置RFC目的地,然后...

    JCO 连接SAP

    这意味着需要在 SAP 系统中配置一个 RFC(Remote Function Call)目标,以便 Java 应用程序可以使用 JCO 连接器来调用 SAP 系统中的函数。 标签“JCO SAP connect Web”表明了该连接方式是使用 JCO 连接器将 Java ...

    SAP2021年6月版本sapjco3.1

    `sapjco3.jar`是Java类库文件,包含了SAP JCo的所有Java源代码和资源,使得开发者可以在Java应用程序中调用SAP的功能。这个JAR文件提供了接口和类,如`SAPConnection`、`SAPFunction`和`SAPParameter`,让开发者能够...

    JCO-SAP接口实例

    以下是一个完整的示例,演示了如何使用Java通过SAP JCo库调用ABAP函数模块,并处理导入与导出参数: ```java import com.sap.conn.jco.*; public class SAPFunctionCall { public static void main(String[] args...

    SAP-JCO.rar_Linux rfc jco_SAP_SAP jco RFC_jco linux64_sap rfc

    RFC是一种标准的SAP通信机制,允许远程调用SAP系统的功能模块,就像它们是在本地调用一样。 在Linux环境下设置SAP JCO,你需要以下步骤: 1. 安装JDBC驱动:确保你的系统已经安装了Java Development Kit (JDK)。 2....

    sapjco zip JAVA调用SAP 所需要的资料

    "sapjco zip JAVA调用SAP 所需要的资料"这个主题,涉及到的是使用Java通过JCO(Java Connector)来连接和通信SAP系统的核心组件。让我们详细探讨这些关键文件的作用以及如何使用它们。 首先,`sapjco3.dll`是SAP ...

    sap jco 开发所需文件

    `librfc32.dll`包含必要的函数调用,使得Java应用程序能够通过JCo调用SAP的ABAP函数模块。 其次,`sapjcorfc.dll`是SAP JCo的运行时库,它提供了Java和SAP RFC库之间的桥接。这个动态链接库文件负责将Java代码中的...

Global site tag (gtag.js) - Google Analytics