天天看點

ABAP開發基礎知識:11)子程式的建立與調用

      ABAP子程式(Subrouting)是包含在程式中的一段具有一定功能的代碼,能夠将某個功能作為一個小程式包含在主程式中,以友善程式分析及閱讀。特别是一此程式中多次用到的功能,可以簡化代碼,增加程式的可讀性且便于維護。

      1.子程式的定義

       通過FORM...ENDFORM語名可以實作子程式的定義,通過PERFORM語句來實作子程式的調用。

       [For Example]

      PERFORM welcome. "調用子程式

      FORM welcome.      "定義子程式

         WRITE / 'subrouting'.

      ENDFORM.

      2.子程式接口參數的定義及使用

      子程式實作了将某段功能的封裝處理,那麼子程式怎樣實作與ABAP程式中其它變量的數值的交換呢?可以通過定義子程式接口來實作,該方法共包括3種模式。

      1)FORM TABLES itab2...itabn:以表的方式傳輸資料。

      [For Example]

      DATA:BEGIN OF staff OCCURS 0,

         name(10) TYPE C,

      END OF staff.

      staff-name = 'jack'.

      APPEND staff.  "對内表指派

      PERFORM u TABLES staff. "輸出jack.

      FORM u TABLES x STRUCTURE staff.

        WRITE:/ x-name.

      ENDFORM

       2)FORM TABLES USING [VALUE(p1)...pn]:向子程式中直接傳輸參數,該傳輸值在子程式中不改變。

       DATA:str1(10) TYPE C,

               str2(10) TYPE C.

       str1 = 'Hello'.

       str2 = 'SAP'.

       PERFORM CON_STR USING str1 str2.

       FORM CON_STR USING s1 s2.

         DATA:str_all(20) TYPE C.

         CONCATENATE s1 s2 INTO str_all.

         WRITE:/ str_all.

       ENDFORM.

       3)FORM CHANGING [value(p1...pn)]:向子程式傳輸表或參數,程式執行結果可通過該表或參數傳回給供主程式。

       DATA:num TYPE I VALUE 10.

       PERFORM add_value CHANGING num.

       WRITE:num.  "調用子程式,輸出值為20.

       FORM add_value CHANGING num.

         num = num + 10.

       3)調用指定程式中的子程式

    不同的ABAP程式中的子程式是可以共用的,通過ABAP語句PERFORM form IN PROGRAM prog能夠調用指定程式中的子程式,并執行子程式中包含的功能。

      *例如一程式名:ZTEST,它包含一個子程式ADD_VALUE與上例結構一緻

      DATA:num2 TYPE I VALUE 10.

      PERFORM ADD_VALUE CHANGING num2 IN PROGRAM ZTEST.

      WRITE:num2."調用子程式加10,輸出值為20.

      4)通過TCode調用指定程式中的子程式

      在SAP業務中,通常會将程式與TCode綁定以友善記憶。同樣,在ABAP中可以通過語句CALL來實作對某TCode中相對應的子程式的調用,相關文法請參考以下代碼:CALL TRANSACTION TCode。

     [For Example]

     CALL TRANSACTION 'ICON' and skip first screen.  "調用TCODE:ICON并展開初始界面。

      5)使用SUBMIT方法調用另一個程式

      在ABAP中可以直接調用具體程式來實作該程式的所有功能。使用語句SUBMIT可以直接通過程式名來調用該程式,并提供程式執行中所需要輸入的字段及參數,其文法及屬性如下:

     [Syntax]

     SUBMIT <程式名>.

     ...USING SELECTION-SCREEN <SCR>.   "調用子螢幕

     ...IVA  SELECTION-SCREEN.       "顯示所調用程式的初始螢幕

     ...AND RETURN.    "調用指定程式執行後可傳回上一螢幕

     調用某一程式文法如:

     SUBMIT ZTEST.

       VIA SELECTION-SCREEN

       USING SELECTION-SCREEN 1000

       AND RETURN.