码迷,mamicode.com
首页 > 其他好文 > 详细

ABAP实战Smart Forms设计

时间:2016-07-19 10:07:50      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:

Smart Forms是ABAP设计单据打印的工具,设计过程由两部分组成:
(1)在Smart Forms设计单据的样式、输入输出数据接口;
(2)编程调用设计单据、输出数据,实现打印输出。
本博文先以一个简单的例子,将Form与程序联调,快速了解整个设计过程,再详细介绍Smart forms相关设计及较复杂的例子。

1、一个简单的例子

本例完成有图标(公司LOGO)、表头(公司名称)、文字说明(表身)、含当前时间的表尾的单据。打印预览界面如图

技术分享

1.1、Form的制作

输入TCODE:SMARTFORMS,输入要建立的Form名称后单击“创建”按钮,如图

技术分享

输入描述,单击“表格绘制器(Form Painter)”按钮,如图

技术分享

右屏显示设计图形界面,如图

技术分享

左屏显示Form所有对象树,当双击对象时,中间屏幕显示对象的属性,右屏显示Form图形设计界面。系统默认建立一个页面技术分享,一个主窗口技术分享,一个Form可以有多个页面,一个页面可以有多个窗口,但主窗口只能有一个,右屏显示该页及MAIN主窗口。

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

程序代码如下:
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.

3、Smart Forms相关技术

3.1、Style样式制作

Style定义文字类型、大小样式等属性,可在Text对象内使用不同的样式。

输入TCODE:SmartForms,选择“Style”选项,输入Style名称,单击创建按钮,如图

技术分享

进入设计界面,如图

技术分享

Header data:表头数据,定义默认段落属性等参数。
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名称,单击“创建”按钮,如图

技术分享

输入完成后,直接保存,如图

技术分享

然后在设计Form时选择Text属性为Text Module时就可以选择定义的文本,如图
技术分享

4、图片的上传 

之前我们用过SWM0上传图片,该命令也可以上传其他一些二进制文件(如上传一些Excel模块,供用户下载到PC端,再通过OLE来操作此文档)。

这里我们用SE78命令上传图片,那是为Smart/Script Form设计使用的。

在基础例子中,使用了一个图片,是系统内部的,在制作公司内部的各类单据时需要公司的LOGO,这就需要上传图片。

输入TCODE:SE78,系统显示如图

技术分享

选择“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,单击工具栏标出的按钮导入图片,选择屏幕界面如图

注意:上传的图片一定要是BMP或DIB格式的单色位图或16位色图

技术分享


确定后,图片被导入,如图

技术分享

在设计Form就可以选择上传图片,如图

技术分享

执行效果如图

技术分享

5、变量加载

设计文本可以包含动态变量,在程序中再加载实际数据。如在全局设定的接口输入参数中定义一个字符串型的变量,如图

技术分享

单击技术分享按钮显示所有已定义的字段,将它拖入文本描述内,如图

技术分享

将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.
运行后,效果如图

技术分享

6、通过Table对象打印表格

表格的打印是一张单据必不可少的,比如一张送货单,商品明细就是表格的内容。设计过程:选择一个窗口,选右键菜单中的“Create”-->“Table”,如图

技术分享

先点击如下“细节”按钮,如图

技术分享

行格式是Table编出时每行的格式,定义表头和表身两种格式,表头与表身略有不同,表宽一定要等于定义列宽之和

技术分享

定义完后单击“表绘制器”按钮预览定义的行列格式,如图

技术分享

单击“选择模式”技术分享按钮定义表格的线条样式,如图

技术分享

选择Table下面的Header,创建Table line,如图

技术分享

在Line Type选择中选择之前定义的LINE_CON,如图

技术分享

依次在CELL下面建立Text对象,如图

技术分享

以同样的方法,在Table对象下面的Main中创建Table line对象和Text对象如图

技术分享

这样整个Table设定完成,接着定义数据和导入参数。

回到Form接口,在“Table”页中定义I_SFLIGHT,如图

技术分享

选择表格,再选择数据页,如图

技术分享

输入内部表格I_SFLIGHT,然后将Table内的各个字段赋值操作如下:

打开字段列表,在Table内双击Text字段,在左下角的“Table interfance”-->“I_SFLIGHT”节点中将CARRID、CONNID、FLDATE、PRICE字段拖到相关的文本对象内的描述信息中,如图

技术分享

保存后激活,单击测试按钮,如图

技术分享

到此,Form的制作已完成。

调用程序:

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.
运行后输出如图

技术分享


ABAP实战Smart Forms设计

标签:

原文地址:http://blog.csdn.net/jay_1989/article/details/51917359

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!