ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:237.68KB ,
资源ID:25905670      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25905670.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ABAP74新特性.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ABAP74新特性.docx

1、ABAP74新特性ABAP 7.4新特性(一):行定义 Inline Declarations 以前我们要用一个变量的时候,需要在使用语句的前面先定义。现在,可以在使用的时候就定义了。比如说我们经常要预先定义表的工作区,然后在loop时使用。现在可以在loop的时候就定义对于表的工作区了。以前:plainview plaincopyprint?1.DATAitabTYPETABLEOFscarr.2.SELECT*FROMscarrintoTABLEitab.3.DATAwaLIKELINEOFitab.4.READTABLEitabWITHKEYcarrid=LHINTOwa.DATA it

2、ab 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. 现在:plainview plaincopyprint?1.DATAitabTYPETABLEOFscarr.2.SELECT*FROMscarrintoTABLEitab.3.READTABLEitabWITHKEYcarrid=LHINTODATA(wa).行定义(inlinedeclaration)变量DATA itab TYPE

3、 TABLE OF scarr.SELECT * FROM scarr into TABLE itab.READ TABLE itab WITH KEY carrid = LH INTO DATA(wa). 行内定义(inline declaration)变量 LOOP AT同理,注意行定义的变量作用域和以前定义的是一样的。又比如在方法中接收返回变量时:原:plainview plaincopyprint?1.DATAa1TYPE.2.DATAa2TYPE.3.oref-meth(IMPORTINGp1=a14.IMPORTINGp1=a25.) DATA a1 TYPE. DATA a2 T

4、YPE. oref-meth( IMPORTING p1=a1 IMPORTING p1=a2 . )现在:plainview plaincopyprint?1.oref-meth(IMPORTINGp1=DATA(a1)2.IMPORTINGp1=DATA(a2)3.) oref-meth( IMPORTING p1 = DATA(a1) IMPORTING p1= DATA(a2) . )对于fieldsymbols也是支持行定义的。以前1:plainview plaincopyprint?1.DATAaTYPEstringVALUEtest.2.FIELD-SYMBOL.3.ASSIGN

5、ato.DATA a TYPE string VALUE test.FIELD-SYMBOL .ASSIGN a to . 现在: plainview plaincopyprint?1.DATAaTYPEstringVALUEtest.2.ASSIGNatoFIELD-SYMBOL().DATA a TYPE string VALUE test.ASSIGN a to FIELD-SYMBOL().还可以用在读取表中:plainview plaincopyprint?1.LOOPATitabASSIGNINGFIELD-SYMBOL()wherecarrid=LH.2.3.WRITE:.4.5

6、.ENDLOOP.LOOP AT itab ASSIGNING FIELD-SYMBOL() where carrid = LH. WRITE:.ENDLOOP. 和plainview plaincopyprint?1.READTABLEitabassigningfield-symbol()INDEX1.READ TABLE itab assigning field-symbol() INDEX 1.行定义方便了我们的使用,在表中它会自动根据读取的表类型定义相应的工作区类型。但是使用这种方法注意作用域问题。ABAP 7.4新特性(二):NEW 操作符 NEW实例操作符了解JAVA的知道,我们可

7、以new一个对象实例出来,现在ABAP也可以这样了。NEW可以创建匿名的数据对象或者类的实例。匿名就是new出来的对象没有名字。因为后面不需要这个对象了,只是为了new出来赋值给左边的对象(赋值也不太对,就指向。),一次使用,简化代码。具体参考java匿名类 一般用到的3种形式 后面例子详细解释1. NEW dtype( value ) .创建一个类型为dtype的匿名数据对象,然后传值给创建的对象(左操作符)。 2. NEW class( p1 = a 1 p2 = a2 . ) .创建一个名为class类的实例,并且传参到实例的构造函数。3. NEW #( . ) .根据操作数类型创建一个

8、匿名数据对象或者一个类的实例。 如 a = new #( . ), new #( . )这里创建的匿名类是参考a的类型来的,即和a的类型一致。举例说明一下: 1.new 数据对象 before 7.4plainview plaincopyprint?1.FIELD-SYMBOLSTYPEdata.2.DATAdrefTYPEREFTOdata.3.CREATEDATAdrefTYPEi.4.ASSIGNdref-*TO.5.=555.FIELD-SYMBOLS TYPE data.DATA dref TYPE REF TO data.CREATE DATA dref TYPE i.ASSIGN

