SAP-LIST 報(bào)表

01-LIST報(bào)表功能介紹
02-LIST報(bào)表開(kāi)發(fā)技巧
03-LIST報(bào)表開(kāi)發(fā)實(shí)戰(zhàn)

01-LIST報(bào)表功能介紹

列表是ABAP/4報(bào)表程序數(shù)據(jù)的輸出媒介.
每個(gè)ABAP/4報(bào)表程序?qū)⑵漭敵鰯?shù)據(jù)傳遞到直接與該程序連接的列表中。
每個(gè)程序最多生成21個(gè)列表。
1個(gè)基本列表和20個(gè)輔助列表。

02-LIST報(bào)表開(kāi)發(fā)技巧

1.標(biāo)準(zhǔn)列表結(jié)構(gòu)

(1)標(biāo)準(zhǔn)頁(yè)眉:
標(biāo)準(zhǔn)頁(yè)眉至少包括兩行標(biāo)準(zhǔn)標(biāo)題。
標(biāo)準(zhǔn)標(biāo)題的首行包含列表表頭和頁(yè)號(hào)。第二行由水平線組成。
執(zhí)行程序時(shí),列表表頭存儲(chǔ)在系統(tǒng)字段SY-TITLE中。
如果需要,可以在標(biāo)準(zhǔn)標(biāo)題中包括最多四行列頭和另一條水平線。
(2)標(biāo)準(zhǔn)頁(yè):
輸出數(shù)據(jù)顯示在頁(yè)眉之下。
標(biāo)準(zhǔn)列表包含一個(gè)動(dòng)態(tài)長(zhǎng)度的單頁(yè)(內(nèi)部限制60,000行)。
輸出長(zhǎng)度由當(dāng)前列表大小確定。輸出屏幕包括一個(gè)垂直滾動(dòng)條,允許用戶滾動(dòng)頁(yè)長(zhǎng)超過(guò)窗口的列表。
(3)標(biāo)準(zhǔn)列表的寬度:
標(biāo)準(zhǔn)列表的寬度取決于執(zhí)行報(bào)表時(shí)的窗口寬度。
如果用戶窗口小于或等于標(biāo)準(zhǔn)窗口大小,則標(biāo)準(zhǔn)頁(yè)寬應(yīng)符合標(biāo)準(zhǔn)窗口寬度。用戶可能必須滾動(dòng)列表才能查看列表的所有部件。
如果用戶窗口超過(guò)標(biāo)準(zhǔn)窗口寬度,則標(biāo)準(zhǔn)列表的寬度符合選定標(biāo)準(zhǔn)窗口的寬度。

2.修改列表和列標(biāo)題

自定義列表:

可以修改標(biāo)準(zhǔn)列表的結(jié)構(gòu)并創(chuàng)建單個(gè)結(jié)構(gòu)的列表。
使用REPORT語(yǔ)句選項(xiàng)以及事件TOP-OF-PAGEEND-OF-PAGE。
PROGRAM語(yǔ)句REPORT語(yǔ)句等介并有相同的選項(xiàng)。
如果列表包括幾頁(yè),則可以分別定義每頁(yè)的結(jié)構(gòu)。
單個(gè)頁(yè)眉:要分別定義頁(yè)眉的格式,必須在緊隨事件關(guān)鍵字TOP-OF-PAGE的處理塊中定義,

語(yǔ)法:
TOP-OF-PAGE
WRITE……

TOP-OF-PAGE事件在系統(tǒng)開(kāi)始處理列表新頁(yè)時(shí)出現(xiàn)。系統(tǒng)在輸出新頁(yè)首行之前處理TOP-OF-PAGE后面的語(yǔ)句。
如果要取消標(biāo)準(zhǔn)頁(yè)眉,使用語(yǔ)法:

REPORT <rep> NO STANDARD PAGEHEADING.

使用該語(yǔ)句時(shí),系統(tǒng)不在報(bào)表<rep>列表上顯示標(biāo)準(zhǔn)頁(yè)眉。

