Thursday, October 19, 2017

Tutorial Exception Handling SAP ABAP

exception-handling-dalam-abap

Exception adalah masalah yang timbul selama eksekusi sebuah program. Bila exception  terjadi, aliran normal program terganggu dan aplikasi program berakhir secara tidak normal, oleh karena itu exception harus segera ditangani dengan baik.

Exceptions menyediakan cara untuk mentransfer kontrol dari satu bagian program ke program lainnya. Dalam SAP ABAP exception handling dapat diselesaikan dengan 3 keyword, RAISE, TRY, CATCH dan CLEANUP. Dengan asumsi sebuah blok akan menimbulkan exception, sebuah metode menangkap exception menggunakan kombinasi kata kunci TRY dan CATCH. Blok TRY - CATCH ditempatkan di sekitar kode yang mungkin menghasilkan exception, Berikut adalah sintaks untuk menggunakan TRY - CATCH -
TRY.      
Try Block <Code that raises an exception> 
  
CATCH  
Catch Block <exception handler M>  
. . . 
. . . 
. . . 
CATCH  
Catch Block <exception handler R>
   
CLEANUP. 
   Cleanup block <to restore consistent state>
 
ENDTRY.
RAISE - Exception diajukan untuk menunjukkan bahwa beberapa situasi luar biasa telah terjadi. Biasanya, exception handler mencoba memperbaiki kesalahan atau mencari solusi alternatif.
TRY − TRY block berisi pengkodean aplikasi yang exceptionya akan ditangani. Statement block ini akan diproses secara berurutan. Dapat berisi struktur kontrol lebih lanjut dan panggilan prosedur atau program ABAP lainnya. Hal ini diikuti oleh satu atau lebih blok CATCH.
CATCH − program catches exception dengan  exception handler  di tempat dalam program di mana Anda ingin menangani masalah ini. Kata kunci CATCH menunjukkan penangkapan exception.
CLEANUP - Statement CLEANUP dijalankan saat pengecualian terjadi di blok TRY yang tidak tertangkap oleh penangan TRY - ENDTRY yang sama. Dalam klausa CLEANUP, sistem dapat mengembalikan objek ke keadaan yang konsisten atau melepaskan sumber daya eksternal. Artinya, pekerjaan pembersihan bisa dilakukan untuk konteks blok TRY.

Baca Juga: Tutorial Dasar SAP ABAP

Berikut adalah Attribute dari exception:
No Attribute & Description
1 Textid
Digunakan untuk mendefinisikan teks yang berbeda untuk exception dan juga mempengaruhi hasil dari get_text metode.
2 Previous
Atribut ini dapat menyimpan original exception yang memungkinkan Anda membangun chain of exceptions.
3 get_text
mengembalikan representasi tekstual sebagai string sesuai bahasa sistem exception
4 get_longtext
mengembalikan varian lama dari representasi tekstual pengecualian sebagai string.
5 get_source_position
Memberikan nama program dan nomor baris tercapai dimana exception berhasil di raised

Contoh
REPORT ZExceptionsDemo. 
PARAMETERS Num_1 TYPE I. 

DATA res_1 TYPE P DECIMALS 2. 
DATA orf_1 TYPE REF TO CX_ROOT. 
DATA txt_1 TYPE STRING. 

start-of-selection. 
Write: / 'Square Root and Division with:', Num_1. 
write: /. 

TRY. 
IF ABS( Num_1 ) > 150. 
RAISE EXCEPTION TYPE CX_DEMO_ABS_TOO_LARGE. 
ENDIF.
  
TRY. 
res_1 = SQRT( Num_1 ). 
Write: / 'Result of square root:', res_1. 
res_1 = 1 / Num_1. 

Write: / 'Result of division:', res_1. 
CATCH CX_SY_ZERODIVIDE INTO orf_1. 
txt_1 = orf_1?GET_TEXT( ). 
CLEANUP. 
CLEAR res_1. 
ENDTRY. 

CATCH CX_SY_ARITHMETIC_ERROR INTO orf_1. 
txt_1 = orf_1?GET_TEXT( ).

CATCH CX_ROOT INTO orf_1. 
txt_1 = orf_1?GET_TEXT( ). 
ENDTRY. 
IF NOT txt_1 IS INITIAL. 
Write / txt_1. 
ENDIF. 
Write: / 'Final Result is:', res_1.
Outputnya adalah:
Square Root and Division with: 160 
The absolute value of number is too high 
Final Result is:  0.00

Dalam contoh diatas, jika jumlahnya lebih besar dari 150, exception CX_DEMO_ABS_TOO_LARGE diraised.


EmoticonEmoticon