[SAP ABAP開發技術總結]結構復用(INCLUDE)


 

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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM