2019.11.06 【每天学点SAP小知识】Day1

 最近看同事使用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  学习技术,热爱生活。

原文地址:https://www.cnblogs.com/jxzhu/p/11809505.html