matinal:SAP ABAP 7.40及以上新语法LINES&DATA&VALUE&CONV用法总结

文章介绍了ABAP编程中的SQL查询(如SELECT*),数据操作(如VALUE#、DATA和Corresponding#),以及结构处理(STRUCTURE和TABLE)。内容涉及条件判断、数据移动和类型转换函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. LINE_EXISTS( )

DATA: GT_SFLIGHT TYPE TABLE OF SFLIGHT.

SELECT * FROM SFLIGHT INTO TABLE GT_SFLIGHT UP TO 10 ROWS.

IF LINE_EXISTS( GT_SFLIGHT[ FLDATE = '20200423' ] ).
  WRITE:/ 'Line is Exists'.
ENDIF.

2. CORRESPONDING #( )

DATA: BEGIN OF WA_STRUCTURE1,
        COL1 TYPE CHAR20 VALUE'COL1',
        COL2 TYPE CHAR20 VALUE'COL2',
      END OF WA_STRUCTURE1.

DATA: BEGIN OF WA_STRUCTURE2,
        COL2 TYPE CHAR20,
        COL3 TYPE CHAR20,
      END OF WA_STRUCTURE2.

WA_STRUCTURE2 = CORRESPONDING #( WA_STRUCTURE1 ).   "从工作区1移动字段名相同的值到工作区2

CL_DEMO_OUTPUT=>DISPLAY( WA_STRUCTURE2 ).

DATA: GT_TABLE1 LIKE TABLE OF WA_STRUCTURE1,
      GT_TABLE2 LIKE TABLE OF WA_STRUCTURE2.

GT_TABLE1 = VALUE #(                                    "GT_TABLE1插入两条数据
                         ( COL1 = 'S1R1C1' COL2 = 'S1R1C2')
                         ( COL1 = 'S1R2C1' COL2 = 'S1R2C2')
                        ).

GT_TABLE2 = VALUE #( ( COL2 = 'S2R1C1' COL3 = 'S2R1C2') ).  ""GT_TABLE2插入的第一条数据会覆盖第二条
GT_TABLE2 = VALUE #( ( COL2 = 'S2R2C1' COL3 = 'S2R2C2') ).

GT_TABLE2 = CORRESPONDING #( GT_TABLE1 ).     "从GT_TABLE1移动字段名相同的列到GT_TABLE2,会覆盖GT_TABLE2的旧数据

CL_DEMO_OUTPUT=>DISPLAY( GT_TABLE2 ).

3. VALUE #( )

"变量看ABAP Keyword Documentation

"结构
DATA: BEGIN OF WA_STRUCTURE,
        COL1 TYPE CHAR20,
        COL2 TYPE CHAR20,
      END OF WA_STRUCTURE.

WA_STRUCTURE = VALUE #( COL1 = 'COL1' COL2 = 'COL2' ).

CL_DEMO_OUTPUT=>DISPLAY( WA_STRUCTURE ).

"表
DATA: GT_TABLE LIKE TABLE OF WA_STRUCTURE.

GT_TABLE = VALUE #(
                    ( COL1 = 'ROW1COL1' COL2 = 'ROW1COL2')
                    ( COL1 = 'ROW2COL1' COL2 = 'ROW2COL2')
                  ).

CL_DEMO_OUTPUT=>DISPLAY( GT_TABLE ).

4. DATA()

"变量
DATA: LV_VAR1 TYPE CHAR20 VALUE 'Variable'.

DATA(LV_VAR2) = LV_VAR1.
CL_DEMO_OUTPUT=>DISPLAY( LV_VAR2 ).

"结构
"方法一:
DATA: BEGIN OF WA_STRUCTURE1,
        COL1 TYPE CHAR20 VALUE'COL1',
        COL2 TYPE CHAR20 VALUE'COL2',
      END OF WA_STRUCTURE1.

DATA(WA_STRUCTURE2) = WA_STRUCTURE1.
CL_DEMO_OUTPUT=>DISPLAY( WA_STRUCTURE2 ).

"方法二:
SELECT SINGLE * FROM SFLIGHT INTO @DATA(WA_SFLIGHT).
CL_DEMO_OUTPUT=>DISPLAY( WA_SFLIGHT ).

"表
"方法一:
DATA: GT_TABLE1 LIKE TABLE OF WA_STRUCTURE1.

GT_TABLE1 = VALUE #(
                    ( COL1 = 'ROW1COL1' COL2 = 'ROW1COL2')
                    ( COL1 = 'ROW2COL1' COL2 = 'ROW2COL2')
                  ).

