ABAP အစီအစဉ်တွင် ပါဝင်သရုပ်ဆောင်ခြင်း။

CLASS a1 အဓိပ္ပါယ်ဖွင့်ဆိုချက်။
 အများပိုင်ကဏ္ဍ။
 ဒေတာ- နံပါတ် ၁ အမျိုးအစား i VALUE 1။
 နည်းလမ်းများ-m1။
 ENDCLASS
 CLASS a1 အကောင်အထည်ဖော်မှု။
 နည်းလမ်း m1။
 'a1:'၊num1 ရေးပါ။
 နည်းလမ်း။
 ENDCLASS
 CLASS b1 အဓိပ္ပါယ်ဖွင့်ဆိုချက် a1 မှ အမွေဆက်ခံခြင်း။
 အများပိုင်ကဏ္ဍ။
 နည်းလမ်းများ-m2၊ m1 ပြန်လည်ဖော်ပြချက်။
 ENDCLASS
 CLASS b1 အကောင်အထည်ဖော်မှု။
 နည်းလမ်း m1။
 နံပါတ် ၁ = နံပါတ် ၁။
 'b1:'၊num1 ရေးပါ။
 နည်းလမ်း။
 နည်းလမ်း m2။
 WRITE- 'M2 in class b1'။
 နည်းလမ်း။
 ENDCLASS
 စတင်ရွေးချယ်မှု။
 ဒေတာ- အမျိုးအစား A1 သို့ ရည်ညွှန်းသည်။
 ဒေတာ- b အမျိုးအစား REF မှ b1။
 *data: c REF TO c1 ကိုရိုက်ထည့်ပါ။
 ************************************************** ************** အရာဝတ္ထု ဖန်တီးပါ ခ။
 a=ခ။  "ခေါ်ဆိုမှုနည်းလမ်း a->m1( )
 *METHOD a->m2() ကို ခေါ်ပါ။  " super class ref ကိုသုံးပြီး ကိုယ်ပိုင် sub class နည်းလမ်းတွေကို မသုံးစွဲနိုင်ပါဘူး။
 လိုင်းအသစ်။
 b ?= က။  " CALL Method b->m1( ) ကို ချလိုက်ပါ။
 လိုင်းအသစ်။
 ခေါ်ဆိုမှုနည်းလမ်း b->m2( )။
 ************************************************** *************** " error null ref create OBJECT a.
 b ?= က။  "ချတ်ချလိုက်တုန်းပဲ အမှိုက်ပုံကြီးလို့ ခေါ်တဲ့ METHOD b->m1()။
 ************************************************** *************** အရာဝတ္ထုတစ်ခုကို ဖန်တီးပါ။
 ကြိုးစားပါ။
 b ?= က။  "သင်သည် 'NULL' အရာဝတ္တုကိုးကားချက်အမှိုက်ပုံ CATCH cx_sy_move_cast_error ကိုအသုံးပြုရန် ကြိုးစားခဲ့သည်။
 ခေါ်ဆိုမှုနည်းလမ်း b->m1( )။
 အဆုံးထိ
 ************************************************** *************** အရာဝတ္ထုတစ်ခုကို ဖန်တီးပါ။
 အရာဝတ္ထုဖန်တီးပါ ခ။
 ကြိုးစားပါ။
 b ?= က။
 CATCH cx_sy_move_cast_error
 ခေါ်ဆိုမှုနည်းလမ်း b->m1( )။
 METHOD b->m2( ) ကိုခေါ်ဆိုပါ။
 အဆုံးထိ
 CLASS lcl_shape အဓိပ္ပါယ်ဖွင့်ဆိုချက်။
 အများပိုင်ကဏ္ဍ။
 ပုံဆွဲနည်းများ။
 ENDCLASS
 CLASS lcl_circle အဓိပ္ပါယ်ဖွင့်ဆိုချက် lcl_shape မှ အမွေဆက်ခံခြင်း။
 အများပိုင်ကဏ္ဍ။
 နည်းလမ်းများ- REDEFINITION၊ calc_area ကိုဆွဲပါ။
 ENDCLASS
 CLASS lcl_shape အကောင်အထည်ဖော်မှု။
 ဆွဲနည်း။
 WRITE :/ 'မည်သည့်ပုံသဏ္ဍာန်ကိုမဆို ရေးဆွဲခြင်း'။
 နည်းလမ်း။
 ENDCLASS
 CLASS lcl_circle အကောင်အထည်ဖော်မှု။
 ဆွဲနည်း။
 ရေးပါ :/ 'ပုံသဏ္ဍာန် အတိအကျ ရေးဆွဲခြင်း- စက်ဝိုင်း'။
 နည်းလမ်း။
 နည်းလမ်း calc_area။
 ရေးပါ :/ 'Crcle ဧရိယာ = 2iiR'။
 နည်းလမ်း။
 ENDCLASS
 စတင်ရွေးချယ်မှု။
 အချက်အလက် : o_cir အမျိုးအစား REF TO lcl_circle
 အရာဝတ္ထုကို ဖန်တီးပါ o_cir။
 နည်းလမ်း o_cir->draw( ) ကိုခေါ်ဆိုပါ။  " အတန်းခွဲခွဲ Draw() နည်းလမ်းကို CALL METHOD o_cir->calc_area( ) ဟုခေါ်သည်။
 ULINE။
 "--------- Narrow cast(Upcast)---------------" DATA : o_shp အမျိုးအစား REF TO lcl_shape။
 o_shp = o_cir။  " ကျဉ်းမြောင်းသော ကာစ်(Upcast) ခေါ်ဆိုမှုနည်းလမ်း o_shp->draw( )။  " calls sub class Draw() method" call METHOD o_shp->calc_area( ) .  " စုစည်းမှု ULINE အမှား။
 "---------- ချဲ့ထွင်ကာစ်(ဒေါင်းလုပ်) -----------" DATA : o_cir1 အမျိုးအစား REF TO lcl_circle။
 " o_cir1 = o_shp။  " ပေါင်းစပ်မှုအမှား o_cir1 ?= o_shp။  " ချဲ့ထွင်ထားသော Cast(Downcast) ခေါ်ဆိုမှုနည်းလမ်း o_cir1->draw( )။  " အတန်းခွဲခွဲ Draw() နည်းလမ်းကို ခေါ်ဆိုခြင်း METHOD o_cir1->calc_area( ) .
 CLASS a1 အဓိပ္ပါယ်ဖွင့်ဆိုချက်။
 အများပိုင်ကဏ္ဍ။
 ဒေတာ- နံပါတ် ၁ အမျိုးအစား i VALUE 1။
 နည်းလမ်းများ-m1။
 ENDCLASS
 CLASS a1 အကောင်အထည်ဖော်မှု။
 နည်းလမ်း m1။
 'a1:'၊num1 ရေးပါ။
 နည်းလမ်း။
 ENDCLASS
 CLASS b1 အဓိပ္ပါယ်ဖွင့်ဆိုချက် a1 မှ အမွေဆက်ခံခြင်း။
 အများပိုင်ကဏ္ဍ။
 နည်းလမ်းများ-m2၊ m1 ပြန်လည်ဖော်ပြချက်။
 ENDCLASS
 CLASS b1 အကောင်အထည်ဖော်မှု။
 နည်းလမ်း m1။
 နံပါတ် ၁ = နံပါတ် ၁။
 'b1:'၊num1 ရေးပါ။
 နည်းလမ်း။
 နည်းလမ်း m2။
 WRITE- 'M2 in class b1'။
 နည်းလမ်း။
 ENDCLASS
 စတင်ရွေးချယ်မှု။
 အချက်အလက်- မိဘအမျိုးအစား REF မှ a1။
 ဒေတာ- ကလေးအမျိုးအစား REF မှ b1။
 *data: c REF TO c1 ကိုရိုက်ထည့်ပါ။
 ************************************************** ************** အရာဝတ္ထုကလေးကို ဖန်တီးပါ။
 မိဘ = ကလေး။  "ခေါ်ဆိုမှုနည်းလမ်း parent->m1( )
 ခေါ်ဆိုနည်း ကလေး->m1()။
 ခေါ်ဆိုနည်း ကလေး->m2()။
 *METHOD a->m2() ကို ခေါ်ပါ။  " super class ref ကိုသုံးပြီး ကိုယ်ပိုင် sub class နည်းလမ်းတွေကို မသုံးစွဲနိုင်ပါဘူး။
 လိုင်းအသစ်။
 ကလေး ?= မိဘ။  "CALL METHOD ကလေး->m1() ကို ချလိုက်ပါ။
 လိုင်းအသစ်။
 ခေါ်ဆိုနည်း ကလေး->m2()။
 ************************************************** **************** *" error null ref *create OBJECT a.
 *b ?=က။  "ချလိုက်တုန်းပဲ အမှိုက်ပုံကြီး ချလိုက်ပါ *call METHOD b->m1()။
 ************************************************** **************** * အရာဝတ္ထုတစ်ခုကို ဖန်တီးပါ။
 ကြိုးစားပါ။
 b ?= က။  "သင်သည် 'NULL' အရာဝတ္တုကိုးကားချက်အမှိုက်ပုံ CATCH cx_sy_move_cast_error ကိုအသုံးပြုရန် ကြိုးစားခဲ့သည်။
 ခေါ်ဆိုမှုနည်းလမ်း b->m1( )။
 အဆုံးထိ
 ************************************************** **************** * အရာဝတ္ထုတစ်ခုကို ဖန်တီးပါ။
 အရာဝတ္ထုဖန်တီးပါ ခ။
 ကြိုးစားပါ။
 b ?= က။
 CATCH cx_sy_move_cast_error
 ခေါ်ဆိုမှုနည်းလမ်း b->m1( )။
 METHOD b->m2( ) ကိုခေါ်ဆိုပါ။
 အဆုံးထိ
 ****** သီးသန့်တန်ဖိုးများ******************** DATA : lv_string TYPE string၊ lv_string2 TYPE string၊ lv_string_final TYPE string။
 အမျိုးအစားများ- ty_data ၏ BEGIN၊ auth အမျိုးအစား c၊ ty_data ၏ END။
 အချက်အလက်- ls_user အမျိုးအစား ty_data၊ ls_user2 အမျိုးအစား ty_data၊ lt_user2 အမျိုးအစား ty_data ဇယား၊ lt_user အမျိုးအစား ty_data ဇယား။
 lv_string = 'a,b,c,a'။
 lv_string2 = 'd,b,c,a'။
 SPLIT lv_string AT ',' ဇယား lt_user သို့။
 SPLIT lv_string2 AT ',' ဇယားထဲသို့ lt_user2။
 LT_user2 တွင် LOOP AT SIGNING FIELD-SYMBOL( )
 ထည့်သွင်းပါ။ Table ထဲသို့ lt_user။
 ENDLOOP
 auth ဖြင့် LT_user ကို စီပါ။
 စစ်မှန်ကြောင်း နှိုင်းယှဉ်ခြင်း lt_user မှ ကပ်လျက် မိတ္တူပွားများကို ဖျက်ပါ။
 IF sy-subrc = 0 ။
 LT_user ASSIGNING FIELD-SYMBOL( )
 အကယ်၍ lv_string_final သည် မူလဖြစ်သည်။
 lv_string_final = -auth။
 မဟုတ်လို့လား။
 Lv_string_final ကို ညှိနှိုင်းပါ။ -auth INTO lv_string_final ',' ဖြင့် ခွဲထားသည်။
 ENDIF
 ENDLOOP
 ENDIF

 

မှတ်ချက် Leave

ဤ site ကိုစပမ်လျှော့ချဖို့ Akismet ကိုအသုံးပြုသည်။ သင့်ရဲ့ comment ကိုဒေတာများကိုဆောင်ရွက်ပြီးဖြစ်ပါတယ်လေ့လာ.