ABAP Write 宝典
???將數(shù)據(jù)寫(xiě)入列表的基本ABAP/4語(yǔ)句是WRITE、SKIP和ULINE輸出語(yǔ)句。
一、標(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)窗口的寬度。
?
?
二、修改列表和列標(biāo)題
(1)自定義列表
可以修改標(biāo)準(zhǔn)列表的結(jié)構(gòu)并創(chuàng)建單個(gè)結(jié)構(gòu)的列表。使用REPORT語(yǔ)句選項(xiàng)以及事件TOP-OF-PAGE和END-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??ZJESSE02?NO?STANDARD?PAGE?HEADING.
TOP-OF-PAGE.
WRITE:?SY-TITLE,?40?'Page',?SY-PAGNO.
ULINE.
WRITE:?/?'SAP?AG',?29?'Walldorf,?',SY-DATUM,
???????/?'Neurottstr.?16',?/?'69190?Walldorf/Baden'.
ULINE.
START-OF-SELECTION.
DO?5?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。
?
(2)確定列表寬度
????要確定輸出列表的寬度,使用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)適配自定義列表寬度。
?REPORT??ZJESSE02?LINE-SIZE?60.?
WRITE:??'SY-LINSZ:',?SY-LINSZ.?
ULINE.?
DO?20?TIMES.?
??WRITE?SY-INDEX.?
ENDDO.
?
(3)確定頁(yè)長(zhǎng)
? 要確定輸出列表的頁(yè)長(zhǎng),使用REPORT語(yǔ)句的LINE-COUNT選項(xiàng)。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ù)。
?REPORT??ZJESSE02?LINE-SIZE?40?LINE-COUNT?4.?
WRITE:??'SY-LINCT:',?SY-LINCT.?
SKIP.?
DO?6?TIMES.?
?WRITE?/?SY-INDEX.?
ENDDO.
該程序?qū)㈨?yè)長(zhǎng)確定為四行。使用標(biāo)準(zhǔn)頁(yè)眉。假定標(biāo)準(zhǔn)頁(yè)眉 包括兩行列表表頭:
JESSE的ABAP程序???????????????????????1
SY-LINCT:????4
JESSE的ABAP程序???????????????????????2
????????1
????????2
JESSE的ABAP程序???????????????????????3
????????3
????????4
JESSE的ABAP程序???????????????????????4
????????5
????????6
?
(4)定義頁(yè)腳
要定義頁(yè)腳,使用END-OF-PAGE事件。在處理列表頁(yè)時(shí),如果系統(tǒng)到達(dá)頁(yè)腳保留行,或者如果RESERVE語(yǔ)句觸發(fā)分布則該事件發(fā)生。在緊接著END-OF-PAGE事件關(guān)鍵字的處理塊中填充頁(yè)腳的行:
語(yǔ)法
? END-OF-PAGE.
???WRITE:...
?如果為REPORT語(yǔ)句的LINE-COUNT選項(xiàng)中的腳注保留行,則系統(tǒng)只處理緊接著END-OF-PAGE的處理塊。
?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.
該程序包括三個(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 。運(yùn)行結(jié)果如下:
Page with Header and Footer
????????1
????????2
????????????????????????????Page????1
Page with Header and Footer
????????3
????????4
????????????????????????????Page????2
Page with Header and Footer
????????5
????????6
????????????????????????????Page????3
?
?
多頁(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-PAGE和RESERVE語(yǔ)句顯式地編碼分布。NEW-PAGE語(yǔ)句的選項(xiàng)允許分別設(shè)置每頁(yè)格式。也需要NEW-PAGE語(yǔ)句在程序內(nèi)打印列表。
?
無(wú)條件分頁(yè)
?要在頁(yè)處理期間觸發(fā)分頁(yè),請(qǐng)使用NEW-PAGE.
?REPORT??ZJESSE02?LINE-SIZE?40.?
TOP-OF-PAGE.?
WRITE:?'TOP-OF-PAGE',?SY-PAGNO.?
ULINE?AT?/(17).?
START-OF-SELECTION.?
DO?2?TIMES.?
??WRITE?/?'Loop:'.?
??DO?3?TIMES.?
????WRITE?/?SY-INDEX.?
??ENDDO.?
??NEW-PAGE.?
ENDDO.?
?
條件分頁(yè)
RESERVE <n> LINES.
?REPORT??ZJESSE02?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:?/?'LINE?1',?
???????/?'LINE?2',?
???????/?'LINE?3'.
該樣本程序標(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è) 。
?
單頁(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)表頭。基本列表的缺省值為WITH-TITLE,輔助列表為NO-TITLE.使用NO-HEADING或WITH-HEADING選項(xiàng)取消或在以后所有頁(yè)上顯示列標(biāo)題。基本列表的缺省值為WITH-HEADING,輔助列表為NO-HEADING.即使使用REPORT語(yǔ)句的NOSTANDARD PAGEHEADING選項(xiàng)取消標(biāo)準(zhǔn)頁(yè)眉,也能使用WITH-TITLE和WITH-HEADING激活單個(gè)組件的顯示。
?REPORT??ZJESSE02?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.
該程序創(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)題。
?
單頁(yè)頁(yè)長(zhǎng)
要分別確定每頁(yè)的頁(yè)長(zhǎng),請(qǐng)使用NEW-PAGE語(yǔ)句:
NEW-PAGE LINE-COUNT<length>."該語(yǔ)句將后續(xù)的頁(yè)長(zhǎng)確定為<length>。可以是變量。如果設(shè)置為0,則系統(tǒng)使用標(biāo)準(zhǔn)頁(yè)長(zhǎng)。頁(yè)眉是頁(yè)的部分因此也是頁(yè)長(zhǎng)的部分。要將頁(yè)長(zhǎng)適配當(dāng)前窗口長(zhǎng)度,將值設(shè)置為SY-SROWS.
?
列表級(jí)的頁(yè)寬
NEW-PAGE LINE-SIZE <width>.從新頁(yè)開(kāi)始的所有列表級(jí)寬度都為<width>,而不是REPORT語(yǔ)句中定義的寬度。
?
?
通過(guò)窗口滾動(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)列表。
?REPORT??ZJESSE02??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?100?TIMES.?
??WRITE?/?SY-INDEX.?
ENDDO.?
DO?3?TIMES.?
??SCROLL?LIST?FORWARD.?
ENDDO.?
?
按頁(yè)滾動(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>的列表。
?REPORT??ZJESSE02?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.?
END-OF-PAGE.?
ULINE.?
WRITE:?'End?of?Page',?SY-PAGNO.?
START-OF-SELECTION.?
DO?100?TIMES.?
??DO?4?TIMES.?
????WRITE?/?SY-INDEX.?
??ENDDO.?
ENDDO.?
SCROLL?LIST?TO?PAGE?PAG?LINE?LIN.?
列表從第 15 頁(yè)開(kāi)始顯示 。由于LINE 選項(xiàng),實(shí)際列表的前三行滾動(dòng)到頁(yè)眉以下。
?
滾動(dòng)到列表的頁(yè)邊緣
語(yǔ)法:
SCROLL LIST LEFT|RIGHT [INDEX<idx>].
?
按列滾動(dòng)
SCROLL LIST TO COLUMN <col>[INDEX<idx>]
?REPORT??ZJESSE02?NO?STANDARD?PAGE?HEADING?LINE-SIZE?200.?
TOP-OF-PAGE.?
WRITE:?AT?161?'Top?of?Page',?SY-PAGNO,??
????????????????'SY-SCOLS:',?SY-SCOLS.?
ULINE.?
START-OF-SELECTION.?
DO?200?TIMES.?
??WRITE?SY-INDEX.?
ENDDO.?
SCROLL?LIST?TO?COLUMN?178.?
?
?
三、列表頁(yè)面設(shè)置
定位輸出
? SY-COLNO用于當(dāng)前列???SY-LINNO?? 用于當(dāng)前行
?
(1)絕對(duì)定位:
POSITION <col>."水平定位該語(yǔ)句將水平輸出位置和SY-COLNO系統(tǒng)字段設(shè)置為<col>.
SKIP TO LINE<n>."垂直定位該語(yǔ)句將垂直輸出位置和SY-LINNO系統(tǒng)字段設(shè)置為<lin>.
BACK. "將輸出定位到整個(gè)頁(yè)眉之后的第一行
?REPORT??ZJESSE02?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.
?
(2)相對(duì)定位
產(chǎn)生換行,要生產(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之后的第一行中。
?REPORT??ZJESSE02?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'.?
輸出前兩行之后,RESERVE 語(yǔ)句用于將后續(xù)五行定義為塊。緊隨 BACK 之后的輸出寫(xiě)入到塊的第一行。請(qǐng)注意,如何使用SY-COLNO 系統(tǒng)字段給第一行加下劃線以及如何定位最后的WRITE輸出。
輸出如下:
Some numbers:
????????1????<- Start of Loop
????????2
????????3
????????4
????????5
?
格式輸出:
FORMAT <option1>[ON|OFF]<option2> [ON|OFF] ....
?
使字段可接受輸入
FORMAT INPUT [ON|OFF]. "要在運(yùn)行時(shí)將輸出字段設(shè)置為“準(zhǔn)備輸入”。
?REPORT??ZJESSE02.
WRITE???'Please?fill?in?your?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.
?
將字段輸出為熱點(diǎn)
FORMAT HOTSPOT [ON|OFF]
?REPORT??ZJESSE02.
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.
在本程序中 ,首行的 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)的輔助列表。
?
特殊輸出格式
SET COUNTRY <c>.
?REPORT??ZJESSE02?LINE-SIZE?40.?
DATA:?NUM?TYPE?P?DECIMALS?3?VALUE?'123456.789'.?
ULINE.?
WRITE:?/?'INITIAL:'.?
WRITE:?/?NUM,?SY-DATUM.?
ULINE.?
SET?COUNTRY?'US'.?
WRITE:?/?'US,??????SY-SUBRC:',?SY-SUBRC.?
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.?
運(yùn)行結(jié)果如下:
JESSE的ABAP程序???????????????????????1
INITIAL:
????123,456.789? 2011-07-16
US,?????SY-SUBRC:????0
????123,456.789? 07/16/2011
GB,?????SY-SUBRC:????0
????123,456.789? 16.07.2011
DE,?????SY-SUBRC:????0
????123.456,789? 16.07.2011
XYZ,????SY-SUBRC:????4
????123,456.789? 07/16/2011
SPACE,??SY-SUBRC:????0
????123,456.789? 2011-07-16
?
貨幣特有的輸出格式
WRITE <f> CURRENCY<c>.
?REPORT??ZJESSE02?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'.?
JESSE的ABAP程序???????????????????????1
USD????????1,234.56????????1,234.56
BEF?????????123,456?????????123,456
KUD?????????123.456?????????123.456
?
單位特有輸出格式
WRITE <f> UNIT<u>.
?REPORT??ZJESSE02?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'.?
JESSE的ABAP程序???????????????????????1
KG???????????????1???????????2.5000
PC?????????????1.0???????????2.5000
?
?
畫(huà)線、框架和網(wǎng)格
直接:
?REPORT??ZJESSE02?NO?STANDARD?PAGE?HEADING.?
SKIP?TO?LINE?3.?
ULINE?AT?2(1).?
WRITE?4??'-'.?
WRITE?6??'--'.?
WRITE?9??'---'.?
ULINE?AT?12(4).?
SKIP?TO?LINE?1.?
POSITION?18.?
WRITE?'|'.?
SKIP?TO?LINE?3.?
DO?4?TIMES.?
??NEW-LINE.?
??POSITION?18.?
??WRITE?'|'.?
ENDDO.?
第一條 ULINE 語(yǔ)句創(chuàng)建一列的水平線 。第一條 WRITE 語(yǔ)句的連字符顯示為正常輸出字段。第二條 WRITE語(yǔ)句的連字符創(chuàng)建兩列寬的直線。下面三個(gè)連字符與 ULINE 語(yǔ)句一起創(chuàng)建七列寬的直線。輸出的第一個(gè) '|'字符在第一行中創(chuàng)建垂直線。其他四個(gè) '|' 字符創(chuàng)建 條線段長(zhǎng)的直線,從第 3 行開(kāi)始。
?
?
角
?REPORT??ZJESSE02?NO?STANDARD?PAGE?HEADING.?
WRITE???'--'.?
WRITE?/?'|'.?
SKIP?TO?LINE?1.?
ULINE?AT?5(6).?
NEW-LINE.?
WRITE?10?'|'.?
SKIP?TO?LINE?4.?
WRITE:?'|????????|',?
?????/?'----------'.?
?
T型交叉
?REPORT??ZJESSE02?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?'|'?.
?
十字交叉
?REPORT??ZJESSE02?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).?
?
特殊線
?REPORT??ZJESSE02?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.?
運(yùn)行結(jié)果如下所示:
?
?
編程框架
可以使用ABAP/4中可用的線類(lèi)型編程框架。下面的樣本程序定義宏WRITE_FRAME,可以取代WRITE<f>語(yǔ)句。系統(tǒng)在WRITE_FRAME語(yǔ)句指定的字段<f>周?chē)?huà)框架,該框架字段動(dòng)態(tài)適配該字段的長(zhǎng)度。
? REPORT??ZJESSE02?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.'.
運(yùn)行結(jié)果:
編程網(wǎng)絡(luò)
? REPORT??ZJESSE02?NO?STANDARD?PAGE?HEADING?LINE-SIZE?60.?
TABLES?SPFLI.?
DATA:??X?TYPE?I,?Y?TYPE?I,?L?TYPE?I.?
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.?
GET?SPFLI.?
NEW_GRID.?
WRITE_GRID:?SPFLI-CARRID,?
????????????SPFLI-CONNID,?
????????????SPFLI-CITYFROM,?
????????????SPFLI-CITYTO.?
運(yùn)行結(jié)果:
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的ABAP Write 宝典的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: F4IF_INT_TABLE_VALUE
- 下一篇: Dynpro F4的实现测试