1. 程式人生 > >執行時動態呼叫子程式的例子

執行時動態呼叫子程式的例子

程式碼比較簡單,就沒有寫註釋。
處理邏輯就是要求使用者輸入一個子程式名,然後動態呼叫,並且用異常機制處理輸入的子程式不存在的情況。
當然,如果在 PERFORM 最後用 IF FOUND 就可以不用 TRY 結構了,但是對於子程式不存在的情況不會給出任何提示,用 sy-subrc 也追蹤不到異常返回碼。
關於更多異常,請參考 PERFORM 的 F1 聯機幫助。

*&---------------------------------------------------------------------*
*& Report  ZQS2
*&
*&---------------------------------------------------------------------*

*&
*&
*&---------------------------------------------------------------------*

REPORT  zqs2.

PARAMETERS p_sub(
40) TYPE c.

DATA fssub(
40) TYPE c.
fssub 
= p_sub.

TRY.
    PERFORM (fssub) IN PROGRAM zqs2. " IF FOUND.
  CATCH cx_sy_dyn_call_illegal_form.
    WRITE: 'The routine', p_sub COLOR 3, 'is not exist!'.
ENDTRY.
*&---------------------------------------------------------------------*
*&      Form  sub_a
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_a.
  WRITE: 
'Congratulation! I am routine SUB_A!
'.
ENDFORM.                    
"sub_a

*&---------------------------------------------------------------------*
*&      Form  sub_b
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_b.
  WRITE: 
'Congratulation! I am routine sub_b.'.
ENDFORM.                    
"sub_b