例子:
REPORT ZHY01_HY101_20220627_01 NO STANDARD PAGE HEADING.
TOP-OF-PAGE.
WRITE:sy-title,30 'page',sy-pagno."30指的是距離首字符有30個(gè)字符的間隔。
ULINE."表示橫線
WRITE: / 'SAP AG', 20 '鼠小倩, ',SY-DATUM, / 'ALV LIST報(bào)表練習(xí)', / '修改列表和列標(biāo)題'.
ULINE.

START-OF-SELECTION.
DO 5 TIMES.
  WRITE / SY-INDEX.
ENDDO.

運(yùn)行結(jié)果

注意:
報(bào)表程序不使用標(biāo)準(zhǔn)頁(yè)眉,而是使用 TOP-OF-PAGE 之后的自定義頁(yè)眉。
要顯式結(jié)束TOP-OF-PAGE處理塊,必須指定事件關(guān)鍵字 START-OF-SELECTION。

3.確定列表寬度

要確定輸出列表的寬度,使用REPORT語(yǔ)句的LINE-SIZE選項(xiàng)。語(yǔ)法:

REPORT<rep> LINE-SIZE<width>.

該語(yǔ)句根據(jù)<width>字符確定報(bào)表<rep>輸出列表的寬度。
如果將<width>設(shè)置為0,則系統(tǒng)使用標(biāo)準(zhǔn)列表的寬度。
一行最多可包含255個(gè)字符。如果要打印列表,大多數(shù)據(jù)打印機(jī)不能打印超過(guò)132個(gè)字符的列表。
創(chuàng)建列表時(shí),系統(tǒng)字段SY-LINSZ包含當(dāng)前行寬。
要將列表寬度調(diào)整為當(dāng)前窗口寬度,使用ULINE語(yǔ)句(不帶AT選項(xiàng))創(chuàng)建的水平線自動(dòng)適配自定義列表寬度。
例子:

*ALV LIST報(bào)表——確定列表寬度
REPORT ZHY01_HY101_20220627_01 LINE-SIZE 60.
WRITE: 'SY-LINSZ:',SY-linsz.
ULINE.
DO 5 TIMES.
  WRITE sy-index.
ENDDO.

結(jié)果展示

4.確定頁(yè)長(zhǎng)

要確定輸出列表的頁(yè)長(zhǎng),使用REPORT語(yǔ)句的LINE-COUNT選項(xiàng)。語(yǔ)法

REPORT<rep> LINE-COUNT<length>[(<n>)]

該語(yǔ)句用<length>行確定報(bào)表的頁(yè)長(zhǎng)。
如果指定選項(xiàng)號(hào)<n>,則系統(tǒng)為頁(yè)腳保留<n>行頁(yè)長(zhǎng)。
并不將這些頁(yè)腳行填寫(xiě)到END-OF-PAGE事件中,而是作為空行顯示。
如果設(shè)置為0,則系統(tǒng)使用標(biāo)準(zhǔn)頁(yè)長(zhǎng)。
創(chuàng)建列表時(shí),系統(tǒng)字段SY-LINCT包含每頁(yè)的當(dāng)前行數(shù).
例子:

*ALV LIST報(bào)表——04確定列表寬度
REPORT ZHY01_HY101_20220627_01 LINE-SIZE 40 LINE-COUNT 4.
WRITE: 'SY-LINCT:',sy-linct."當(dāng)前列表的頁(yè)面長(zhǎng)度
skip.
DO 5 TIMES.
  WRITE sy-index.
ENDDO.

運(yùn)行結(jié)果,對(duì)比查看

該程序?qū)㈨?yè)長(zhǎng)確定為四行。使用標(biāo)準(zhǔn)頁(yè)眉。假定標(biāo)準(zhǔn)頁(yè)眉 包括兩行列表表頭。

05.定義頁(yè)腳

要定義頁(yè)腳,使用END-OF-PAGE事件。
在處理列表頁(yè)時(shí),如果系統(tǒng)到達(dá)頁(yè)腳保留行,或者如果RESERVE語(yǔ)句觸發(fā)分布則該事件發(fā)生。
在緊接著END-OF-PAGE事件關(guān)鍵字的處理塊中填充頁(yè)腳的行。