9、 dref-* TO . = 555. with 7.4plainview plaincopyprint?1.DATAdrefTYPEREFTOdata.2.dref=NEWi(555).DATA dref TYPE REF TO data.dref = NEW i( 555 ). 2.new 类实例 before 7.4plainview plaincopyprint?1.DATAorefTYPEREFTOclass.这里class是一个类名2.CREATEOBJECTorefEXPORTING.DATA oref TYPE REF TO class. 这里class是一个类名CREATE

10、OBJECT oref EXPORTING .with 7.4plainview plaincopyprint?1.DATAorefTYPEREFTOclass.2.oref=NEW#(.).DATA oref TYPE REF TO class.oref = NEW #( . ). 或者:plainview plaincopyprint?1.DATAorefTYPEREFTOclass.2.oref=NEW#(.).DATA oref TYPE REF TO class.oref = NEW #( . ).最后举一个综合的例子:plainview plaincopyprint?1.TYPES

11、:BEGINOFt_struct1,2.col1TYPEi,3.col2TYPEi,4.ENDOFt_struct1,5.BEGINOFt_struct2,6.col1TYPEi,7.col2TYPEt_struct1,8.col3TYPETABLEOFt_struct1WITHEMPTYKEY,9.ENDOFt_struct2,10.t_itabTYPETABLEOFt_struct2WITHEMPTYKEY.11.DATA(dref)=12.NEWt_itab(col1=113.col2-col1=114.col2-col2=215.col3=VALUE#(col1=1col2=2)VAL

12、UE下篇会讲16.(col1=3col2=4)17.(col1=218.col2-col1=219.col2-col2=420.col3=VALUE#(col1=2col2=4)21.(col1=6col2=8).22.WRITE:dref-*1-col1,dref-*2-col1.TYPES: BEGIN OF t_struct1,col1 TYPE i,col2 TYPE i,END OF t_struct1,BEGIN OF t_struct2,col1 TYPE i,col2 TYPE t_struct1,col3 TYPE TABLE OF t_struct1 WITH EMPTY

13、KEY,END OF t_struct2,t_itab TYPE TABLE OF t_struct2 WITH EMPTY KEY.DATA(dref) =NEW t_itab( ( col1 = 1col2-col1 = 1col2-col2 = 2col3 = VALUE #( ( col1 = 1 col2 = 2 ) VALUE 下篇会讲( col1 = 3 col2 = 4 ) ) )( col1 = 2col2-col1 = 2col2-col2 = 4col3 = VALUE #( ( col1 = 2 col2 = 4 )( col1 = 6 col2 = 8 ) ) ) )

14、.WRITE:dref-*1-col1,dref-*2-col1. 这个程序定义了两个结构t_struct1 和 t_struct2,其中t_struct2为deep struct,因为它的col3是参考t_struct1的表类型。那么后面那段代码,就是定义了一个dref引用类型变量,该变量指向的对象类型和t_itab类型相同。然后利用new和value来为匿名对象初始化数据,然后把这个匿名对象赋值给dref。这时候dref就有2行数据了。可以拷贝这段代码 然后断点看dref指向的容。ABAP 7.4新特性(三): VALUE 操作符 关于VALUE前面也提到过了,其主要是用来给一个结构、表等

15、对象初始化值。主要有下面三个方式:.valuedtype#()构造一个任意类型的初始值.valuedtype#(comp1=a1comp2=a2.)构造一个任意类型的结构体的初始值.valuedtype#(.)(.).).构造一个任意类型的表的初始值上面dtype# 意思是可以指定一个dtype的类型或者直接用#,用#时,其类型和被赋值的对象的数据类型一样。如果value后的dtype是个表,则必须指定key值,或者声明为empty key。scn.sap./community/abap/blog/2013/06/27/abap-news-for-release-740-internal-ta

16、bles-with-empty-key。When you declare a standard table data object without specifiying the primary key, the default key is taken. The default key consists of all character and byte like fields of the table structrure. If the structure contains only numeric fields, duh! The same would have happened if

17、 you declared theDEFAULT KEYexplicitly. But note that an empty key is not possible for sorted and hashed tables.Without explicit key declaration the type would not be usable for the inline data declaration shown here. Since I dont care about the key, I use the empty key. ASORT itabwithout specifying

18、 a sort key will do nothing and produce a warning from the syntax check.Starting with release 7.40 you declare your standard tables either with a good key or an empty key but never with the chancy default key!例1plainview plaincopyprint?1.CLASSc1DEFINITION.2.PUBLICSECTION.3.TYPES:BEGINOFt_struct,4.co

19、l1TYPEi,5.col2TYPEi,6.ENDOFt_struct.7.CLASS-METHODSm1IMPORTINGpTYPEt_struct.8.ENDCLASS.9.10.CLASSc1IMPLEMENTATION.11.METHODm1.12.WRITE:col1:,p-col1,col2:,p-col2.13.ENDMETHOD.14.ENDCLASS.15.16.START-OF-SELECTION.17.c1=m1(VALUE#(col1=1col2=2).CLASS c1 DEFINITION. PUBLIC SECTION. TYPES: BEGIN OF t_stru

20、ct, col1 TYPE i, col2 TYPE i, END OF t_struct. CLASS-METHODS m1 IMPORTING p TYPE t_struct. ENDCLASS.CLASS c1 IMPLEMENTATION. METHOD m1. WRITE:col1: , p-col1,col2:,p-col2. ENDMETHOD. ENDCLASS.START-OF-SELECTION. c1=m1( VALUE #( col1 = 1 col2 = 2 ) ).输出就是 col:1 col:2.例2plainview plaincopyprint?1.DATAi

21、tabTYPERANGEOFi.2.itab=VALUE#(sign=Ioption=BT(low=1high=10)3.(low=21high=30)4.(low=41high=50)5.option=GE(low=61).6.cl_demo_output=DISPLAY(itab).DATA itab TYPE RANGE OF i.itab = VALUE #( sign = I option = BT ( low = 1 high = 10 ) ( low = 21 high = 30 ) ( low = 41 high = 50 ) option = GE ( low = 61 )

22、).cl_demo_output=DISPLAY( itab ).例3plainview plaincopyprint?1.TYPESt_date_tabTYPEtableofstringwithemptykey.2.DATA(date_tab)=VALUEt_date_tab(3.(|convd(sy-datlo-1)DATE=environment|)4.(|sy-datloDATE=environment|)5.(|convd(sy-datlo+1)DATE=environment|).6.7.cl_demo_output=DISPLAY(date_tab).TYPES t_date_t

23、ab TYPE table of string with empty key.DATA(date_tab) = VALUE t_date_tab( ( | conv d( sy-datlo - 1 ) DATE = environment | ) ( | sy-datlo DATE = environment | ) ( | conv d( sy-datlo + 1 ) DATE = environment | ) ).cl_demo_output=DISPLAY( date_tab ).这里DATE=environment是用来格式化日期的,表达式里必须有日期类型d才能使用。environm

24、ent对应的值是CL_ABAP_FORMAT=D_ENVIRONMENT另外对日期进行加减时还需conv。如果第二行不用DATE=environment,那么输出就是20160606这样的格式。关于嵌入表达式可以F1看看例4为每一行赋值指定列名的好处:可以指定某一行的某一列都是同一个值而不用每一行都要输入该列值。补充:ABAP 7.4新特性(四): COND SWITCH 操作符 在新语法中,可以使用COND、SWITCH来根据逻辑表达式或情况的不同确定指定变量的结果。语法格式:.COND dtype | # ( WHEN log_exp1 THEN result1 WHEN log_exp2 THEN result2 . ELSE resultn ) .SWITCH dtype | # ( operandWHEN const1 THEN result1 WHEN const2 THEN result2 . ELSE resultn ) . 里可填,THEN后面都是返回的结果。在SWITCH中 operand 是一个变量类似case operand: when.例一:plainview plaincopyprint?1.DATA(time)=CONDstring(2.WHENsy-timlo120000

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1