一种是rase <exceptions>
FUNCTION ztest. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(NOB) TYPE I OPTIONAL *" EXPORTING *" VALUE(NAME) TYPE CHAR10 *" EXCEPTIONS *" DEV_ZERO *"---------------------------------------------------------------------- IF nob <> 0. name = '张三'. ELSE. RAISE dev_zero . ENDIF. ENDFUNCTION.
程序中调用:在程序里自己处理异常
REPORT ZTEST_FC. DATA : lv TYPE i, lc TYPE char10. lv = 0. CALL FUNCTION 'ZTEST' EXPORTING NOB = LV IMPORTING NAME = LC EXCEPTIONS DEV_ZERO = 1 OTHERS = 2 . IF sy-subrc = 1. MESSAGE '我在处理异常DEV_ZERO' TYPE 'E'. ENDIF.
另一种是不需要在程序中处理,自己要在函数中写好处理异常。message type rasing <exceptions>
FUNCTION ztest. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(NOB) TYPE I OPTIONAL *" EXPORTING *" VALUE(NAME) TYPE CHAR10 *" EXCEPTIONS *" DEV_ZERO *"---------------------------------------------------------------------- IF nob <> 0. name = '张三'. ELSE. MESSAGE '处理异常' TYPE 'E' RAISING dev_zero . ENDIF. ENDFUNCTION.
REPORT ZTEST_FC. DATA : lv TYPE i, lc TYPE char10. lv = 0. CALL FUNCTION 'ZTEST' EXPORTING NOB = LV IMPORTING NAME = LC EXCEPTIONS DEV_ZERO = 1 OTHERS = 2 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO "函数ZTEST 里面的处理消息 赋在SY-MSGID SY-MSGTY SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.