END-OF-PAGE.
 WRITE:...

如果為REPORT語(yǔ)句的LINE-COUNT選項(xiàng)中的腳注保留行,則系統(tǒng)只處理緊接著END-OF-PAGE的處理塊。
例子:

*ALV LIST報(bào)表——05定義頁(yè)腳
REPORT ZHY01_HY101_20220627_01 line-SIZE 40 LINE-COUNT 6(2) NO STANDARD PAGE HEADING.
TOP-OF-PAGE."報(bào)表程序不使用標(biāo)準(zhǔn)頁(yè)眉,而是使用 TOP-OF-PAGE 之后的自定義頁(yè)眉。
WRITE: 'Page With Header and Footer'.
ULINE at /(27).
end-OF-PAGE.
ULINE.
WRITE: /30'Page',sy-pagno."當(dāng)前列表頁(yè)
START-OF-SELECTION."要顯式結(jié)束TOP-OF-PAGE處理塊,必須指定事件關(guān)鍵字 START-OF-SELECTION。
DO 6 TIMES.
WRITE / sy-index.
ENDDO.

報(bào)表程序不使用標(biāo)準(zhǔn)頁(yè)眉,而是使用 TOP-OF-PAGE 之后的自定義頁(yè)眉。
要顯式結(jié)束TOP-OF-PAGE處理塊,必須指定事件關(guān)鍵字 START-OF-SELECTION。
結(jié)果展示

說(shuō)明:
該程序包括三個(gè)處理塊。
關(guān)閉標(biāo)準(zhǔn)頁(yè)眉。將頁(yè)長(zhǎng)設(shè)置為六行,其中兩行留作
頁(yè)腳。列表包括三頁(yè),每頁(yè)六行。每頁(yè)由自定義的兩行頁(yè)眉、兩行實(shí)際列表
和兩行頁(yè)腳組成。頁(yè)腳中顯示的當(dāng)前頁(yè)號(hào)來(lái)自系統(tǒng)字段SY-PAGNO。

06.多頁(yè)列表

如果在報(bào)表中寫(xiě)入列表輸出頁(yè)的行數(shù)超過(guò)在REPORT語(yǔ)句LINE-COUNT選項(xiàng)中定義的行數(shù),則系統(tǒng)自動(dòng)創(chuàng)建新頁(yè)。
每個(gè)新頁(yè)都包含為報(bào)表定義的頁(yè)眉和頁(yè)腳(如果有的話)。
除自動(dòng)分布外,可以使用NEW-PAGERESERVE語(yǔ)句顯式地編碼分布。
NEW-PAGE語(yǔ)句的選項(xiàng)允許分別設(shè)置每頁(yè)格式。也需要NEW-PAGE語(yǔ)句在程序內(nèi)打印列表。

無(wú)條件分頁(yè):

要在頁(yè)處理期間觸發(fā)分頁(yè),請(qǐng)使用NEW-PAGE.

*ALV LIST報(bào)表——06 多頁(yè)列表:無(wú)條件多頁(yè)
REPORT zhy01_hy101_20220627_01 LINE-SIZE 40.
TOP-OF-PAGE.
WRITE: 'TOP-OF-PAGE:',sy-pagno."當(dāng)前列表頁(yè)
ULINE AT /(17).
START-OF-SELECTION.
DO 2 TIMES.
  WRITE /'LOOP:'.
  DO 3 TIMES.
    WRITE / sy-index.
  ENDDO.
  NEW-PAGE.
ENDDO.

結(jié)果展示:

條件多頁(yè):

語(yǔ)法:

RESERVE <n> LINES.

例子:

*ALV LIST報(bào)表——06 多頁(yè)列表:條件分頁(yè)
REPORT zhy01_hy101_20220627_01 LINE-SIZE 40 LINE-COUNT 8(2).
end-OF-PAGE.
ULINE.
START-OF-SELECTION.
DO 4 TIMES.
  WRITE / sy-index.
