前文:

SAP Adobe Form 教程一 简单示例

SAP Adobe Form 教程二 表

SAP Adobe Form 教程三 日期,时间,floating field

SAP Adobe Form 教程四 动态隐藏和显示字段

SAP Adobe Form 教程五 图片

SAP Adobe Form 几种文本类型

在本文中,我们将演示在FormCalc中使用SUM,然后在SAP Adobe forms中使用JavaScript动态更改文本样式。

使用脚本的主要优点是,我们可以改进功能,并且可以在运行期间动态地控制表单。

SAP Adobe Form 支持2种脚本语言:

  • FormCalc
  • JavaScript

这两种脚本语言各有优缺点,可以根据需要决定使用哪种。本文将提供两种脚本语言的一些常见业务场景。

注意,之前已经有一篇涉及Javascript的文章,可以参考:SAP Adobe Form 教程四 动态隐藏和显示字段

本文链接:https://www.cnblogs.com/hhelibeb/p/15522710.html

原文标题:SAP Adobe Form Tutorial. Part XVI. Practical Use Case of FormCalc and JavaScript

前提

  • SAP Adobe Form的table相关的基础知识
  • 对JavaScript和FormCalc基本功能的了解
  • ABAP编码能力

业务需求

1. 在发送给客户的详细报表中,我们希望在所有行项目末尾显示总金额和总单位小计。

2. 在语句的描述部分,我们希望以粗体和不同的样式显示层次结构的标题产品,以便很容易在整个语句中识别标题产品。

解决方案

我们需要创建一个Adobe Form和与全局数据的interface。我们将在interface的“code initialization”中的全局数据内表中添加一些测试数据,然后将这些全局内表与adobe form layout中的UI表绑定。

另外,我们还可以通过在驱动程序中编写处理逻辑并将所需的内部表作为adobe form的导入参数传递来实现这一点。因为这个博客更多的是关于脚本的使用,所以没有考虑数据处理的最佳方法。

步骤

1,在事务代码SFP创建interface ZPB_TEST_SCRIPTS。

2,创建2个全局变量内表,details和descriptions。

3,表类型ZPB_TEST_DESCR、ZPB_TEST_DETAILS的结构如下,

4,前往code initialization,为内表填入测试数据,

5,前往事务SFP,创建新form,添加interface ZPB_TEST_SCRIPTS。

6,拖放全局变量到context。

7,前往Layout用这两个全局变量创建表格。

a, 前往Data View,

b,选择GT_DETAILS,拖放到Layout的Detail页,

c,你会看到表格自动创建,并绑定了GT_DETAILS。

d,为小计创建页脚行。前往Hierarchy,展开GT_DETAILS,在DATA后创建一个新的行。前往新行的Object,变更行类型为Footer。

请注意,如果我们使用“表格助手”创建表格,则会自动创建页脚。因为前往是通过Data View创建的表格,所以必须手动创建页脚。

下一步是写Formcalc脚本的步骤。

8, 在“NET_UNITS”下的页脚中选择文本字段,然后转到脚本编辑器,

9,现在转到“Show Events”下拉列表,你会发现所有事件都显示为灰色。为什么?

这是因为对于少数UI元素类型,不允许编写脚本,这就是为什么所有事件都仅处于显示模式。要启用事件并编写脚本逻辑,我们需要将UI元素的类型从“Text”更改为“Text Field”。

10,修改NET UNITS和TOTAL ROYALTIES的页脚字段为“Text Field”。

可以注意到,对于上面高亮显示的字段,边框颜色已更改为红色,而对于其他字段,边框颜色仍为蓝色。颜色是标识文本用户界面或文本字段用户界面的指示器

接着,重复步骤8和9,选择合适的事件来编写脚本。

需求是求和、显示小计。

11,选择Calculate事件,语言选择为Formcalc。

写入SUM代码。sum (DATA[*].NET_UNITS)

12,创建一个测试驱动程序以生成结果pdf(请参阅以前的博客以创建用于测试Adobe forms的驱动程序),并生成一个包含小计的pdf:

通过使用FormCalc本的一个求和函数,我们可以在Adobe forms中计算表中行项目的和,不需要使用任何ABAP逻辑。

FormCalc文档:https://helpx.adobe.com/pdf/aem-forms/6-2/formcalc-reference.pdf

JS的使用例子

13,重复步骤7的a-c部分,在Data View为description创建另一个表,使用全局变量GT_DESCRIPTION。

还记得另一个业务需求吗?我们需要在运行期间根据粗体/斜体设置将描述字段中的标题产品设置为粗体,并使用不同的文本样式和项目设置为斜体。

