*-----------------------------------------------------------------------
* Program ID :ZTEST904
* Program Name :ZTEST904
*-----------------------------------------------------------------------
* CREATED DATE :2004/09/04
* CREATED BY :LG
* DESCRIPTION :这个程序是学习如何通过程序来调用
* 已经做好的SCRIPT画面来生成报表的。
*-----------------------------------------------------------------------
* MODIFICATION :
* DATE MODIFIED MODIFIED BY TRANSPORT REQUEST DESCRIPTION
* 2004/09/18 LG VERSION:01/01 学习
*-----------------------------------------------------------------------
REPORT ZTEST904 .
*定义需要使用的表
***********************************************
TABLES: MSEG,
MARA,
MKPF.
*定义一个内部表(带表头)
***********************************************
DATA: BEGIN OF ITAB OCCURS 0,
A LIKE MSEG-MBLNR,
B LIKE MSEG-ZEILE,
END OF ITAB.
* 插入一些使用的数据。
***********************************************
DO 30 TIMES.
ITAB-A = '测试数据'.
ITAB-B = SY-INDEX.
APPEND ITAB.
ENDDO.
* 显示画面数据,显示上面的打印按钮。用户点击打印
* 然后调用打印的SCRIPT。显示答应的数据。
***********************************************
* INITIALIZATION
***********************************************
INITIALIZATION.
* AT SELECTION-SCREEN.
***********************************************
AT SELECTION-SCREEN.
* START-OF-SELECTION
***********************************************
START-OF-SELECTION.
SET PF-STATUS 'ZTEST_904'.
PERFORM PRINT_ITAB TABLES ITAB.
* AT USER-COMMAND.
***********************************************
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'USER_PRINT'.
WRITE:/ 'BUTTON CLIKCKED'.
PERFORM OPEN_FORM.
PERFORM START_FORM.
DO 50 TIMES.
PERFORM WRITE_FORM USING '' 'MAIN' 'SET'.
ENDDO.
PERFORM END_FORM.
PERFORM CLOSE_FORM.
ENDCASE.
* TOP-OF-PAGE.
***********************************************
TOP-OF-PAGE.
* END-OF-PAGE.
***********************************************
END-OF-PAGE.
*&----------------------------------------------------------------------
*& FORM : PRINT_ITAB
*&----------------------------------------------------------------------
* <处理概要>
*-----------------------------------------------------------------------
* <种别(入出力) <参数名> <类型> <调用类型参照,值>>
*-----------------------------------------------------------------------
* FORM PRINT_ITAB TABLES JTAB LIKE ITAB[].
FORM PRINT_ITAB TABLES JTAB STRUCTURE ITAB.
LOOP AT JTAB.
WRITE:/ JTAB-A , 10 JTAB-B.
ENDLOOP.
ENDFORM.
FORM PRINT_PAGE.
ENDFORM.
FORM OPEN_FORM.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
* DIALOG = 'X'
FORM = 'ZTEST904'
LANGUAGE = SY-LANGU
* OPTIONS =
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
OTHERS = 11
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM CLOSE_FORM.
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM START_FORM.
CALL FUNCTION 'START_FORM'
EXPORTING
* ARCHIVE_INDEX =
FORM = 'ZTEST904'
* LANGUAGE = ' '
STARTPAGE = 'FRIST'
* PROGRAM = ''
* MAIL_APPL_OBJECT =
* IMPORTING
* LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
SPOOL_ERROR = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM END_FORM.
CALL FUNCTION 'END_FORM'
* IMPORTING
* RESULT =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SPOOL_ERROR = 3
OTHERS = 4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM WRITE_FORM USING ELE WIN FUNC.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ELE
FUNCTION = FUNC
* TYPE = 'BODY'
WINDOW = WIN
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
OTHERS = 9
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.