ENDDO.
DO 2 TIMES.
  WRITE / sy-index.
ENDDO.
RESERVE 3 LINES.
WRITE: / 'LINE1',/'LINE2',/'LINE3'.

結(jié)果展示

說(shuō)明:
該樣本程序標(biāo)準(zhǔn)頁(yè)眉的列表頭定義為“標(biāo)準(zhǔn)頁(yè)眉”。
REPORT 語(yǔ)句將頁(yè)長(zhǎng)確定為八行 ,兩行用于標(biāo)準(zhǔn)頁(yè)眉,另外兩行為頁(yè)腳保留。頁(yè)腳包括水平行和空行 。
因此,輸出的實(shí)際列表,每頁(yè)留下四行。
第一個(gè) DO 循環(huán)填充四行,然后發(fā)生END-OF-PAGE 事件,其后系統(tǒng)自動(dòng)開(kāi)始新頁(yè)。
第二個(gè) DO 循環(huán)之后, 因?yàn)轫?yè)上剩余的自由行 數(shù)少于三, 因此 RESERVE語(yǔ)句觸發(fā) END?OF-PAGE 事件和分頁(yè) 。

07單頁(yè)的標(biāo)準(zhǔn)頁(yè)眉

標(biāo)準(zhǔn)頁(yè)眉包括列表和列標(biāo)題。

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

使用NO-TITLE或WITH-TITLE選項(xiàng)取消或在以后所有頁(yè)上顯示標(biāo)準(zhǔn)表頭?;玖斜淼娜笔≈禐?strong>WITH-TITLE,輔助列表為NO-TITLE.
使用NO-HEADING或WITH-HEADING選項(xiàng)取消或在以后所有頁(yè)上顯示列標(biāo)題。基本列表的缺省值為WITH-HEADING,輔助列表為NO-HEADING.
即使使用REPORT語(yǔ)句的NO STANDARD PAGE HEADING選項(xiàng)取消標(biāo)準(zhǔn)頁(yè)眉,也能使用WITH-TITLEWITH-HEADING激活單個(gè)組件的顯示.
例子:

*ALV LIST報(bào)表——07單頁(yè)的標(biāo)準(zhǔn)頁(yè)眉
REPORT zhy01_hy101_20220627_01  LINE-SIZE 40.
WRITE: 'Page', SY-PAGNO.
NEW-PAGE NO-TITLE.
WRITE: 'Page', SY-PAGNO.
NEW-PAGE NO-HEADING.
WRITE: 'Page', SY-PAGNO.
NEW-PAGE WITH-TITLE.
WRITE: 'Page', SY-PAGNO.
NEW-PAGE WITH-HEADING.
WRITE: 'Page', SY-PAGNO.

結(jié)果展示

說(shuō)明:
該程序創(chuàng)建五頁(yè),分別帶有不同頁(yè)眉。將列表表頭標(biāo)題文本元素定義為“標(biāo)準(zhǔn)頁(yè)眉”,列標(biāo)題定義為“列”。
第 1 和 5 頁(yè)包含完整的標(biāo)準(zhǔn)頁(yè)眉 。
第 2 頁(yè)沒(méi)有列表表頭。
第 3 頁(yè)上,取消整個(gè)頁(yè)眉。
第 4 頁(yè)上,省略列標(biāo)題。

08窗口滾動(dòng)

SCROLL LIST FORWARD|BACKWRAD[INDEX<idx>].

不帶INDEX選項(xiàng)時(shí),該語(yǔ)句以當(dāng)前窗口大小向前或向后滾動(dòng)當(dāng)前列表。
使用INDEX選項(xiàng)時(shí),系統(tǒng)以列表級(jí)<idx>滾動(dòng)列表。
例子:

*ALV LIST報(bào)表——08窗口滾動(dòng)
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING LINE-SIZE 40.
TOP-OF-PAGE.
WRITE: 'TOP-OF-PAGE',SY-PAGNO,'SY-SROWS:',SY-srows.
ULINE.
START-OF-SELECTION.
DO 30 TIMES.
    WRITE / SY-INDEX.
