自己从网上把自己的代码拷回来,文章时间大约是2017年。

SAP JCO版本 3.0.18, 官网例子代码文件 StepByStepServer.java,保留其中第4个例子函数,实现sap call  java server.

/* 第一步,SAP系统中,rz10里面参数gw/acl_mode的值要0才可以,运行SM59有注册网关服务。
/* 第二步,SAP系统中,SE37里面定义一个远程调用的函数JCO_SET_TRACE。
FUNCTION JCO_SET_TRACE.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  IMPORTING
*"     VALUE(TRACE_LEVEL) TYPE  SY-LISEL
*"     VALUE(TRACE_PATH) TYPE  SY-LISEL
*"----------------------------------------------------------------------
ENDFUNCTION.

第三步,SE38里面做一个程序来调用这个远程的function
REPORT ZTEST_JCO_SET_TRACE.
DATA trace_level TYPE N.
        DATA trace_path TYPE STRING.

DATA msg(255) TYPE C.

trace_level = '555555555'.
        trace_path = '33333333333333.'.

CALL FUNCTION 'JCO_SET_TRACE' destination 'JCO_SERVER'
          EXPORTING
            TRACE_LEVEL = trace_level
            TRACE_PATH = trace_path
         EXCEPTIONS
           COMMUNICATION_FAILURE       = 1
           SYSTEM_FAILURE              = 2 MESSAGE msg
           RESOURCE_FAILURE            = 3
           OTHERS                      = 4
                  .
        IF SY-SUBRC <> 0.
           write: 'ERROR: ',  SY-SUBRC, msg.
        ENDIF.

第四点,SM59中NCO连接项目里面,有一个“注册的服务器程序,程序标识【】”,需要同程序配置文件中,server参数中的PROGRAM_ID一致。  这个程序名称,还可以在SMGW中的登陆客户端信息中看到。

在DEV系统测试通过,先放上代码,有空再来仔细解读。

import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
import java.io.File;
import java.io.FileOutputStream;import com.sap.conn.jco.AbapException;
import com.sap.conn.jco.JCoContext;
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.JCoFunctionTemplate;
import com.sap.conn.jco.JCoStructure;
import com.sap.conn.jco.JCoTable;
import com.sap.conn.jco.JCo;
import com.sap.conn.jco.JCoCustomRepository;
import com.sap.conn.jco.JCoListMetaData;
import com.sap.conn.jco.JCoMetaData;import com.sap.conn.jco.ext.DestinationDataProvider;
import com.sap.conn.jco.ext.ServerDataProvider;import com.sap.conn.jco.server.DefaultServerHandlerFactory;
import com.sap.conn.jco.server.JCoServer;
import com.sap.conn.jco.server.JCoServerContext;
import com.sap.conn.jco.server.JCoServerContextInfo;
import com.sap.conn.jco.server.JCoServerErrorListener;
import com.sap.conn.jco.server.JCoServerExceptionListener;
import com.sap.conn.jco.server.JCoServerFactory;
import com.sap.conn.jco.server.JCoServerFunctionHandler;
import com.sap.conn.jco.server.JCoServerState;
import com.sap.conn.jco.server.JCoServerStateChangedListener;
import com.sap.conn.jco.server.JCoServerTIDHandler;public class StepByStepServer
{static String SERVER_NAME1 = "SERVER";static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";static  {Properties connectProperties = new Properties();connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST,"10.0.3.51");connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,"00");connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT,"100");connectProperties.setProperty(DestinationDataProvider.JCO_USER,"60489");connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD,"********");connectProperties.setProperty(DestinationDataProvider.JCO_LANG,"ZH");createDataFile(DESTINATION_NAME1, "jcoDestination",connectProperties);connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");createDataFile(DESTINATION_NAME2, "jcoDestination",connectProperties);Properties servertProperties = new Properties();servertProperties.setProperty(ServerDataProvider.JCO_GWHOST,"10.0.3.51");servertProperties.setProperty(ServerDataProvider.JCO_GWSERV,"3300");servertProperties.setProperty(ServerDataProvider.JCO_PROGID,"JCO_SERVER");servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST,"ABAP_AS_WITH_POOL");servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");createDataFile(SERVER_NAME1, "jcoServer",servertProperties);}static void createDataFile(String name, String suffix, Properties properties){File cfg = new File(name+"."+suffix);if(!cfg.exists()){ try{FileOutputStream fos = new FileOutputStream(cfg,false);properties.store(fos, "for tests only !");fos.close();}catch (Exception e){throw new RuntimeException("Unable to create thedestination file " + cfg.getName(), e);}}} /*** The following server example demonstrates how to develop a function module available only on Java side. At first* we create the respective function meta data, because the function is not available in ABAP DDIC. Then the function* meta data is stored in a custom repository which is registered with the server instance. Naturally we also* need the implementation of the function - see the class SetTraceHandler. * * Last but not least, the following ABAP report invokes the function module SetTraceHandler.REPORT  ZTEST_JCO_SET_TRACE.DATA trace_level TYPE N.DATA trace_path TYPE STRING.DATA msg(255) TYPE C.trace_level = '5'.trace_path = '.'.CALL FUNCTION 'JCO_SET_TRACE' destination 'JCO_SERVER'EXPORTINGTRACE_LEVEL = trace_levelTRACE_PATH = trace_pathEXCEPTIONSCOMMUNICATION_FAILURE       = 1SYSTEM_FAILURE              = 2 MESSAGE msgRESOURCE_FAILURE            = 3OTHERS                      = 4.IF SY-SUBRC <> 0.write: 'ERROR: ',  SY-SUBRC, msg.ENDIF.     */static class MyFunction implements JCoServerFunctionHandler{public void handleRequest(JCoServerContext serverCtx, JCoFunction function){int level = function.getImportParameterList().getInt("TRACE_LEVEL");String path = function.getImportParameterList().getString("TRACE_PATH");System.out.println("A:" + level + " B:"+ path);//  JCo.setTrace(level, path);}}    public static void main(String[] a){JCoListMetaData impList = JCo.createListMetaData("IMPORTS");impList.add("TRACE_LEVEL", JCoMetaData.TYPE_NUM, 1, 2, 0, null, null, JCoListMetaData.IMPORT_PARAMETER, null, null);impList.add("TRACE_PATH", JCoMetaData.TYPE_STRING, 8, 8, 0, null, null, JCoListMetaData.IMPORT_PARAMETER, null, null);impList.lock();JCoFunctionTemplate fT = JCo.createFunctionTemplate("JCO_SET_TRACE", impList, null, null, null, null);JCoCustomRepository cR = JCo.createCustomRepository("MyCustomRepository");cR.addFunctionTemplateToCache(fT); //Repository add FunctionTemplateJCoServer server ;try{server = JCoServerFactory.getServer(SERVER_NAME1); //create server}catch(JCoException ex){throw new RuntimeException("Unable to create the server " + SERVER_NAME1 + " because of " + ex.getMessage(), ex);}String repDest = server.getRepositoryDestination();System.out.println("repDest:"+ repDest);if(repDest!=null){try{cR.setDestination(JCoDestinationManager.getDestination(repDest)); //Repository setDestination}catch (JCoException e) {               }}server.setRepository(cR); //server add RepositoryJCoServerFunctionHandler myf = new MyFunction();DefaultServerHandlerFactory.FunctionHandlerFactory factory = new DefaultServerHandlerFactory.FunctionHandlerFactory();factory.registerHandler(fT.getName(), myf);server.setCallHandlerFactory(factory);server.start();System.out.println("The program can be stoped using <ctrl>+<c>");}
}

SAP JCO3 官网代码解读 sap call java server相关推荐

  1. pytorch实现:Resnet模型识别花朵数据集(参考pytorch官网代码)

    pytorch实现:Resnet模型识别花朵数据集 一.pytorch实现:Resnet模型识别花朵数据集 1.1 训练模型 1.2 图像预测和可视化 1.3 对新来的数据进行处理和展示 一.pyto ...

  2. html制作小米官网代码,仿小米官网(html+js+css)

    [实例简介] 学习前端知识时写的一个仿小米官网的一些页面+css样式+js验证代码 [实例截图] [核心代码] 小米官网(高仿) └── xiaomi ├── css_1 │   ├── financ ...

  3. 顺丰官网代码(自编)

    <!DOCTYPE html> <html> <head> <title>顺丰官网</title> <meta charset=&qu ...

  4. SAP ABAP 官网文档

    https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abenabap.htm 自行查看,多看文档有帮助!

  5. MATLAB实现自编码器(六)——变分自编码器(VAE)官网代码的改进

    本文内容参考了Conditional VAE (Variational Auto Encoder) 条件付きVAE 是对官方网页Train Variational Autoencoder (VAE) ...

  6. 全国计算机二级java考试官网_全国计算机二级Java考试题库

    在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合.数据和方法一起描述对象(object)的状态和行为.下面是关于全国计算机二级Java考试题库,希望大家认真阅读! 全国计算机二级J ...

  7. SAP ME架构官网文档学习总结

    认证平台 SAP ME PAM(Platform Availability Matrix ) 安装的应用以及相应的数据库均可在官网上进行查看https://support.sap.com/pam 最低 ...

  8. SAP成都研究院廖婧:SAP C4C社交媒体集成概述

    曾经有朋友在知乎上向我提问,咨询在SAP成都研究院工作的体验. 当时,我的回答提到一点,SAP注重工作与生活的平衡,这也是SAP中国官网强调的一点. https://www.sap.com/china ...

  9. 搜索 SAP成都研究院廖婧:SAP C4C社交媒体集成概述

    曾经有朋友在知乎上向我提问,咨询在SAP成都研究院工作的体验. 当时,我的回答提到一点, SAP注重工作与生活的平衡 ,这也是SAP中国官网强调的一点. https://www.sap.com/chi ...

  10. 微信企业转账JAVA版(包括:1,转账个人零钱;2,转账个人银行卡;3,微信官网的SDK3.0.9存在的支付问题)

    前言: 最近公司做产品,有这样几个需求 微信退款 微信企业给用户转账到零钱 通过微信给用户转账到银行卡 支付宝退款 支付宝转账到余额 根据上述需求,本人呢,做了几天的研究与学习,在此期间不免会出现摇头 ...

最新文章

  1. iphone开发小技巧,转载
  2. 说说第三方支付接口开发及开发中遇到的坑爹问题
  3. android 一个很漂亮的控件ObservableScrollView(含片段代码和源码)
  4. Ubuntu: 谷歌日历指示器托盘软件
  5. 选择用 Java 开发 GUI:
  6. 《Ray Tracing in One Weekend》——Chapter 8: Metal
  7. 2020行政区划重新划分_邯郸市的20年,2000年-2020年区划对比,你觉得成绩如何?...
  8. 区块链 FISCO BCOS网络端口讲解
  9. android使用的数据,在 Android 应用中使用数据 - Xamarin | Microsoft Docs
  10. 跟着莫烦python 从零开始强化学习之Q-Learning 一维探索者 代码完整注释版
  11. 高校学生竞赛信息管理系统介绍
  12. win10系统下xilinx烧写器不亮
  13. Excel简单学习笔记(1)
  14. 牛客小白月赛24 D.牛妹吃豆子
  15. 关于安装wordcloud库的那些事
  16. 设备管理 android问号,设备管理查有问号怎么修理
  17. 超声成像_人工智能如何帮助转变医学超声成像
  18. Android实现异步加载图片 ListView
  19. SAR成像处理软件运行环境配置(AGX平台)
  20. oj网站的训练题:输入两个数A,B,输出A+B的值(标准题解)

热门文章

  1. c语言ABCDEF前中后序遍历,c语言实现二叉树及前中后序遍历
  2. matlab三角区域积分,关于复杂三角函数的二重积分,matlab该怎么求啊
  3. 曼妙音色要靠煲 多媒体音箱煲机大法
  4. RC串联延时电路电容充电时间计算
  5. IMM将软件测试成熟度分为5个,软件测试成熟度模型
  6. 爱立信、EMC笔试面试
  7. echarts制作航线轨迹原来是这样的
  8. openv Mat 之 forEach 操作
  9. PPC手机上用Skype打电话的方法
  10. Office2010初次体验之应用程序安全性