14,在Hierarchy中选择GT_DESCRIPTION的DATA行,前往脚本编辑器。

15,选择“form : ready”事件,语言为Javascript,写入代码,

代码如下,

输出结果,

SAP Adobe Form 教程六 FormCalc和JavaScript的实践的更多相关文章

  1. 无废话ExtJs 入门教程六[按钮:Button]

    无废话ExtJs 入门教程六[按钮:Button] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个按钮“提交”与重置.如下所示代码区的第68行位置, butt ...

  2. adobe form

    Call Adobe Form through ABAP Program 2015-04-24      0个评论    来源:ChampaignWolf的专栏   收藏    我要投稿 Scenar ...

  3. Laravel教程 六:表单 Forms

    Laravel教程 六:表单 Forms 此文章为原创文章,未经同意,禁止转载. Form laravel 5.2 之后请使用 laravelcollective/html 替换 illuminate ...

  4. CRL快速开发框架系列教程六(分布式缓存解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. 前端学习 第六弹: javascript中的函数与闭包

    前端学习 第六弹:  javascript中的函数与闭包 当function里嵌套function时,内部的function可以访问外部function里的变量 function foo(x) {   ...

  6. C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  7. [转]Android Studio系列教程六--Gradle多渠道打包

    转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...

  8. Android Studio系列教程六--Gradle多渠道打包

    Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...

  9. 黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block 开发人员经常编写需要安全功能的应用程序.这些应用程序 ...

  10. Swift中文教程(六)--枚举和结构

    原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). enu ...

随机推荐

  1. 数字集成电路设计之CMOS

    数字集成电路设计理论 1.基本的理论结构 现在主流的集成电路器件还是CMOS,所以理论的结构还是基于CMOS.CMOS有N和P两种MOS组合组合在一起.CMOS最简单的器件就是反相器.然后是标准的逻辑 ...

  2. SpringBoot使用org.springframework.util监控java代码执行耗时时长

    public class StopWatchTask { public static void main(String[] args){ //创建一个计时器 StopWatch stopWatch = ...

  3. Gaussian YOLOv3 : 对bbox预测值进行高斯建模输出不确定性,效果拔群 | ICCV 2019

    在自动驾驶中,检测模型的速度和准确率都很重要,出于这个原因,论文提出Gaussian YOLOv3.该算法在保持实时性的情况下,通过高斯建模.损失函数重建来学习bbox预测值的不确定性,从而提高准确率 ...

  4. KingbaseES V8R3 备份恢复系列之 -- sys_rman备份过程分析

    ​ 案例说明: 本案例通过对KingbaseES sys_rman物理备份过程的详细描述,有助于在执行sys_rman过程中发生故障的分析. 适用版本: KingbaseES V8R3 一.sys_r ...

  5. KingabseES 隐式游标属性值(SQL%attribute)

    隐式游标介绍 Oracle数据库迁移到KingbaseES数据库,不需要将源PL/SQL脚本,大规模修改为KES语法,因为KingbaseES支持大部分PLSQL语法. 1.隐式游标 隐式游标是由 P ...

  6. .NET Emit 入门教程:第六部分:IL 指令:3:详解 ILGenerator 指令方法:参数加载指令

    前言: 在上一篇中,我们介绍了 ILGenerator 辅助方法. 本篇,将详细介绍指令方法,并详细介绍指令的相关用法. 在接下来的教程,关于IL指令部分,会将指令分为以下几个分类进行讲解: 1.参数 ...

  7. 实用 Linux 命令 Windos 命令 实例演示 持续更新中

    实用 Linux 命令 Windos 命令 实例演示 持续更新中 目录 实用 Linux 命令 Windos 命令 实例演示 持续更新中 Linux 命令 [Command [options] [lo ...

  8. 聚焦AI新技术,HMS Core机器学习服务为移动应用智能化注入新动力

    近年来,以机器学习为代表的人工智能技术(以下简称AI技术)蓬勃发展.新算法层出不穷,开发出的图像识别.自然语言.活体检测等能力令智能化的未来生活不再遥不可及.同时,这些AI技术正持续演化和发展,数据和 ...

  9. 必须经典GPT4.0

    学习C#编程,有一些经典的教材和资源值得关注.下面列出了一些建议供你参考: 1. <C# 编程黄皮书>(C# Programming Yellow Book):Rob Miles 编著的这 ...

  10. 力扣1235(java)-规划兼职工作(困难)

    题目: 你打算利用空闲时间来做兼职工作赚些零花钱. 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]. 给你一份兼职工作 ...