ABAP 7.4新特性(一):行内定义 Inline Declarations
来源:互联网 发布:逃离伊甸园知乎 编辑:程序博客网 时间:2024/04/28 02:50
2016-09-20-更:
发现个坑,比如 SELECT SINGLE *
INTO @DATA(WA_WMJXRW)
FROM ZTA_WMJXRW
WHERE ZJXDH = @RLMOB-ZJXDH. 当这段代码在一个循环或者重复执行function里的话,如果第一次成功出数据,
第二次没有找到数据的话用IF WA_WMJXRW IS INITIAL判断会为假!!!! 还是用sy-subrc判断吧
以前我们要用一个变量的时候,需要在使用语句的前面先定义。现在,可以在使用的时候就定义了。
比如说我们经常要预先定义表的工作区,然后在loop时使用。现在可以在loop的时候就定义对于表的工作区了。
以前:
DATA itab TYPE TABLE OF scarr.SELECT * FROM scarr into TABLE itab.DATA wa LIKE LINE OF itab.READ TABLE itab WITH KEY carrid = 'LH' INTO wa.现在:
DATA itab TYPE TABLE OF scarr.SELECT * FROM scarr into TABLE itab.READ TABLE itab WITH KEY carrid = 'LH' INTO DATA(wa). "行内定义(inline declaration)变量LOOP AT同理,注意行内定义的变量作用域和以前定义的是一样的。
又比如在方法中接收返回变量时:
原:
DATA a1 TYPE.....DATA a2 TYPE...oref->meth( IMPORTING p1=a1 IMPORTING p1=a2.... )
现在:
oref->meth( IMPORTING p1 = DATA(a1) IMPORTING p1= DATA(a2).... )
对于field symbols也是支持行内定义的。
以前1:
DATA a TYPE string VALUE 'test'.FIELD-SYMBOL <fs>.ASSIGN a to <fs>.现在:
DATA a TYPE string VALUE 'test'.ASSIGN a to FIELD-SYMBOL(<fs>).还可以用在读取内表中:
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>) where carrid = 'LH'. " WRITE:<line>.ENDLOOP.和
READ TABLE itab assigning field-symbol(<line2>) INDEX 1.
行内定义方便了我们的使用,在内表中它会自动根据读取的内表类型定义相应的工作区类型。但是使用这种方法注意作用域问题。
0 0
- ABAP 7.4新特性(一):行内定义 Inline Declarations
- ABAP 7.4新特性(四):内表访问表达式
- ABAP 新特性
- ABAP 7.4新特性(二):NEW 操作符
- ABAP 7.4新特性(三): VALUE 操作符
- ABAP 7.4新特性(四): COND SWITCH 操作符
- inline(行内)元素
- ABAP 7.4 新语法-内嵌生命和内表操作
- jdk7新特性一
- CSS3新特性(一)
- css3新特性一
- ABAP工作区,内表,标题行的定义和区别
- ABAP工作区,内表,标题行的定义和区别
- [abap] 几种定义内表的方法
- iBATIS 3 内的新特性
- Spring4新特性:Groovy Bean定义DSL
- java8新特性之接口定义增强
- java8新特性-接口定义增强
- 基于JSSE实现SSL 支持于WebLogic Server 11g
- 基于单目的半稠密视觉里程计
- C++ Primer 第十四章 重载操作符与转换
- soj 4512 有向图环
- 分类的R语言实现
- ABAP 7.4新特性(一):行内定义 Inline Declarations
- 自定义View,有这一篇就够了
- Archetypal Analysis
- java系统高并发解决方案(转载)
- iOS 基于javascriptcore封装的 webviewjavascritpbridge
- java的四种引用
- 最长公共子序列(二)
- 11.2.0.4 启动和关闭
- 书单