ABAP хөтөлбөрт тоглох

a1 АНГИЛАЛ ТОДОРХОЙЛОЛТ.
 НИЙТИЙН ХЭСЭГ.
 ӨГӨГДӨЛ: тоо1 ТӨРӨЛ i УТГА 100.
 АРГА: м1.
 Төгсгөлийн анги.
 a1 АНГИЛАЛ ХЭРЭГЖҮҮЛЭХ.
 АРГА М1.
 БИЧИХ: 'a1:',num1.
 ENDMETHOD.
 Төгсгөлийн анги.
 b1 АНГИЛАЛ a1-ээс өвлөгдөж буй ТОДОРХОЙЛОЛТ.
 НИЙТИЙН ХЭСЭГ.
 АРГА:м2, м1 ДАХИН ТОДОРХОЙЛОЛТ.
 Төгсгөлийн анги.
 b1 АНГИЛАЛ ХЭРЭГЖҮҮЛЭХ.
 АРГА М1.
 тоо1 = тоо1.
 БИЧИХ: 'b1:', тоо1.
 ENDMETHOD.
 АРГА М2.
 БИЧИХ: 'b2 ангид M1'.
 ENDMETHOD.
 Төгсгөлийн анги.
 СОНГОН ЭХЛЭХ.
 ӨГӨГДӨЛ: a REF TO a1.
 ӨГӨГДӨЛ: b REF TO b1.
 *өгөгдөл: c төрөл REF TO c1.
 ************************************************* ************** ОБЪЕКТ ҮҮСГЭХ b.
 a = b.  "Дуудлагын АРГА a->m1( ).
 *METHOD a->m2( ) гэж дуудна.  "Бид супер ангиллын ref-ийг ашиглан өөрийн дэд ангийн аргуудад хандах боломжгүй.
 ШИНЭ шугам.
 b ?= a.  " доош буулгах ДУУДЛАГЫН АРГА b->m1( ).
 ШИНЭ шугам.
 ДУУДАХ АРГА b->m2( ).
 ************************************************* *************** " алдаа null ref OBJECT үүсгэх a.
 b ?= a.  "доошоо цутгах нь METHOD b->m1( ).
 ************************************************* **************** ОБЪЕКТ ҮҮСГЭХ a.
 ОРОЛДОГЧ.
 b ?= a.  "Та 'NULL' объектын лавлагааны дамп CATCH cx_sy_move_cast_error ашиглахыг оролдсон.
 ДУУДАХ АРГА b->m1( ).
 ENDTRY.
 ************************************************* **************** ОБЪЕКТ ҮҮСГЭХ a.
 ОБЪЕКТ ҮҮСГЭХ b.
 ОРОЛДОГЧ.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 ДУУДАХ АРГА b->m1( ).
 АРГА b->m2( ) гэж дуудна.
 ENDTRY.
 АНГИЛАЛ lcl_shape ТОДОРХОЙЛОЛТ.
 НИЙТИЙН ХЭСЭГ.
 АРГАЧЛАЛ зурах.
 Төгсгөлийн анги.
 АНГИЛАЛ lcl_circle lcl_shape-аас ӨВЛӨХ ТОДОРХОЙЛОЛТ.
 НИЙТИЙН ХЭСЭГ.
 АРГА: ДАХИН ТОДОРХОЙЛОЛТ, calc_area зурах.
 Төгсгөлийн анги.
 АНГИЛАЛ lcl_shape ХЭРЭГЖИЛТ.
 АРГА зурах.
 БИЧИХ :/ 'Ямар ч дүрс зурах'.
 ENDMETHOD.
 Төгсгөлийн анги.
 lcl_circle АНГИЛАЛ ХЭРЭГЖҮҮЛЭХ.
 АРГА зурах.
 БИЧИХ :/ 'Тодорхой дүрс зурах: тойрог'.
 ENDMETHOD.
 METHOD calc_area.
 БИЧИХ :/ 'Area Of Crcle = 2iiR'.
 ENDMETHOD.
 Төгсгөлийн анги.
 СОНГОН ЭХЛЭХ.
 ӨГӨГДӨЛ : o_cir TYPE REF TO lcl_circle.
 ОБЪЕКТ ҮЗҮҮЛЭХ o_cir.
 ДУУДЛАГЫН АРГА o_cir->draw( ).  " дэд ангиллыг Draw() аргыг дууддаг CALL METHOD o_cir->calc_area( ).
 ULINE.
 "--------- Нарийн цутгамал(Upcast)---------------" ӨГӨГДӨЛ: o_shp TYPE REF TO lcl_shape.
 o_shp = o_cir.  " Нарийн cast(Upcast) ДУУДЛАГЫН АРГА o_shp->draw( ).  " дэд ангиллыг Draw() аргыг "дууддаг METHOD o_shp->calc_area( ) .  " эмхэтгэлийн алдаа ULINE.
 "---------- Өргөтгөх Cast(Downcast) -----------" ӨГӨГДӨЛ : o_cir1 TYPE REF TO lcl_circle.
 " o_cir1 = o_shp.  " эмхэтгэлийн алдаа o_cir1 ?= o_shp.  " Өргөтгөх Cast(Downcast) ДУУДЛЫН АРГА o_cir1->draw( ).  " дэд ангиллыг Draw() аргыг дууддаг CALL METHOD o_cir1->calc_area( ).
 a1 АНГИЛАЛ ТОДОРХОЙЛОЛТ.
 НИЙТИЙН ХЭСЭГ.
 ӨГӨГДӨЛ: тоо1 ТӨРӨЛ i УТГА 100.
 АРГА: м1.
 Төгсгөлийн анги.
 a1 АНГИЛАЛ ХЭРЭГЖҮҮЛЭХ.
 АРГА М1.
 БИЧИХ: 'a1:',num1.
 ENDMETHOD.
 Төгсгөлийн анги.
 b1 АНГИЛАЛ a1-ээс өвлөгдөж буй ТОДОРХОЙЛОЛТ.
 НИЙТИЙН ХЭСЭГ.
 АРГА:м2, м1 ДАХИН ТОДОРХОЙЛОЛТ.
 Төгсгөлийн анги.
 b1 АНГИЛАЛ ХЭРЭГЖҮҮЛЭХ.
 АРГА М1.
 тоо1 = тоо1.
 БИЧИХ: 'b1:', тоо1.
 ENDMETHOD.
 АРГА М2.
 БИЧИХ: 'b2 ангид M1'.
 ENDMETHOD.
 Төгсгөлийн анги.
 СОНГОН ЭХЛЭХ.
 ӨГӨГДӨЛ: эцэг эхийн TYPE REF TO a1.
 ӨГӨГДӨЛ: хүүхдийн TYPE REF TO b1.
 *өгөгдөл: c төрөл REF TO c1.
 ************************************************* ************** ОБЪЕКТ ҮҮСГЭЭРЭЙ хүүхэд.
 эцэг эх = хүүхэд.  "upcasting CALL METHOD parent->m1( ).
 Дуудлагын АРГА хүүхэд->m1( ).
 Дуудлагын АРГА хүүхэд->m2( ).
 *METHOD a->m2( ) гэж дуудна.  "Бид супер ангиллын ref-ийг ашиглан өөрийн дэд ангийн аргуудад хандах боломжгүй.
 ШИНЭ шугам.
 хүүхэд ?= эцэг эх.  " downcasting CALL METHOD child->m1( ).
 ШИНЭ шугам.
 Дуудлагын АРГА хүүхэд->m2( ).
 ************************************************* **************** *" алдаа null ref *OBJECT үүсгэх a.
 *b ?= a.  "down casting is give dump * дуудлагын METHOD b->m1( ).
 ************************************************* **************** * ОБЪЕКТ ҮҮСГЭХ a.
 ОРОЛДОГЧ.
 b ?= a.  "Та 'NULL' объектын лавлагааны дамп CATCH cx_sy_move_cast_error ашиглахыг оролдсон.
 ДУУДАХ АРГА b->m1( ).
 ENDTRY.
 ************************************************* **************** * ОБЪЕКТ ҮҮСГЭХ a.
 ОБЪЕКТ ҮҮСГЭХ b.
 ОРОЛДОГЧ.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 ДУУДАХ АРГА b->m1( ).
 АРГА b->m2( ) гэж дуудна.
 ENDTRY.
 ******** Өвөрмөц утгууд******************** ӨГӨГДӨЛ: lv_string TYPE мөр, lv_string2 TYPE мөр, lv_string_final TYPE мөр.
 ТӨРЛҮҮД: ӨГӨГДЛИЙН ЭХЛҮҮЛЭХ, баталгаажуулах TYPE c, ty_өгөгдлийн төгсгөл.
 ӨГӨГДӨЛ: ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TYPE TABLE ty_data, lt_user TYPE TABLE ty_data.
 lv_string = 'a,b,c,a'.
 lv_string2 = 'd,b,c,a'.
 ',' AT TABLE LT_user INTO lv_string-г SPLIT.
 lv_string2 AT ','-г TABLE LT_user2-д ХУВААРАЙ.
 LT_user2 ТАЛБАР-ТЭМБИЙГ ӨГӨХ ДАГТ( ).
 ОРУУЛАХ LT_user INTO TABLE.
 ENDLOOP.
 lt_хэрэглэгчийг баталгаажуулалтаар эрэмбэлэх.
 lt_user COMPARING auth-аас зэргэлдээх ХУВЬДЛАГЫГ УСТГАХ.
 IF sy-subrc = 0.
 LT_хэрэглэгчийн талбар-тэмдэгтийг ОНЦЛОХ АТГ LOOP ( ).
 ХЭРВЭЭ lv_string_final ЭХНИЙ БОЛОВСРОЛ.
 lv_string_final = -авт.
 ӨӨР.
 lv_string_final-ийг CONCATENATE -auth INTO lv_string_final ','-ээр тусгаарлагдсан.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

Сэтгэгдэл үлдээх

Энэ сайт нь спамыг багасгахын тулд Akismet-ийг ашигладаг. Таны өгөгдлийг хэрхэн боловсруулдаг талаар суралц.