1、ABAP7.4新特性(一):行内定义InlineDeclarations以前我们要用一个变量的时候,需要在使用语句的前面先定义。现在,可以在使用的时候就定义了。比如说我们经常要预先定义表的工作区,然后在loop时使用。现在可以在loop的时候就定义对于表的工作区了。以前:[plain]viewplaincopyprint?1.DATA itab TYPE TABLE OF scarr. 2.SELECT * FROM scarr into TABLE itab. 3.DATA wa LIKE LINE
2、OF itab. 4.READ TABLE itab WITH KEY carrid = 'LH' INTO wa. DATAitabTYPETABLEOFscarr.SELECT*FROMscarrintoTABLEitab.DATAwaLIKELINEOFitab.READTABLEitabWITHKEYcarrid='LH'INTOwa.现在:[plain]viewplaincopyprint?1.DATA itab TYPE TABLE OF scarr. 2.SELECT * FROM s
3、carr into TABLE itab. 3.READ TABLE itab WITH KEY carrid = 'LH' INTO DATA(wa). "行内定义(inline declaration)变量 DATAitabTYPETABLEOFscarr.SELECT*FROMscarrintoTABLEitab.READTABLEitabWITHKEYcarrid='LH'INTODATA(wa)."行内定义(inlinedeclaration)变量LOOPAT同理,注意行内定义的变量作用域和以
5、plaincopyprint?1.oref->meth( IMPORTING p1 = DATA(a1) 2. IMPORTING p1= DATA(a2) 3. .... ) oref->meth(IMPORTINGp1=DATA(a1)IMPORTINGp1=DATA(a2)....)对于field symbols也是支持行内定义的。以前1: [plain]viewplaincopyprint?1.DATA a TYPE string VALUE 'test'.
6、 2.FIELD-SYMBOL . 3.ASSIGN a to . DATAaTYPEstringVALUE'test'.FIELD-SYMBOL.ASSIGNato. 现在:[plain]viewplaincopyprint?1.DATA a TYPE string VALUE 'test'. 2.ASSIGN a to FIELD-SYMBOL(). DATAaTYPEstringVALUE'test'.ASSIGNatoFIELD-SYMBOL
7、().还可以用在读取内表中:[plain]viewplaincopyprint?1.LOOP AT itab ASSIGNING FIELD-SYMBOL() where carrid = 'LH'. " 2. 3. WRITE:. 4. 5.ENDLOOP. LOOPATitabASSIGNINGFIELD-SYMBOL()wherecarrid='LH'."WRITE:.ENDLOOP.和[plain]viewplaincopypri
8、nt?1.READ TABLE itab assigning field-symbol() INDEX 1. READTABLEitabassigningfield-symbol()INDEX1.行内定义方便了我们的使用,在内表中它会自动根据读取的内表类型定义相应的工作区类型。但是使用这种方法注意作用域问题。ABAP7.4新特性(二):NEW操作符NEW实例操作符了解JAVA的知道,