ENDDO.
DO 3 TIMES.
  SCROLL LIST FORWARD.
ENDDO.

結(jié)果展示

09.滾動(dòng)

要按頁(yè)滾動(dòng)列表,即按頁(yè)長(zhǎng)垂直滾動(dòng)列表,SCROLL語(yǔ)句提供下列選項(xiàng):

SCROLL LIST TO FIRST PAGE|LASTPAGE|PAGE<pag>[INDEX<idx>][LINE<lin>].

不用INDEX選項(xiàng),語(yǔ)句將當(dāng)前列表滾動(dòng)到首頁(yè)、尾頁(yè)或<pag>頁(yè)。使用INDEX選項(xiàng),則系統(tǒng)滾動(dòng)列表級(jí)<idx>的列表。
例子:

*ALV LIST報(bào)表——09滾動(dòng)
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING line-SIZE 40 LINE-COUNT 8(2).
DATA: pag TYPE i VALUE 15,
      lin TYPE i VALUE 4.
TOP-OF-PAGE.
WRITE: 'top-of-page:',sy-pagno.
ULINE.
WRITE: 'end-of-page',sy-pagno.
START-OF-SELECTION.
DO 5 TIMES.
  DO 3 TIMES.
     WRITE / sy-index.
  ENDDO.
ENDDO.
SCROLL LIST TO PAGE pag LINE lin.

結(jié)果展示:

10.頁(yè)面滾動(dòng)

滾動(dòng)到列表的頁(yè)邊緣.語(yǔ)法:

SCROLL LIST LEFT|RIGHT [INDEX<idx>].

按列滾動(dòng)

SCROLL LIST TO COLUMN <col>[INDEX<idx>]

例子:

*ALV LIST報(bào)表——10頁(yè)面滾動(dòng)
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING line-SIZE 200.
TOP-OF-PAGE.
WRITE:at 161 'top-of-pafe:',sy-pagno.
ULINE.
START-OF-SELECTION.
DO 200 TIMES.
  WRITE sy-index.
ENDDO.
SCROLL LIST TO COLUMN 178.

結(jié)果展示

11.絕對(duì)定位

POSITION <col>.

水平定位該語(yǔ)句將水平輸出位置和SY-COLNO系統(tǒng)字段設(shè)置為<col>

SKIP TO LINE<n>.

垂直定位該語(yǔ)句將垂直輸出位置和SY-LINNO系統(tǒng)字段設(shè)置為<lin>.

BACK. 

將輸出定位到整個(gè)頁(yè)眉之后的第一行.
例子:

*ALV LIST報(bào)表——11.絕對(duì)定位
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING line-SIZE 60.
DATA: X(3),Y(3).
X = SY-colno.
Y = sy-linno.

TOP-OF-PAGE.
WRITE: 'Position of Header',X,Y.
ULINE.

START-OF-SELECTION.

SKIP TO LINE 10.
POSITION 20.
X = SY-colno.
Y = sy-linno.
WRITE: '*<-Position',X,Y.

SKIP TO LINE 12.
ULINE at 20(20).
BACK.

X = sy-colno.Y = sy-linno.
WRITE:'Position after BACK:',X,Y.

結(jié)果展示:

12.相對(duì)定位

產(chǎn)生換行,要換行,在WRITE,ULINE或NEW-LINE語(yǔ)句的AT選項(xiàng)中使用反斜杠

NEW-LINE.

該語(yǔ)句將輸出定位在新行中,將SY-COLNO設(shè)置為1并且將SY-LINNO加1.

WRITE <f> UNDER<g>.

系統(tǒng)從開(kāi)始輸出字段<g>的同一列中開(kāi)始輸出<f>。該語(yǔ)句不限于當(dāng)前頁(yè)。

RESERVE. ... BACK.

如果BACK緊隨RESERVE,則后續(xù)輸出出現(xiàn)在RESERVE之后的第一行中。
例子:

*ALV LIST報(bào)表——12.相對(duì)定位
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING LINE-SIZE 40.
DATA x TYPE i.
WRITE 'Some Numbers:'NO-GAP.
x = sy-colno.
ULINE at /(x).
RESERVE 5 LINES.
DO 5 TIMES.
  WRITE / sy-index.
ENDDO.
x = sy-colno.
BACK.
WRITE at x '<-START of Loop'.

結(jié)果展示:

說(shuō)明:
輸出前兩行之后,RESERVE 語(yǔ)句用于將后續(xù)五行定義為塊。
緊隨 BACK 之后的輸出寫(xiě)入到塊的第一行。
請(qǐng)注意,如何使用SY-COLNO 系統(tǒng)字段給第一行加下劃線以及如何定位最后的WRITE輸出。

13.設(shè)置輸入

FORMAT INPUT [ON|OFF].

要在運(yùn)行時(shí)將輸出字段設(shè)置為“準(zhǔn)備輸入”。
例子:

*ALV LIST報(bào)表——13.設(shè)置輸入
REPORT zhy01_hy101_20220627_01.
WRITE 'Please fill in vour name before printing:'.
WRITE / 'Enter name here:             'INPUT ON.
ULINE.
WRITE 'You can overwrite the following line:'.
FORMAT INPUT On INTENSIFIED OFF.
ULINE.
FORMAT INPUT OFF INTENSIFIED on.

結(jié)果展示:

14 設(shè)置熱點(diǎn)

FORMAT HOTSPOT [ON|OFF].

將字段輸出為熱點(diǎn)
例子:

*ALV LIST報(bào)表——14.設(shè)置熱點(diǎn)
REPORT zhy01_hy101_20220627_01.

INCLUDE <List>.

START-OF-SELECTION.
WRITE 'Now Comes a'.

FORMAT HOTSPOT ON COLOR 5 INVERSE ON.
WRITE 'HOTSPOT'.

FORMAT HOTSPOT OFF COLOR OFF.

AT LINE-SELECTION.
  WRITE / 'New list AT-LINE-SELECTION'.
SKIP.

WRITE 'This is also a hotspot:'.
WRITE icon_list AS ICON HOTSPOT.

結(jié)果展示

在本程序中 ,首行的START-OF-SELECTION事件部分格式化為熱點(diǎn).
標(biāo)準(zhǔn)頁(yè)眉定義為文本元素。
如果用戶將鼠標(biāo)移動(dòng)到輸出的HOTSPOT 單詞上,則鼠標(biāo)指針更改為手形。
單擊觸發(fā)事件AT-LINE-SELECTION。 在該事件中 ,程序創(chuàng)建包含其他熱點(diǎn)的輔助列表。

15.設(shè)置語(yǔ)言

特殊輸出格式

SET COUNTRY <c>.

例子:

*ALV LIST報(bào)表——15.設(shè)置語(yǔ)言
REPORT zhy01_hy101_20220627_01 LINE-SIZE 40.

DATA: num TYPE p DECIMALS 3 VALUE '123456.789'.
ULINE.
WRITE: /'INITIAL:'.
WRITE: / num,sy-datum."應(yīng)用服務(wù)器當(dāng)前系統(tǒng)時(shí)間
ULINE.

SET COUNTRY 'US'.
WRITE: / 'US, SY-SUBRC:',sy-subrc."abap語(yǔ)句的返回碼
WRITE: / num,sy-datum.
ULINE.

SET COUNTRY 'GB'.
WRITE: / 'GB, SY-subrc:',sy-subrc.
WRITE: / num,sy-datum.
ULINE.

SET COUNTRY 'DE'.
WRITE: / 'DE, SY-subrc:',sy-subrc.
WRITE: / num,sy-datum.
ULINE.

SET COUNTRY 'XYZ'.
WRITE: / 'XYZ, SY-subrc:',sy-subrc.
WRITE: / num,sy-datum.
ULINE.

SET COUNTRY space.
WRITE: / 'SPACE, SY-subrc:',sy-subrc.
WRITE: / num,sy-datum.
ULINE.

