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

这是Adobe From的第二篇笔记,本来我计划将所有的内容都写在一篇笔记中,但是遗憾的是我学习的时间总是断断续续的,而且将所有的知识点放在一篇笔记中会显得这篇笔记十分的庞大。不利于复习和阅读,所以我决定后面将知识点分开记录。

Adobe Form的Date Time与Floating Fields

一、介绍

在后续的Adobe Form开发过程中,我们或许需要使用一些系统字段。例如系统的日期、时间、用户名和SUBRC等字段。这些系统变量在Adobe中有专门提供。我们在开发过程中可以直接使用。

在开发过程中还有一些动态文本字段,也是经常使用的。让一些文本中间的某一部分是动态变化的,类似于字符串之间的拼接。动态文本的长度会随着内容的长度变化而变化。

所以本篇笔记主要记录如何在Adobe Form中使用这两种功能。

二、功能演示

1.创建Interface

(1)新建界面

使用事务代码SFP打开Adobe Form的界面。

Interface引用原文中的话来说,他就是交互式Adobe的支柱。

1.创建Interface

(2)填入描述与Package信息

2.填写Interface的描述信息

(3)创建输入参数

点击下图中红框圈中的新建按钮,添加两个自定义输入变量。设置两个变量的类型为CHAR40。

3.新建输入参数

完成之后激活该Interface对象。

2.创建Adobe Form对象

(1)创建对象

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

4.新建Adobe From

(2)填写描述与Package信息

5.填写Adobe From的描述信息

3.填充Context区域

(1)导入Interface变量

展开左侧Interface的Import页签。将Interface中的两个输入参数拖动到Adobe Form的Context区域。在这个区域中的参数对于Adobe Form而言是全局变量。

6.填充Adobe From的Context区域

(2)导入系统变量

系统变量在Interface参数的下面一个页签中。可以使用同样的方式将系统字段拖动到Context区域。

7.填充系统变量到Context区域

4.设置Floating Fields

(1)插入标准文本

按照图中所示的方式,插入一个文本到Adobe Form中。

8.插入文本字段

9.插入的文本对象

(2)变更文本布局与内容

可以对插入的文本对象进行拉伸、缩小和拖动来调整文本对象的位置与布局。

插入一段固定的文本,并保留两个用来动态填充的词。如下所示,将“夜猫君”与“ABAP”作为Floating Fields字段插入Interface中的两个变量。

1
Welcome to 夜猫君 blog. Here you will learn about ABAP-related content.
10.文本对象的属性设置

还可以在右下角的Font页签中设置文本中的字体大小等内容。

(3)设置Floating Fields

选中需要变更为Floating Fields的内容,然后单击右键选择 Floating Fields 按钮。

11.选中Floating Filed对象

设置完成之后被选中的内容会被大括号包起来。并且可以对文本中间的内容进行变更,这里变更的效果就类似于重命名。

在选中Floating Fields后,在右侧的导航栏中绑定我们从Interface中导入的变量。

12.为Floating Filed绑定数据

接下来选中“ABAP”,使用同样的方式将此处的Floating Fields与VALUE1变量进行绑定。

13.为Floating Filed绑定数据2

我们设置的Floating Fields的长度是动态的。它会根据传入的变量的长度进行扩展和压缩。例如我的变量长度是40位长度,但是我传入的实际值的长度只有三位或更少的话,Floating Fields的长度也会变化。

5.使用系统变量的日期与时间

(1)插入日期和时间

转到Data View页签,然后选中Date与Time对象,将他们拖动到Adobe Form中。

14.导入系统变量的日期和时间

(2)设置日期格式

不同的地区或需求对于日期的格式有不同的要求。我们可以通过设置日期的Pattems属性来更改日期的格式。

15.设置日期格式

(3)设置时间格式

我们可以使用同样的步骤来设置时间的格式。

16.设置时间格式

6.激活并保存

进行完成上面的操作之后就可以激活并保存Adobe Form对象了。剩下的就是对Adobe Form进行测试。

三、Form测试

1.直接执行Adobe Form

在激活后的Adobe Form对象上点击运行按钮,输入参数并按照图中所示的内容操作即可看到运行出来的PDF文件。

17.通过SFP测试

运行出来的效果如下图所示。

18.SFP测试结果

2.使用程序执行Adobe Form

(1)编写测试代码

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
73
74
75
76
77
78
79
80
**&&~~ Data Objects
DATA: GV_FM_NAME TYPE RS38L_FNAM, " FM Name
GS_FP_DOCPARAMS TYPE SFPDOCPARAMS,
GS_FP_OUTPUTPARAMS TYPE SFPOUTPUTPARAMS,
GT_KNA1 TYPE STANDARD TABLE OF KNA1.

* Selection Screen
PARAMETERS: P_VALUE TYPE CHAR40.
PARAMETERS: P_VALUE1 TYPE CHAR40.

"Your Adobe Form Name
CONSTANTS : GV_FORM_NAME TYPE FPNAME VALUE 'YADOBE_FORM_DEMO3'.

*======================================================================*
* START of TREATMENT *
*======================================================================*
START-OF-SELECTION.
*&---------------------------------------------------------------------*
**&&~~ 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 "'/1BCDWB/SM00000176'
EXPORTING
/1BCDWB/DOCPARAMS = GS_FP_DOCPARAMS
VALUE1 = P_VALUE1
VALUE = P_VALUE
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*&---------------------------------------------------------------------*
**&&~~ Form Processing: Call Form - Open
*
CALL FUNCTION 'FP_JOB_CLOSE'.
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)执行测试程序

在选择屏幕中输入调用Adobe Form必须的输入参数执行程序。

19.程序测试

执行的效果如下图所示。

20.程序测试结果

入上图所示,执行的效果符合我们的预期。并且第二次传入的VALUE1变量值变为了SAP。单动态文本并没有显示多余的空格。

四、参考资料

本片笔记的参考资料如下所示:

SAP Adobe Interactive Form Tutorial. Part III. Date Time and Floating Fields

如果你有什么建议或者发现上面笔记中的错误,欢迎在博客评论留言告知我,十分感谢。

评论