SMARTFORM 实例练习

来源:互联网 发布:滚球软件 编辑:程序博客网 时间:2024/05/16 03:17

谢谢分享这位博文的前辈,写的很详细,我照着抄了一遍,运行一下,原来对smartform一无所知,现在大概了解smartform是做什么的了。

结果如图:


1.      创建report程序。在report程序中取得数据和调用你创建的的smartform。(下面我取得的数据放在G_TAB_TEST的内表中,在调用smartform(ZTEST_22_SF0001)传入)。

 

创建report程序步骤:

输入tcode:se38.

然后点击“创建”按钮。

输入相应的描述,选择类型为可执行程序,状态为测试程序。然后点击“保存”按钮。

点击“本地保存按钮”。然后开始编写代码。

Report代码如下:(代码内容不再讲解)

*&---------------------------------------------------------------------**& Report  ZTEST_22_RSF0001*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT  ZTEST_22_RSF0001 NO STANDARD PAGE HEADING LINE-SIZE 150                         MESSAGE-ID ZBSUN.DATA:  G_TAB_TEST LIKE STANDARD TABLE OF SFLIGHT,  G_REC_TEST TYPE SFLIGHT.DATA:  FM_NAME TYPE RS38L_FNAM.SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME.SELECT-OPTIONS S_LINE FOR G_REC_TEST-CARRID NO INTERVALS.SELECT-OPTIONS S_DATE FOR G_REC_TEST-FLDATE.SELECTION-SCREEN END OF BLOCK BLOCK1.INITIALIZATION.  REFRESH G_TAB_TEST.  CLEAR: G_REC_TEST,         FM_NAME.START-OF-SELECTION.  SELECT *    INTO TABLE G_TAB_TEST    FROM SFLIGHT   WHERE CARRID IN S_LINE     AND FLDATE IN S_DATE.  IF SY-SUBRC <> 0.    MESSAGE E001 WITH 'NO DATA'.*   No data selected.  ENDIF.END-OF-SELECTION.  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'    EXPORTING      FORMNAME                 = 'ZTEST_22_SF0001'*     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 SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  ENDIF.  CALL FUNCTION fm_name*  EXPORTING*   ARCHIVE_INDEX =*   ARCHIVE_PARAMETERS =*   CONTROL_PARAMETERS =*   MAIL_APPL_OBJ =*   MAIL_RECIPIENT =*   MAIL_SENDER =*   OUTPUT_OPTIONS =*   USER_SETTINGS = 'X'* IMPORTING*   DOCUMENT_OUTPUT_INFO =*   JOB_OUTPUT_INFO =*   JOB_OUTPUT_OPTIONS =  TABLES    G_TAB_TEST = G_TAB_TEST  EXCEPTIONS    FORMATTING_ERROR = 1    INTERNAL_ERROR = 2    SEND_ERROR = 3    USER_CANCELED = 4    OTHERS = 5 .IF SY-SUBRC <> 0.*   <error handling>ENDIF.

1. 创建smartform程序。

输入tcodesmartforms


输入要创建的smartform程序的名称(这个名称要和report程序调用的名称一致)。然后点击“创建按钮”。



双击“表格接口”,输入一个内表的名称(这个名称要和report程序调用时的变量名必须一致,表的类型也必须一致)。然后点击“全局定义”。



输入一个工作区的名称和类型,类型必须和内表的类型一致。然后点击“页和窗口àpage->main window”然后输入一个名称(FIRST,如下图。



然后在 “FIRST”上右键创建一个table,创建table后会自动生成“表头”,“主要区域”和“脚标”。



我设置了4列,每列的宽度为4厘米。

然后点击“数据”。

    输入刚才在“表格接口”中输入的内表名称和在“全局定义”中输入的工作区名称。


然后在“主要区域”上右键创建一个table line(表行)。输入一个名称,选择刚才你设置的显示格式(LINE1,选择后会自动生成你刚才设置列数,然后修改每一列的名称。(我刚才设置了4列)





输入“&G_REC_TEST-CARRID&”,也就是刚才的内表指向一个字段。




以同样的方法设置其他的列。

表头的设置和上面的操作基本相似。就是在给相应的列赋值时更简单些。




然后保存并激活你程序,运行结果:





原创粉丝点击