如何使用Java connector消费ABAP系统的函数
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下如何使用Java connector消费ABAP系统的函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
千家信息网最后更新 2026年11月03日如何使用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安全错误
数据库的锁怎样保障安全
互联网加科技
百单网互联网科技有限公司
互联网科技工作委员会主任
互联网的科技
圆梦互联网科技
互联网巨头反垄断金融科技
互联网络科技有限公司
高科技与互联网
奇酷互联网络科技
互联网科技大会
互联网科技汛
剑昆互联网络科技有限公司临桂
银川新华互联网科技职业技术培训学校图片
互联网系的金融科技公司
广州恒生互联网科技有限
阿大互联网科技有限公司
互联网科技大赛获奖感言
合肥互联网科技公司公章图片
互联网金融科技公司的优势
中国互联网公司的科技投入
上海喔噻互联网科技有限公司
互联网与科技金融数据
上海互联网科技有限公司
致骋互联网科技
互联网科技博客
互联网 科技馆
汽车互联网创新科技园
互联网媒体平台算高科技产业
厦门江牛科技互联网
中国科技和美国互联网