使用ABAP和JavaScript代码生成PDF文件的几种方式
ABAP
方法1:使用ABAP + Adobe Lifecycle Enterprise Service
详细步骤参考我的博客Convert word document into PDF via Adobe Livecycle Enterprise service
方法2:使用ABAP Webdynpro里的InteravtiveForm控件 + Adobe Form Template
详细步骤参考我的博客Another way to preview PDF in CRM web client UI with little coding
方法3:使用CRM content management的PDF template
具体参考我的博客Create Webservice enabled Adobe PDF attachment in CRM Application.
方法4:利用ABAP代码手动生成PDF的二进制内容
具体参考我的博客Export WebClient UI table to PDF
方法5: 利用SAP Cloud for Customer(C4C)里Cloud Application Studio的Print Form功能
具体步骤参考我的博客Step by Step to create an Adobe Print form in Cloud application Studio.
JavaScript
参考我博客里的这个例子:http://jerrywang.vip/jerry_test/pdf.html
点击按钮Generate PDF后,会调用开源JavaScript库jspdf.debug.js,将下图中的这段高亮的段落文字转换成PDF文件。
CRM WebClient UI和Hybris backoffice UI开发的相同点
CRM WebClient和Hybris backoffice的UI开发都不需要开发人员手写原生的html代码。
CRM WebClient UI
在CRM WebUI workbench里,开发人员需要写下图这些SAP封装的tag:
这些Tag能在事物码SE80里找到:
Hybris backoffice UI
比如我通过backoffice左边倒L形的工作中心列表查看优惠券列表,这个列表实际上是一棵树,根节点是Marketing。
上图界面是通过在XML文件里定义Hybris封装的tag来实现的,原理和CRM WebClient UI类似。
按照第15行的注释,这种开发方式可以理解成"Configuration-based development"。第17行定义了一个类型为explorer-tree的控件。
第19行用navigation-node定义marketing这个根节点,id为这个节点的属性。
Hybris wiki上有这些Hybris封装的tag的详细用法:
类似的,下面这个表格包含了6列:
该表格是用listview这个tag实现的,下图即是6列对应的定义:
Simple search的界面:
XML文件里显示Simple search实际执行时基于couponId和name两个字段进行搜索:
ABAP Netweaver
在SAP基于Netweaver的ABAP应用里,应用开发人员用Open SQL访问数据库, 这些Open SQL会被Database interface(数据库接口)转换成各种数据库提供商支持的原生SQL语句然后执行。
Netweaver 支持的数据库提供商在表DBCON的DBMS字段里能看到:
除了普通的ABAP Open SQL的语句用于业务数据的增删查改之外,SAP CRM和C4C里还支持Enterprise Search(有时也成为simple search,模糊搜索), 就是类似Google搜索一样,用户只需要指定待搜索值,而无需指定该搜索值对应的搜索条件。
在这两个产品里的Enterprise Search实现原理实际上是应用程序发起一个RFC(Remote Function Call)到TREX服务器上拿到查询结果。
关于SAP TREX介绍请参考wikipedia.
https://en.wikipedia.org/wiki/TREX_search_engine
Hybris
Hybris里也有和CRM WebUI里的API层起同样作用的层,封装了对DB的操作。
Hybris里对数据库的访问实现是封装在大量以DAO(Data Access Object)结尾的Java class实现的,相当于SAP CRM API层的那些function module。
随便点开一个DAO看实现,里面也是拼SQL语句然后抛到DB去执行:
上图代码里拼装的SQL语句也不是数据提供商相关的原生SQL语言,而是一种新的语言,称为Flexible Search。类似ABAP的OPEN SQL一样,它将Hybris应用访问数据库层的代码和底层数据库解耦。
在Hybris帮助文档上能看到支持的数据库列表:
在Hybris开发环境下使用的数据库名叫HSQLDB: 一个轻量级的纯Java开发的开放源代码的关系数据库系统
- 点赞
- 收藏
- 关注作者
评论(0)