【整理】ABAP 7.40新特性介绍(下)
ABAP 7.40 Quick Reference?
?
9.Strings? - 字符串
I.?? String Templates 字符串模板
A string template is enclosed by two characters “|” and creates a character string.
字符串模板由兩個(gè)“|”字符括起來,創(chuàng)建一個(gè)字符串。
Literal text consists of all characters that are not in braces {}. The braces can contain:
字面文本包含所有不在大括號{}內(nèi)的字符。 大括號內(nèi)可包括如下內(nèi)容:
- data objects, 數(shù)據(jù)對象
- calculation expressions, 計(jì)算表達(dá)式
- constructor expressions, 構(gòu)造器表達(dá)式
- table expressions, 內(nèi)表表達(dá)式
- predefined functions, ?預(yù)定義功能
- functional methods?and?method chainings,??功能方法和方法鏈
下面這個(gè)例子就是在大括號內(nèi)包含了內(nèi)表表達(dá)式,取的內(nèi)表?xiàng)l件滿足某個(gè)條件的某個(gè)值字段。
?
?II.? Concatenation 串聯(lián)
?
III. Width/Alignment/Padding 寬度/對齊/填充
WRITE?/?|{?'LEFT'?????? WIDTH?=?20?ALIGN?=?LEFT????? PAD?=?'0'?}|. WRITE?/?|{?'CENTRE'???WIDTH?=?20?ALIGN?=?CENTER? PAD?=?'0'?}|. WRITE?/?|{?'RIGHT'???? WIDTH?=?20?ALIGN?=?RIGHT???? PAD?=?'0'?}|.?
IV. Case
原態(tài),大寫,小寫
WRITE?/?|{?'Text'?CASE?=?(CL_ABAP_FORMAT=>C_RAW)???}|. WRITE?/?|{?'Text'?CASE?=?(CL_ABAP_FORMAT=>C_UPPER)?}|. WRITE?/?|{?'Text'?CASE?=?(CL_ABAP_FORMAT=>C_LOWER)?}|.?
V.? ALPHA conversion
DATA(LV_VBELN)?=?'0000012345'. WRITE?/?|{?LV_VBELN??ALPHA?=?OUT?}|.?"or?use?ALPHA?=?IN?to?go?in?other?direction?
VI.? Date conversion
WRITE?/?|{?PA_DATE?DATE?=?ISO?}|.???????????"Date?Format?YYYY-MM-DD WRITE?/?|{?PA_DATE?DATE?=?USER?}|.??????????"As?per?user?settings WRITE?/?|{?PA_DATE?DATE?=?ENVIRONMENT?}|.???"Formatting?setting?of?language?environment?
10. Loop at Group By
I.?? Definition 定義
LOOP AT itab?result?[cond] GROUP BY?key ( key1 = dobj1 key2 = dobj2 …?
????? [gs = GROUP SIZE] [gi = GROUP INDEX] )?
????? [ASCENDING|DESCENDING [AS TEXT]]?
????? [WITHOUT MEMBERS]?
????? [{INTO group}|{ASSIGNING <group>}]
????? …?
??????[LOOP AT GROUP?group|<group>?
??????…?
??????ENDLOOP.]?
????? …
ENDLOOP.
?
II.? Explanation 解釋
The outer loop will do one iteration per key. So if 3 records match the key there will only be one iteration for these 3 records. The structure “group” (or “<group>” ) is unusual in that it can be looped over using the “LOOP AT GROUP” statement. This will loop over the 3 records (members) of the group. The structure “group” also contains the current key as well as the size of the group and index of the group ( if GROUP SIZE and GROUP INDEX have been assigned a field name). This is best understood by an example.
外部循環(huán)將對每個(gè)鍵執(zhí)行一次迭代。因此,如果3條記錄與關(guān)鍵值匹配,那么這3條記錄將只有一次迭代。結(jié)構(gòu)“group”(或“<group>”)不常見,因?yàn)樗梢允褂谩癓OOP AT group”語句循環(huán)。這將循環(huán)訪問組的3個(gè)記錄(成員)。結(jié)構(gòu)“group”還包含當(dāng)前鍵、組的大小和組的索引(如果組大小和組索引已分配了字段名)。這一點(diǎn)最好通過一個(gè)例子來理解。
?
III. Example 舉例
TYPES:?BEGIN?OF?TY_EMPLOYEE,NAME?TYPE?CHAR30,ROLE?TYPE?CHAR30,AGE??TYPE?I,END?OF?TY_EMPLOYEE,TY_EMPLOYEE_T?TYPE?STANDARD?TABLE?OF?TY_EMPLOYEE?WITH?KEY?NAME. DATA(GT_EMPLOYEE)?=?VALUE?TY_EMPLOYEE_T( (?NAME?=?'Mao'?????????ROLE?=?'ABAP?guru'???????AGE?=?29?) (?NAME?=?'Zhangjie'????ROLE?=?'FI?Consultant'???AGE?=?33?) (?NAME?=?'Hujianchun'??ROLE?=?'ABAP?guru'???????AGE?=?37?) (?NAME?=?'XiaoLiu'?????ROLE?=?'FI?Consultant'???AGE?=?31?) (?NAME?=?'Xiuxianhai'??ROLE?=?'ABAP?guru'???????AGE?=?30?) (?NAME?=?'Huangping'???ROLE?=?'SD?Consultant'???AGE?=?42?)?). DATA:?GV_TOT_AGE?TYPE?I,GV_AVG_AGE?TYPE?DECFLOAT34. "Loop?with?grouping?on?Role LOOP?AT?GT_EMPLOYEE?INTO?DATA(LS_EMPLOYEE)GROUP?BY?(?ROLE??=?LS_EMPLOYEE-ROLESIZE??=?GROUP?SIZEINDEX?=?GROUP?INDEX?)ASCENDINGASSIGNING?FIELD-SYMBOL(<GROUP>).CLEAR:?GV_TOT_AGE."Output?info?at?group?levelWRITE:?/?|Group:{?<GROUP>-INDEX?}????Role:?{?<GROUP>-ROLE?WIDTH?=?15?}|&?|?????Number?in?this?role:?{?<GROUP>-SIZE?}|."Loop?at?members?of?the?groupLOOP?AT?GROUP?<GROUP>?ASSIGNING?FIELD-SYMBOL(<LS_MEMBER>).GV_TOT_AGE?=?GV_TOT_AGE?+?<LS_MEMBER>-AGE.WRITE:?/13?<LS_MEMBER>-NAME.ENDLOOP."Average?ageGV_AVG_AGE?=?GV_TOT_AGE?/?<GROUP>-SIZE.WRITE:?/?|Average?age:?{?GV_AVG_AGE?}|.SKIP. ENDLOOP.?
IV. Output 輸出結(jié)果
?
11. Classes/Methods 類/方法
I.?? Referencing fields within returned structures 引用返回結(jié)構(gòu)中的字段
?
II.? Methods that return a type BOOLEAN 返回布爾類型的方法
NB : The type “BOOLEAN” is not a true Boolean but a char1 with allowed values X,- and <blank>.
?????? Using type “FLAG” or “WDY_BOOLEAN” works just as well.
注意 :類型“BOOLEAN”不是真正的布爾類型,而是一個(gè)char1,其允許值為X,-和空。使用類型“FLAG”或“WDY_BOOLEAN”也同樣可以。
?
III. NEW operator - NEW運(yùn)算符
This operator can be used to instantiate an object.此運(yùn)算符可用于實(shí)例化對象。
?
12. Meshes 網(wǎng)格
Allows an association to be set up between related data groups.
允許在相關(guān)數(shù)據(jù)組之間設(shè)置關(guān)聯(lián)。
?
I.Problem
Given the following 2 internal tables:
給出以下兩個(gè)內(nèi)表:
TYPES:?BEGIN OF?t_manager, name???TYPE?char10, salary?TYPE?int4, END OF?t_manager, tt_manager?TYPE SORTED TABLE OF?t_manager?WITH UNIQUE KEY?name.TYPES:?BEGIN OF?t_developer, name????TYPE?char10, salary??TYPE?int4, manager?TYPE?char10,???“Name of manager END OF?t_developer, tt_developer?TYPE SORTED TABLE OF?t_developer?WITH UNIQUE KEY?name.Populated as follows:填充如下值
Get the details of Jerry’s manager and all developers managed by Thomas.
?
II.? Solution
TYPES:?BEGIN?OF?MESH?M_TEAM,MANAGERS???TYPE?TT_MANAGER??ASSOCIATION?MY_EMPLOYEE?TO?DEVELOPERSON?MANAGER?=?NAME,DEVELOPERS?TYPE?TT_DEVELOPER?ASSOCIATION?MY_MANAGER?TO?MANAGERSON?NAME?=?MANAGER,END?OF?MESH?M_TEAM. DATA:?LS_TEAM?TYPE?M_TEAM. LS_TEAM-MANAGERS???=?LT_MANAGER. LS_TEAM-DEVELOPERS?=?LT_DEVELOPER. *Get?details?of?Jerry’s?manager?* "get?line?of?dev?table ASSIGN?LT_DEVELOPER[?NAME?=?'JERRY'?]?TO?FIELD-SYMBOL(<LS_JERRY>). DATA(LS_JMANAGER)?=??LS_TEAM–DEVELOPERS\MY_MANAGER[?<LS_JERRY>?]. WRITE:?/?|Jerry's?manager:{?LS_JMANAGER-NAME?}|,30|Salary:{?LS_JMANAGER-SALARY?}|."Get?Thomas’?developers SKIP. WRITE:?/?|Thomas'developers:|. "line?of?manager?table ASSIGN?LT_MANAGER[?NAME?=?'Thomas'?]?TO?FIELD-SYMBOL(<LS_THOMAS>). LOOP?AT?LS_TEAM–MANAGERS\MY_EMPLOYEE[?<LS_THOMAS>?]ASSIGNING?FIELD-SYMBOL(<LS_EMP>).WRITE:?/?|Employee?name:?{?<LS_EMP>-NAME?}|. ENDLOOP.?
III. Output
Jerry's?manager:?Jason???? Salary:?3000
Thomas'developers:
Employee?name:?David
Employee?name:?Jack
Employee?name:?John
?
13. Filter 過濾器
Filter the records in a table based on records in another table.
根據(jù)另一個(gè)表中的記錄篩選表中的記錄。
?
I.Definition
… FILTER type( itab [EXCEPT] [IN ftab] [USING KEY keyname]?
???????????WHERE c1 op f1 [AND c2 op f2 […]] )
?
II.? Problem
Filter an internal table of Flight Schedules (SPFLI) to only those flights based on a filter table that contains the fields Cityfrom and CityTo.
將航班計(jì)劃的內(nèi)表(SPFLI)篩選出僅包含基于Cityfrom和CityTo字段的航班表。
?
III. Solution
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_FILTERWITH?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_FILTERWHERE?CITYFROM?=?CITYFROMAND?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.Note: using the keyword “EXCEPT” (see definition above) would have returned the exact opposite records i.e all records EXCEPT for those those returned above.
注意:使用關(guān)鍵字“EXCEPT”(參見上面的定義)將返回完全相反的記錄,即除上面返回的記錄之外的所有記錄。
?
總結(jié)
以上是生活随笔為你收集整理的【整理】ABAP 7.40新特性介绍(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【整理】ABAP 7.40新特性介绍(上
- 下一篇: 【整理】SAP系统内核和ABAP版本