Write 的report 报表

 

1、WRITE {[AT] [/][pos][(len|*|**)]} dobj
      [UNDER other_dobj]
      [NO-GAP]
      [int_format_options]
      [
        [COLOR {{{color [ON]}|OFF}|{= col}}]
        [INTENSIFIED [{ON|OFF}|{= flag}]]
        [INVERSE [{ON|OFF}|{= flag}]]
        [HOTSPOT [{ON|OFF}|{= flag}]]
        [INPUT [{ON|OFF}|{= flag}]]
        [FRAMES [{ON|OFF}|{= flag}]]
        [RESET]
      ]
      [
         {AS CHECKBOX}
        | {AS ICON}
        | {AS SYMBOL}
        | {AS LINE}
      ]
      [QUICKINFO info].

上面的这些语法都可以在下面的小工具中实现。

1)、WRITE {[AT] [/][pos][(len|*|**)]}  -- 替换输出文本字段

斜线/表示新的一行

<pos>是最长为三位数字的数字或变量,表示在屏幕上的位置

<len>是最长为三位数字的数字或变量,表示输出最大长度

如果<pos><len>只包含直接值(即,不是变量),可以忽略关键字 AT,否则为变量时不能省

WRITE AT表示替换上一行的某些内容, write表示从从本行某位置开始的内容。

DATA: text TYPE string VALUE '0123456789ABCDEF',
      col  TYPE i VALUE 5,
      len  TYPE i VALUE 5.

WRITE text.
WRITE /5(10) text.
WRITE / text.
WRITE AT col(len) text.
"结果
*0123456789ABCDEF
*    0123456789
*0123012349ABCDEF

2)、UNDER、NO-GAP

under -- 与某字段对齐  NO-GAP 去掉空格

DATA: g(5) VALUE 'Hello',
      f(5) VALUE 'Dolly'.
WRITE: g, f.
WRITE: /10 g,
       /   f UNDER g.
WRITE: / g NO-GAP, f.
"结果
*Hello Dolly
*         Hello
*         Dolly
*HelloDolly

3)、QUICKINFO  -- 鼠标放在上面有提示信息

WRITE: (10) sy-datum QUICKINFO 'Date of list creation',
       (8)  sy-uzeit QUICKINFO 'Time of list creation'.

4)、COLOR 、INTENSIFIED、INVERSE  -- 颜色参数等

DATA col TYPE i VALUE 0.
DO 8 TIMES.
  col = sy-index - 1.
  " FORMAT COLOR = col.
  WRITE: /  col              COLOR OFF,
           "此种好像不存在,与高亮前景是一样的,即前景色只能是高亮的?
           '低亮前景'  COLOR = col INTENSIFIED OFF INVERSE ON  ,
           '高亮前景'  COLOR = col INTENSIFIED ON INVERSE ON  ,
           '低亮背景'  COLOR = col INTENSIFIED OFF INVERSE OFF  ,
           '高亮背景'  COLOR = col INTENSIFIED ON INVERSE OFF  .
enddo.

5)、HOTSPOT  -- 热点单击事件

HOTSPOT [{ON|OFF}|{= flag}]

鼠标放上去会显示成手的形状

START-OF-SELECTION.
  "FORMAT HOTSPOT.
  WRITE 'Click me!' COLOR 5 HOTSPOT ON.
  "FORMAT HOTSPOT OFF.

AT LINE-SELECTION.
  WRITE 'Yeah!' COLOR 3.

6)、INPUT  -- 输入参数

INPUT [{ON|OFF}|{= flag}]

DATA: input_field TYPE c LENGTH 100,
      line_num TYPE i.

START-OF-SELECTION.
  WRITE 'Input text:'.
  SET BLANK LINES ON.
  "FORMAT INPUT.
  WRITE / input_field INPUT on.
  "FORMAT INPUT OFF.
  WRITE / '>>> OK <<<' COLOR 5 HOTSPOT.

AT LINE-SELECTION.
  IF sy-lisel = '>>> OK <<<'.
    line_num = sy-lilli - 1.
    READ LINE line_num FIELD VALUE input_field.
    WRITE:   'The input was:',/  input_field.
  ENDIF.

7)、FRAMES  -- 字符和边框标识

FRAMES [{ON|OFF}|{= flag}]

该选项决定了"-" and "|"字符是否显示为表格框线,还是普通的字符。如果为ON或者flag为非0时,则显示为表格框线(默认);否则显示为普通的字符。

如果ON, OFF, nor flag都指定,默认为ON

"FORMAT FRAMES ON.

WRITE: / '----',
       / '|  |',
       / '----'.

"FORMAT FRAMES OFF.
WRITE: / '----' FRAMES OFF,
       / '|  |' FRAMES OFF,
       / '----' FRAMES OFF.

8)、AS CHECKBOX / AS ICON / AS SYMBOL / AS LINE

复选框,图标,符号,表格线

9)、水平线,垂直线,空行

ULINE [AT [/][<pos>][(<len>)]].

ULINE:在当前位置画横线

ULINE AT m(n):在当前行的第m个位置画一个长度为n的横线

UNLINE /m(n):先用“/”换一行,然后在第m个位置画一个长度为n的横线

WRITE [AT [/][<pos>][(<len>)]] SY-ULINE.
WRITE [AT [/][<pos>][(<len>)]] '-----'

"垂直线
WRITE [AT [/][<pos>]] sy-vline.
或者:
WRITE [AT [/][<pos>]] '|'.

