Ülekandmine ABAP-programmis

KLASS a1 MÄÄRATLUS.
 AVALIK OSA.
 ANDMED: num1 TÜÜP i VÄÄRTUS 100.
 MEETODID:m1.
 LÕPUKLASS.
 KLASS a1 RAKENDAMINE.
 MEETOD m1.
 KIRJUTAGE: 'a1:',num1.
 LÕPPMEETOD.
 LÕPUKLASS.
 KLASS b1 MÕISTE PÄRIMINE A1-LT.
 AVALIK OSA.
 MEETODID:m2, m1 ÜMBERdefinitsioon.
 LÕPUKLASS.
 KLASS b1 RAKENDAMINE.
 MEETOD m1.
 arv1 = arv1.
 KIRJUTAGE: 'b1:',num1.
 LÕPPMEETOD.
 MEETOD m2.
 KIRJUTAGE: "M2 klassis b1".
 LÕPPMEETOD.
 LÕPUKLASS.
 VALIKU ALGUS.
 ANDMED: a TÜÜBI VIIDE a1.
 ANDMED: b TÜÜP VIIDE B1.
 *andmed: c tüüp REF TO c1.
 ****************************************************** ************** LOO OBJEKT b.
 a = b.  "CALL METHOD a->m1( ) üleslaadimine.
 *helista MEETOD a->m2( ).  "Me ei pääse juurde oma alamklassi meetoditele, kasutades superklassi ref.
 UUS RIDA.
 b ?= a.  " alla casting CALL METHOD b->m1( ).
 UUS RIDA.
 HELISTAMISMEETOD b->m2( ).
 ****************************************************** *************** " viga null ref luua OBJEKT a.
 b ?= a.  "allavalamine ikka selle andes dump call METHOD b->m1( ).
 ****************************************************** *************** OBJEKTI LOOMI a.
 PROOVI.
 b ?= a.  proovisite kasutada objekti viitetõmmist "NULL" CATCH cx_sy_move_cast_error.
 HELISTAMISMEETOD b->m1( ).
 LÕPP.
 ****************************************************** *************** OBJEKTI LOOMI a.
 LOO OBJEKT b.
 PROOVI.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 HELISTAMISMEETOD b->m1( ).
 helistada MEETOD b->m2( ).
 LÕPP.
 KLASS lcl_shape DEFINITSIOON.
 AVALIK OSA.
 MEETODID joonistada.
 LÕPUKLASS.
 KLASS lcl_circle DEFINITSIOON PÄRIB lcl_kujult.
 AVALIK OSA.
 MEETODID: joonesta REDEFINITION, arvutuspindala.
 LÕPUKLASS.
 KLASS lcl_shape RAKENDAMINE.
 MEETOD joonistada.
 KIRJUTA :/ 'Suvalise kujundi joonistamine'.
 LÕPPMEETOD.
 LÕPUKLASS.
 KLASS lcl_circle RAKENDAMINE.
 MEETOD joonistada.
 KIRJUTA :/ 'Konkreetse kujundi joonistamine: ring'.
 LÕPPMEETOD.
 MEETOD arvutatud_pindala.
 KIRJUTA :/ 'Krcle'i pindala = 2iiR'.
 LÕPPMEETOD.
 LÕPUKLASS.
 VALIKU ALGUS.
 ANDMED: o_cir TÜÜP REF lcl_circle.
 LOO OBJEKT o_cir.
 KUTSEMEETOD o_cir->draw( ).  " kutsub alamklassi Draw() meetodit CALL METHOD o_cir->calc_area( ).
 ULINE.
 "--------- Kitsas cast (ülesaade)---------------" ANDMED : o_shp TÜÜP VIIDE lcl_shape.
 o_shp = o_cir.  " Kitsas cast(Upcast) CALL METHOD o_shp->draw( ).  " kutsub alamklassi Draw() meetodit "kutsuma METHOD o_shp->calc_area( ) .  " kompileerimisviga ULINE.
 "---------- Ülekande laiendamine (allalaadimine) -----------" ANDMED : o_cir1 TÜÜP VIIDE lcl_ringile.
 " o_cir1 = o_shp.  " kompileerimisviga o_cir1 ?= o_shp.  " Cast(Downcast) CALL METHOD o_cir1->draw( ) laiendamine.  " kutsub alamklassi Draw() meetodit CALL METHOD o_cir1->calc_area( ).
 KLASS a1 MÄÄRATLUS.
 AVALIK OSA.
 ANDMED: num1 TÜÜP i VÄÄRTUS 100.
 MEETODID:m1.
 LÕPUKLASS.
 KLASS a1 RAKENDAMINE.
 MEETOD m1.
 KIRJUTAGE: 'a1:',num1.
 LÕPPMEETOD.
 LÕPUKLASS.
 KLASS b1 MÕISTE PÄRIMINE A1-LT.
 AVALIK OSA.
 MEETODID:m2, m1 ÜMBERdefinitsioon.
 LÕPUKLASS.
 KLASS b1 RAKENDAMINE.
 MEETOD m1.
 arv1 = arv1.
 KIRJUTAGE: 'b1:',num1.
 LÕPPMEETOD.
 MEETOD m2.
 KIRJUTAGE: "M2 klassis b1".
 LÕPPMEETOD.
 LÕPUKLASS.
 VALIKU ALGUS.
 ANDMED: vanem TÜÜP VIIDE a1.
 ANDMED: laps TÜÜP VIIDE B1.
 *andmed: c tüüp REF TO c1.
 ****************************************************** ************** LOO OBJEKTI laps.
 vanem = laps.  "CALL METHOD üleslaadimine vanemate-> m1( ).
 HELISTAMISMEETOD laps->m1( ).
 HELISTAMISMEETOD laps->m2( ).
 *helista MEETOD a->m2( ).  "Me ei pääse juurde oma alamklassi meetoditele, kasutades superklassi ref.
 UUS RIDA.
 laps ?= vanem.  " alla casting HELISTAMISMEETOD laps->m1( ).
 UUS RIDA.
 HELISTAMISMEETOD laps->m2( ).
 ****************************************************** **************** *" viga null ref *loo OBJEKT a.
 *b ?= a.  "down casting still its anding dump *helista MEETOD b->m1( ).
 ****************************************************** **************** * LOO OBJEKT a.
 PROOVI.
 b ?= a.  proovisite kasutada objekti viitetõmmist "NULL" CATCH cx_sy_move_cast_error.
 HELISTAMISMEETOD b->m1( ).
 LÕPP.
 ****************************************************** **************** * LOO OBJEKT a.
 LOO OBJEKT b.
 PROOVI.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 HELISTAMISMEETOD b->m1( ).
 helistada MEETOD b->m2( ).
 LÕPP.
 ******* Unikaalsed väärtused******************* ANDMED: string lv_string TYPE string, lv_string2 TYPE string, lv_string_final TYPE string.
 TÜÜBID: TY_data ALGUS, TYPE c autentimine, ty_data LÕPP.
 ANDMED: ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TÜÜP TY_DAta, lt_user TÜÜP TABLE OF ty_data.
 lv_string = 'a,b,c,a'.
 lv_string2 = 'd,b,c,a'.
 JAGATA lv_string AT ',' TABLEKS lt_kasutaja.
 JAGATA lv_string2 AT ',' TABELISSE lt_user2.
 LOOP AT lt_user2 ASSIGNING FIELD-SYMBOL( ).
 LISA TABLE lt_user.
 ENDLOOP.
 SORTEERI lt_kasutaja auth.
 KUSTUTA KÕRVALDAVAD DUPLIKAADID LT_USER VÕRDLEMINE auth.
 KUI sy-subrc = 0.
 LOOP AT lt_user ASSIGNING FIELD-SYMBOL( ).
 KUI lv_string_final ON ALGNE.
 lv_string_final = -auth.
 MUUD.
 CONCATENATE lv_string_final -auth INTO lv_string_final ERALDATAB ','.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

Kommenteeri

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.