Java OA集成SAP BO
SAP BO报表查看需要登录SAP BO系统,为了方便公司希望将BO报表集成到OA系统中,所以参考网上资料加上与SAP BO的顾问咨询整理出一套通过Java来集成SAP BO的功能。
SAPBO中的报表链接为:http://ip:port/BOE/Xcelsius/opendoc/documentDownload?iDocID=FvWSEVkQXQgAPEcAAADn8KADAFBWr2gK&CELogonToken=***
Java集成的报表链接为:http://ip:port/BOE/OpenDocument/opendoc/openDocument.jsp?sIDType=CUID&iDocID=FnMYaVYDPgkAzA0AAAAHEX0AAFBWr2lv&token=***
Java集成的重点是如何来获取token参数值来跳转到相应的报表。参考网上方案得到如下代码可以获取到token。
1 HttpSession session = request.getSession(); 2 3 String cms = "***.***.***.***:6400"; 4 5 //认证的安全类型,类型是以上几种,如果是SAP,则类型字符为secSAPR3 6 String authentication = "secSAPR3"; 7 8 //用户名,如果是SAP系统方式登录,格式为bwp~888/eiacext1 9 String poUsername = "BOUSER"; 10 String poPassword = "PASSWORD";//密码 11 12 //登录并获得TOKEN,并命名用OpenDocument方式打开一个文件 13 ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr(); 14 IEnterpriseSession enterpriseSession = sessionMgr.logon(poUsername, poPassword, cms,authentication); 15 ILogonTokenMgr mgr = enterpriseSession.getLogonTokenMgr(); 16 17 /** 18 * 19 * String token=logonTokenMgr.createLogonToken("",10,5); 20 其中createLogonToken(java.lang.String clientComputerName, int validMinutes, int validNumOfLogons) 21 clientComputerName为使用这个token的客户端计算机名,空字符串表示该token可被任何客户端使用; 22 validMinutes为token的有效时间(分钟); 23 validNumOfLogons 表示该token允许被使用的最大次数。 24 * 25 */ 26 String tokenStr = mgr.createLogonToken("",24*60,Integer.MAX_VALUE); 27 28 session.getServletContext().setAttribute("token", tokenStr);
通过代码查询所需要的jar包入下图所示:
引入了这些jar包之后运行成功跳转到了相应的报表,接下来遇到一个问题要通过OA来控制数据权限及传输相应的报表参数到BO报表。
查询BOE中opendocument使用说明,找到lsS[name]的参数方式来通过Java传输相应name参数到BO报表。
最终得到链接:
http://ip:port/BOE/OpenDocument/opendoc/openDocument.jsp?sIDType=CUID&iDocID=FnMYaVYDPgkAzA0AAAAHEX0AAFBWr2lv&lsSparamString=h&token=***
相关的BOE中opendocument使用说明可以参考:https://wenku.baidu.com/view/09a002280066f5335a81217a.html
代码的相关实现参考:http://www.cnblogs.com/yangzhilong/p/3352153.html