SMARTFORM 实例练习

谢谢分享这位博文的前辈,写的很详细,我照着抄了一遍,运行一下,原来对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&”,也就是刚才的内表指向一个字段。




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

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




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





  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值