קאַסטינג אין ABAP פּראָגראַם

קלאַס אַ1 דעפֿיניציע.
 פובליק אָפּטיילונג.
 דאַטן: נומער 1 טיפּ און ווערט 100.
 מעטהאָדס: מ1.
 ENDCLASS.
 קלאַס אַ1 ימפּלאַמענטיישאַן.
 מעטאָד m1.
 שרייַבן: 'אַ1:', נומער1.
 ENDMETHOD.
 ENDCLASS.
 קלאַס ב1 דעפֿיניציע ירושה פֿון אַ1.
 פובליק אָפּטיילונג.
 מעטהאָדס: מ 2, מ 1 רידיפינישאַן.
 ENDCLASS.
 קלאַס ב1 ימפּלאַמענטיישאַן.
 מעטאָד m1.
 נומער1 = נומער1.
 שרייַבן: 'ב1:', נומער 1.
 ENDMETHOD.
 מעטאָד m2.
 שרייב: 'M2 אין קלאַס ב1'.
 ENDMETHOD.
 ENDCLASS.
 אָנהייב-פון-סעלעקציע.
 דאַטן: אַ טיפּ REF צו אַ1.
 דאַטן: b טיפּ REF צו b1.
 * דאַטן: c טיפּ REF TO c1.
 ********************************************* ************** CREATE OBJECT ב.
 אַ = ב.  "אַפּקאַסטינג רופן מעטאָד אַ->מ1().
 *רופן מעטאָד אַ->מ2().  "מיר קענען נישט אַקסעס די אייגענע סאַב קלאַס מעטהאָדס ניצן סופּער קלאַס רעף.
 נייַ-ליניע.
 b ?= אַ.  "אַראָפּ קאַסטינג רופן מעטאָד b->מ1().
 נייַ-ליניע.
 רופן מעטאָד ב->מ2().
 ********************************************* *************** "טעות נול רעף שאַפֿן OBJECT אַ.
 b ?= אַ.  "אַראָפּ קאַסטינג נאָך זיין געבן דאַמפּ רופן METHOD b->m1().
 ********************************************* *************** CREATE OBJECT אַ.
 פּרוּווט.
 b ?= אַ.  איר האָט געפרוווט צו נוצן אַ 'NULL' אָבדזשעקט רעפֿערענץ דאַמפּ CATCH cx_sy_move_cast_error.
 רופן מעטאָד ב->מ1().
 ENDTRY.
 ********************************************* *************** CREATE OBJECT אַ.
 CREATE OBJECT ב.
 פּרוּווט.
 b ?= אַ.
 CATCH cx_sy_move_cast_error.
 רופן מעטאָד ב->מ1().
 רופן METHOD b->מ2().
 ENDTRY.
 CLASS lcl_shape דעפֿיניציע.
 פובליק אָפּטיילונג.
 מעטהאָדס ציען.
 ENDCLASS.
 CLASS lcl_circle דעפֿיניציע ינכעראַטיד פֿון lcl_shape.
 פובליק אָפּטיילונג.
 מעטהאָדס: ציען REDEFINITION, calc_area.
 ENDCLASS.
 CLASS lcl_shape IMPLEMENTATION.
 METHOD ציען.
 שרייַבן: / 'צייכן קיין פאָרעם'.
 ENDMETHOD.
 ENDCLASS.
 CLASS lcl_circle ימפּלעמענטאַטיאָן.
 METHOD ציען.
 WRITE:/ 'צייכענונג ספּעציפיש פאָרעם: קרייַז'.
 ENDMETHOD.
 METHOD calc_area.
 שרייַבן: / 'שטח פון קרקלע = 2iiR'.
 ENDMETHOD.
 ENDCLASS.
 אָנהייב-פון-סעלעקציע.
 דאַטן: o_cir טיפּ REF צו lcl_circle.
 CREATE OBJECT o_cir.
 רופן מעטאָד o_cir->draw().  " רופט די סובקלאַסס Draw () מעטאָד CALL METHOD o_cir-> calc_area ( ).
 ULINE.
 "--------- שמאָל וואַרפן (אַפּקאַסט) ----" דאַטן: o_shp טיפּ REF צו lcl_shape.
 אָ_שפּ = אָ_סיר.  " שמאָל וואַרפן (אַרויףקאַסט) רופן מעטאָד o_shp->draw ().  " רופט די סאַב קלאַס Draw () מעטאָד "רופן 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 ( ).
 קלאַס אַ1 דעפֿיניציע.
 פובליק אָפּטיילונג.
 דאַטן: נומער 1 טיפּ און ווערט 100.
 מעטהאָדס: מ1.
 ENDCLASS.
 קלאַס אַ1 ימפּלאַמענטיישאַן.
 מעטאָד m1.
 שרייַבן: 'אַ1:', נומער1.
 ENDMETHOD.
 ENDCLASS.
 קלאַס ב1 דעפֿיניציע ירושה פֿון אַ1.
 פובליק אָפּטיילונג.
 מעטהאָדס: מ 2, מ 1 רידיפינישאַן.
 ENDCLASS.
 קלאַס ב1 ימפּלאַמענטיישאַן.
 מעטאָד m1.
 נומער1 = נומער1.
 שרייַבן: 'ב1:', נומער 1.
 ENDMETHOD.
 מעטאָד m2.
 שרייב: 'M2 אין קלאַס ב1'.
 ENDMETHOD.
 ENDCLASS.
 אָנהייב-פון-סעלעקציע.
 דאַטן: פאָטער טיפּ REF TO a1.
 דאַטן: קינד טיפּ REF צו b1.
 * דאַטן: c טיפּ REF TO c1.
 ********************************************* ************** CREATE OBJECT קינד.
 פאָטער = קינד.  "ופּקאַסטינג רוף מעטאָד פאָטער-> מ1().
 רופן מעטאָד קינד->מ1().
 רופן מעטאָד קינד->מ2().
 *רופן מעטאָד אַ->מ2().  "מיר קענען נישט אַקסעס די אייגענע סאַב קלאַס מעטהאָדס ניצן סופּער קלאַס רעף.
 נייַ-ליניע.
 קינד ?= פאָטער.  "אַראָפּ קאַסטינג רופן מעטאָד קינד->מ1().
 נייַ-ליניע.
 רופן מעטאָד קינד->מ2().
 ********************************************* **************** *" טעות null ref * שאַפֿן OBJECT אַ.
 *ב ?= א.  "אַראָפּ קאַסטינג נאָך זיין געבן דאַמפּ * רופן מעטאָד ב-> מ 1 ( ).
 ********************************************* **************** * שאַפֿן אָביעקט אַ.
 פּרוּווט.
 b ?= אַ.  איר האָט געפרוווט צו נוצן אַ 'NULL' אָבדזשעקט רעפֿערענץ דאַמפּ CATCH cx_sy_move_cast_error.
 רופן מעטאָד ב->מ1().
 ENDTRY.
 ********************************************* **************** * שאַפֿן אָביעקט אַ.
 CREATE OBJECT ב.
 פּרוּווט.
 b ?= אַ.
 CATCH cx_sy_move_cast_error.
 רופן מעטאָד ב->מ1().
 רופן METHOD b->מ2().
 ENDTRY.
 ******** יינציק וואַלועס****************** דאַטן: lv_string TYPE שטריקל, lv_string2 TYPE שטריקל, lv_string_final TYPE שטריקל.
 טייפּס: BEGIN OF ty_data, aut TYPE c, END OF ty_data.
 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 = 'אַ, ב, C, אַ'.
 lv_string2 = 'ד, ב, C, אַ'.
 SPLIT lv_string ביי ',' אין די טיש lt_user.
 SPLIT lv_string2 ביי ',' אין טיש lt_user2.
 שלייף ביי lt_user2 אַסיינינג פעלד סימבאָל ( ).
 INSERT INTO TABLE lt_user.
 ENDLOOP.
 סאָרט lt_user לויט aut.
 ויסמעקן אַדדזשאַסאַנט דופּליקאַטן פֿון lt_user פאַרגלייַכן אַוט.
 IF sy-subrc = 0.
 שלייף ביי lt_user אַסיינינג פעלד-סימבאָל ( ).
 אויב lv_string_final איז ערשט.
 lv_string_final = -אַוט.
 אנדערש.
 CONCATENATE lv_string_final -auth אין lv_string_final אפגעשיידט דורך ','.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

לאָזן אַ באַמערקונג

דעם פּלאַץ ניצט אַקיסמעט צו רעדוצירן ספּאַם. לערן ווי דיין קאָמענטאַר דאַטע איז פּראַסעסט.