作者参考书籍:实战SAP程序开发
Smart Forms是ABAP设计单据打印的工具,设计过程由两部分组成:
(1)在Smart Forms设计单据的样式、输入输出数据接口;
(2)编程调用设计单据、输出数据,实现打印输出。
本博文先以一个简单的例子,将Form与程序联调,快速了解整个设计过程,再详细介绍Smart forms相关设计及较复杂的例子。
1、一个简单的例子
本例完成有图标(公司LOGO)、表头(公司名称)、文字说明(表身)、含当前时间的表尾的单据。打印预览界面如图
1.1、Form的制作
输入TCODE:SMARTFORMS,输入要建立的Form名称后单击“创建”按钮,如图
输入描述,单击“表格绘制器(Form Painter)”按钮,如图
右屏显示设计图形界面,如图
1.1.1、加入公司的LOGO
选中主窗口,单击右键菜单中的“Create”-->“Graphics”菜单,如图
右屏显示一个图片图标,双击它,中屏显示属性,单击选择图片按钮,如图
选择包含彩色选项,如图
选择图片,如图
选择图片后,右屏图形对象显示出选择图片,调整好图片的位置,如图
1.1.2、加入公司名称
选择页面,单击右键菜单中的“Create”-->“Window”菜单,如图
将新建的WINDOWS调整到合适的位置,请注意,该窗口的对象是黄色的,表示不是主窗口,选中该窗口,单击右键菜单中的“Create”-->“Text”菜单添加文本,如图
在生成的文本属性输入公司名称,如图
1.1.3、加入主表内容
和建立表头一样,在主窗口建立一个Text对象,并输入相关内容,如图
1.1.4、加入表尾
添加新的窗口和文本,再添加一个系统日期文本,单击上图中的工具条的字段列表按钮,屏幕左下角会显示系统字段,在右下屏字段中,选中System fields的“DATE”节点,并把它拖到文本“当前时间:”后面,完成后保存,如图
1.1.5、生成和预览
保存后,单击主菜单中的“Form”-->“Check”菜单,检查Form是否正确。然后单击工具栏上的激活按钮激活Form,再单击工具栏上的测试按钮,输出如图
“/1BCDWB/SF00000125”是系统生成程序。单击测试按钮,输出如图
单击执行按钮,输入或选择打印机,单击“Print preview”按钮预览,如图
2、设计程序调用Form
程序代码如下:3、Smart Forms相关技术
3.1、Style样式制作
Style定义文字类型、大小样式等属性,可在Text对象内使用不同的样式。输入TCODE:SmartForms,选择“Style”选项,输入Style名称,单击创建按钮,如图
进入设计界面,如图
Paragraph formats:段落格式,字体类型等,在设定对象时可以选择需要的段落。
Character formats:字符格式,定义是否粗体、倾斜、大小等,在一段文字内设置不同的字体、颜色等。
选择Paragraph formats,右键选择“Create node”菜单,如图
输入字体、大小等信息,如图
选择Character formats,右键选择“Create node”菜单,如图
如图所示,设定三种不同颜色的段落,两种不同大小的字符格式。
在定义完成后,需要将表头数据选择一种段落作为该样式的默认段落,如图
在Form设计时,选择样式界面如图
单击主菜单“Form”-->“Check”检查是否正确,没有问题则激活它。
通过样式设定,可以达到以下效果,如图
运行效果如图
3.2、Text Moudle文本制作
ABAP编程中很多对象、文本、消息、提示内容都可以预先设定。Form中Text对象数据来源有以下几种:
变量,通过程序产生;
Include text,它是Sapscript text,可以通过TCODE:SE75查阅;
Include element,直接输入文本;
Text Module,是下面将要介绍的。
输入TCODE:SMARTFORMS,选择“Text Module”选项,输入Text Module名称,单击“创建”按钮,如图
输入完成后,直接保存,如图
4、图片的上传
之前我们用过SWM0上传图片,该命令也可以上传其他一些二进制文件(如上传一些Excel模块,供用户下载到PC端,再通过OLE来操作此文档)。
这里我们用SE78命令上传图片,那是为Smart/Script Form设计使用的。
输入TCODE:SE78,系统显示如图
选择“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,单击工具栏标出的按钮导入图片,选择屏幕界面如图
注意:上传的图片一定要是BMP或DIB格式的单色位图或16位色图
确定后,图片被导入,如图
执行效果如图
5、变量加载
设计文本可以包含动态变量,在程序中再加载实际数据。如在全局设定的接口输入参数中定义一个字符串型的变量,如图
单击按钮显示所有已定义的字段,将它拖入文本描述内,如图
将Form保存后激活。调整程序,加入输入参数。
运行后,效果如图
6、通过Table对象打印表格
表格的打印是一张单据必不可少的,比如一张送货单,商品明细就是表格的内容。设计过程:选择一个窗口,选右键菜单中的“Create”-->“Table”,如图
先点击如下“细节”按钮,如图
行格式是Table编出时每行的格式,定义表头和表身两种格式,表头与表身略有不同,表宽一定要等于定义列宽之和
定义完后单击“表绘制器”按钮预览定义的行列格式,如图
单击“选择模式”按钮定义表格的线条样式,如图
选择Table下面的Header,创建Table line,如图
在Line Type选择中选择之前定义的LINE_CON,如图
依次在CELL下面建立Text对象,如图
以同样的方法,在Table对象下面的Main中创建Table line对象和Text对象如图
回到Form接口,在“Table”页中定义I_SFLIGHT,如图
选择表格,再选择数据页,如图
打开字段列表,在Table内双击Text字段,在左下角的“Table interfance”-->“I_SFLIGHT”节点中将CARRID、CONNID、FLDATE、PRICE字段拖到相关的文本对象内的描述信息中,如图
保存后激活,单击测试按钮,如图
调用程序:
运行后输出如图
Smart Forms是ABAP设计单据打印的工具,设计过程由两部分组成:
(1)在Smart Forms设计单据的样式、输入输出数据接口;(2)编程调用设计单据、输出数据,实现打印输出。
本博文先以一个简单的例子,将Form与程序联调,快速了解整个设计过程,再详细介绍Smart forms相关设计及较复杂的例子。
1、一个简单的例子
本例完成有图标(公司LOGO)、表头(公司名称)、文字说明(表身)、含当前时间的表尾的单据。打印预览界面如图
1.1、Form的制作
输入TCODE:SMARTFORMS,输入要建立的Form名称后单击“创建”按钮,如图
输入描述,单击“表格绘制器(Form Painter)”按钮,如图
右屏显示设计图形界面,如图
1.1.1、加入公司的LOGO
选中主窗口,单击右键菜单中的“Create”-->“Graphics”菜单,如图
右屏显示一个图片图标,双击它,中屏显示属性,单击选择图片按钮,如图
选择包含彩色选项,如图
选择图片,如图
选择图片后,右屏图形对象显示出选择图片,调整好图片的位置,如图
1.1.2、加入公司名称
选择页面,单击右键菜单中的“Create”-->“Window”菜单,如图
将新建的WINDOWS调整到合适的位置,请注意,该窗口的对象是黄色的,表示不是主窗口,选中该窗口,单击右键菜单中的“Create”-->“Text”菜单添加文本,如图
在生成的文本属性输入公司名称,如图
1.1.3、加入主表内容
和建立表头一样,在主窗口建立一个Text对象,并输入相关内容,如图
1.1.4、加入表尾
添加新的窗口和文本,再添加一个系统日期文本,单击上图中的工具条的字段列表按钮,屏幕左下角会显示系统字段,在右下屏字段中,选中System fields的“DATE”节点,并把它拖到文本“当前时间:”后面,完成后保存,如图
1.1.5、生成和预览
保存后,单击主菜单中的“Form”-->“Check”菜单,检查Form是否正确。然后单击工具栏上的激活按钮激活Form,再单击工具栏上的测试按钮,输出如图
“/1BCDWB/SF00000125”是系统生成程序。单击测试按钮,输出如图
单击执行按钮,输入或选择打印机,单击“Print preview”按钮预览,如图
2、设计程序调用Form
程序代码如下:3、Smart Forms相关技术
3.1、Style样式制作
Style定义文字类型、大小样式等属性,可在Text对象内使用不同的样式。输入TCODE:SmartForms,选择“Style”选项,输入Style名称,单击创建按钮,如图
进入设计界面,如图
Paragraph formats:段落格式,字体类型等,在设定对象时可以选择需要的段落。
Character formats:字符格式,定义是否粗体、倾斜、大小等,在一段文字内设置不同的字体、颜色等。
选择Paragraph formats,右键选择“Create node”菜单,如图
输入字体、大小等信息,如图
选择Character formats,右键选择“Create node”菜单,如图
如图所示,设定三种不同颜色的段落,两种不同大小的字符格式。
在定义完成后,需要将表头数据选择一种段落作为该样式的默认段落,如图
在Form设计时,选择样式界面如图
单击主菜单“Form”-->“Check”检查是否正确,没有问题则激活它。
通过样式设定,可以达到以下效果,如图
运行效果如图
3.2、Text Moudle文本制作
ABAP编程中很多对象、文本、消息、提示内容都可以预先设定。Form中Text对象数据来源有以下几种:
变量,通过程序产生;
Include text,它是Sapscript text,可以通过TCODE:SE75查阅;
Include element,直接输入文本;
Text Module,是下面将要介绍的。
输入TCODE:SMARTFORMS,选择“Text Module”选项,输入Text Module名称,单击“创建”按钮,如图
输入完成后,直接保存,如图
4、图片的上传
之前我们用过SWM0上传图片,该命令也可以上传其他一些二进制文件(如上传一些Excel模块,供用户下载到PC端,再通过OLE来操作此文档)。
这里我们用SE78命令上传图片,那是为Smart/Script Form设计使用的。
输入TCODE:SE78,系统显示如图
选择“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,单击工具栏标出的按钮导入图片,选择屏幕界面如图
注意:上传的图片一定要是BMP或DIB格式的单色位图或16位色图
确定后,图片被导入,如图
执行效果如图
5、变量加载
设计文本可以包含动态变量,在程序中再加载实际数据。如在全局设定的接口输入参数中定义一个字符串型的变量,如图
单击按钮显示所有已定义的字段,将它拖入文本描述内,如图
将Form保存后激活。调整程序,加入输入参数。
运行后,效果如图
6、通过Table对象打印表格
表格的打印是一张单据必不可少的,比如一张送货单,商品明细就是表格的内容。设计过程:选择一个窗口,选右键菜单中的“Create”-->“Table”,如图
先点击如下“细节”按钮,如图
行格式是Table编出时每行的格式,定义表头和表身两种格式,表头与表身略有不同,表宽一定要等于定义列宽之和
定义完后单击“表绘制器”按钮预览定义的行列格式,如图
单击“选择模式”按钮定义表格的线条样式,如图
选择Table下面的Header,创建Table line,如图
在Line Type选择中选择之前定义的LINE_CON,如图
依次在CELL下面建立Text对象,如图
以同样的方法,在Table对象下面的Main中创建Table line对象和Text对象如图
回到Form接口,在“Table”页中定义I_SFLIGHT,如图
选择表格,再选择数据页,如图
打开字段列表,在Table内双击Text字段,在左下角的“Table interfance”-->“I_SFLIGHT”节点中将CARRID、CONNID、FLDATE、PRICE字段拖到相关的文本对象内的描述信息中,如图
保存后激活,单击测试按钮,如图
调用程序:
运行后输出如图