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

Adobe Form的第四篇学习笔记。介绍下Adobe Form中的Image/Logo,在Form中展示公司的Logo/其他图片内容是很常见的需求内容。这里介绍下在Adobe Form中如何处理这些内容。

Adobe Form中的图像与Logo

一、介绍

在Adobe Form中展示图片和公司的Logo等内容即便是在Smartform中都是很常见的需求。作为Smartform的升级和继承者,Adobe Form也有这样的处理方式。并且和Smarform处理方式类似。一样需要先使用事物代码SE78上传对应的图像对象。然后再在Form中引用和展示该对象。

二、功能实现

1.上传图片

(1)SE78 上传图片

使用事物代码SE78打开SAP的图像管理页面。按照图中所示的方式,先展开GRAPHICS页签,然后双击BMAP对象。等右侧屏幕显示内容后再点击上传按钮上传图片。

1.上传图片_SE78界面

(2)转换图片格式

需要注意是此处上传的图片格式为bpm或tif/tiff。如果你有一个其他格式的图片,可以使用系统自带的 画图 将图片转换为对应的格式。

2.转换图片格式

打开之后,在界面的左上角点击文件,将图片另存为bmp格式即可。

3.转换图片格式_另存为

(3)验证图片上传成功

最后在验证一下图片是否真的上传成功了。按照下图中的方式,填入图片名称,然后敲击回车键,如果能找到就说明上传已经成功了。

4.上传图片_验证上传是否成功

2.Interface

(1)创建Interface

使用事务代码 SFP 打开Adobe Form的创建界面。输入Interface的名称然后点击Create按钮。

5.Interface_Create

(2)填写描述与Package

6.Interface_描述与Package

(3)添加Image输入参数

在左侧的Import选项中添加一个输入参数。类型为XSTRING。创建完成之后保存并激活Interface对象。

7.Interface_添加输入参数

3.Adobe Form

(1)创建Form

继续使用事物代码SFP,回到Adobe Form的页面。输入Form的名称,点击创建按钮。

8.Form_创建

(2)填写描述与绑定Interface

9.Form_描述与绑定

(3)添加Imag输入参数

将Import中的变量拖到Context中。

10.Form_添加输入参数

(4)创建图形变量

在Context中的 YADOBE_FORM_DEMO5 上右键创建一个图形变量

11.Form_创建图形变量

Graphic 类型Graphic Reference 更改为 Graphic content

12.Form_修改图形变量类型

确认修改图形节点类型。

13.Form_修改图形变量类型

修改图形节点类型之后,会多两个输入参数。分别是Field与MIME Type。

将从Interface中传入进来的变量IV_LOGO填入Field输入框。MIME Type为’IMAGE/BMP‘。

14.Form_图像参数

(5)设置Layout

转到Layout页签,将刚刚新建好的图形变量拖动到Form上。你可以对图形进行拉伸或压缩。

15.Form_放置Image

在图片的下方有图片的标题。就是Image Field的这部分。如果你不想在图片/Logo的下方展示任何文字内容可以考虑将这部分文本内容置为空。

(6)添加文本内容

在Imag的下方添加一个文本框,用来展示图片和文本内容。

16.Form_添加Text文本内容

三、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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
*======================================================================*
* Selection Screen
*======================================================================*
PARAMETERS : P_LOGO TYPE RSTXT-TDNAME."Imag/Logo Name
*======================================================================*
* Data Objects
*======================================================================*

DATA: GV_FM_NAME TYPE RS38L_FNAM, " FM Name
GS_FP_DOCPARAMS TYPE SFPDOCPARAMS,
GS_FP_OUTPUTPARAMS TYPE SFPOUTPUTPARAMS,
GV_NAME TYPE TDOBNAME,
GV_LOGO TYPE XSTRING,
GV_BMP TYPE XSTRING.
*======================================================================*
* Constants
*======================================================================*
CONSTANTS : GC_BTYPE TYPE TDBTYPE VALUE 'BCOL',
GC_ID TYPE TDIDGR VALUE 'BMAP',
GC_OBJECT TYPE TDOBJECTGR VALUE 'GRAPHICS',
GV_FORM_NAME TYPE FPNAME VALUE 'YADOBE_FORM_DEMO5'.

*======================================================================*
* 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.

* Passing the logo name
GV_NAME = P_LOGO.

* Get the image/logo graphic information
CALL METHOD CL_SSF_XSF_UTILITIES=>GET_BDS_GRAPHIC_AS_BMP
EXPORTING
P_OBJECT = GC_OBJECT " GRAPHICS
P_NAME = GV_NAME " Name of the Logo
P_ID = GC_ID " BMAP
P_BTYPE = GC_BTYPE " BCOL for color, 'BMON' for Black & White
RECEIVING
P_BMP = GV_BMP
EXCEPTIONS
NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.

GV_LOGO = GV_BMP.

*&---------------------------------------------------------------------*
**&&~~ 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_name = p_name
* iv_flag = p_flag
IV_LOGO = GV_LOGO
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.测试结果

按照下图中的方式填入上面从SE78中上传的GRAPHICS NAME。然后按照图中所示的方式展示Form。

17.Form测试_输入参数

最终运行的结果如下图所示。

18.Form测试_Form结果

缩略图如下所示。

19.Form测试_Form结果缩略图

使用这种方式可以通过传入的名称的不同来展示不同的Image/Logo。当需要变更图片或Logo时只需要在SE78中上传新的图片对象,然后在调用Form时传入不同的图片名称即可。

四、参考资料

SAP Adobe Interactive Form Tutorial. Part V. Images, Graphics and Logo in Adobe Forms

评论