`
hoho922
  • 浏览: 32788 次
  • 性别: 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远程调用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....

    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. 错误处理:编写适当的错误...

    SAP2021年6月版本sapjco3.1

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

    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 ...

    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....

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

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

    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代码中的...

    sapjco3最新版

    1. **远程函数调用(RFC)**:JCo3允许Java应用通过RFC协议调用SAP系统中的ABAP函数模块。RFC是一种标准化的接口技术,使得外部系统可以像调用本地函数一样调用SAP的功能。 2. **BAPI调用**:BAPI(Business ...

Global site tag (gtag.js) - Google Analytics