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]:向子程序中直接傳輸參數,該傳輸值在子程序中不改變。
       [For Example]
       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)]:向子程序傳輸表或參數,程序執行結果可通過該表或參數返回給供主程序。
       [For Example]
       DATA:num TYPE I VALUE 10.
       PERFORM add_value CHANGING num.
       WRITE:num.  "調用子程序,輸出值為20.

       FORM add_value CHANGING num.
         num = num + 10.
       ENDFORM.

       3)調用指定程序中的子程序
   
不同的ABAP程序中的子程序是可以共用的,通過ABAP語句PERFORM form IN PROGRAM prog能夠調用指定程序中的子程序,並執行子程序中包含的功能。
      [For Example]
      *例如一程序名: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.

 


     


    


免責聲明!

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



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