千家信息网

如何使用Java connector消费ABAP系统的函数

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,小编给大家分享一下如何使用Java connector消费ABAP系统的函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
千家信息网最后更新 2025年11月14日如何使用Java connector消费ABAP系统的函数

小编给大家分享一下如何使用Java connector消费ABAP系统的函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

我的ABAP系统有个函数名叫ZDIS_GET_UPSELL_MATERIALS,输入一个customer ID和product ID,会输出为这对客户和product组合维护的一组Upsell product ID和描述信息。

测试如下:

下面是使用Java消费该函数的代码:

package jco;import java.io.File;import java.io.FileOutputStream;import java.util.Properties;import com.sap.conn.jco.JCoDestination;import com.sap.conn.jco.JCoDestinationManager;import com.sap.conn.jco.JCoException;import com.sap.conn.jco.JCoFunction;import com.sap.conn.jco.JCoParameterList;import com.sap.conn.jco.JCoRepository;import com.sap.conn.jco.JCoTable;import com.sap.conn.jco.ext.DestinationDataProvider;/** * basic examples for Java to ABAP communication   * See help: https://help.sap.com/saphelp_nwpi711/helpdata/en/48/70792c872c1b5ae10000000a42189c/frameset.htm */public class StepByStepClient{        static String DESTINATION_NAME = "ABAP_AS_WITHOUT_POOL";        static public final String ABAP_DURATION = "abapLayerDuration";        static public final String UPSELL_PRODUCT = "upsellProducts";        static public final String PRODUCT_ID = "productID";        static public final String PRODUCT_TEXT = "productText";            static private Properties prepareProperty(){        Properties connectProperties = new Properties();        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "your abap system host name");        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "111");        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "WANGJER");        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "your password");        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");        createDestinationDataFile(DESTINATION_NAME, connectProperties);        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");        createDestinationDataFile(DESTINATION_NAME, connectProperties);        return connectProperties;    }        static public void main(String[] arg) {            createDestinationDataFile(DESTINATION_NAME, prepareProperty());                        JCoDestination destination = null;                try {                        destination = JCoDestinationManager.getDestination(DESTINATION_NAME);                        JCoRepository repo = destination.getRepository();                    JCoFunction stfcConnection = repo.getFunction("ZDIS_GET_UPSELL_MATERIALS");                    JCoParameterList imports = stfcConnection.getImportParameterList();                            String customerID = "1000040";                    String materialID = "11";                    imports.setValue("IV_CUSTOMER_ID", customerID);                    imports.setValue("IV_MATERIAL_ID", materialID);                    stfcConnection.execute(destination);                            JCoParameterList exports = stfcConnection.getExportParameterList();                                        // int result = exports.getInt("EV_RESULT");                int abapDuration = exports.getInt("EV_DURATION");                                StringBuilder sb = new StringBuilder();                sb.append("{ \"" + ABAP_DURATION + "\": " + abapDuration + ",");                                sb.append("\"" + UPSELL_PRODUCT + "\":[");                                JCoTable codes = exports.getTable("ET_MATERIALS");                                int row = codes.getNumRows();                System.out.println("Total rows: " + row);                                System.out.println("ABAP duration: " + abapDuration);                                for( int i = 0; i < row; i++){                        codes.setRow(i);                System.out.println(codes.getString("MATERIAL_ID") + '\t' + codes.getString("MATERIAL_TEXT"));                sb.append("{\"" + PRODUCT_ID + "\":" + codes.getString("MATERIAL_ID") + ","                                + "\"" + PRODUCT_TEXT + "\":\"" + codes.getString("MATERIAL_TEXT") + "\"");                if( i < row - 1){                        sb.append("},");                }                else{                        sb.append("}");                }                }                sb.append("]}");                                System.out.println("Final json: " + sb.toString());                                } catch (JCoException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }            }        static private void createDestinationDataFile(String destinationName, Properties connectProperties)    {        File destCfg = new File(destinationName+".jcoDestination");        try        {            FileOutputStream fos = new FileOutputStream(destCfg, false);            connectProperties.store(fos, "for tests only !");            fos.close();        }        catch (Exception e)        {            throw new RuntimeException("Unable to create the destination files", e);        }    }}

为简单起见没有使用Google的gson库进行Json的序列化。

执行结果:

以上是"如何使用Java connector消费ABAP系统的函数"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

函数 系统 消费 篇文章 内容 不怎么 代码 信息 大部分 客户 序列 更多 知识 结果 行业 资讯 资讯频道 频道 参考 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网站网络安全的意见建议 贵州优趣网络技术有限公司 浦东新区网络技术服务信息推荐 互联网数据库实践课机考 章丘制造业管理软件开发公司 es搜索数据库 农产品直播电商软件开发解决方案 龙岩电信网络安全宣传 培训公司学习软件开发 公安局招聘网络安全人才吗 南宁的软件开发公司有哪些 河南企业软件开发服务价格 香港供应链软件开发 桂林手机软件开发 数据库系统编程入门 如何防止5g网络安全风险 公司内网服务器连接网络老是断 新华三服务器远程管理 今天从服务器 怎么读取网页上传服务器的信息 学网络技术的女生多吗 dhcp中服务器选项什么意思 计算机网络技术培训ppt 电脑安装数据库怎么找回来 淘宝用的第三方服务器 公安部网络安全生产认证厂家 福州防伪软件开发有限公司 网吧服务器可以搬回家用吗 康佳电视服务器下载不上东西 网络安全公司盈利如何
0