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

网友投稿 710 2022-05-30

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

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

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

ABAP ERP JavaScript

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:了解sitemap(站点地图)和如何判定你的网站是否需要提交站点地图
下一篇:【软件工程】CMMI 能力成熟度模型集成 ( 简介 | 相关术语 | CMMI 等级评估次序 )
相关文章