标签:
Smart Forms是ABAP设计单据打印的工具,设计过程由两部分组成:本例完成有图标(公司LOGO)、表头(公司名称)、文字说明(表身)、含当前时间的表尾的单据。打印预览界面如图
输入TCODE:SMARTFORMS,输入要建立的Form名称后单击“创建”按钮,如图
输入描述,单击“表格绘制器(Form Painter)”按钮,如图
右屏显示设计图形界面,如图
选中主窗口,单击右键菜单中的“Create”-->“Graphics”菜单,如图
右屏显示一个图片图标,双击它,中屏显示属性,单击选择图片按钮,如图
选择包含彩色选项,如图
选择图片,如图
选择图片后,右屏图形对象显示出选择图片,调整好图片的位置,如图
选择页面,单击右键菜单中的“Create”-->“Window”菜单,如图
将新建的WINDOWS调整到合适的位置,请注意,该窗口的对象是黄色的,表示不是主窗口,选中该窗口,单击右键菜单中的“Create”-->“Text”菜单添加文本,如图
在生成的文本属性输入公司名称,如图
和建立表头一样,在主窗口建立一个Text对象,并输入相关内容,如图
添加新的窗口和文本,再添加一个系统日期文本,单击上图中的工具条的字段列表按钮,屏幕左下角会显示系统字段,在右下屏字段中,选中System fields的“DATE”节点,并把它拖到文本“当前时间:”后面,完成后保存,如图
保存后,单击主菜单中的“Form”-->“Check”菜单,检查Form是否正确。然后单击工具栏上的激活按钮激活Form,再单击工具栏上的测试按钮,输出如图
“/1BCDWB/SF00000125”是系统生成程序。单击测试按钮,输出如图
单击执行按钮,输入或选择打印机,单击“Print preview”按钮预览,如图
REPORT Z_SMARTFORMSTEST_20160701001. DATA: fm_name TYPE rs38l_fnam. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST20160701001' variant = '' direct_call = '' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. ENDIF.
输入TCODE:SmartForms,选择“Style”选项,输入Style名称,单击创建按钮,如图
进入设计界面,如图
选择Paragraph formats,右键选择“Create node”菜单,如图
输入字体、大小等信息,如图
选择Character formats,右键选择“Create node”菜单,如图
如图所示,设定三种不同颜色的段落,两种不同大小的字符格式。
在定义完成后,需要将表头数据选择一种段落作为该样式的默认段落,如图
在Form设计时,选择样式界面如图
单击主菜单“Form”-->“Check”检查是否正确,没有问题则激活它。
通过样式设定,可以达到以下效果,如图
运行效果如图
输入TCODE:SMARTFORMS,选择“Text Module”选项,输入Text Module名称,单击“创建”按钮,如图
输入完成后,直接保存,如图
之前我们用过SWM0上传图片,该命令也可以上传其他一些二进制文件(如上传一些Excel模块,供用户下载到PC端,再通过OLE来操作此文档)。
这里我们用SE78命令上传图片,那是为Smart/Script Form设计使用的。
输入TCODE:SE78,系统显示如图
选择“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,单击工具栏标出的按钮导入图片,选择屏幕界面如图
注意:上传的图片一定要是BMP或DIB格式的单色位图或16位色图
确定后,图片被导入,如图
执行效果如图
设计文本可以包含动态变量,在程序中再加载实际数据。如在全局设定的接口输入参数中定义一个字符串型的变量,如图
单击按钮显示所有已定义的字段,将它拖入文本描述内,如图
将Form保存后激活。调整程序,加入输入参数。
REPORT Z_SMARTFORMSTEST_20160714001. DATA: fm_name TYPE rs38l_fnam. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST20160701001' variant = '' direct_call = '' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name exporting ytestv = '东方天空' EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. ENDIF.运行后,效果如图
表格的打印是一张单据必不可少的,比如一张送货单,商品明细就是表格的内容。设计过程:选择一个窗口,选右键菜单中的“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字段拖到相关的文本对象内的描述信息中,如图
保存后激活,单击测试按钮,如图
调用程序:
REPORT Z_SMARTFORMSTEST_20160714002. DATA: fm_name TYPE rs38l_fnam. DATA: wa_sflight LIKE sflight OCCURS 0 WITH HEADER LINE. *将数据放入内表 SELECT * INTO TABLE wa_sflight FROM sflight. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST20160701001' variant = '' direct_call = '' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name EXPORTING ytestv = '东方天空' TABLES i_sflight = wa_sflight EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. ENDIF.运行后输出如图
标签:
原文地址:http://blog.csdn.net/jay_1989/article/details/51917359