DATA(GT_TABLE2) = GT_TABLE1.
CL_DEMO_OUTPUT=>DISPLAY( GT_TABLE2 ).

"方法二:
SELECT * FROM SFLIGHT INTO TABLE @DATA(GT_SFLIGHT) UP TO 20 ROWS.
CL_DEMO_OUTPUT=>DISPLAY( GT_SFLIGHT ).

5. ||

DATA: LV_VAR    TYPE CHAR20 VALUE 'Variable',
      LV_STRING TYPE STRING.

LV_STRING = |{ LV_VAR } is Same as { LV_VAR }|.

WRITE:/ LV_STRING.

6. LINES()

SELECT * FROM SFLIGHT INTO TABLE @DATA(GT_SFLIGHT).

DATA(LV_ROWCOUNT) = LINES( GT_SFLIGHT ).

WRITE:/ LV_ROWCOUNT.

7. CONV #()

DATA LV_TEXT TYPE C LENGTH 200 VALUE'1111'.

"方法一:
DATA(LV_STRING1) = CONV STRING( LV_TEXT ).

"方法二:
DATA: LV_STRING2 TYPE STRING.
LV_STRING2 = CONV #( LV_TEXT ).

WRITE:/ LV_STRING1,
      / LV_STRING2.

"Other
DATA: LV_NUM TYPE N LENGTH 20.
DATA(LV_INT) = CONV I( LV_TEXT ).
DATA(LV_NUMC) = CONV NUM( LV_TEXT ).

WRITE:/ LV_INT,
      / LV_NUMC.
### 回答1: ABAP中的append lines of是将一组数据添加到内部表的末尾。它可以通过以下方式实现: 1. 定义一个内部表和一个结构体,结构体包含要添加的数据字段。 2. 使用APPEND LINES OF语句将结构体添加到内部表的末尾。 例如,以下代码将一个结构体添加到名为my_table的内部表的末尾: DATA: BEGIN OF my_struct, field1 TYPE string, field2 TYPE i, END OF my_struct. DATA: my_table TYPE TABLE OF my_struct. my_struct-field1 = 'Hello'. my_struct-field2 = 123. APPEND LINES OF my_struct TO my_table. ### 回答2: ABAP中的"append lines of"语句用于将一个内表的行添加到另一个内表中。 该语句的语法如下: APPEND LINES OF <internal table1> TO <internal table2>. 其中,<internal table1>是源内表,<internal table2>是目标内表。 使用"append lines of"语句可以实现以下功能: 1. 将一个内表的行添加到另一个内表中。例如,如果内表A中有3行,内表B中有5行,通过"append lines of A to B"语句,将会把内表A中的3行添加到内表B中,最终内表B将有8行。 2. 可以在循环语句内使用"append lines of"语句来动态向一个内表中添加行。例如,在一个循环过程中,每次迭代可以生成一行数据,并将该行数据添加到一个内表中,最终形成一个完整的内表。 3. "append lines of"语句还可以用于合并多个内表。可以先将多个内表中的数据按照一定的逻辑合并到一个内表中,以便后续的处理和展示。 需要注意的是,使用"append lines of"语句在目标内表的末尾添加行。如果目标内表为空,则源内表的所有行都将被添加到目标内表中。 总之,"append lines of"语句可以方便地实现内表之间的行合并操作,使得内表的处理更加灵活和高效。 ### 回答3: 在ABAP编程语言中,“append lines of”是一种操作,用于添加行到内部表(Internal Table)中。 内部表是一种用于存储数据的数据结构,类似于数据库中的表格。在编程过程中,我们常常需要将获取到的数据存储到内部表中,以便于后续处理和操作。 使用“append lines of”语句,我们可以将一组数据行添加到现有的内部表的末尾。这些数据行可以来源于其他的内部表、数据库表或者其他数据源。通过这种方式,我们可以将不同来源的数据整合到一张内部表中,方便后续的分析和处理。 在使用“append lines of”时,需要注意以下几点: 1. 目标内部表和源内部表的结构必须一致,即字段和字段类型要匹配。否则,添加数据可能会导致类型错误或异常。 2. 在执行“append lines of”之前,需要对目标内部表进行初始化。可以使用“clear”命令来清空内部表中的数据,也可以使用“create data”来创建一个的内部表。如果目标内部表未初始化,则添加的数据会导致内部表混乱。 3. 使用“append lines of”语句时,可以一次添加多行数据。如果源内部表中有多行数据,它们将依次添加到目标内部表的末尾。 总之,“append lines of”是一种在ABAP编程中常用的操作,用于将数据行添加到内部表的末尾。通过这种方式,我们可以将多个数据源的数据整合到一个内部表中,以便于后续处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值