ITPub博客

首页 > Linux操作系统 > Linux操作系统 > smartform入门

smartform入门

原创 Linux操作系统 作者:whiskey1122 时间:2008-08-05 15:07:36 0 删除 编辑

     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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ALV的编写
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-08-05

  • 博文量
    5
  • 访问量
    11882