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相关推荐

  1. SAP接口编程 之 JCo3.0系列:Table参数

    Table参数作为export parameter BAPI_COMPANYCODE_GETDETAIL是一个适合演示的函数,没有import paramter参数,调用后COMPANYCODE_GE ...

  2. 农行支付php,农行网上支付平-B2C接口编程指南-PHP_Edition-V1.0.doc

    农行网上支付平-B2C接口编程指南-PHP_Edition-V1.0 中国农业银行网上支付平台 B2C PHP商户接口编程指南 Java Edition V1.0 修订历史纪录 日期版本说明作者200 ...

  3. java 网银支付收款接口_农行网上支付平台-商户接口编程指南-Java_Edition-V3.0.2.pdf...

    农行网上支付平台-商户接口编程指南-Java_Edition-V3.0.2 中国农业银行网上支付平台 商户接口编程指南 Java Edition V3.0.2 农行网上支付平台 商户接口编程指南 –J ...

  4. SAP接口编程案例 - VBA批量更新销售订单定价类型

    碰到一个需求,需要对销售订单的定价类型进行批量更新,对这种临时批量处理,考虑到数据源一般放在 Excel 中,使用 VBA 来调用 BAPI 实现不失为一种快捷的方式. 了解 BAPI 如何使用 更改 ...

  5. 如何使用JCO3.0同时访问多个SAP系统

    代码实现如下,从上到下依次调用,直到被获取连接为止. JCOProvider类似注册中心,注册连接信息. 如有问题请参考: 如何使用JCO3.0同时访问多个SAP系统 SAP接口编程 之 JCo3.0 ...

  6. SpringBoot2.0系列--02--Controller

    SpringBoot2.0系列–02–Controller 文章目录 SpringBoot2.0系列--02--Controller 写在前面 示例 对于整个Controller类 Controlle ...

  7. springboot 对接sap接口,不生成连接配置文件文件的方法。

    springboot 对接sap接口,不生成连接配置文件文件的方法. 网上大部分都是要生成两个连接文件,导致部署的时候,要考虑jar和文件怎么部署,很不方便.本文只记录,不生成连接文件这一种方式. 1 ...

  8. java获取sap接口数据

    一.方式一接口数据读取及返回值 public class SapConnect {static final String ABAP_AS_POOLED = "ABAP5_WITHOUT_PO ...

  9. arduino nano 蓝牙_掌控板IO接口编程入门 | 用Arduino玩转掌控板(ESP32)系列

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  10. 设计模式-02.经典设计原则-第一节-单一职责原则,开闭原则,里式替换,接口隔离【万字长文系列】

    文章目录 设计模式经典设计原则-第一节 单一职责原则(SRP) 如何理解单一职责原则? 如何判断类的职责是否足够单一? 类的职责是否设计得越单一越好? 开闭原则(OCP) 如何理解"对扩展开 ...

最新文章

  1. springmvc的执行流程详解
  2. 实战能力|一文看懂GDB调试底层实现
  3. OpenFOAM算例报错,浮点溢出错误,Floating point exception【汇总】
  4. C - Insertion Sort Gym - 101955C(2018icpc沈阳/打表找规律)
  5. 如何在linux当中,大量的添加用户
  6. 微信商户号转账到个人银行卡加密算法及结果查询问题
  7. Android 日历表事件表操作
  8. 软件脱壳常见的几种方法
  9. 解决 primordials is not defined 问题
  10. SpringBoot项目怎么重命名
  11. 今天在淘宝网购物,保证你省钱!又见系统升级Bug?(看图片)
  12. Ubuntu下,用键盘定义鼠标按键
  13. 分享2个在线图表制作工具
  14. 关于IOS中uni.downloadFile下载的图片显示不出来的解决方法
  15. Keras之model.fit_generator()的使用
  16. 随机失活 dropout直观理解
  17. magento系统自带批量小结
  18. 邓西百度网盘批量分享工具
  19. 使用lib库模式打包vue组件及组件引用
  20. Linux下开启/关闭MySql Server

热门文章

  1. widnows下lua开发环境luadist LuaRocks搭建
  2. 信号与系统实验八 音频信号的时域、频域观测分析与图像的幅频相频重构
  3. 编译原理(九)——递归下降法
  4. Pytorch搭建网络模型
  5. 【历史上的今天】3 月 1 日:个人计算机鼻祖问世;天涯社区上线;Shell 排序算法作者诞生
  6. 有限元法基本思想和分类
  7. 数学建模入门-matlab实现偏微分方程数值解
  8. 验证性因子分析(三)
  9. 打印机喷嘴清洗必杀武器
  10. Linux 虚拟机配置静态IP地址