使用ABAP和JavaScript代码生成PDF文件的几种方式

举报
汪子熙 发表于 2021/10/16 22:24:29 2021/10/16
【摘要】 ABAP 方法1:使用ABAP + Adobe Lifecycle Enterprise Service详细步骤参考我的博客Convert word document into PDF via Adobe Livecycle Enterprise service 方法2:使用ABAP Webdynpro里的InteravtiveForm控件 + Adobe Form Template详细步...

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开发的开放源代码的关系数据库系统

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。