芯が強い人になるESTJ-A

# SAP ABAP新语法

默认分类 Tags: 无标签 阅读: 74

link

插入模式和覆盖模式
首先,我们知道在编辑文档时,有两种模式:
1、光标位置显示为 竖线,即通常使用的模式,插入模式
2、光标位置显示为 方块,即覆盖模式。
所以,两者切换方法:
1、如果目前是插入模式,点击键盘的Insert键,则切换成覆盖模式,反之同样。
2、有些笔记本电脑键盘没有Insert键咋办?

既然如此,那么快速处理编辑模式切换的问题呢?这里有两种办法:一种是外接一个有Insert的键盘,二是采用电脑的软键盘。

那么问题来了,如何开启软键盘呢?软键盘开启方法:win+R组合键,输入osk,即可显示出,键盘功能类似物理键盘。
鼠标点击Insert就可以直接切换啦!!!

变量及对象声明

1.1 变量声明

Before:
DATA text TYPE string.
text = ....
----------------------------------------
After:
DATA(text) = ....

使用工作区


DATA wa like LINE OF itab.
LOOP AT itab INTO wa.
…
ENDLOOP.
----------------------------------------
After:
LOOP AT itab INTO DATA(wa).
…
ENDLOOP.

返回参数


Before:
DATA xml TYPE xstring.
CALL TRANSFORMATION … RESULT XML xml.
----------------------------------------
After:
CALL TRANSFORMATION … RESULT XML DATA(xml).

引用声明


Before:
DATA ixml TYPE REF TO if_ixml.
DATA stream_factory TYPE REF TO if_ixml_stream_factory.
DATA document TYPE REF TO if_ixml_document.
ixml = cl_ixml=>create( ).
stream_factory = ixml->create_stream_factory( ).
document = ixml->create_document( ).
----------------------------------------
After:
DATA(ixml) = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).
DATA(document) = ixml->create_document( ).

对象实例化


Before:
DATA lo_human TYPE REF TO class_human.
CREATE OBJECT lo_human EXPORTING NAME = ‘TONY’.
----------------------------------------
After:
lo_human = NEW class_human( name = ‘TONY’ ).

内表操作
Read Table with key


Before:
READ TABLE flight_schedules INTO DATA(flight_schedule)
WITH KEY carrid = ‘AA’
connid = ‘0017’.
----------------------------------------

After:
DATA(flight_schedule) = flight_schedules[ carrid = ‘AA’ connid = ‘0017’ ].

Read Table index



Before:
READ TABLE itab INDEX idx
INTO wa.
----------------------------------------

After:
 wa = itab[ idx ].

Read Table using key


Before:
READ TABLE itab INDEX idx
USING KEY key
 INTO wa.
----------------------------------------
 After:
 wa = itab[ KEY key INDEX idx ].

Read Table index


Before:
DATA idx type sy-tabix.
READ TABLE …
TRANSPORTING NO FIELDS.
idx = sy-tabix.
----------------------------------------
After:
DATA(idx) = line_index( itab[ … ] ).

READ TABLE ASSIGNING


Before:
FIELD-SYMBOLS: 
 
   type … 
 
READ TABLE itab
ASSIGNING .
 
----------------------------------------
 
After:
READ TABLE itab
ASSIGNING FIELD-SYMBOL( 
 
   ).

获得内表行数


Before:
DATA: lv_rows TYPE i.
LV_ROWS = LINES( ITAB)
----------------------------------------
After:
DATA(lv_rows) = LINES( itab ).

填充内表的值到目标内表中


Before:
DATA: gt_citys TYPE ty_citys,
gs_ship TYPE ty_ship,
gs_city TYPE ort01.
LOOP AT gt_ships INTO gs_ship.
gs_city = gs_ship-city.
 APPEND gs_city TO gt_citys.ENDLOOP.

----------------------------------------
After:
DATA(gt_citys) = VALUE ty_citys( FOR ls_ship IN gt_ships ( ls_ship-city ) ).
Open SQL

取数到内表

Before:
DATA itab TYPE TABLE OF dbtab.
SELECT * FROM dbtab
INTO TABLE itab
WHERE fld1 = lv_fld1.
----------------------------------------
After:
SELECT * FROM dbta
INTO TABLE DATA(itab)
WHERE fld1 = @lv_fld1

4.1 FILTER

FILTER type( itab [EXCEPT] [IN ftab] [USING KEY keyname]
WHERE c1 op f1 [AND c2 op f2 […]] ).
实例:
TYPES: BEGIN OF ty_filter,
cityfrom TYPE spfli–cityfrom,
cityto TYPE spfli–cityto,
f3 TYPE i,
END OF ty_filter,
ty_filter_tab TYPE HASHED TABLE OF ty_filter
WITH UNIQUE KEY cityfrom cityto.
DATA: lt_splfi TYPE STANDARD TABLE OF spfli.
SELECT * FROM spfli APPENDING TABLE lt_splfi.
DATA(lt_filter) = VALUE ty_filter_tab( f3 = 2
( cityfrom = ‘NEW YORK’ cityto = ‘SAN FRANCISCO’ )
 ( cityfrom = ‘FRANKFURT’ cityto = ‘NEW YORK’ ) ).DATA(lt_myrecs) = FILTER #( lt_splfi IN lt_filter
WHERE cityfrom = cityfrom
AND cityto = cityto ).
“Output filtered records
LOOP AT lt_myrecs ASSIGNING FIELD–SYMBOL(<ls_rec>).
WRITE: / <ls_rec>–carrid,8 <ls_rec>–cityfrom,30
<ls_rec>–cityto,45 <ls_rec>–deptime.
ENDLOOP.

4.2 REDUCE


… REDUCE type(
 [let_exp]
 INIT {x1 = rhs1}|{ = wrexpr1}|{x1| TYPE dtype1}
 {x2 = rhs2}|{ = wrexpr2}|{x2| TYPE dtype2}
 …
 FOR for_exp1
 FOR for_exp2
 …
 NEXT …
 {x1 = rhs1}|{ = wrexpr1}
 {x2 = rhs2}|{ = wrexpr2}
 … ) …
实例:
DATA itab TYPE STANDARD TABLE OF i WITH EMPTY KEY.
 itab = VALUE #( FOR j = 1 WHILE j <= 10 ( j ) ).DATA(sum) = REDUCE i( INIT x = 0 FOR wa IN itab NEXT x = x + wa ).

4.3 使用类转换字符串 conv


Before:
DATA text TYPE c LENGTH 255.
DATA helper TYPE string.
DATA xstr TYPE xstring.
helper = text.
xstr = cl_abap_codepage=>convert_to( source = helper ).
After:
DATA text TYPE c LENGTH 255.
DATA(xstr) = cl_abap_codepage=>convert_to( source = CONV string( text ) ).
OR
DATA(xstr) = cl_abap_codepage=>convert_to( source = CONV #( text ) ).