SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming
JCo3.0调用SAP函数的过程
大致可以总结为以下步骤:
- 连接至SAP系统
- 创建JcoFunction接口的实例(这个实例代表SAP系统中相关函数)
- 设置importing参数
- 调用函数
- 从exporting参数或者table参数获取数据
package jco3.demo4;import org.junit.Test;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoField;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoRepository;
import com.sap.conn.jco.JCoStructure;public class RFC
{ public void getCompanyCodeDetail(String cocd) throws JCoException{// JCoDestination instance represents the backend SAP systemJCoDestination dest = JCoDestinationManager.getDestination("ECC");// JCoFunction instance is the FM in SAP we will useJCoRepository repository = dest.getRepository(); JCoFunction fm = repository.getFunction("BAPI_COMPANYCODE_GETDETAIL");if (fm == null){throw new RuntimeException("Function does not exists in SAP system."); } // set import parameter(s)fm.getImportParameterList().setValue("COMPANYCODEID", cocd);// call functionfm.execute(dest);// get company code detail from exporting parameter 'COMPANYCODE_DETAIL'JCoStructure cocdDetail = fm.getExportParameterList().getStructure("COMPANYCODE_DETAIL");this.printStructure(cocdDetail); } private void printStructure(JCoStructure jcoStru){ for(JCoField field : jcoStru){System.out.println(String.format("%s\\t%s", field.getName(), field.getString()));}}@Testpublic void test() throws JCoException{this.getCompanyCodeDetail("Z900");}
}
JCoFunction接口说明
JCoFunction
是一个接口,代表SAP系统的函数
JCoFunction
包含importing参数,exporting参数,changing参数,table参数。分别使用getImportParameterList
方法,getExportParameterList
方法,getChangingParameterList
方法和getTableParameterList
获得。这些方法的返回值都是JCoParameter
类型
JCoFunction.execute
方法实际执行函数
如何创建JCoFunction对象
上面的代码是第一种创建JCoFunction
实例的方法:
JCoRepository repository = dest.getRepository();
JCoFunction fm = dest.getRepository().getFunction("BAPI_COMPANYCODE_GETDETAIL");
如果我们不关心JCoRepository
,也可以这样写:
JCoFunction fm = dest.getRepository().getFunction("BAPI_COMPANYCODE_GETDETAIL");
第三种方法是使用JCoFunctionTemplate.getFunction
方法,JCoFunctionTemplate也是一个接口,代表SAP函数的meta-data。
JCoFunctionTemplate fmTemplate = dest.getRepository().getFunctionTemplate("BAPI_COMPANYCODE_GETDETAIL");
JCoFunction fm = fmTemplate.getFunction();
JCoStructure接口
BAPI_COMPANY_CODE_GETDETAIL函数的COMPANYCODE_DETAIL参数是一个结构,刚才我们看到遍历结构所有字段的方式:
private void printStructure(JCoStructure jcoStru)
{ for(JCoField field : jcoStru){System.out.println(String.format("%s\\t%s", field.getName(), field.getString()));}
}
因为JCoStructure实现了Iterable接口,所以可以采取上面的办法进行迭代。另外一种方法进行遍历:
private void printStructure2(JCoStructure jcoStructure)
{for (int i = 0; i < jcoStructure.getMetaData().getFieldCount(); i++){System.out.println(String.format("%s\\t%s", jcoStructure.getMetaData().getName(i),jcoStructure.getString(i)));}
}
作者:https://www.jianshu.com/u/fd37d4449963
SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming相关推荐
- SAP接口编程 之 JCo3.0系列:Table参数
Table参数作为export parameter BAPI_COMPANYCODE_GETDETAIL是一个适合演示的函数,没有import paramter参数,调用后COMPANYCODE_GE ...
- 农行支付php,农行网上支付平-B2C接口编程指南-PHP_Edition-V1.0.doc
农行网上支付平-B2C接口编程指南-PHP_Edition-V1.0 中国农业银行网上支付平台 B2C PHP商户接口编程指南 Java Edition V1.0 修订历史纪录 日期版本说明作者200 ...
- java 网银支付收款接口_农行网上支付平台-商户接口编程指南-Java_Edition-V3.0.2.pdf...
农行网上支付平台-商户接口编程指南-Java_Edition-V3.0.2 中国农业银行网上支付平台 商户接口编程指南 Java Edition V3.0.2 农行网上支付平台 商户接口编程指南 –J ...
- SAP接口编程案例 - VBA批量更新销售订单定价类型
碰到一个需求,需要对销售订单的定价类型进行批量更新,对这种临时批量处理,考虑到数据源一般放在 Excel 中,使用 VBA 来调用 BAPI 实现不失为一种快捷的方式. 了解 BAPI 如何使用 更改 ...
- 如何使用JCO3.0同时访问多个SAP系统
代码实现如下,从上到下依次调用,直到被获取连接为止. JCOProvider类似注册中心,注册连接信息. 如有问题请参考: 如何使用JCO3.0同时访问多个SAP系统 SAP接口编程 之 JCo3.0 ...
- SpringBoot2.0系列--02--Controller
SpringBoot2.0系列–02–Controller 文章目录 SpringBoot2.0系列--02--Controller 写在前面 示例 对于整个Controller类 Controlle ...
- springboot 对接sap接口,不生成连接配置文件文件的方法。
springboot 对接sap接口,不生成连接配置文件文件的方法. 网上大部分都是要生成两个连接文件,导致部署的时候,要考虑jar和文件怎么部署,很不方便.本文只记录,不生成连接文件这一种方式. 1 ...
- java获取sap接口数据
一.方式一接口数据读取及返回值 public class SapConnect {static final String ABAP_AS_POOLED = "ABAP5_WITHOUT_PO ...
- arduino nano 蓝牙_掌控板IO接口编程入门 | 用Arduino玩转掌控板(ESP32)系列
众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...
- 设计模式-02.经典设计原则-第一节-单一职责原则,开闭原则,里式替换,接口隔离【万字长文系列】
文章目录 设计模式经典设计原则-第一节 单一职责原则(SRP) 如何理解单一职责原则? 如何判断类的职责是否足够单一? 类的职责是否设计得越单一越好? 开闭原则(OCP) 如何理解"对扩展开 ...
最新文章
- springmvc的执行流程详解
- 实战能力|一文看懂GDB调试底层实现
- OpenFOAM算例报错,浮点溢出错误,Floating point exception【汇总】
- C - Insertion Sort Gym - 101955C(2018icpc沈阳/打表找规律)
- 如何在linux当中,大量的添加用户
- 微信商户号转账到个人银行卡加密算法及结果查询问题
- Android 日历表事件表操作
- 软件脱壳常见的几种方法
- 解决 primordials is not defined 问题
- SpringBoot项目怎么重命名
- 今天在淘宝网购物,保证你省钱!又见系统升级Bug?(看图片)
- Ubuntu下,用键盘定义鼠标按键
- 分享2个在线图表制作工具
- 关于IOS中uni.downloadFile下载的图片显示不出来的解决方法
- Keras之model.fit_generator()的使用
- 随机失活 dropout直观理解
- magento系统自带批量小结
- 邓西百度网盘批量分享工具
- 使用lib库模式打包vue组件及组件引用
- Linux下开启/关闭MySql Server