当前位置: 首页 > news >正文

SAP ABAP WRITE语法大全

列表是ABAP/4报表程序数据的输出媒介。每个ABAP/4报表程序将其输出数据传递到直接与该程序连接的列表中。每个程序最多生成21个列表:1个基本列表和20个辅助列表。

   将数据写入列表的基本ABAP/4语句是WRITE、SKIP和ULINE输出语句。

一、标准列表结构

(1)标准页眉:标准页眉至少包括两行标准标题。标准标题的首行包含列表表头和页号。第二行由水平线组成。执行程序时,列表表头存储在系统字段SY-TITLE中。如果需要,可以在标准标题中包括最多四行列头和另一条水平线。

(2)标准页

   输出数据显示在页眉之下。标准列表包含一个动态长度的单页(内部限制60,000行)。输出长度由当前列表大小确定。输出屏幕包括一个垂直滚动条,允许用户滚动页长超过窗口的列表。

(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选项。语法: REPORT<rep> LINE-SIZE<width>.该语句根据<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选项。REPORT<rep> LINE-COUNT<length>[(<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-COUNT<length>."该语句将后续的页长确定为<length>。可以是变量。如果设置为0,则系统使用标准页长。页眉是页的部分因此也是页长的部分。要将页长适配当前窗口长度,将值设置为SY-SROWS.

列表级的页宽

NEW-PAGE LINE-SIZE <width>.从新页开始的所有列表级宽度都为<width>,而不是REPORT语句中定义的宽度。

通过窗口滚动窗口

SCROLL LIST FORWARD|BACKWRAD[INDEX<idx>].不带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|PAGE<pag>[INDEX<idx>][LINE<lin>].

不用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 [INDEX<idx>].

按列滚动

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. 

三、列表页面设置

定位输出

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

(1)绝对定位:

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

SKIP TO LINE<n>."垂直定位该语句将垂直输出位置和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> UNDER<g>."系统从开始输出字段<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> 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

画线、框架和网格

直接:

 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,可以取代WRITE<f>语句。系统在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. 

相关文章:

SAP ABAP WRITE语法大全

列表是ABAP/4报表程序数据的输出媒介。每个ABAP/4报表程序将其输出数据传递到直接与该程序连接的列表中。每个程序最多生成21个列表&#xff1a;1个基本列表和20个辅助列表。 将数据写入列表的基本ABAP/4语句是WRITE、SKIP和ULINE输出语句。 一、标准列表结构 &#xff08;1&…...

微信小程序自定义全局组件showModal

开发过程中微信提供的showmodal样式不符合ui风格,又不想写成组件用的页面都引入,就考虑模拟showmodal写一个自定义的弹框组件 一,在components中新建一个navModal组件 navModal.wxml <view class="modal_mask" hidden={{hidden}}><view class="mo…...

4|无线传感器网络与应用|无线传感器网络原理及方法-许毅版|考试知识点

《无线传感器网络原理及方法》第1章无线传感器网络概述1.1无线传感器网络的基本概念1.2无线传感器网络的特征1.2.1与现有无线网络的区别1.2.2与现场总线的区别1.2.3传感器节点的限制1.2.4传感器组网的特点1.3无线传感器网络的关键性能指标1.4无线传感器网络的应用1.5无线传感器…...

startForegroundService与startService 使用浅析

一. 了解服务&#xff08;Service&#xff09;的概念 service是安卓开发中一个很重要组件&#xff0c;意为“服务”。与我们常见的activity不同&#xff0c;“服务”是默默的在背后进行工作的&#xff0c;通常&#xff0c;它用于在后台为我们执行一些耗时&#xff0c;或者需要…...

django项目实战三(django+bootstrap实现增删改查)进阶分页

目录 一、分页 1、修改case_list.html页面 2、修改views.py的case_list方法&#xff08;分页未封装&#xff09; 二、分页封装 1、新建类Pagination 2、修改views.py的case_list方法 三、再优化&#xff0c;实现搜索分页qing情况 四、优化其他查询页面实现分页和查询 五…...

Python 之 Pandas DataFrame 数据类型的简介、创建的列操作

文章目录一、DataFrame 结构简介二、DataFrame 对象创建1. 使用普通列表创建2. 使用嵌套列表创建3 指定数值元素的数据类型为 float4. 字典嵌套列表创建5. 添加自定义的行标签6. 列表嵌套字典创建 DataFrame 对象7. Series 创建 DataFrame 对象三、DataFrame 列操作1. 选取数据…...

华为OD机试真题Python实现【5键键盘的输出】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述:示例1:示例2:解题思路代码实现运行结果:版权说明:题目...

IDEA全家桶式讲解 | IDEA安装、使用、断点调试、Git、插件 (第二篇)

目录 一&#xff1a;JavaEE阶段需要掌握的IDEA技能 1. 配置Tomcat 2. 配置Maven 3. IDEA连接数据库 4. 方便的特殊功能 5. 断点调试&#xff08;重点&#xff09; 6. IDEA中常用Git协同开发&#xff08;重点&#xff09; 7. 常用插件安装 一&#xff1a;JavaEE阶段需要…...

音视频基础之封装格式与音视频同步

封装格式的概念 封装格式(也叫容器&#xff09;就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中&#xff0c;便于播放软件播放。 一般来说&#xff0c;视频文件的后缀名就是它的封装格式。 封装的格式不一样&#xff0c;后缀名也就不一样。 比如&a…...

外籍在读博士|赴新西兰奥克兰大学双院士导师麾下联合培养

N同学来自阿拉伯国家&#xff0c;但本硕博都是在我国某省属高校就读&#xff0c;现为材料学专业一年级博士生。联合培养首选澳洲国家&#xff0c;包括澳大利亚和新西兰&#xff0c;其次是美国&#xff0c;希望在2023年初出国&#xff0c;以完成整个学年的学习计划。在我们的帮助…...

Learning C++ No.11【string类实现】

引言&#xff1a; 北京时间&#xff1a;2023/2/19/8:48&#xff0c;昨天更新了有关进程状态的博客&#xff0c;然后在休息的时候&#xff0c;打开了腾讯视屏&#xff0c;然后看到了了一个电视剧&#xff0c;导致上头&#xff0c;从晚上6点看到了10点&#xff0c;把我宝贵的博客…...

实力见“证”:Tapdata 技术创新与发展潜力广受认可

Tapdata 积极拥抱各种“不确定”&#xff0c;变中求新&#xff0c;只为呈现出更加好用的产品。 而 Tapdata 在专业领域不断深耕&#xff0c;持续打磨产品能力的同时&#xff0c;也收获了诸多来自外界的肯定&#xff0c;从用户到投资人&#xff0c;从生态伙伴到技术媒体以及官方…...

【C++修炼之路】18.map和set

每一个不曾起舞的日子都是对生命的辜负 map和setmap和set一.关联式容器二.set2.1 set的介绍2.2 set的使用1.set的模板参数列表2.set的构造3.set的迭代器4.set修改操作5.bound函数三.multiset四.map3.1 map的介绍3.2 map的使用1.map的模板参数说明2.pair的介绍3.map的[]重载五.m…...

ChatGPT原理与技术演进剖析

—— 要抓住一个风口&#xff0c;你得先了解这个风口的内核究竟是什么。本文作者&#xff1a;黄佳 &#xff08;著有《零基础学机器学习》《数据分析咖哥十话》&#xff09; ChatGPT相关文章已经铺天盖地&#xff0c;剖析&#xff08;现阶段或者只能说揣测&#xff09;其底层原…...

Retrofit+Hilt后端请求小项目1--项目介绍

简介 本项目根据 youtube 对应教程实现而来 将会对对应代码以及依赖&#xff08;如 Hilt、retrofit、coil&#xff09;进行详细的分析与解读&#xff0c;同时缕清项目结构安排 如文章有叙述不清晰的&#xff0c;请直接查看原教程&#xff1a;https://www.youtube.com/watch?…...

实际项目角度优化App性能

前言&#xff1a;前年替公司实现了一个在线检疫App&#xff0c;接下来一年时不时收到该App的需求功能迭代&#xff0c;部分线下问题跟进。随着新冠疫情防控政策放开&#xff0c;该项目也是下线了。 从技术角度来看&#xff0c;有自己的独特技术处理特点。下面我想记录一下该App…...

Structure|Alphafold2在肽结构预测任务上的基准实验

​题目&#xff1a;Benchmarking AlphaFold2 on peptide structureprediction 文献来源&#xff1a;2023, Structure 31, 1–9 代码&#xff1a;基准实验&#xff0c;比较了比较多的模型 1.背景介绍 由2-50个氨基酸构成的聚合物可以称为肽。但是关于肽和蛋白质之间的差异还是…...

Simple XML

简介 官网&#xff1a;https://simple.sourceforge.net/home.php Github&#xff1a;https://github.com/ngallagher/simplexml Simple 是用于 Java 的高性能 XML 序列化和配置框架。它的目标是提供一个 XML 框架&#xff0c;使 XML 配置和通信系统的快速开发成为可能。该框架…...

在代码质量和工作效率的矛盾间如何取舍?

这个问题的答案是&#xff0c;在很短的一段时期&#xff0c;编写高质量代码似乎会拖慢我们的进度。与按照头脑中首先闪现的念头编写代码相比&#xff0c;高质量的代码需要更多的思考和努力。但如果我们编写的不仅仅是运行一次就抛之脑后的小程序&#xff0c;而是更有实质性的软…...

rabbitMq安装(小短文)--未完成

rabbitMq是在activeMq的基础上创造的&#xff0c;有前者的功能&#xff0c;比前者强&#xff0c;属于后来居上。系统环境:windows10首先下载相关软件Erlang&#xff0c;因为他是这个语言写的。https://www.erlang.org/downloads然后安装&#xff0c;并且弄到环境变量里验证是否…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

Java多线程实现之Runnable接口深度解析

Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...

Clickhouse统计指定表中各字段的空值、空字符串或零值比例

下面是一段Clickhouse SQL代码&#xff0c;用于统计指定数据库中多张表的字段空值情况。代码通过动态生成查询语句实现自动化统计&#xff0c;处理逻辑如下&#xff1a; 从系统表获取指定数据库&#xff08;替换your_database&#xff09;中所有表的字段元数据根据字段类型动态…...

设计模式-观察着模式

观察者模式 观察者模式 (Observer Pattern) 是一种行为型设计模式&#xff0c;它定义了对象之间一种一对多的依赖关系&#xff0c;当一个对象&#xff08;称为主题或可观察者&#xff09;的状态发生改变时&#xff0c;所有依赖于它的对象&#xff08;称为观察者&#xff09;都…...

SpringBoot+MySQL家政服务平台 设计开发

概述 基于SpringBootMySQL开发的家政服务平台完整项目&#xff0c;该系统实现了用户预约、服务管理、订单统计等核心功能&#xff0c;采用主流技术栈开发&#xff0c;代码规范且易于二次开发。 主要内容 系统功能架构 本系统采用前后端分离架构&#xff0c;前端提供用户交互…...