TYPES BEGIN OF struc_type.
TYPES comp ...
TYPES comp TYPE struc_type BOXED. "參照另一結構類型
INCLUDE { {TYPE struc_type} | {STRUCTURE struc} } "將另一結構包括進來
[AS name [RENAMING WITH SUFFIX suffix]].
TYPES END OF struc_type.
INCLUDE { {TYPE struc_type} | {STRUCTURE struc} }
[AS name [RENAMING WITH SUFFIX suffix]].
該語句只能用在定義結構的BEGIN OF與 END OF之間。作用是將結構類型struc_type與結構變量struc的所有組件字段拷貝到當前結構定義的指定位置,INCLUDE就是將可以重複使用的東西先做好,再包含進來。
AS name:給包含進來的結構類型(或結構變量)取一個別名,這樣就可以通過結構組件符(-)來選取這個結構類型(或結構變量)
RENAMING WITH SUFFIX suffix:如果include進來的結構類型(或結構變量)的組件字段與現有的重複,則可以使用此選項重命名include進來的結構類型(或結構變量)的各組件字段名,具體做法只是在原來組件名後加上了指定的後綴suffix
TYPES: BEGIN OF t_day,
work TYPE c LENGTH 8,
free TYPE c LENGTH 16,
END OF t_day.
DATA BEGIN OF week.
INCLUDE TYPE t_day AS monday RENAMING WITH SUFFIX _mon.
INCLUDE TYPE t_day AS tuesday RENAMING WITH SUFFIX _tue.
INCLUDE TYPE t_day AS wednesday RENAMING WITH SUFFIX _wed.
...
DATA END OF week.
可以通下面的方式來訪問week結構變量:
直接看作是week結構變量組件:week-work_mon, week-free_mon, week-work_tue
由於使用as別名,所以還可以這樣訪問:week-monday-work, week-monday-free, week-tuesday-work
當程序中多個結構使用共同的字段時,將公用的部分提取出來,使用INCLUDE將它們組裝起來,編程結構更清晰。下面是結構對象的複用:
DATA: BEGIN OF comm1 OCCURS 0,
bukrs TYPE bseg-bukrs,
END OF comm1.
TYPES:BEGIN OF comm2,
blart TYPE bkpf-blart,
END OF comm2.
DATA: BEGIN OF gt_result OCCURS 0,
c1 TYPE c."直接定義組件字段,但前面語句後面使用逗號
INCLUDE STRUCTURE comm1."直接將結構對象包括進來
INCLUDE TYPE comm2."直接將結構類型包括進來
DATA:comm LIKE comm1,"直接參照
c2 TYPE c. "直接定義組件字段,但前面語句後面使用逗號
DATA: END OF gt_result.
gt_result-bukrs = '111'.
gt_result-blart = '222'.
gt_result-comm-bukrs = '333'.
下面是類型的複用:
TYPES: BEGIN OF street_type,
name TYPE c LENGTH 40,
no TYPE c LENGTH 4,
END OF street_type.
DATA: BEGIN OF comm1 OCCURS 0,
bukrs TYPE bseg-bukrs,
END OF comm1.
TYPES: BEGIN OF address_type,
name1 TYPE c LENGTH 30."直接定義類型,但前面語句需使用逗號
TYPES:street TYPE street_type,"參照另一結構類型
c TYPE c."直接定義類型,但前面語句需使用逗號
INCLUDE STRUCTURE comm1.
INCLUDE TYPE street_type.
TYPES: END OF address_type.
*或者是這樣
*TYPES: BEGIN OF address_type,
* name1 TYPE c LENGTH 30,
* street TYPE street_type,
* c TYPE c.
* INCLUDE STRUCTURE comm1.
* INCLUDE TYPE street_type.
*TYPES: END OF address_type.
DATA: name TYPE address_type-street-name.
DATA: name2 TYPE address_type-name.
DATA: bukrs TYPE address_type-bukrs.