整体流程:
1) 定义一个结构或表,定义一内表,HEADER LINE作为工作区.
2) 定义选择屏幕.
3) 定义页眉页脚.
4) START-OF-SELECTION.具体操作:将条件选择的数据读入内表(GET_DATA),从内表输出数据IN LIST(OUTPUT).
需要注意的地方:
1) 内表定义时字段顺序,与输出时控制级有关(AT NEW,AT END OF).
2) "SELECTION-SCREEN BEGIN OF LINE.& SELECTION-SCREEN END OF LINE." 将之间的元素显示在一行.
3) "SELECTION-SCREEN COMMENT 10(15) TEXT-004." 加上中文注释和注释位置长度.
4) "LINE-COUNT 80(2)" 一页80行,留2行作页脚.
5) 输出达到页脚行再NEW-PAGE,否则页脚不显示.
6) ULINE也是占一行的.
*&---------------------------------------------------------------------*
*& Report ZPAB06_EXAM1 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZPAB06_EXAM1 LINE-SIZE 180 LINE-COUNT 80(2) NO STANDARD PAGE HEADING.
TABLES: MARA,BKPF.
DATA: BEGIN OF i_type,
ERSDA LIKE MARA-ERSDA,
MTART LIKE MARA-MTART,
MATNR LIKE MARA-MATNR,
MATKL LIKE MARA-MATKL,
END OF i_type.
DATA: itab LIKE STANDARD TABLE OF i_type WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1
with frame
title text-001.
SELECT-OPTIONS: WL1 FOR itab-MATNR,
WL2 FOR itab-MTART DEFAULT 'FERT',
WL3 FOR itab-ERSDA DEFAULT '20061017' TO
'20061018'.
PARAMETERS RATE TYPE BKPF-KURSF.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2
with frame
title text-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) TEXT-004.
PARAMETERS PRM1 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT (15) TEXT-005.
PARAMETERS PRM2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT (15) TEXT-006.
PARAMETERS PRM3 RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT (15) TEXT-007.
PARAMETERS PRM4 RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3
with frame
title text-003.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) TEXT-008.
PARAMETERS T1 AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) TEXT-009.
PARAMETERS T2 AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b3.
TOP-OF-PAGE.
ULINE AT (180).
WRITE: /1 SY-VLINE, 2 '物料类型', 42 SY-VLINE,
47 SY-VLINE, 48 '创建时间', 88 SY-VLINE,
93 SY-VLINE, 94 '物料号', 134 SY-VLINE,
139 SY-VLINE, 140 '物料组', 180 SY-VLINE.
END-OF-PAGE.
ULINE AT (180).
WRITE: /30 'Page:', sy-pagno.
START-OF-SELECTION.
PERFORM get_data.
PERFORM output.
FORM get_data.
SELECT MTART ERSDA MATNR MATKL
INTO CORRESPONDING FIELDS OF TABLE itab FROM MARA
WHERE MATNR IN WL1
AND MTART IN WL2
AND ERSDA IN WL3.
IF SY-SUBRC <> 0.
ULINE AT (180).
WRITE: /2 'NO RECORD!'.
ENDIF.
ENDFORM.
FORM output.
SORT itab BY MTART ERSDA MATNR.
LOOP AT itab.
ULINE AT /(42).
ULINE AT 47(42).
ULINE AT 93(42).
ULINE AT 139(42).
WRITE: /1 SY-VLINE, 2 itab-MTART, 42 SY-VLINE,
47 SY-VLINE, 48 itab-ERSDA, 88 SY-VLINE,
93 SY-VLINE, 94 itab-MATNR, 134 SY-VLINE,
139 SY-VLINE, 140 itab-MATKL, 180 SY-VLINE.
AT END OF ERSDA.
DO 80 TIMES.
CHECK ( SY-LINNO < 77 ).
ULINE AT /(42).
ULINE AT 47(42).
ULINE AT 93(42).
ULINE AT 139(42).
WRITE: /1 SY-VLINE, 42 SY-VLINE,
47 SY-VLINE, 88 SY-VLINE,
93 SY-VLINE, 134 SY-VLINE,
139 SY-VLINE, 180 SY-VLINE.
ENDDO.
NEW-PAGE.
ENDAT.
ENDLOOP.
ENDFORM.
1) 定义一个结构或表,定义一内表,HEADER LINE作为工作区.
2) 定义选择屏幕.
3) 定义页眉页脚.
4) START-OF-SELECTION.具体操作:将条件选择的数据读入内表(GET_DATA),从内表输出数据IN LIST(OUTPUT).
需要注意的地方:
1) 内表定义时字段顺序,与输出时控制级有关(AT NEW,AT END OF).
2) "SELECTION-SCREEN BEGIN OF LINE.& SELECTION-SCREEN END OF LINE." 将之间的元素显示在一行.
3) "SELECTION-SCREEN COMMENT 10(15) TEXT-004." 加上中文注释和注释位置长度.
4) "LINE-COUNT 80(2)" 一页80行,留2行作页脚.
5) 输出达到页脚行再NEW-PAGE,否则页脚不显示.
6) ULINE也是占一行的.
*&---------------------------------------------------------------------*
*& Report ZPAB06_EXAM1 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZPAB06_EXAM1 LINE-SIZE 180 LINE-COUNT 80(2) NO STANDARD PAGE HEADING.
TABLES: MARA,BKPF.
DATA: BEGIN OF i_type,
ERSDA LIKE MARA-ERSDA,
MTART LIKE MARA-MTART,
MATNR LIKE MARA-MATNR,
MATKL LIKE MARA-MATKL,
END OF i_type.
DATA: itab LIKE STANDARD TABLE OF i_type WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1
with frame
title text-001.
SELECT-OPTIONS: WL1 FOR itab-MATNR,
WL2 FOR itab-MTART DEFAULT 'FERT',
WL3 FOR itab-ERSDA DEFAULT '20061017' TO
'20061018'.
PARAMETERS RATE TYPE BKPF-KURSF.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2
with frame
title text-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) TEXT-004.
PARAMETERS PRM1 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT (15) TEXT-005.
PARAMETERS PRM2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT (15) TEXT-006.
PARAMETERS PRM3 RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT (15) TEXT-007.
PARAMETERS PRM4 RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3
with frame
title text-003.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) TEXT-008.
PARAMETERS T1 AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) TEXT-009.
PARAMETERS T2 AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b3.
TOP-OF-PAGE.
ULINE AT (180).
WRITE: /1 SY-VLINE, 2 '物料类型', 42 SY-VLINE,
47 SY-VLINE, 48 '创建时间', 88 SY-VLINE,
93 SY-VLINE, 94 '物料号', 134 SY-VLINE,
139 SY-VLINE, 140 '物料组', 180 SY-VLINE.
END-OF-PAGE.
ULINE AT (180).
WRITE: /30 'Page:', sy-pagno.
START-OF-SELECTION.
PERFORM get_data.
PERFORM output.
FORM get_data.
SELECT MTART ERSDA MATNR MATKL
INTO CORRESPONDING FIELDS OF TABLE itab FROM MARA
WHERE MATNR IN WL1
AND MTART IN WL2
AND ERSDA IN WL3.
IF SY-SUBRC <> 0.
ULINE AT (180).
WRITE: /2 'NO RECORD!'.
ENDIF.
ENDFORM.
FORM output.
SORT itab BY MTART ERSDA MATNR.
LOOP AT itab.
ULINE AT /(42).
ULINE AT 47(42).
ULINE AT 93(42).
ULINE AT 139(42).
WRITE: /1 SY-VLINE, 2 itab-MTART, 42 SY-VLINE,
47 SY-VLINE, 48 itab-ERSDA, 88 SY-VLINE,
93 SY-VLINE, 94 itab-MATNR, 134 SY-VLINE,
139 SY-VLINE, 140 itab-MATKL, 180 SY-VLINE.
AT END OF ERSDA.
DO 80 TIMES.
CHECK ( SY-LINNO < 77 ).
ULINE AT /(42).
ULINE AT 47(42).
ULINE AT 93(42).
ULINE AT 139(42).
WRITE: /1 SY-VLINE, 42 SY-VLINE,
47 SY-VLINE, 88 SY-VLINE,
93 SY-VLINE, 134 SY-VLINE,
139 SY-VLINE, 180 SY-VLINE.
ENDDO.
NEW-PAGE.
ENDAT.
ENDLOOP.
ENDFORM.