[SAP ABAP开发技术总结]动态语句、动态程序详解编程语言

在ABAP中写动态的程序,灵活的程序,一定要知道的

1.13.     动态语句

1.13.1.           内表动态访问

SORT itab BY (comp1)…(compn)

 

READ TABLE itab WITH KEY(k1)=v1…(kn)=vn

READ TABLE itab…INTOwaCOMPARING(comp1)…(compnTRANSPORTING(comp1)…

MODIFY [TABLE] itab TRANSPORTING(comp1)…(compn)

DELETE TABLEitabWITH TABLE KEY(comp1)…(compn)

DELETE ADJACENT DUPLICATES FROM itab COMPARING(comp1)…(compn)

 

AT NEW/END OF (comp)

1.13.2.           动态类型

CREATE DATA … TYPE (type)…

DATA: a TYPE REF TO i.
CREATE DATA a TYPE (‘I’).
a->* = 1.

CREATE OBJECT … TYPE (type)…请参考类对象反射章节

1.13.3.           动态SQL

Select请参照后面的动态SQL

MODIFY/UPDATE(dbtab)…

1.13.4.           动态调用类的方法

CALL METHOD (meth_name) 
            | cref->(meth_name) 
            | iref->(meth_name) 
            | (class_name)=>(meth_name) 
            | class=>(meth_name) 
            | (class_name)=>meth

实例请参考类对象反射章节

1.13.5.           ASSIGN 动态分配

FIELD-SYMBOLS:<fs>.

DATA:str(20) TYPE c VALUE ‘Output String’,
     name(20) TYPE c VALUE ‘STR’.

静态分配:编译时就知道要分配的对象名
ASSIGN name TO <fs>.结果<fs>与name变量等同

通过变量名动态访问变量
ASSIGN (nameTO <fs>.结果是是<fs>的值为str变量值

 

DATABEGIN OF line,
  col1 TYPE i VALUE ’11’,
  col2 TYPE i VALUE ’22’,
  col3 TYPE i VALUE ’33’,
END OF line.
DATA comp(5VALUE ‘COL3’.
FIELD-SYMBOLS<f1><f2><f3>.
ASSIGN line TO <f1>.
ASSIGN comp TO <f2>.

还可以直接使用以下的语法访问其他程序中的变量
ASSIGN ((ZJDEMO)SBOOK-FLDATETO <fs>.

通过索引动态的访问结构成员
ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f3>.

通过字段名动态的访问结构成员
ASSIGN COMPONENT <f2>OF STRUCTURE <f1> TO <f3>.

如果定义的内表没有组件名时,可以使用索引为0的组件来访问这个无名字段(注:不是1)
ASSIGN COMPONENT 0 OF STRUCTURE itab TO  <fs>.

1.13.5.1.       动态访问类的属性成员

ASSIGN oref->(‘attr’) TO <attr>.
ASSIGN oref->(‘static_attr’) TO <attr>.
ASSIGN (‘C1’)=>(‘static_attr’) TO <attr>.
ASSIGN c1=>(‘static_attr’) TO <attr>.
ASSIGN (‘C1’)=>static_attr TO <attr>.

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20173.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论