抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Adobe Form的第三篇学习笔记,来简单介绍下Adobe Form编写脚本的功能。脚本自身的作用很强,但是比较遗憾的是在Adobe Form中编写的脚本无法验证其准确性的。因为他没有语法检查,所以最好在别的编辑器中编写脚本,测试没有问题再复制到Adobe From中或许是比较好的思路。

JavaScript 动态显示和隐藏Adobe Form的字段

一、介绍

脚本作为Adobe Form的重要功能之一,虽然并不经常使用,但是它能帮你解决很多的问题。所以编写本篇笔记来简单介绍下如何编写脚本。

Adobe Form可以通过编写脚本来动态的控制展示的元素属性。例如本篇笔记可以编写JavaScript脚本来控制Form上元素的显示和隐藏。

二、功能演示

1.创建Interface

(1)新建界面

使用事务代码SFP打开Adobe Form的界面。在Interface的输入框中输入名称。

1.创建Interface

(2)填写描述与Package

2.描述与Package

(3)创建输入参数

点击下图中红框圈中的新建按钮,添加两个自定义输入变量。完成之后激活Interface。

3.创建输入参数

2.创建Adobe Form

(1)创建对象

回到SFP的界面,新建Adobe Form对象。

4.创建Adobe Form

(2)填写描述与Package信息

5.创建Adobe Form_填写描述与Package

(3)添加Context参数

将从Interface中带过来的输入参数添加到Adobe Form的Context中。

6.创建Adobe Form_添加Interface输入参数

3.设置Layout

(1)添加Adobe Form展示元素

转到Data View页签中,将添加到Context的变量拖动到Form中进行展示。

7.编辑Adobe Form_添加元素到Form

(2)打开脚本编辑器

选中拖动到屏幕上的字段 IV_VALUE,然后点击Palettes->Script Editor打开脚本编辑器。

8.编辑Adobe Form_打开脚本编辑器

按照图中的方式打开的脚本编辑器如下所示。

9.编辑Adobe Form_脚本编辑器界面

(3)编写脚本

Show后边的下拉框中选择form: ready。然后可以在右侧看到Language的输入框变为 JavaScript。在下面的文本框中可以编写JS脚本的逻辑。

10.编辑Adobe Form_设置脚本属性

然后我们编写一个简单的JS脚本逻辑。当传入参数 IV_FLAG 的值不为 X 时将屏幕上的输入框 IV_VALUE 隐藏

1
2
3
4
if($record.IV_FLAG.value != "X")
{
this.presence = "hidden";
}
11.编辑Adobe Form_编写脚本逻辑

进行完成上面的操作之后,保存并激活Adobe Form对象。

三、Form测试

1.SFP测试

在激活好的Adobe Form界面直接点击运行按钮,查看Form运行的效果。

(1)IV_FLAG 为 X

填入输入参数。

12.测试Adobe Form_SFP_IV_FLAG 为 X

运行结果如下所示。

13.测试Adobe Form_SFP_IV_FLAG 为 X_测试结果

(2)IV_FLAG 为 空

填入输入参数。

14.测试Adobe Form_SFP_IV_FLAG 不为 X

运行结果如下所示。因为是一整篇的空白,所以我就截一个缩略图。

15.测试Adobe Form_SFP_IV_FLAG 不为 X_测试结果

2.程序测试

(1)编写测试代码

创建一个Report程序,并编写如下所示的代码测试Form的结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
*======================================================================*
* Selection Screen
*======================================================================*
PARAMETERS: P_VALUE TYPE CHAR40,
P_FLAG TYPE CHAR1.

**&&~~ Data Objects
DATA: GV_FM_NAME TYPE RS38L_FNAM, " FM Name
GS_FP_DOCPARAMS TYPE SFPDOCPARAMS,
GS_FP_OUTPUTPARAMS TYPE SFPOUTPUTPARAMS.

CONSTANTS : GV_FORM_NAME TYPE FPNAME VALUE 'YADOBE_FORM_DEMO4'.

*======================================================================*
* START of Calling the Form
*======================================================================*
*&---------------------------------------------------------------------*
**&&~~ Form Processing: Call Form - Open
*
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
IE_OUTPUTPARAMS = GS_FP_OUTPUTPARAMS
EXCEPTIONS
CANCEL = 1
USAGE_ERROR = 2
SYSTEM_ERROR = 3
INTERNAL_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
" Suitable Error Handling
ENDIF.
*&---------------------------------------------------------------------*
**&&~~ Get the Function module name based on Form Name
*
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
I_NAME = GV_FORM_NAME
IMPORTING
E_FUNCNAME = GV_FM_NAME.
IF SY-SUBRC <> 0.
" Suitable Error Handling
ENDIF.
*&---------------------------------------------------------------------*
**&&~~ Take the FM name by execuing the form - by using Pattern-
**&&~~ call that FM and replace the FM Name by gv_fm_name
**&&~~ Call the Generated FM
CALL FUNCTION GV_FM_NAME
EXPORTING
/1BCDWB/DOCPARAMS = GS_FP_DOCPARAMS
IV_VALUE = P_VALUE
IV_FLAG = P_FLAG
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&---- Close the spool job
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* <error handling>
ENDIF.

(2)IV_FLAG 为 X

选择屏幕的数据如下所示。

16.测试Adobe Form_Report_IV_FLAG 为 X_选择屏幕

运行的结果如下所示。

![17.测试Adobe Form_Report_IV_FLAG 为 X_执行结果](JavaScript-动态显示和隐藏Adobe-Form的字段/17.测试Adobe Form_Report_IV_FLAG 为 X_执行结果.png)

(3)IV_FLAG 为 空

选择屏幕的数据如下所示。

18.测试Adobe Form_Report_IV_FLAG 不为 X_选择屏幕

运行的结果如下所示。

19.测试Adobe Form_Report_IV_FLAG 不为 X_运行结果

四、参考资料

SAP Adobe Interactive Form Tutorial. Part IV. Dynamically Hide and Display Fields using Javascript in Adobe Form Based on Conditions

评论