ABAP--新语法--New Keyword in ABAP--第一天--DATA FIELD-SYMBOL NEW[转]

原创 

 

DATA
新语法允许在语句内部动态声明变量,该作用域与普通定义的变量范围一致

 

 

 

 

 

 1 *&--------------------------------------------------------------------*
 2 * 通过赋值的方式来动态声明变量,系统会根据所赋的值来确定变量类型
 3 * 其中,字符类型会参照数据长度来指定
 4 *&--------------------------------------------------------------------*
 5 DATA(LV_CHAR1) = 'THIS IS A SENTENCE'.
 6 DATA(LV_INT1) = 10.
 7 
 8 
 9 *&--------------------------------------------------------------------*
10 * 动态声明内表/结构,字段类型与 SELECT LIST 对应的字段一致,
11 * 在包含常量字段时,需要赋别名,以指定内表/结构中的字段名
12 *&--------------------------------------------------------------------*
13 SELECT
14   MATNR,
15   MAKTX
16   FROM MAKT
17   INTO TABLE @DATA(LT_MAKT1).
18 
19 SELECT SINGLE
20   MATNR,
21   'CONSTANT' AS FIELD
22   FROM MAKT
23   INTO @DATA(LW_MAKT1).
24 
25 
26 *&--------------------------------------------------------------------*
27 * 在 LOOP 内表时动态声明结构,可以避免使用带表头的内表
28 *&--------------------------------------------------------------------*
29 LOOP AT LT_MAKT1 INTO DATA(LW_MAKT2).
30 ENDLOOP.
31 
32 
33 *&--------------------------------------------------------------------*
34 *  在常见的操作语句中动态声明变量,多数情况下可以在 INTO 语
35 *  句后使用,如下为连接/拆分字符串示例
36 *&--------------------------------------------------------------------*
37 CONCATENATE 'TEXT' '-' '01' INTO DATA(LV_CONCAT1).
38 SPLIT LV_CONCAT1 AT '-' INTO DATA(LV_PART1) DATA(LV_PART2).
39 SPLIT LV_CONCAT1 AT '-' INTO TABLE DATA(LT_CONCAT1).
40 

 

 

 

 FIELD-SYMBOL 与DATA关键字类似,FIELD-SYMBOL允许在语句内部动态声明字段符号 

 

 1 *&--------------------------------------------------------------------*
 2 *     在 LOOP 时动态声明字段符号,需要区分的是,
 3 *    普通定义使用的是 FIELD-SYMBOLS
 4 *&--------------------------------------------------------------------*
 5 LOOP AT LT_MAKT1 ASSIGNING FIELD-SYMBOL(<FS_MAKT1>).
 6 ENDLOOP.
 7 
 8 *&--------------------------------------------------------------------*
 9 *     在 ASSIGN 时动态声明字段符号并分配
10 *&--------------------------------------------------------------------*
11 ASSIGN (LW_MAKT2) TO FIELD-SYMBOL(<FS_FIELD>).

 

 

 

NEW
使用 NEW 创建(实例化)引用对象,用来代替CREATE OBJECT
1NEW dtype( value ) …
创建一个类型为dtype的匿名数据对象,然后传值给创建的对象(左操作符)。
2NEW class( p1 = a 1 p2 = a2 … ) …
创建一个名为class类的实例,并且传参到实例的构造函数。
3NEW #( … ) …
根据操作数类型创建一个匿名数据对象或者一个类的实例。 如 a = new #( … ), new #( … )这里创建的匿名类是参考a的类型来的,即和a的类型一致。
————————————————
版权声明:本文为CSDN博主「尤其是十月的风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34060435/article/details/116995586

 

 

 

1 *&--------------------------------------------------------------------*
2 *     使用 NEW 关键字时,如果等号左侧的对象还没有确定类型,
3 *    则必须在 NEW 关键字后指定类型,如 GO_GRID_NEW;
4 *    如果是已经预定义的对象,则可以用 # 代替,如 GO_GRID
5 *&--------------------------------------------------------------------*
6 DATA(GO_GRID_NEW) = NEW CL_GUI_ALV_GRID( I_PARENT = GO_CON ).
7 
8 DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID.
9 GO_GRID = NEW #( I_PARENT = GO_CON ).

 

posted @ 2022-04-05 16:02  ultraluck  阅读(234)  评论(0)    收藏  举报