• Report List 报表开发


    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."默认无法选择

     

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

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

     

    *   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,'开始'.

    3.报表输出格式控制

    3.1 報表的制作

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

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

    ULINE AT 3(10).

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


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

    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."绘制一个一列三行的报表

    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行创建一个空行.

     

     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.'.

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

    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!'.

     

    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

    选中LINE1,点击望眼镜

    选中LINE2,点击望眼镜

     

     选中LINE3,点击望眼镜

     

     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.

     


    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'.

     

    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.
      

     

     

  • 相关阅读:
    vue响应式原理之Observer、Dep、Watcher
    vscode 常用插件
    脚手架搭建vue项目
    搭建框架
    select 自匹配问题
    Winform 根据Point截图并保存到指定路径
    C# Screen 类(多屏幕开发)
    C# WindowsService安装与卸载
    WebService WSDL动态访问
    C# 操作ini文件
  • 原文地址:https://www.cnblogs.com/sanlly/p/3356670.html
Copyright © 2020-2023  润新知