最近看同事使用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.DATA:lv_matkl TYPE mara-matkl.SELECT SINGLE matnr matkl INTO (lv_matnr,lv_matkl) FROM mara. | SELECT SINGLE matnr,matkl INTO @DATA(lv_structue) FROM mara. |
- TAB 学习技术,热爱生活