1. Report List的输出定义

* ...NO STANDARD PAGE HEADING: 输出的报表不包含表头;

* ...LINE-SIZE col : 输出的报表不包含表头;

* ...LINE-COUNT (m) :设置每页行数及每页间空行数,如LINE-COUNT 18(2)表示每页18行,每页之前空两行;

* ...MESSAGE-ID mid:在程序中应用标准的Message类;

* ...DEFINING DATABASE idb:定义程序中所使用逻辑数据库。

 

2.图标符合的输出

*  WRITE ... AS  CHECKBOX :输出一个CHECKBOX .

 

DATA:MARKFIELD(1TYPE VALUE 'X'.

WRITE MARKFIELD AS CHECKBOX."默认选中 WRITE MARKFIELD AS CHECKBOX INPUT OFF."默认无法选择 MARKFIELD SPACE."重置为空
WRITE MARKFIELD AS CHECKBOX."默认未选 WRITE MARKFIELD AS CHECKBOX INPUT OFF."默认无法选择

 Report List 报表开发

 

 WRITE ...AS SYMBOL: 输出符号,需定义包含程序INCLUDE <SYMBOL>,或 INCLUDE <LIST>.

INCLUDE <SYMBOL>. WRITE:/ SYM_RIGHT_HAND AS SYMBOL,'Hello Sanlly',SYM_LEFT_HAND AS SYMBOL.

 Report List 报表开发

 

*   WRITE ... AS ICON :输出图标,需定义包含程序,具体图标可通过T/C:ICON查看,但是程序中需要定义INCLUDE<ICON>. 或INCLUDE<LIST>.

 

INCLUDE <ICON>. WRITE:/ ICON_CHECKED AS ICON,'已检查OK'. WRITE:/ ICON_INCOMPLETE AS ICON,'未完成'. WRITE:/ ICON_GREEN_LIGHT AS ICON,'开始'.

Report List 报表开发

 

3.报表输出格式控制

3.1 報表的制作

3.1.1 线条包括横线及竖线,横线的绘制语法可以指定具体位置及长度,默认当前屏幕宽度。

横线绘制语法:ULINE AT POS 或WRITE POS SY-ULINE.

ULINE AT 3(10).

SKIP.
WRITE AT 3(10SY-ULINE.
"两者输出的效果是一样的,都是横线.

Report List 报表开发


ULINE AT 3(10).
SET BLANK LINES ON.
WRITE AT 1(20SY-ULINE.

Report List 报表开发

 

3.1.2 竖线的输出固定为一个字符高度,Report List中字符大小是固定的。

竖线绘制语法:WRITE POS SY-ULINE.

REPORT  Y001_ARTYU NO STANDARD PAGE HEADING."不显示标题

DO TIMES.
  ULINE AT 1(60).
  WRITE/1 SY-VLINE,60 SY-VLINE.  "位置1和位置60绘制竖线
  ULINE AT /1(60).
ENDDO."绘制一个一列三行的报表

Report List 报表开发

 

3.2 控制输出格式

3.2.1

SKIP :用于输出空行.

SKIP n. :从上行开始创建N个空行.

SKIP TO LINE n. : 在第n行创建一个空行.


WRITE 'LINE 1'.
SKIP 5."从上行开始创建5个空行.
WRITE 'LINE 5'.
SKIP TO LINE 8."在第8行创建一个空行.

Report List 报表开发 

 3.2.2

NEW-LINE : 用于在Report List输出中产生换行,但不会产生空行。

 

3.2.3

...NO-SCROLING : 锁定其下一行所输出值,不会随屏幕左右移动,

    该定义只对语法的下一行有效,主要应用于报表输出中一些关键栏位的冻结功能.

 

3.2.4

* ...SCROLLING :其下一行所输出值会随屏幕左右移动.


NEW-PAGE LINE-SIZE 255.
WRITE:'This line will be moved.'.
NEW-LINE NO-SCROLLING.
WRITE:'This line will not be moved.'."该行输出值锁定,不会随屏幕左右移动
WRITE:'This line will be moved.'.

Report List 报表开发

移动鼠标时,中间一行被锁定,不会移动。

Report List 报表开发

 

3.2.5

* ...NEW-PAGE : 对输出报表时进行分页.

* ...NO-TITLE : 新的分页中不会有标题、日期、页码。

* ...NO-HEADING : 在该报表中继承首页的标题、日期、页码。

* ...NO-HEADING : 在该报表的新分页中不产生表头。

* ...WITH-HEADING : 输出的新页中继承首页的Column heading.

* ...LINE-COUNT lin : 设置新页的行数。

* ...LINE-SIZE col : 设置新页的宽度。

 

3.2.6

* TOP-OF-PAGE :该语法用于定 义动态页脚,要触发该事件,

   需要在Report语句中的LINE-COUNT附加项中为其预留输出行数。

   页脚事件块中的输出始终出现在页面下方.


REPORT  Y001 LINE-SIZE 30
             LINE-COUNT 10(5)"定义每页行数
             NO STANDARD PAGE HEADING."不显示表头

START-OF-SELECTION.
  WRITE:'Name:',10 'TOM'.
  WRITE:'Age:',30.
  WRITE:'Address:','Fu Jian'.

NEW-PAGE NO-HEADING NO-TITLE.
  WRITE:'Name:',10 'MARY'.
  WRITE:'Age:',28.
  WRITE:'Address:','Shen Zhen'.

SET BLANK LINES ON.

TOP-OF-PAGE.
  WRITE:'Curr Page:',SYST-PAGNO.
  ULINE.

END-OF-PAGE.
  ULINE.
  WRITE:'This the end!'.

Report List 报表开发

 

4. 获取输出屏幕中的数据

 当双击Report List 所输出的某行数据时,触发AT LINE-SELECTION事件,而HIDE定义使输出的内容和当前选择行相关联,会自动获取该行内容。

REPORT  Y001.
DATA TEXT(20).

START-OF-SELECTION.
  PERFORM WRITE_AND_HIDE.

AT LINE-SELECTION.
  CASE TEXT.
    WHEN 'LINE1'.
      WRITE:'You had select the LINE1'.
    WHEN 'LINE2'.
      WRITE:'You had select the LINE2'.
    WHEN OTHERS.
      WRITE:'The other line'.
  ENDCASE.
  CLEAR TEXT.

*&---------------------------------------------------------------------*
*&      Form  WRITE_AND_HIDE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM WRITE_AND_HIDE.
  TEXT 'LINE1'.
  WRITE TEXT.
  HIDE TEXT.

  TEXT 'LINE2'.
  WRITE TEXT.
  HIDE TEXT.

  TEXT 'LINE3'.
  WRITE TEXT.
  HIDE TEXT.
ENDFORM.                    "WRITE_AND_HIDE

Report List 报表开发

选中LINE1,点击望眼镜

Report List 报表开发

选中LINE2,点击望眼镜

 Report List 报表开发

 选中LINE3,点击望眼镜

 Report List 报表开发

 

 5. 列表程序中的系统参数

在列表输出过程中,系统将填充下列相关系统字段,可以在程序中直接调用。

* SY-LINCT : REPORT 语句中设定的LINE-COUNT.

* SY-LINSZ : REPORT 语句中设定的LINE-SIZE.

* SY-SROWS: 当前窗口中的列表行数.

* SY-SCOLS: 当前窗口中的列表栏目数.

* SY-PAGNO: 当前页的页码.

* SY-LINNO: 当前输出页面中的选定行序号.

* SY-COLNO: 当前输出页面中的选定列序号.

 

6.输出列表颜色的设定

使用FORMAT语句可以实现其他一些屏幕格式化功能,例如调整输出颜色等。

FORMAT <option1> [ON|OFF]  <option2> [ON|OFF]........

一旦设定,FORMAT语句中设置的格式将适用于所有后续输出语句,直到再资使用OFF选项关闭,其具体选项列表如下:

* COLOR n [ON|OFF] :设定列表行的背景色。

* INTENSIFIED [ON|OFF] :设定是否将字段强化输出。

* INVERSE [ON|OFF] :设定是否将背景即文字颜色反转输出。

* HOTSPOT [ON|OFF] :将光标以手型显示,单击触发行选择事件。

* INPUT [ON|OFF] :设定输入字段,允许用户输入。

* RESET:恢复上述的所有 设定默认值。

 

COLOR类型及描述
 No.  COLOR  DESC
 0  COL_BACKGROUND  Background(GUI-specific)
 1  COL_HEADING  Headers(grayish   blue)
 2  COL_NORMAL  List   body(bright gray)
 3  COL_TOTAL  Totals(yellow)
 4  COL_KEY  Key   columns(bluish green)
 5  COL_POSITIVE  Positive   threshold value(green)
 6  COL_NEGATIVE  Negative   threshold value(red)
 7  COL_GROUP  Control   levels(violet)

 

 FORMAT 语句中的全部选项都可用做WRITE语句的格式化选项,如下面的两条语句,输出效果一样


WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR COL_HEADING INTENSIFIED ON.
WRITE:'HELLO SANLLY ' COLOR INPUT INTENSIFIED ON.

 Report List 报表开发


FORMAT COLOR INPUT INTENSIFIED ON.
WRITE 'COLOR LINE 1'.
WRITE'COLOR LINE 2'.
WRITE'COLOR LINE 3'.
*FORMAT COLOR 1 OFF.
FORMAT RESET.
WRITE'COLOR LINE 4'.

 Report List 报表开发

 

 

7.实现Report的格式化分页输出

例如下面例子:创建一ICON数据查询程序,将ICON的名称及相关图标从系统抓出。

控制报表每页显示数量最多不超过10行.


REPORT  Y001_ARTYU NO STANDARD PAGE HEADING.
DATA:PAGE_LINE TYPE VALUE 10"每頁行數
     ICONTAB LIKE STANDARD TABLE OF V_ICON WITH HEADER LINE,"參照VIEW建內表
     NUM TYPE I.

*每次分页时绘制表头
TOP-OF-PAGE.
  WRITE/2 'Pages:',SYST-PAGNO RIGHT-JUSTIFIED.
  ULINE AT /1(80).
  WRITE/1(1SY-VLINE,'ID' COLOR 1,
          7(1SY-VLINE ,'ICON' COLOR 1,
          15(1SY-VLINE,'NAME' COLOR 1,
          41(1SY-VLINE,'SHORTTEXT' COLOR 1,
          80(1SY-VLINE.
  ULINE AT /1(80).

START-OF-SELECTION"屏幕开始时查询数据...
  SELECT FROM ICON INNER JOIN ICONT ON ICON~ID ICONT~ID INTO
 CORRESPONDING FIELDS OF TABLE ICONTAB WHERE ICONT~LANGU SY-LANGU.

  LOOP AT ICONTAB.
    WRITE/1(1SY-VLINE,SY-TABIX LEFT-JUSTIFIED,"LEFT-JUSTIFIED:左对齐
            7(1SY-VLINE,ICONTAB-ID AS ICON LEFT-JUSTIFIED,"RIGHT_JUSTIFIED:右对象,CENTERED:居中对齐。
            15(1SY-VLINE,ICONTAB-NAME,
            41(1SY-VLINE,ICONTAB-SHORTTEXT,
            80(1SY-VLINE.

    ULINE /1(80).
    NUM SY-TABIX MOD PAGE_LINE.
    IF NUM 0.
      NEW-PAGE.  "新的一页
    ENDIF.
  ENDLOOP.
  

 Report List 报表开发

 Report List 报表开发

相关文章: