Java调用SAP获取数据

1 篇文章 0 订阅

http://www.jacksonlhj.cn/articles/2022/03/03/1646289030442.html

序言

公司最近有个需求,需要Web端调用SAP的接口获取数据,其实主要用到sapjco.jar,大概流程就是通过配置SAP对应的连接信息获取SAP连接,然后执行SAP端同事给出的Function,改Funtion的参数和返回的表格名等需要与SAP端同事确认才能准确获取对应的值。

Don’t say too much,let’s get it!

一、首先引入Maven依赖
在pom.xml中引入sapjco.jar

<dependency>
            <groupId>com.sap</groupId>
            <artifactId>sapjco</artifactId>
            <version>3.0</version>
</dependency>

若你已经下载好了该Jar包,你只需要引入本地jar包即可。

 <!-- 将/resources/sapjco下的saojco3.jar添加到环境中,编译可以,打包时不会加到lib中 -->
 <dependency>
            <groupId>com.vtech.packiglist</groupId>
            <artifactId>sapjco</artifactId>
            <scope>system</scope>
            <version>1</version>
            <systemPath>${project.basedir}/src/main/resources/lib/sapjco3.jar</systemPath>
 </dependency>

二、把对应的SAP的配置文件放置在Tomcat的bin目录下

把ABAP_AS_WITH_POOL.jcoDestination(默认命名)配置文件直接复制到Tomcat的bin目录下。

以下为对应的参数信息,你只需要把对应的参数填上即可。

jco.client.lang=EN
jco.destination.peak_limit=
jco.client.client=
jco.client.passwd=
jco.client.user=
jco.client.sysnr=
jco.destination.pool_capacity=
jco.client.ashost=

三、编写与SAP交互的代码
下面给出查询SAP中的table的例子

public List<SapCartonRespVO> findSapCarton(String plant, String model) throws Exception {
        JCoDestination dest = null;
        //ABAP_AS_WITH_POOL,默认加载Tomcat下的ABAP_AS_WITH_POOL配置文件
        dest = JCoDestinationManager
                .getDestination(GlobalConstant.ABAP_AS_POOLED);
        //执行SAP给出的function
        JCoFunction function = dest.getRepository()
                .getFunctionTemplate(GlobalConstant.ZSD_MB52).getFunction();
        //传入单值参数
        JCoParameterList imlist = function.getImportParameterList();
        //传入table参数
        JCoParameterList tmlist = function.getTableParameterList();
        JCoTable tab = tmlist.getTable("IT_WERKS");
        tab.appendRow();
        tab.setValue("SIGN", "I");
        tab.setValue("OPTION", "EQ");
        tab.setValue("LOW", plant);  
        JCoTable matnrTab = tmlist.getTable("IT_MATNR");
        matnrTab.appendRow();
        matnrTab.setValue("SIGN", "I");
        matnrTab.setValue("OPTION", "EQ");
        matnrTab.setValue("LOW", model);
        //执行Sap的function
        function.execute(dest);
       //获取SAP中返回的数据
        JCoTable cartonData = tmlist.getTable("IT_ZSERNR");
        int cartonDataSize = cartonData.getNumRows();
        List<SapCartonRespVO> list = new ArrayList<>();
        if (cartonDataSize > 0) {
            for (int i = 0; i < cartonDataSize; i++) {
                cartonData.setRow(i);
                SapCartonRespVO sapCarton = new SapCartonRespVO();
                sapCarton.setPlant(cartonData.getString("WERKS"));
                sapCarton.setModel(cartonData.getString("MATNR"));
                list.add(sapCarton);
            }
        }
        return list;
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SAP IDoc开发是在Java编程语言下进行SAP系统中IDoc接口的开发工作。SAP系统是一种企业资源规划(ERP)软件,用于管理企业各个部门的业务流程和数据。IDoc(Intermediate Document)是SAP系统中用于将数据和业务信息传递给不同模块之间的标准数据格式。 Java SAP IDoc开发主要包括以下几个方面的工作: 1. IDoc解析和生成:通过Java编程语言处理和解析IDoc文件,将其转化为可操作的数据格式,并且可以根据业务需求生成符合SAP系统要求的IDoc文件。 2. 与SAP系统的通信:通过Java连接SAP系统,进行数据的读取、写入和更新操作。使用SAP Java Connector(JCo)或其他相关的API,与SAP系统进行通信,并将处理后的IDoc数据传输到SAP系统或从SAP系统中获取数据。 3. IDoc数据转换和映射:将外部系统的数据格式转换为与SAP系统中IDoc接口兼容的格式,以确保数据的正确传递和处理。同时,还需要进行数据字段的映射和转换,使得源系统和目标系统之间的数据可以正确匹配。 4. 错误处理和日志记录:在进行Java SAP IDoc开发过程中,可能会出现各种错误和异常情况。在开发过程中需要进行错误处理和异常处理,保证程序的稳定运行,并在需要的时候生成相关日志记录,以便进行排查和分析。 Java SAP IDoc开发可以实现不同系统之间的数据交互和信息传递,有效地整合企业各个部门的业务流程。同时,由于Java语言具有跨平台的特性,可以保证IDoc接口的可移植性和灵活性,方便进行跨系统的接口开发和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值