public class SapFunction { //JCo 返回参数类型定义 public static final Integer Type_String = 1; public static final Integer Type_Int = 2; public static final Integer Type_Long = 3; public static final Integer Type_Double = 4; public static final Integer Type_Date = 5; public static final Integer Type_Float = 6; /** * @Description: 返回值为List,有入参的情况 * @param functionName 调用的SAP方法名称 * @param paramMap SAP方法所需要的参数MAP,KEY=传入参数名称,VALUE=传入参数值; * @param keyTypeMap SAP方法返回的参数类型,KEY=返回参数名称,VALUE=返回参数类型; * @return List<?> SAP方法返回的List,?为指定类型; * @throws */ public static List<?> getList(String functionName,String tableName, Map<String,Integer> keyTypeMap, Class<?> beanClazz){ JCoDestination jCoDestination = null; JCoFunction function = null; List<Object> list = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); function.execute(jCoDestination); JCoTable tb = function.getTableParameterList().getTable(tableName); for (int i = 0; i < tb.getNumRows(); i++) { tb.setRow(i); Map<String,Object> map = new HashMap<String,Object>(); for (Map.Entry<String, Integer> entry : keyTypeMap.entrySet()) { switch(entry.getValue().intValue()){ case 1: map.put(entry.getKey(), tb.getString(entry.getKey())); break; case 2: map.put(entry.getKey(), tb.getInt(entry.getKey())); break; case 3: map.put(entry.getKey(), tb.getLong(entry.getKey())); break; case 4: map.put(entry.getKey(), tb.getDouble(entry.getKey())); break; case 5: map.put(entry.getKey(), tb.getDate(entry.getKey())); break; case 6: map.put(entry.getKey(), tb.getFloat(entry.getKey())); break; } } if(list == null){ list = new ArrayList<Object>(); } Object obj = CommonUtils.getBean(map, beanClazz); list.add(obj); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * @Description: 返回值为List,有入参的情况 * @param functionName 调用的SAP方法名称 * @param paramMap SAP方法所需要的参数MAP,KEY=传入参数名称,VALUE=传入参数值; * @param keyTypeMap SAP方法返回的参数类型,KEY=返回参数名称,VALUE=返回参数类型; * @return List<?> SAP方法返回的List,?为指定类型; * @throws */ public static List<?> getList(String functionName, Map<String,Object> paramMap,String tableName, Map<String,Integer> keyTypeMap, Class<?> beanClazz){ JCoDestination jCoDestination = null; JCoFunction function = null; List<Object> list = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); JCoParameterList parameterList = function.getImportParameterList(); for (Map.Entry<String, Object> entry : paramMap.entrySet()) { parameterList.setValue(entry.getKey(), entry.getValue()); } function.execute(jCoDestination); JCoTable tb = function.getTableParameterList().getTable(tableName); for (int i = 0; i < tb.getNumRows(); i++) { tb.setRow(i); Map<String,Object> map = new HashMap<String,Object>(); for (Map.Entry<String, Integer> entry : keyTypeMap.entrySet()) { switch(entry.getValue().intValue()){ case 1: map.put(entry.getKey(), tb.getString(entry.getKey())); break; case 2: map.put(entry.getKey(), tb.getInt(entry.getKey())); break; case 3: map.put(entry.getKey(), tb.getLong(entry.getKey())); break; case 4: map.put(entry.getKey(), tb.getDouble(entry.getKey())); break; case 5: map.put(entry.getKey(), tb.getDate(entry.getKey())); break; case 6: map.put(entry.getKey(), tb.getFloat(entry.getKey())); break; } } if(list == null){ list = new ArrayList<Object>(); } Object obj = CommonUtils.getBean(map, beanClazz); list.add(obj); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * @Description: 返回值为List,有入参的情况 * @param functionName 调用的SAP方法名称 * @param paramMap SAP方法所需要的参数MAP,KEY=传入参数名称,VALUE=传入参数值; * @param keyTypeMap SAP方法返回的参数类型,KEY=返回参数名称,VALUE=返回参数类型; * @return Map<String,Object> SAP方法返回的参数值,KEY=返回参数名称,VALUE=返回参数值; * @throws */ public static List<Map<String,Object>> getList(String functionName, Map<String,Object> paramMap,String tableName, Map<String,Integer> keyTypeMap){ JCoDestination jCoDestination = null; JCoFunction function = null; List<Map<String,Object>> list = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); JCoParameterList parameterList = function.getImportParameterList(); for (Map.Entry<String, Object> entry : paramMap.entrySet()) { parameterList.setValue(entry.getKey(), entry.getValue()); } function.execute(jCoDestination); JCoTable tb = function.getTableParameterList().getTable(tableName); for (int i = 0; i < tb.getNumRows(); i++) { tb.setRow(i); Map<String,Object> map = new HashMap<String,Object>(); for (Map.Entry<String, Integer> entry : keyTypeMap.entrySet()) { switch(entry.getValue().intValue()){ case 1: map.put(entry.getKey(), tb.getString(entry.getKey())); break; case 2: map.put(entry.getKey(), tb.getInt(entry.getKey())); break; case 3: map.put(entry.getKey(), tb.getLong(entry.getKey())); break; case 4: map.put(entry.getKey(), tb.getDouble(entry.getKey())); break; case 5: map.put(entry.getKey(), tb.getDate(entry.getKey())); break; case 6: map.put(entry.getKey(), tb.getFloat(entry.getKey())); break; } } if(list == null){ list = new ArrayList<Map<String,Object>>(); } list.add(map); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * @Description: 返回值为List,没有入参的情况 * @param functionName 调用的SAP方法名称 * @param keyTypeMap SAP方法返回的参数类型,KEY=返回参数名称,VALUE=返回参数类型; * @return Map<String,Object> SAP方法返回的参数值,KEY=返回参数名称,VALUE=返回参数值; * @throws */ public static List<Map<String,Object>> getList(String functionName,String tableName, Map<String,Integer> keyTypeMap){ JCoDestination jCoDestination = null; JCoFunction function = null; List<Map<String,Object>> list = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); function.execute(jCoDestination); JCoTable tb = function.getTableParameterList().getTable(tableName); for (int i = 0; i < tb.getNumRows(); i++) { tb.setRow(i); Map<String,Object> map = new HashMap<String,Object>(); for (Map.Entry<String, Integer> entry : keyTypeMap.entrySet()) { switch(entry.getValue().intValue()){ case 1: map.put(entry.getKey(), tb.getString(entry.getKey())); break; case 2: map.put(entry.getKey(), tb.getInt(entry.getKey())); break; case 3: map.put(entry.getKey(), tb.getLong(entry.getKey())); break; case 4: map.put(entry.getKey(), tb.getDouble(entry.getKey())); break; case 5: map.put(entry.getKey(), tb.getDate(entry.getKey())); break; case 6: map.put(entry.getKey(), tb.getFloat(entry.getKey())); break; } } if(list == null){ list = new ArrayList<Map<String,Object>>(); } list.add(map); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * @Description: 返回值为MAP,但有入参的情况 * @param functionName 调用的SAP方法名称 * @param paramMap SAP方法所需要的参数MAP,KEY=传入参数名称,VALUE=传入参数值; * @param keyTypeMap SAP方法返回的参数类型,KEY=返回参数名称,VALUE=返回参数类型; * @return Map<String,Object> SAP方法返回的参数值,KEY=返回参数名称,VALUE=返回参数值; * @throws */ public static Map<String,Object> getMap(String functionName, Map<String,Object> paramMap, Map<String,Integer> keyTypeMap){ JCoDestination jCoDestination = null; JCoFunction function = null; Map<String,Object> map = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); JCoParameterList parameterList = function.getImportParameterList(); for (Map.Entry<String, Object> entry : paramMap.entrySet()) { parameterList.setValue(entry.getKey(), entry.getValue()); } function.execute(jCoDestination); JCoParameterList resultList = function.getExportParameterList(); for (Map.Entry<String, Integer> entry : keyTypeMap.entrySet()) { if(map == null){ map = new HashMap<String,Object>(); } switch(entry.getValue().intValue()){ case 1: map.put(entry.getKey(), resultList.getString(entry.getKey())); break; case 2: map.put(entry.getKey(), resultList.getInt(entry.getKey())); break; case 3: map.put(entry.getKey(), resultList.getLong(entry.getKey())); break; case 4: map.put(entry.getKey(), resultList.getDouble(entry.getKey())); break; case 5: map.put(entry.getKey(), resultList.getDate(entry.getKey())); break; case 6: map.put(entry.getKey(), resultList.getFloat(entry.getKey())); break; } } } catch (Exception e) { e.printStackTrace(); } return map; } /** * @Description: 返回值为MAP,但没有入参的情况 * @param functionName 调用的SAP方法名称 * @param keyTypeMap SAP方法返回的参数类型,KEY=返回参数名称,VALUE=返回参数类型; * @return Map<String,Object> SAP方法返回的参数值,KEY=返回参数名称,VALUE=返回参数值; * @throws */ public static Map<String,Object> getMap(String functionName, Map<String,Integer> keyTypeMap){ JCoDestination jCoDestination = null; JCoFunction function = null; Map<String,Object> map = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); function.execute(jCoDestination); JCoParameterList resultList = function.getExportParameterList(); for (Map.Entry<String, Integer> entry : keyTypeMap.entrySet()) { if(map == null){ map = new HashMap<String,Object>(); } switch(entry.getValue().intValue()){ case 1: map.put(entry.getKey(), resultList.getString(entry.getKey())); break; case 2: map.put(entry.getKey(), resultList.getInt(entry.getKey())); break; case 3: map.put(entry.getKey(), resultList.getLong(entry.getKey())); break; case 4: map.put(entry.getKey(), resultList.getDouble(entry.getKey())); break; case 5: map.put(entry.getKey(), resultList.getDate(entry.getKey())); break; case 6: map.put(entry.getKey(), resultList.getFloat(entry.getKey())); break; } } } catch (Exception e) { e.printStackTrace(); } return map; } /** * @Description: 返回值为String,但没有入参的情况 * @param functionName 调用的SAP方法名称 * @param paramMap SAP方法所需要的参数MAP,KEY=传入参数名称,VALUE=传入参数值; * @param valueKey SAP方法返回的参数名称; * @return String SAP方法返回的参数值; * @throws */ public static String getString(String functionName, Map<String,Object> paramMap, String valueKey){ JCoDestination jCoDestination = null; JCoFunction function = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); JCoParameterList parameterList = function.getImportParameterList(); for (Map.Entry<String, Object> entry : paramMap.entrySet()) { parameterList.setValue(entry.getKey(), entry.getValue()); } function.execute(jCoDestination); JCoParameterList resultList = function.getExportParameterList(); return resultList.getString(valueKey); } catch (Exception e) { e.printStackTrace(); } return null; } /** * @Description: 返回值为String,但没有入参的情况 * @param functionName 调用的SAP方法名称 * @param valueKey SAP方法返回的参数名称; * @return String SAP方法返回的参数值; * @throws */ public static String getString(String functionName, String valueKey){ JCoDestination jCoDestination = null; JCoFunction function = null; try { jCoDestination = SapFactory.getConnection(); function = jCoDestination.getRepository().getFunction(functionName); function.execute(jCoDestination); JCoParameterList resultList = function.getExportParameterList(); return resultList.getString(valueKey); } catch (Exception e) { e.printStackTrace(); } return null; } }
public class SapFactory { private static SapFactory instance = null; private static String abap_as_pooled = "ABAP_AS_WITH_POOL"; private SapFactory(){ } public static JCoDestination getConnection(){ if(instance == null){ instance = new SapFactory(); instance.init(); } return instance.connection(); } private void init(){ Properties connectProperties = new Properties(); abap_as_pooled = AppContext.getSystemProperty("formFlowListener.abap_as_pooled"); connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, AppContext.getSystemProperty("formFlowListener.jco_ashost")); //连接IP connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, AppContext.getSystemProperty("formFlowListener.jco_sysnr")); //系统编号 connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, AppContext.getSystemProperty("formFlowListener.jco_client")); //SAP集团 connectProperties.setProperty(DestinationDataProvider.JCO_USER, AppContext.getSystemProperty("formFlowListener.jco_user")); //SAP用户名 connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, AppContext.getSystemProperty("formFlowListener.jco_passwd")); //密码 connectProperties.setProperty(DestinationDataProvider.JCO_LANG, AppContext.getSystemProperty("formFlowListener.jco_lang")); //登录语言 connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, AppContext.getSystemProperty("formFlowListener.jco_pool_capacity")); //最大连接数 connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, AppContext.getSystemProperty("formFlowListener.jco_peak_limit")); //最大连接线程 createDataFile(abap_as_pooled, "jcoDestination", connectProperties); } private void createDataFile(String name, String suffix, Properties properties){ File cfg = new File(name+"."+suffix); if(cfg.exists()){ cfg.deleteOnExit(); } try{ FileOutputStream fos = new FileOutputStream(cfg, false); properties.store(fos, "for tests only !"); fos.close(); }catch (Exception e){ e.printStackTrace(); throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e); } } private JCoDestination connection(){ JCoDestination destination =null; try { destination = JCoDestinationManager.getDestination(abap_as_pooled); } catch (JCoException e) { e.printStackTrace(); } return destination; } }
需要引入的 jar与dll文件
相关推荐
Java调用SAP RFC(Remote Function Call)是一种技术,允许Java应用程序与SAP系统进行通信,执行SAP系统中的特定业务逻辑。SAP RFC是SAP NetWeaver平台提供的一种接口技术,它允许外部系统调用SAP的功能模块,就像...
Java连接RFC(Remote Function Call)是一种技术,允许Java应用程序与SAP系统进行通信,执行SAP的业务逻辑。本文将详细解析标题和描述中提到的知识...通过学习和理解这些代码,可以更好地掌握Java与SAP RFC的交互技术。
JCo允许Java应用程序创建与SAP系统之间的连接,通过RFC接口进行交互。要使用JCo,你需要先在SAP系统中配置RFC目的地,然后在Java代码中设置相应的连接参数。 以下是调用SAP RFC的基本步骤: 1. **配置SAP RFC目的...
Java与SAP交互是企业级应用集成中的常见需求,JCO(Java Connector)是SAP提供的用于Java应用程序与SAP系统通信的接口。本篇将详细介绍如何利用JCO包进行Java与SAP的交互,以及如何处理jar包和dll文件。 首先,JCO...
总之,`sapjco3.jar`、`sapjco.jar`和`sapjco3.dll`是Java连接SAP RFC的关键组件,它们构成了Java与SAP系统交互的基础框架。正确理解和使用这些文件,可以帮助开发者高效地实现Java应用程序与SAP系统的集成。
Java在Linux环境中调用SAP RFC接口涉及到的关键技术点包括Java与SAP的集成、Linux系统下的动态链接库(.so文件)以及SAP的RFC(远程功能调用)技术。这里将详细介绍这些知识点。 首先,SAP RFC是SAP提供的一种通信...
JAVA与SAP数据交互主要涉及两种方式:RFC和IDoc。这两种方式都是为了实现JAVA应用程序与SAP系统之间的数据交换,使得非SAP系统能够利用SAP的强大功能和数据。 1. RFC(Remote Function Call)方式: RFC是SAP系统...
本文档主要介绍了如何在SAP ABAP系统与JAVA应用程序之间通过RFC(Remote Function Call远程函数调用)实现数据交互的具体实现方法。核心需求是在给定特定的选择条件下,从SAP系统的数据库表T001中提取数据,并将这些...
在描述中提到,“sapjco.jar”是JAVA连接SAP-RFC接口的开发包,这意味着它提供了必要的Java库,使开发者能够在Java环境中与SAP系统进行交互。这通常涉及到在Java应用程序中实现SAP的功能,如数据交换、业务流程集成...
### SAP NetWeaver RFC SDK:深入理解与应用 #### 核心知识点概览: 1. **SAP NetWeaver RFC SDK定义与作用** - SAP NetWeaver RFC SDK(Software Development Kit)是SAP官方提供的工具包,用于开发、集成和调用...
SAP JCo (Java Connector) 是SAP提供的Java接口,允许Java应用程序通过RFC与SAP系统进行通信。开发者使用JCo库可以创建 RFC 客户端,调用SAP系统中的函数模块,实现数据的导入和导出。 至于"newfile"这个文件名,...
Java调用SAP RFC驱动程序是企业集成中的常见场景,特别是在Windows环境下,SAP与Java应用的交互往往依赖于SAP提供的JCO(Java Connector)库。本文将深入讲解如何在Windows系统上配置和使用SAP JCO 3.0(sapjco30P_...
在SAP系统中,RFC(Remote Function Call)是一种远程过程调用技术,允许不同系统间进行数据交互和功能调用。本文将详细讨论如何通过Java来调用SAP的RFC接口,并涉及JCO3.0库的使用。 首先,JCO(Java Connector)...
首先,`SAP RFC`是一种接口技术,允许外部系统与SAP系统进行通信,执行SAP系统中的函数模块。通过RFC,非SAP应用可以访问SAP的业务逻辑和数据,实现双向数据交换。 SpringBoot是一个轻量级的Java框架,它简化了创建...
Java调用SAP RFC是一种常见的企业级集成技术,主要用于连接Java应用程序与SAP系统,实现数据交换和业务流程自动化。SAP RFC(Remote Function Call)是SAP提供的一种远程调用机制,允许不同系统间安全地交换数据和...
1. **启动VS2010并创建新项目**:创建一个ASP.NET Web应用程序或Windows应用程序,这将作为与SAP交互的平台。 2. **添加SAP Connector引用**:在解决方案资源管理器中右键点击项目,选择“添加引用”,然后找到SAP....
它实现了SAP系统的远程调用功能,允许Java代码通过JNI(Java Native Interface)与SAP系统交互。在Windows系统中,Java程序不能直接调用C/C++编写的原生代码,因此需要这样的DLL来桥接Java和SAP的原生接口。 2. sap...
描述中提到的几个文件是SAP Java Connector (JCo)的库文件,用于Java应用程序与SAP系统通过RFC接口进行通信: 1. `libsapjco3.so`:这是SAP JCo的动态链接库文件,用于Linux或Unix系统。它实现了SAP RFC接口,使得...
SAP JCO是SAP NetWeaver平台的一部分,它允许Java应用程序通过RFC协议与SAP系统交互。RFC是一种标准的SAP通信机制,允许远程调用SAP系统的功能模块,就像它们是在本地调用一样。 在Linux环境下设置SAP JCO,你需要...