同一个域名可以做几个网站吗,wordpress 主题设计,做传奇网站,福州网站制作怎样列表是ABAP/4报表程序数据的输出媒介。每个ABAP/4报表程序将其输出数据传递到直接与该程序连接的列表中。每个程序最多生成21个列表#xff1a;1个基本列表和20个辅助列表。 将数据写入列表的基本ABAP/4语句是WRITE、SKIP和ULINE输出语句。
一、标准列表结构
#xff08;11个基本列表和20个辅助列表。 将数据写入列表的基本ABAP/4语句是WRITE、SKIP和ULINE输出语句。
一、标准列表结构
1标准页眉标准页眉至少包括两行标准标题。标准标题的首行包含列表表头和页号。第二行由水平线组成。执行程序时列表表头存储在系统字段SY-TITLE中。如果需要可以在标准标题中包括最多四行列头和另一条水平线。
2标准页 输出数据显示在页眉之下。标准列表包含一个动态长度的单页内部限制60000行。输出长度由当前列表大小确定。输出屏幕包括一个垂直滚动条允许用户滚动页长超过窗口的列表。 3标准列表的宽度 标准列表的宽度取决于执行报表时的窗口宽度。如果用户窗口小于或等于标准窗口大小则标准页宽应符合标准窗口宽度。用户可能必须滚动列表才能查看列表的所有部件。如果用户窗口超过标准窗口宽度则标准列表的宽度符合选定标准窗口的宽度。 二、修改列表和列标题
(1)自定义列表
可以修改标准列表的结构并创建单个结构的列表。使用REPORT语句选项以及事件TOP-OF-PAGE和END-OF-PAGE。PROGRAM语句与REPORT语句等介并有相同的选项。如果列表包括几页则可以分别定义每页的结构。
---单个页眉要分别定义页眉的格式必须在紧随事件关键字TOP-OF-PAGE的处理块中定义,
语法 TOP-OF-PAGE. WRITE:....
TOP-OF-PAGE事件在系统开始处理列表新页时出现。系统在输出新页首行之前处理TOP-OF-PAGE后面的语句。如果要取消标准页眉使用语法REPORT rep NO STANDARD PAGEHEADING.使用该语句时系统不在报表rep列表上显示标准页眉。 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.
报表程序不使用标准页眉而是使用 TOP-OF-PAGE 之后的自定义页眉。要显式结束TOP-OF-PAGE处理块必须指定事件关键字 START-OF-SELECTION。 2确定列表宽度 要确定输出列表的宽度使用REPORT语句的LINE-SIZE选项。语法 REPORTrep LINE-SIZEwidth.该语句根据width字符确定报表rep输出列表的宽度。如果将width设置为0则系统使用标准列表的宽度。一行最多可包含255个字符。如果要打印列表大多数据打印机不能打印超过132个字符的列表。创建列表时系统字段SY-LINSZ包含当前行宽。要将列表宽度调整为当前窗口宽度使用ULINE语句不带AT选项创建的水平线自动适配自定义列表宽度。 REPORT ZJESSE02 LINE-SIZE 60. WRITE: SY-LINSZ:, SY-LINSZ. ULINE. DO 20 TIMES. WRITE SY-INDEX. ENDDO. (3)确定页长 要确定输出列表的页长使用REPORT语句的LINE-COUNT选项。REPORTrep LINE-COUNTlength[(n)].该语句用length行确定报表的页长。如果指定选项号n则系统为页脚保留n行页长。并不将这些页脚行填写到END-OF-PAGE事件中而是作为空行显示。如果设置为0则系统使用标准页长。创建列表时系统字段SY-LINCT包含每页的当前行数。 REPORT ZJESSE02 LINE-SIZE 40 LINE-COUNT 4. WRITE: SY-LINCT:, SY-LINCT. SKIP. DO 6 TIMES. WRITE / SY-INDEX. ENDDO.
该程序将页长确定为四行。使用标准页眉。假定标准页眉 包括两行列表表头:
JESSE的ABAP程序 1
SY-LINCT: 4 JESSE的ABAP程序 2 1 2
JESSE的ABAP程序 3 3 4
JESSE的ABAP程序 4 5 6 (4)定义页脚
要定义页脚使用END-OF-PAGE事件。在处理列表页时如果系统到达页脚保留行或者如果RESERVE语句触发分布则该事件发生。在紧接着END-OF-PAGE事件关键字的处理块中填充页脚的行
语法 END-OF-PAGE. WRITE:... 如果为REPORT语句的LINE-COUNT选项中的脚注保留行则系统只处理紧接着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.
该程序包括三个处理块。关闭标准页眉。将页长设置为六行其中两行留作页脚。列表包括三页每页六行。每页由自定义的两行页眉、两行实际列表和两行页脚组成。页脚中显示的当前页号来自系统字段SY-PAGNO 。运行结果如下
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 多页列表
如果在报表中写入列表输出页的行数超过在REPORT语句LINE-COUNT选项中定义的行数则系统自动创建新页。每个新页都包含为报表定义的页眉和页脚如果有的话。除自动分布外可以使用NEW-PAGE和RESERVE语句显式地编码分布。NEW-PAGE语句的选项允许分别设置每页格式。也需要NEW-PAGE语句在程序内打印列表。 无条件分页 要在页处理期间触发分页请使用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. 条件分页
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.
该样本程序标准页眉的列表头定义为“标准页眉”。REPORT 语句将页长确定为八行 两行用于标准页眉另外两行为页脚保留。页脚包括水平行和空行 。因此输出的实际列表每页留下四行。第一个 DO 循环填充四行然后发生END-OF-PAGE 事件其后系统自动开始新页。在第二个 DO 循环之后 因为页上剩余的自由行 数少于三 因此 RESERVE语句触发 END-OF-PAGE 事件和分页 。 单页的标准页眉
标准页眉包括列表和列标题。
NEW-PAGE [NO-TITLE|WITH-TITLE] [NO-HEADING|WITH-HEADING].
使用NO-TITLE或WITH-TITLE选项取消或在以后所有页上显示标准表头。基本列表的缺省值为WITH-TITLE,辅助列表为NO-TITLE.使用NO-HEADING或WITH-HEADING选项取消或在以后所有页上显示列标题。基本列表的缺省值为WITH-HEADING辅助列表为NO-HEADING.即使使用REPORT语句的NOSTANDARD PAGEHEADING选项取消标准页眉也能使用WITH-TITLE和WITH-HEADING激活单个组件的显示。 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.
该程序创建五页分别带有不同页眉。将列表表头标题文本元素定义为“标准页眉”列标题定义为“列”。 第 1 和 5 页包含完整的标准页眉 。第 2 页没有列表表头。在第 3 页上取消整个页眉。 在第 4 页上省略列标题。 单页页长
要分别确定每页的页长请使用NEW-PAGE语句
NEW-PAGE LINE-COUNTlength.该语句将后续的页长确定为length。可以是变量。如果设置为0则系统使用标准页长。页眉是页的部分因此也是页长的部分。要将页长适配当前窗口长度将值设置为SY-SROWS. 列表级的页宽
NEW-PAGE LINE-SIZE width.从新页开始的所有列表级宽度都为width,而不是REPORT语句中定义的宽度。 通过窗口滚动窗口
SCROLL LIST FORWARD|BACKWRAD[INDEXidx].不带INDEX选项时该语句以当前窗口大小向前或向后滚动当前列表。使用INDEX选项时系统以列表级idx滚动列表。 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. 按页滚动 要按页滚动列表即按页长垂直滚动列表SCROLL语句提供下列选项
SCROLL LIST TO FIRST PAGE|LASTPAGE|PAGEpag[INDEXidx][LINElin].
不用INDEX选项语句将当前列表滚动到首页、尾页或pag页。使用INDEX选项则系统滚动列表级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 页开始显示 。由于LINE 选项实际列表的前三行滚动到页眉以下。 滚动到列表的页边缘
语法
SCROLL LIST LEFT|RIGHT [INDEXidx]. 按列滚动
SCROLL LIST TO COLUMN col[INDEXidx] 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. 三、列表页面设置
定位输出 SY-COLNO用于当前列 SY-LINNO 用于当前行 1绝对定位
POSITION col.水平定位该语句将水平输出位置和SY-COLNO系统字段设置为col.
SKIP TO LINEn.垂直定位该语句将垂直输出位置和SY-LINNO系统字段设置为lin.
BACK. 将输出定位到整个页眉之后的第一行 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相对定位
产生换行要生产换行在WRITE,ULINE或NEW-LINE语句的AT选项中使用反斜杠。
NEW-LINE 该语句将输出定位在新行中将SY-COLNO设置为1并且将SY-LINNO加1.
WRITE f UNDERg.系统从开始输出字段g的同一列中开始输出f。该语句不限于当前页。
RESERVE. ... BACK. 如果BACK紧随RESERVE,则后续输出出现在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 语句用于将后续五行定义为块。紧随 BACK 之后的输出写入到块的第一行。请注意如何使用SY-COLNO 系统字段给第一行加下划线以及如何定位最后的WRITE输出。
输出如下
Some numbers: 1 - Start of Loop 2 3 4 5 格式输出
FORMAT option1[ON|OFF]option2 [ON|OFF] .... 使字段可接受输入
FORMAT INPUT [ON|OFF]. 要在运行时将输出字段设置为“准备输入”。 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. 将字段输出为热点
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事件部分格式化为热点。标准页眉定义为文本元素。如果用户将鼠标移动到输出的 HOTSPOT 单词上则鼠标指针更改为手形。单击触发事件AT-LINE-SELECTION。 在该事件中 程序创建包含其他热点的辅助列表。 特殊输出格式
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.
运行结果如下
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 CURRENCYc. 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 UNITu. 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 画线、框架和网格
直接 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 语句创建一列的水平线 。第一条 WRITE 语句的连字符显示为正常输出字段。第二条 WRITE语句的连字符创建两列宽的直线。下面三个连字符与 ULINE 语句一起创建七列宽的直线。输出的第一个 |字符在第一行中创建垂直线。其他四个 | 字符创建 条线段长的直线从第 3 行开始。 角 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. 编程框架
可以使用ABAP/4中可用的线类型编程框架。下面的样本程序定义宏WRITE_FRAME可以取代WRITEf语句。系统在WRITE_FRAME语句指定的字段f周围画框架该框架字段动态适配该字段的长度。 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.. 编程网络 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.