最近看同事使用ABAP新语法贼溜,省了好多的功夫,还在使用老语法的我眼红了。
所以就自己补一补7.40之后语法,能够让自己写代码更顺畅吧。
今天学习内联申明 inline
意思是:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间) 所以 划重点: 内联函数 加快了速度,但是空间占用了更多。
当你使用如下代码时:
内联申明:
描述 | 7.40之前 | 7.40之后 |
变量申明赋值 |
Data text type string. text = 'TAB'. |
DATA(text) = 'TAB' |
循环工作区 |
DATA wa LIKE LINE OF itab. FIELD-SYMBOLS <FS> LIKE LINE OF itab. LOOP AT itab INTO wa. ENDLOOP. LOOP AT itab ASSIGNING <FS>. ENDLOOP. |
LOOP AT itab into data(wa). ... ENDLOOP. LOOP AT itab ASSIGNING FIELD-SYMBOLS(<FS>). ... ENDLOOP. |
调用方法 |
DATA: a1 TYPE CHAR1. oref->method_a1( IMPORTING P1 = a1). |
oref->method_a1( IMPORTING P1 = DATA(a1) ). |
READ TABLE |
DATA wa LIKE LINE OF itab. FIELD-SYMBOLS <FS> LIKE LINE OF itab. READ TABLE itab INTO wa INDEX 1. READ TABLE itab ASSIGNING <FS> INDEX 1. |
READ TABLE itab INTO DATA(WA) INDEX 1. READ TABLE itab ASSIGING FIELD-SYMBOLS(<FS>) INDEX 1. |
SQL |
DATA itab TYPE TABLE OF MARA. SELECT * FROM MARA INTO TABLE itab WHERE matnr = lv_matnr. |
SELECT * FROM mara INTO TABLE @DATA(itab) WHERE matnr = lv_matnr. |
SQL 2 |
DATA:lv_matnr TYPE mara-matnr. SELECT SINGLE matnr matkl INTO (lv_matnr,lv_matkl) |
SELECT SINGLE matnr,matkl INTO @DATA(lv_structue) FROM mara. |
- TAB 学习技术,热爱生活。