Scriptform 示例

Scriptform由两部分组成:驱动程序和Scriptform,相对来说Smartforms有三部分:smartforms,function module,驱动程序。

以下是一个scriptform的驱动程序示例,这是一个标准程序:

*&---------------------------------------------------------------------*
*& Report  RSTXEXP1                                                    *
*&---------------------------------------------------------------------*
*& Beispielprogramm für Formulardruck                                  *
*&---------------------------------------------------------------------*
REPORT  RSTXEXP1.

TABLESSCUSTOMSBOOKSPFLI.

SELECT-OPTIONSS_ID FOR SCUSTOM-ID DEFAULT TO 1,
                S_FLI FOR SBOOK-CARRID DEFAULT 'LH' TO 'LH'.

DATA CUSTOMERS LIKE SCUSTOM OCCURS 100
     WITH HEADER LINE.
DATA BOOKINGS  LIKE SBOOK   OCCURS 1000
     WITH HEADER LINE.
DATA CONNECTIONS LIKE SPFLI OCCURS 1000
     WITH HEADER LINE.
DATABEGIN OF SUMS OCCURS 10,
        FORCURAM  LIKE SBOOK-FORCURAM,
        FORCURKEY LIKE SBOOK-FORCURKEY,
      END OF SUMS.

* Get data
SELECT FROM  SCUSTOM INTO TABLE CUSTOMERS
       WHERE ID IN S_ID
       ORDER BY PRIMARY KEY.
SELECT FROM  SBOOK   INTO TABLE BOOKINGS
       WHERE CUSTOMID IN S_ID AND CARRID IN S_FLI
       ORDER BY PRIMARY KEY.
SELECT FROM  SPFLI   INTO TABLE CONNECTIONS
       FOR ALL ENTRIES IN BOOKINGS
       WHERE CARRID BOOKINGS-CARRID
       AND   CONNID BOOKINGS-CONNID
       ORDER BY PRIMARY KEY.

* Open print job
CALL FUNCTION 'OPEN_FORM'
     EXPORTING
          DEVICE             'PRINTER'
          FORM               'S_EXAMPLE_1'
          DIALOG             'X'
     EXCEPTIONS
          CANCELED           1
          DEVICE             2
          FORM               3
          OPTIONS            4
          UNCLOSED           5
          OTHERS             6.
IF SY-SUBRC <> 0.
  WRITE 'Error in open_form'(001).
  EXIT.
ENDIF.

* Print form for all customers
LOOP AT CUSTOMERS.
* Set customer address
  SCUSTOM CUSTOMERS.
* Open form of respective customer
  CALL FUNCTION 'START_FORM'
       EXCEPTIONS
          OTHERS        1.
  IF SY-SUBRC <> 0.
    WRITE 'Error in start_form'(002).
    EXIT.
  ENDIF.

* Display column headings of main window
  CALL FUNCTION 'WRITE_FORM'
       EXPORTING
            ELEMENT       'HEADING'
            FUNCTION      'SET'
            TYPE          'TOP'
            WINDOW        'MAIN'
       EXCEPTIONS
            OTHERS        1.
  IF SY-SUBRC <> 0.
    WRITE 'Error in write_form printing top element of main'(003).
    EXIT.
  ENDIF.
* Customer bookings
  CLEAR SUMSREFRESH SUMS.
  LOOP AT BOOKINGS
       WHERE CUSTOMID CUSTOMERS-ID.
    SBOOK BOOKINGS.
*   Get departure time
    READ TABLE CONNECTIONS WITH KEY CARRID BOOKINGS-CARRID
                                    CONNID BOOKINGS-CONNID.
    IF SY-SUBRC 0.
      SPFLI CONNECTIONS.
    ELSE.
      CLEAR SPFLI.
    ENDIF.
*   Print position
    CALL FUNCTION 'WRITE_FORM'
         EXPORTING
              ELEMENT       'BOOKING'
              FUNCTION      'SET'
              TYPE          'BODY'
              WINDOW        'MAIN'
         EXCEPTIONS
              OTHERS        1.
    IF SY-SUBRC <> 0.
      WRITE 'Error in write_form printing body of main'(004).
      EXIT.
    ENDIF.
*   Add current position to corresponding entry in table sums
    MOVE-CORRESPONDING SBOOK TO SUMS.
    COLLECT SUMS.
  ENDLOOP.          " at bookings

* Print sum
  LOOP AT SUMS.
    MOVE-CORRESPONDING SUMS TO SBOOK.
    CALL FUNCTION 'WRITE_FORM'
         EXPORTING
              ELEMENT       'SUM'
              FUNCTION      'SET'
              TYPE          'BODY'
              WINDOW        'MAIN'
         EXCEPTIONS
              OTHERS        1.
    IF SY-SUBRC <> 0.
      WRITE 'Error in write_form printing sum of invoice'(005).
      EXIT.
    ENDIF.
  ENDLOOP.         " at sums

* Close customer form
  CALL FUNCTION 'END_FORM'
       EXCEPTIONS
            OTHERS   1.
  IF SY-SUBRC <> 0.
    WRITE 'Error in end_form'(006).
    EXIT.
  ENDIF.
ENDLOOP.          " at customers

* close print job
CALL FUNCTION 'CLOSE_FORM'
     EXCEPTIONS
          OTHERS   1.
IF SY-SUBRC <> 0.
  WRITE 'Error in close_form'(007).
  EXIT.
ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值