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

摘要:
aTYPEREFTOi.CREATEDATAaTYPE('I').a->(meth_name)           |class=>."结果是<<('static_attr') TO<.ASSIGN('C1')=>static_attr TO<attr>
 

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

1.13.         动态语句... 22

1.13.1.     内表动态访问... 22

1.13.2.     动态类型... 23

1.13.3.     动态SQL. 23

1.13.4.     动态调用类的方法... 23

1.13.5.     ASSIGN 动态分配... 23

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

1.13.     动态语句

1.13.1.           内表动态访问

SORT itab BY (comp1)...(compn)

 

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

READ TABLE itab...INTOwaCOMPARING(comp1)...(compn) TRANSPORTING(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 (name) TO <fs>."结果是是<fs>的值为str变量值

 

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

"还可以直接使用以下的语法访问其他程序中的变量
ASSIGN ('(ZJDEMO)SBOOK-FLDATE') TO <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>.

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

免责声明:文章转载自《[SAP ABAP开发技术总结]动态语句、动态程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Prometheus监控学习笔记之360基于Prometheus的在线服务监控实践CAS Client 3.2.1 配置详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

虚表和虚表指针

  编译器:VS2015 0x01 基础概念   首先还是简单重复一下基础概念。   C++的多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。    1、多态性     指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。     a...

Drawable和Bitmap的区别

Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。    Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高...

Django实战(二)之模板语言

该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html 模板语法,每个框架都有其支持的模板语法,Django的模板语法在我看来与vue.js倒有一些相似处 ,比如它们的模板语法中参数为{{parm}}。 本篇所用到的例子,仍然基于实战(一) 在HelloWorld(该文件夹...

FineUI使用记录

@{ ViewBag.Title = "Grid/Grid"; var F = Html.F();} @section body { @(F.Grid().IsFluid(true).CssClass("blockpanel").Title("表格").ShowHeader(true).ShowBorder(true).ID("Grid1").DataI...

python连接mysql的驱动

对于py2.7的朋友,直接可以用MySQLdb去连接,但是MySQLdb不支持python3.x。这是需要注意的~ 那应该用什么python连接mysql的驱动呢,在stackoverflow上有人解答: (1)可以尝试使用PyMySQL,但它很慢,最新的版本可以支持python 3.4. 地址:http://www.pymysql.org/ (2)还可以...

动态SQL的使用方法

一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。   首先我们应该了解什么是动态SQL,在Oracle数据库开发PL/SQL块中我们使用的SQL分为:静态SQL语句和动态SQL语句。所...