首页 > Linux操作系统 > Linux操作系统 > smartform入门
smartform是ABAP设计单据打印的常用工具,在单据开发过程中经常用到。smartform可以根据需要调整字体的大小、字体、颜色等。它的表格可以通过表格绘制器绘画,绘图方便灵活,表格可以直观地显示出来。
smartform原理:定义内表后,在程序中通过SQL查询将需要的数据放入内表,然后通过函数调用SMARTFORM。在执行SMARTFORM时把内表中的数据填充到所画的表格当中,并显示出来。
我的理解:写一个smartform包括两个部分,程序和smartform表,分别通过SE38和smartforms这两个TCODE进入相应的编辑界面。一个程序使用的smartform的名字可以与程序名不同,命名是任意的,但相同的命名比较好。
数据的流向:DB-->程序中的内表-->smartform表格-->打印输出。
DB-->程序中的内表:这个过程通过SQL查询来实现。
程序中的内表-->smartform表格:这个过程要求在程序和对应的smartform中定义完全一样的数据结构和数据类型。
下面以一个简单的例子来说明smartform程序的一般结构。我的开发平台是IDES,ECC6.0。
*&---------------------------------------------------------------------*
*& Report Z080718
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z080718.
TABLES: VBAK. " 定义我所使用的表
DATA fm_name TYPE rs38l_fnam. " 这是后面会用到的一个参数
DATA: IT_VBAK LIKE VBAK OCCURS 0 WITH HEADER LINE. " 定义内表,用来传数据
SELECT-OPTIONS: s_VBELN FOR VBAK-VBELN . " 条件输入界面
START-OF-SELECTION.
PERFORM. get_data_smart. " 通过SQL查询得到需要的数据
END-OF-SELECTION.
PERFORM. trans_data_smart. " 将数据传给smartform
FORM. get_data_smart.
SELECT *
INTO TABLE IT_VBAK
FROM VBAK
WHERE VBELN IN s_VBELN.
ENDFORM.
FORM. trans_data_smart.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'Z080718' " smartform表格的名字
IMPORTING
fm_name = fm_name " 开头定义的参数,用于SAP生成function_module name
EXCEPTIONS
no_form = 1
no_function_module = 2
others = 3.
CALL FUNCTION fm_name
"EXPORTING
"control_parameters = tmp_control_parameters
TABLES
"IT_VBAK1 = IT_VBAK " 由于我在smartform表格中定义的form interface 是I_VBAK LIKE VBAK,所以这里不能用IT_VBAK1,必须用I_VBAK
I_VBAK = IT_VBAK
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4.
ENDFORM.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9946518/viewspace-419050/ ,如需转载,请注明出处,否则将追究法律责任。