【SAP-ABAP】JAVA通过SAP JCO(SAP.JAR)链接SAP需要注意哪些事项(SAP ROUTER连接报错)
需求:ATS(一款财务软件,可以理解为银企直连)升级,由本地化部署升级改为云服务部署
现实状况:
1.原ATS与SAP链接使用了SAP JCO的方式;
2.因为修改为云服务,所以要考虑外网和内网互通;
3.一般方案有:VPN、NGINX、跳板机、SAP ROUTER服务,鉴于多方面考虑,我们选择了SAP ROUTER服务的方式;
一、先了解一下SAP ROUTER,网上比我说得好,我也是网上看的;
https://www.cnblogs.com/hikarisama/p/10090901.html
代码截图
二、用另外一个服务器,开通SAP ROUTER服务(并用外网+GUI测试,SAP ROUTER是否可以使用)
一般这个是basis开通的,别问,问就是不会,一般建议开通3299端口
三、SAP ROUTER服务开通后,通过SAP JCO方式调用SAP
发现各种报错问题,罗列如下(我们内网本来是通的,外网不同的):
1.ERROR PARTNER 'ROUTER服务器IP (公网IP):端口3299' not reached;
2. ERROR HOSTNAME '你代码中填写的ROUTER值' UNKNOWN;
3.ERROR SERVICE 'SAPGW00' UNKNOWN;
4.ERROR INTERNAL ERROR;
5.NiRClientHandle: invalid data from server '192.168.0.183'during route completion;
6.Com.san.conn.Jco.Jcorxcention, Tnitialization of repository destination *** failed: Connect to SAP gateway failed;
7.查看ROUTER服务器上的DEV_ROUT和saprouter报错如下
然后针对这些问题,网上找了很多,大家也都有相同的问题,给几个我自己找到的觉得相对有用的网址吧
1.https://community.sap.com/t5/technology-q-a/error-in-saprouter-string/qaq-p/6812997
2.https://userapps.support.sap.com/sap/support/knowledge/en/2023501
3.https://help.sap.com/docs/SAP_NETWEAVER_AS_ABAP_FOR_SOH_740/e245703406684d8a81812f4c6334eb2f/486b5bf0b74c07bee10000000a42189d.html?locale=de-DE
四、网上关于ROUTER的值到底填什么,各说纷纭:
第一种
第二种
/H/ROURER 服务器IP /S/3299端口/H/SAP IP
第三种
/H/ROURER 服务器IP /S/端口(一般3299)/H/SAP IP/SAP 端口(一般3200)
第四种
/H/<SAProuter public IP>/H/<Target server IP>/H/.
等等 还有很多种
五.总结
1.开通SAP ROUTER服务;
2.JAVA端代码书写;
3.确认SAP ROUTER服务器的防火墙;
4.确认SAP ROUTER服务器上的服务;
5.确认SAP ROUTER服务器上的HOST文件(看一下是否需要配置);
6.重启SAP 服务器(我自己是缺了这一步,导致怎么链接都链接不同,MD,操,用了三天得到这个结果)
7.关于router:我用了 '/H/ROURER 服务器IP '这个方式,就是GUI里面填啥,代码里面填啥,大家有空也可以尝试其他的,我用其他的没有成功
6.重点
启动SAP router之后,重启SAP服务器,重启SAP服务器,重启SAP服务器,个人感觉很重要