ការសម្ដែងនៅក្នុងកម្មវិធី ABAP

CLASS a1 និយមន័យ។
 ផ្នែកសាធារណៈ។
 ទិន្នន័យ៖ លេខ ១ ប្រភេទ និងតម្លៃ ១០០។
 វិធីសាស្រ្ត: ម 1 ។
 ENDCLASS។
 ថ្នាក់ A1 ការអនុវត្ត។
 វិធីសាស្រ្ត m1 ។
 សរសេរ៖ 'a1:', លេខ 1 ។
 វិធីសាស្រ្ត។
 ENDCLASS។
 CLASS b1 និយមន័យការទទួលមរតកពី a1 ។
 ផ្នែកសាធារណៈ។
 វិធីសាស្រ្ត៖ m2, m1 កំណត់ឡើងវិញ។
 ENDCLASS។
 ការអនុវត្តថ្នាក់ b1 ។
 វិធីសាស្រ្ត m1 ។
 លេខ ១ = លេខ ១ ។
 សរសេរ៖ 'b1:', លេខ 1 ។
 វិធីសាស្រ្ត។
 វិធីសាស្រ្ត m2 ។
 សរសេរ៖ 'M2 នៅក្នុងថ្នាក់ b1' ។
 វិធីសាស្រ្ត។
 ENDCLASS។
 ការចាប់ផ្តើមនៃការជ្រើសរើស។
 ទិន្នន័យ៖ ប្រភេទយោងទៅ a1 ។
 ទិន្នន័យ៖ b ប្រភេទ REF ទៅ b1 ។
 * ទិន្នន័យ៖ c ប្រភេទ REF TO c1 ។
 ***************************************************** ************** បង្កើតវត្ថុ ខ.
 a = ខ។  "ការ​លើក​ឡើង​វិធី​សា​ស្រ្ត​ការ​ហៅ a-> m1( ) ។
 * ហៅ METOD a->m2( )។  " យើងមិនអាចចូលប្រើវិធីសាស្រ្តថ្នាក់រងដោយខ្លួនឯងដោយប្រើ super class ref ។
 បន្ទាត់ថ្មី
 b ?= ក.  " ទម្លាក់វិធីសាស្ត្រហៅ b->m1( ) ។
 បន្ទាត់ថ្មី
 ហៅទូរសព្ទ b->m2( )។
 ***************************************************** *************** " error null ref បង្កើត OBJECT a.
 b ?= ក.  msgstr "ការ​ទម្លាក់​ចុះ​នៅ​តែ​ផ្តល់​ឱ្យ​នូវ​ការ​ហៅ​ទៅ​ចាក់​ចោល​របស់​វា 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 DEFINITION ។
 ផ្នែកសាធារណៈ។
 វិធីសាស្រ្តគូរ។
 ENDCLASS។
 CLASS lcl_circle និយមន័យការបន្តពី lcl_shape ។
 ផ្នែកសាធារណៈ។
 វិធីសាស្រ្ត៖ គូរ REDEFINITION, calc_area ។
 ENDCLASS។
 CLASS lcl_shape IMPLEMENTATION។
 វិធីសាស្រ្តគូរ។
 សរសេរ :/ 'គូររូបណាមួយ' ។
 វិធីសាស្រ្ត។
 ENDCLASS។
 CLASS lcl_circle IMPLEMENTATION
 វិធីសាស្រ្តគូរ។
 សរសេរ :/ 'គូររូបរាងជាក់លាក់៖ រង្វង់'។
 វិធីសាស្រ្ត។
 វិធីសាស្រ្ត calc_area ។
 សរសេរ :/ 'តំបន់នៃ Crcle = 2iiR' ។
 វិធីសាស្រ្ត។
 ENDCLASS។
 ការចាប់ផ្តើមនៃការជ្រើសរើស។
 ទិន្នន័យ៖ o_cir ប្រភេទ REF ទៅ 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 ។  " បង្រួម cast(Upcast) CALL METHOD o_shp->draw( ) ។  " calls sub class Draw() method "call METHOD o_shp->calc_area() .  " កំហុសក្នុងការចងក្រង ULINE ។
 "---------- ការពង្រីកការខាស (ការបន្ទាបខ្លួន) -----------" ទិន្នន័យ៖ o_cir1 ប្រភេទ REF ទៅ lcl_circle ។
 " o_cir1 = o_shp ។  " កំហុសក្នុងការបំពេញ o_cir1 ?= o_shp ។  " ពង្រីកការខាស(ទម្លាក់) ហៅវិធីសាស្ត្រ o_cir1->draw( ).  " ហៅវិធីសាស្ត្ររង Draw() CALL METHOD o_cir1->calc_area() ។
 CLASS a1 និយមន័យ។
 ផ្នែកសាធារណៈ។
 ទិន្នន័យ៖ លេខ ១ ប្រភេទ និងតម្លៃ ១០០។
 វិធីសាស្រ្ត: ម 1 ។
 ENDCLASS។
 ថ្នាក់ A1 ការអនុវត្ត។
 វិធីសាស្រ្ត m1 ។
 សរសេរ៖ 'a1:', លេខ 1 ។
 វិធីសាស្រ្ត។
 ENDCLASS។
 CLASS b1 និយមន័យការទទួលមរតកពី a1 ។
 ផ្នែកសាធារណៈ។
 វិធីសាស្រ្ត៖ m2, m1 កំណត់ឡើងវិញ។
 ENDCLASS។
 ការអនុវត្តថ្នាក់ b1 ។
 វិធីសាស្រ្ត m1 ។
 លេខ ១ = លេខ ១ ។
 សរសេរ៖ 'b1:', លេខ 1 ។
 វិធីសាស្រ្ត។
 វិធីសាស្រ្ត m2 ។
 សរសេរ៖ 'M2 នៅក្នុងថ្នាក់ b1' ។
 វិធីសាស្រ្ត។
 ENDCLASS។
 ការចាប់ផ្តើមនៃការជ្រើសរើស។
 ទិន្នន័យ៖ ប្រភេទមេ REF TO a1.
 ទិន្នន័យ៖ ប្រភេទកូន REF ទៅ b1។
 * ទិន្នន័យ៖ c ប្រភេទ REF TO c1 ។
 ***************************************************** ************** បង្កើតកូនវត្ថុ។
 ឪពុកម្តាយ = កូន។  "ការបញ្ជូនបន្តការហៅទៅមេ -> m1( ) ។
 វិធីសាស្ត្រហៅទូរសព្ទ child->m1( )។
 វិធីសាស្ត្រហៅទូរសព្ទ child->m2( )។
 * ហៅ METOD a->m2( )។  " យើងមិនអាចចូលប្រើវិធីសាស្រ្តថ្នាក់រងដោយខ្លួនឯងដោយប្រើ super class ref ។
 បន្ទាត់ថ្មី
 កូន?= ឪពុកម្តាយ។  " ទម្លាក់​វិធី​ហៅ​ទូរសព្ទ​កូន-> m1()។
 បន្ទាត់ថ្មី
 វិធីសាស្ត្រហៅទូរសព្ទ child->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( )។
 បញ្ចប់។
 ****** តម្លៃពិសេស******************** ទិន្នន័យ៖ lv_string TYPE string, lv_string2 TYPE string, lv_string_final TYPE string។
 ប្រភេទ៖ BEGIN នៃ ty_data, auth TYPE c, END នៃ ty_data។
 ទិន្នន័យ៖ ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TYPE TABLE OF ty_data, lt_user TYPE TABLE OF ty_data។
 lv_string = 'a,b,c,a'។
 lv_string2 = 'd,b,c,a'។
 SPLIT lv_string AT ',' INTO TABLE lt_user ។
 SPLIT lv_string2 AT ',' INTO TABLE lt_user2.
 LOOP AT lt_user2 ASSIGNING FIELD-SYMBOL( )
 បញ្ចូល ចូលទៅក្នុងតារាង lt_user ។
 ENDLOOP
 SORT lt_user BY auth.
 លុបលេខស្ទួននៅជាប់ពី lt_user ប្រៀបធៀបភាពត្រឹមត្រូវ។
 IF sy-subrc = 0 ។
 LOOP AT lt_user ASSIGNING FIELD-SYMBOL( )
 ប្រសិនបើ lv_string_final IS INITIAL។
 lv_string_final = - ភាពត្រឹមត្រូវ។
 ELSE
 CONCATENATE lv_string_final -auth INTO lv_string_final បំបែកដោយ ',' ។
 ENDIF
 ENDLOOP
 ENDIF

 

ទុកឱ្យសេចក្តីអធិប្បាយ

តំបន់បណ្ដាញនេះប្រើ Akismet ដើម្បីកាត់បន្ថយសារឥតបានការ។ សិក្សាអំពីរបៀបដែលទិន្នន័យរបស់អ្នកត្រូវបានដំណើរការ.