結(jié)果展示

16.貨幣輸出格式

WRITE <f> CURRENCY<c>.

例子:

*ALV LIST報(bào)表——16.貨幣輸出格式
REPORT zhy01_hy101_20220627_01 LINE-SIZE 40.

DATA: NUM1 TYPE P DECIMALS 4 VALUE '12.3456',
      NUM2 TYPE P VALUE '123456'.
SET COUNTRY 'US'.

WRITE: 'USD', NUM1 CURRENCY 'USD', NUM2 CURRENCY 'USD',
      / 'BEF', NUM1 CURRENCY 'BEF', NUM2 CURRENCY 'BEF',
      / 'KUD', NUM1 CURRENCY 'KUD', NUM2 CURRENCY 'KUD'.

結(jié)果展示

17.單位輸出格式

WRITE <f> UNIT<u>.

例子:

*ALV LIST報(bào)表——17.單位輸出格式
REPORT zhy01_hy101_20220627_01 LINE-SIZE 40.
DATA: NUM1 TYPE P DECIMALS 1 VALUE 1,
      NUM2 TYPE P DECIMALS 4 VALUE '2.5'.
SET COUNTRY 'US'.
WRITE: 'KG', NUM1 UNIT 'KG', NUM2 UNIT 'KG',
      / 'PC', NUM1 UNIT 'PC', NUM2 UNIT 'PC'.

結(jié)果展示:

18.劃線+框架+網(wǎng)絡(luò)

例子:

*ALV LIST報(bào)表——18.劃線+網(wǎng)格+網(wǎng)絡(luò)
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING.

SKIP TO LINE 3.
ULINE AT 2(1).    "ULINE 語(yǔ)句創(chuàng)建一列的水平線 。
WRITE 4 '-'.      "WRITE 語(yǔ)句的連字符顯示為正常輸出字段。
WRITE 6 '--'.    " WRITE語(yǔ)句的連字符創(chuàng)建兩列寬的直線。
WRITE 9 '---'.
ULINE AT 12(4).    " 下面三個(gè)連字符與 ULINE 語(yǔ)句一起創(chuàng)建七列寬的直線。

SKIP TO LINE 1.
POSITION 18.
WRITE '|'.     "  '|'字符在第一行中創(chuàng)建垂直線。

SKIP TO LINE 3.
DO 4 TIMES.
 NEW-LINE.
 POSITION 18.
 WRITE '|'."四個(gè) '|' 字符創(chuàng)建 條線段長(zhǎng)的直線,從第 3 行開(kāi)始。
ENDDO.

結(jié)果展示

19.T形交叉

例子:

*ALV LIST報(bào)表——19.T形交叉
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING.
WRITE '---'.
WRITE /2 '| |'.
ULINE AT /5(8).
SKIP TO LINE 4.
DO 3 TIMES.
 WRITE '|'.
 NEW-LINE.
ENDDO.
SKIP TO LINE 5.
WRITE '---------'.
SKIP TO LINE 4.
ULINE AT 6(10).
WRITE 15 '|' .

結(jié)果展示

20.角

例子:

*ALV LIST報(bào)表——20.角
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING.
WRITE '--'.
WRITE / '|'.
SKIP TO LINE 1.
ULINE AT 5(6).
NEW-LINE.
WRITE 10 '|'.
SKIP TO LINE 4.
WRITE: '| |',
 / '----------'.

結(jié)果展示

21.十字交叉

例子:

*ALV LIST報(bào)表——21.十字交叉
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING.

WRITE ' |'.
WRITE /'-------'.
WRITE /' |'.

SKIP TO LINE 1.
DO 3 TIMES.
 WRITE 12 SY-vline."列表的豎線
 NEW-LINE.
ENDDO.

SKIP TO LINE 2.
ULINE AT 12(1).

結(jié)果展示

22.蜘蛛網(wǎng)

