Smartform在SAP的表单设计中有着不可替代的作用,本文主要讲解如何制作简单的Smartforms表单,包括以下几个部分。
一、创建样式style。在Smartforms表单的设计中需要使用。
二、Smartform表单设计。
三、在报表中调用Smartforms。
以下就上面三部分逐步讲解。
1、创建样式Style。事务码:SMARTFORMS。
选择 样式 输入sytle名称:ZQUY_TEST,点击创建按钮,在style中可以设置表头数据的格式、段落格式以及字符格式,根据具体需求自己创建。效果图如下:
2、创建表单。事务码:Smartforms。Forms表单有两部分组成,如图:
2.1、表格属性:用来设置页格式、样式、输出格式等信息。其中页格式可以在事务:SPAD中自定义,(完全管理-->设备类型-->页格式中)。本次设置A4页格式,样式就用上文自定义的格式:ZQUY_STYLETEST,如下图所示
2.2、表格接口
这里定义表单的输入、输出参数、表参数和定义异常。我们在这里定义表单数,如图:
其中ZSMART_DATA为自定义结构。主要是人事信息等。
2.3、全局定义
2.4、表单设计。
2.4.1、在Main主窗口下,首先设置窗口的左边距、上边距、高度、宽度,经本人多年的经验,对A4纸张建议如下设置:
左边距:0.50 、 上边距:0.75、 宽度:19.40、 高度:28.20
2.4.2、创建表,定义数据显示的格式。双击创建的表,在右边窗口中点击,定义表格的行类型。我们定义两个行类型,L2和L5,
L2行类型定义每行有2列,L5行类型定义每行有5列,如图所示:
设置表格的数据,点击数据一栏,如下设置:
创建两行,分别使用L2和L5行类型。在每行的列下面分别创建文本来显示数据。
使用表接口传递的数据作为显示,点击Smartforms工具栏中的按钮获取数据。
将自定义结构中的字段拖到需要显示的文本,并设置文本的样式即可。
3、在报表中调用Smartforms。代码如下:
REPORT z_smartforms_test001.
DATA:fm_name TYPE rs38l_fnam,
out_options TYPE ssfcompop,
ctrl_params TYPE ssfctrlop,
fname TYPE tdsfname,
items LIKE zsmart_data OCCURS 10 WITH HEADER LINE.
START-OF-SELECTION.
fname = 'ZQUY_TEST001'.
PERFORM. getdata.
PERFORM. set_form.
PERFORM. dis_form.
*&---------------------------------------------------------------------*
*& Form getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM. getdata .
items-num1 = '*8000**'.
items-name = '***'.
items-sex = '男'.
items-degree = '本科'.
items-tel = '1111111111111'.
items-com = '*利集团***'.
items-dept = '*海信息******'.
APPEND items.
ENDFORM. " getdata
*&---------------------------------------------------------------------*
*& Form set_form
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM. set_form. .
* 通过smartforms的表单名得到表单程序名
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = fname
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
STOP.
ENDIF.
* 设置假脱机相关设置
* out_options-TDDEST = 'ZGEE'.
out_options-tdimmed = 'X'.
out_options-tddelete = 'X'.
* 设置打印参数
ctrl_params-preview = 'X'.
ctrl_params-no_dialog = 'X'.
ENDFORM. " set_form
*&---------------------------------------------------------------------*
*& Form dis_form
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM. dis_form. .
CALL FUNCTION fm_name
EXPORTING
control_parameters = ctrl_params
output_options = out_options
user_settings = ''
TABLES
items = items
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
STOP.
ENDIF.
ENDFORM. " dis_form
注:在运行程序之前,先运行SU3,设置输出设备,并设置本机的默认打印机。
调用的效果图:
直接点打印即可。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11377579/viewspace-605275/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11377579/viewspace-605275/