SKIP TO LINE <n>.

2、WRITE … TO

WRITE {source|(source_name)} TO destination
[LEFT-JUSTIFIED|CENTERED|RIGHT-JUSTIFIED]
    { { [EXPONENT exp]
        [NO-GROUPING]
        [NO-SIGN]
        [NO-ZERO]
        [CURRENCY cur]
        { {[DECIMALS dec][ROUND scale]}|[UNIT unit]}
}
      | {[ENVIRONMENT TIME FORMAT][TIME ZONE tz]} [STYLE stl]
}
    [USING{ {NO EDIT MASK}|{EDIT MASK mask} }]
    [ DD/MM/YY|MM/DD/YY|DD/MM/YYYY|MM/DD/YYYY|DDMMYY|MMDDYY|YYMMDD ].

1)、LEFT-JUSTIFIED|CENTERED|RIGHT-JUSTIFIED

所有源source都会看作是String,如果是固定长度类型C,则尾部空格会被去掉。

对齐时,会在前、后或前后补空格。如果是右对齐时,如果目标太短,则会截断左边。

destination目标类型只能是固定长度的CNDT类型。

DATA: formatted_text TYPE c LENGTH 10.
WRITE 'Left'   TO formatted_text LEFT-JUSTIFIED.
WRITE:/ formatted_text.
WRITE 'Center' TO formatted_text CENTERED.
WRITE:/ formatted_text.
WRITE 'Right'  TO formatted_text RIGHT-JUSTIFIED.
WRITE:/ formatted_text.
WRITE 'CenterCenter'  TO formatted_text RIGHT-JUSTIFIED.
WRITE:/ formatted_text.

2)、NO-GROUPING,NO-SIGN,NO-ZERO

没有千分位,+号不输出,零或者前导零不会显示

3)、CURRENCY cur,DECIMALS dec,ROUND scale,UNIT unit

× 货币因子,指定小数位,四舍五入,

DATA pack TYPE p VALUE '123.456'
                        DECIMALS 3.
WRITE pack DECIMALS 2.
WRITE: / pack ROUND -2,
       / pack ROUND -1,
       / pack ROUND 1,
       / pack ROUND 2.

          123.46
      12,345.600
       1,234.560
          12.346
           1.235

4)、USING { {NO EDIT MASK}|{EDIT MASK mask} }  -- 撤消对 ABAP/4 词典中指定的格式模板的激活

DATA time TYPE t VALUE '154633'.
WRITE: time,
"这里直接使用的是格式模板,还可以使用词典中已有的转换规则函数
  /(8) time USING EDIT MASK '__:__:__'.
154633
15:46:33

DD/MM/YY|MM/DD/YY|DD/MM/YYYY|MM/DD/YYYY|DDMMYY|MMDDYY|YYMMDD

3、 页面布局:

1)、取消标准页眉   ,列宽,页长

每列最长是能够显示255,如果是打印的话不能超过132。

REPORT y_lazhao_test005 NO STANDARD PAGE HEADING LINE-SIZE 132 LINE-COUNT 4

2)、定义页眉页脚:

TOP-OF-PAGE.  -- 页眉

END-OF-PAGE.  -- 页脚

该程序包括三个处理块。关闭标准页眉。将页长设置为六行,其中两行留作页脚。列表包括三页,每页六行。每页由自定义的两行页眉、两行实际列表和两行页脚组成。页脚中显示的当前页号来自系统字段SY-PAGNO 。

 REPORT  ZJESSE02 LINE-SIZE 40 LINE-COUNT 6(2) 
                NO STANDARD PAGE HEADING. 
TOP-OF-PAGE. 
WRITE: 'Page with Header and Footer'. 
ULINE AT /(27). 
END-OF-PAGE. 
ULINE. 
WRITE: /30 'Page', SY-PAGNO. 
START-OF-SELECTION. 
DO 6 TIMES. 
  WRITE / SY-INDEX. 
ENDDO.

如果设置了line-count参数,则当达到每页的行数限制就会自动换页,当然也可以程序中通过语法实现换页。

NEW-PAGE. 

RESERVE 3 LINES.  当前页剩余行数不足3行时,自动换页。

3)、单独设置每页的页宽,页长,页眉,页脚

NEW-PAGE [NO-TITLE|WITH-TITLE] [NO-HEADING|WITH-HEADING]. 

能够单独确定每个页眉是否使用标准抬头

NEW-PAGE LINE-SIZE <width> LINE-COUNT<length>."该语句将后续的页长确定为<length>。0则表示标准页长,页长会适配当前窗口的长度,SY-SROWS。

4)、定位

SY-COLNO用于当前列   SY-LINNO   用于当前行

POSITION <col>."水平定位该语句将水平输出位置和SY-COLNO系统字段设置为<col>.

SKIP TO LINE<n>."垂直定位该语句将垂直输出位置和SY-LINNO系统字段设置为<lin>.

BACK. "将输出定位到整个页眉之后的第一行

5)、格式输出

使字段可接受输入

FORMAT INPUT [ON|OFF]. "要在运行时将输出字段设置为“准备输入”。

将字段输出为热点

FORMAT HOTSPOT [ON|OFF]

SET COUNTRY <c>.  --国家属性

货币特有的输出格式

WRITE <f> CURRENCY<c>.

单位特有输出格式

WRITE <f> UNIT<u>.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值