*ALV LIST報(bào)表——22.蜘蛛網(wǎng)
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING LINE-SIZE 60.
INCLUDE <LINE>.
DATA: X0 TYPE I VALUE 10,
      Y0 TYPE I VALUE 10,
      N  TYPE I VALUE 16,
      I  TYPE I VALUE 0,
      X  TYPE I,
      Y  TYPE I.
X = X0. Y = Y0.
PERFORM POS.
WHILE I LE N.
 WRITE LINE_BOTTOM_LEFT_CORNER AS LINE.
 X = X + 1. PERFORM POS.
 ULINE AT X(I).
 X = X + I. PERFORM POS.
 WRITE LINE_BOTTOM_RIGHT_CORNER AS LINE.
 Y = Y - 1. PERFORM POS.
 DO I TIMES.
 WRITE '|'.
 Y = Y - 1. PERFORM POS.
 ENDDO.
WRITE LINE_TOP_RIGHT_CORNER AS LINE.
 I = I + 1.
 X = X - I. PERFORM POS.
 ULINE AT X(I).
 X = X - 1. PERFORM POS.
 WRITE LINE_TOP_LEFT_CORNER AS LINE.
 Y = Y + 1. PERFORM POS.
 DO I TIMES.
 WRITE '|'.
 Y = Y + 1. PERFORM POS.
 ENDDO.
 I = I + 1.
ENDWHILE.
FORM POS.
 SKIP TO LINE Y.
 POSITION X.
ENDFORM.

結(jié)果展示

23.編程框架

例子:

*ALV LIST報(bào)表——23.編程框架
REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING LINE-SIZE 60.
DATA: X TYPE I,
      Y TYPE I,
      L TYPE I.
DEFINE WRITE_FRAME.
 X = SY-COLNO. Y = SY-LINNO.
 WRITE: '|' NO-GAP,&1 NO-GAP,
        '|' NO-GAP.
 L = SY-COLNO - X. Y = Y - 1.
 SKIP TO LINE Y. POSITION X.
 ULINE AT X(L).
 Y = Y + 2.
 SKIP TO LINE Y. POSITION X.
 ULINE AT X(L).
 Y = Y - 1. X = SY-COLNO.
 SKIP TO LINE Y. POSITION X.
END-OF-DEFINITION.
SKIP.
WRITE 'Demonstrating'.
WRITE_FRAME 'dynamic frames'.
WRITE 'in'.
WRITE_FRAME 'ABAP/4'.
WRITE 'output lists.'.

結(jié)果展示

24.編程網(wǎng)絡(luò)

例子:

REPORT zhy01_hy101_20220627_01 NO STANDARD PAGE HEADING LINE-SIZE 60.

TABLES SPFLI.

DATA: X TYPE I,
      Y TYPE I,
      L TYPE I.


PARAMETERS PA_CAR TYPE SPFLI-CARRID.
DATA WA_SPFLI TYPE SPFLI.

TOP-OF-PAGE.

WRITE 3 'List of Flights in a Dynamic Grid' COLOR COL_HEADING.
ULINE.

START-OF-SELECTION.

DEFINE NEW_GRID.
 Y = SY-LINNO. Y = Y + 2. SKIP TO LINE Y.
 X = SY-COLNO. POSITION X. WRITE '|'.
END-OF-DEFINITION.

DEFINE WRITE_GRID.
 X = SY-COLNO. Y = SY-LINNO. POSITION X.
 WRITE: &1, '|'.
 L = SY-COLNO - X + 1.
 X = X - 2. Y = Y + 1. SKIP TO LINE Y. POSITION X.
 ULINE AT X(L).
 Y = Y - 1. X = SY-COLNO. SKIP TO LINE Y. POSITION X.
END-OF-DEFINITION.

SELECT * FROM SPFLI
  WHERE CARRID = PA_CAR.
ENDSELECT.

*GET SPFLI.
NEW_GRID.

WRITE_GRID: SPFLI-CARRID,
            SPFLI-CONNID,
            SPFLI-CITYFROM,
            SPFLI-CITYTO.

結(jié)果展示
篩選項(xiàng)

執(zhí)行結(jié)果


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容