请注意,除SCN使用条款外,以下条款和条件适用于您对任何示例代码或示例应用程序的使用。示例代码和示例应用程序仅作为示例和说明目的提供。SAP示例代码和示例应用程序不用于生产或商业用途,除非另有特别说明。
SAP授予您非排他性版权许可证,允许您使用任何示例代码或示例应用程序生成用于内部测试和评估的相同或类似功能的代码/应用程序。您不可以在实时操作环境中演示、测试、检查、评估或以其他方式使用它们,也不可以使用未充分备份的数据。您不得出租、租赁、出借或转售SAP示例代码或示例应用程序。所有示例代码和示例应用程序均按"原样"提供,无任何形式的担保。明确否认对非侵权、适销性和特定用途适用性的默示保证。
在本文中,我们将解释如何为SAP Mobile Documents开发ABAP客户端。此客户端将能够使用公共链接创建共享,并将您的ABAP系统中的文档上载到SAP Mobile documents上的共享中。本文是SAP Mobile Documents分步实施和集成指南的一部分。
对于本文中的场景,您需要一个ABAP系统和一个SAP Mobile Documents系统。ABAP示例代码在sap7.40的ABAP系统上运行。SAP Mobile Documents系统必须允许共享。此设置可在SAP Mobile Documents的管理工具中配置。
ABAP客户端将通过CMIS协议与SAP Mobile Documents服务器进行通信。CMIS是一个开放的标准。您可以在以下位置找到规范:CMIS规范,版本1.1.
我们ABAP客户端的示例代码由以下对象组成:
类ZCL\U演示\U共享\U服务是客户端的主要部分。它为以下任务提供了方法:
报表ZDEMO\u SHARING\u CLIENT演示了如何依次调用这些方法。执行报表时,它将创建一个新共享,其中包含一个示例文档,并且可以通过公共链接访问该共享。最后,报告打开一个带有此公共链接的浏览器。
两个XSL转换ZDEMO\u PARSE\u REPOSITORY\u INFOS和ZDEMO\u PARSE\u CREATE\u SHARE\u RESP解析SAP Mobile Documents服务器发送回ABAP系统的HTTP响应。
示例代码附在本文末尾。还有一个网络研讨会:如何将您的ABAP文档集成到SAP Mobile文档中。
报告ZDEMO\u共享\u客户端以一个选择屏幕(清单1,第4-9行)开始,您可以在其中输入以下参数的值:
参数传递字段是一个密码字段(第19-25行)。
在第29行中,我们创建了一个ZCL\u DEMO\u SHARING\u服务类。构造函数获取SM59目标的名称。它使用此目的地创建IF\u HTTP\u客户端的实例,以便它可以与sapmobiledocuments服务器通信。接下来,构造函数向服务器发送第一个请求,以读取存储库信息。第2部分对此进行了解释。后续步骤需要存储库信息。
在第31行中,我们使用给定的名称和描述创建一个共享。第3部分介绍了CREATE\u SHARE方法。它返回新共享的对象ID,这是我们接下来的步骤所需要的。此时共享仍然是空的,并且还没有公共链接。
清单1:报告ZDEMO\u SHARING\u CLIENT
接下来我们创建公共链接(清单2,第38行)并确定公共访问的URL(第44行)。第4部分对此进行了解释。
在第46行,我们将一个小XML文档上传到共享。在本例中,商城返利,文件内容是硬编码的。当然,文件内容可能来自其他来源。第5部分介绍了CREATE\u DOCUMENT方法。最后,我们关闭与服务器的连接(第52行),并在浏览器中打开公共链接(第54行)。这将打开移动文档的公共web UI。
清单2:Report ZDEMO\u SHARING\u CLIENT continued
为了创建共享并将文档上载到其中,ABAP系统需要连接到SAP移动文档服务器。我们使用HTTP连接。连接数据在事务SM59(RFC连接的配置)的目标中配置。
在本部分中,我们询问SAP Mobile Documents系统其存储库及其属性。有关SAP Mobile文档体系结构的信息,请参阅《开发人员指南》。我们假设共享是在sapmobiledocuments系统中配置的。然后其中一个存储库就是共享存储库。我们需要它的以下属性:
此信息在方法ZCL\u DEMO\u SHARING\u SERVICE->GET\u REPOSITORY\u INFOS中检索(清单3)。在我们从SM59目的地创建了IF\ HTTP\ U客户端实例之后,我们在ZCL\ U DEMO\ U SHARING\ U CLIENT的构造函数中调用这个方法。方法GET\u REPOSITORY\u INFOS使用http客户端向sapmobiledocuments服务器发送带有URL/mcm/json的GET请求。在第7-9行中,我们将http客户机对象包装成rest客户机对象。在第10-12行中,我们设置请求URL"/mcm/json"。这是读取存储库信息的URL。
在与SAP Mobile Documents服务器的通信中,我们使用CSRF令牌来防止跨站点请求伪造(请参阅:使用CSRF令牌)。我们设置请求头X-CSRF-Token=fetch,以便从服务器获取CSRF令牌(第13-15行)。在调用之后(第18行),我们从X-CSRF-token响应头(第33行)获取令牌。对于同一CMIS会话中的所有以下请求,我们都需要这个令牌。
清单3:类ZCL\u DEMO\u SHARING\u SERVICE,方法GET\u REPOSITORY\u INFOS
响应将是一个包含存储库信息的JSON文档(第34行)。它的结构如下: