Objekte in interner Tabelle suchen / speichern

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Objekte in interner Tabelle suchen / speichern

Postby Maja967 » Fri Jun 01, 2012 3:12 pm

Hallo,

mir fehlt noch etwas das Grundverständniss für das Speichern von Objekten in einer Tabelle, unter Beispielccode wie ich einen Objekt-Manager erstellenwürde ... -> dh ein Tabelle beinhaltet alle erzeugen Objekte einer Klasse bzw deren Referenzen. diese Tabelle wird einmalig aufgebaut und READ-Only im Programm verwendet .. vermutlich kommen da so 100.000 Objekte des gleichen Typs rein.


Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CLASS my_class DEFINITION.
  2.   PUBLIC SECTION.
  3.   DATA: id      type i,
  4.         val     type i,
  5.         knz     type c.
  6.  
  7. METHODS constructor IMPORTING p1 TYPE any
  8.                               p2 type any
  9.                               p3 type any.
  10.  
  11.  
  12.  CLASS my_class IMPLEMENTATION.
  13.   METHOD constructor.
  14.  
  15.  
  16.      me->id  = p1.
  17.      me->val = p2.
  18.      me->knz = p3.
  19.  
  20.  
  21.  
  22.  
  23. data rf_1 type REF TO my_class.
  24. data rf_2 type REF TO my_class.
  25. data rf_3 type REF TO my_class.
  26. data it_test type HASHED TABLE OF REF TO my_class with UNIQUE key table_line.
  27. data ab_test like LINE OF it_test.
  28.  
  29.    create OBJECT rf_1  exporting p1 = 1  p2 = 2  p3 = 'A' .
  30.    create OBJECT rf_2  exporting p1 = 1  p2 = 2  p3 = 'A' .
  31.    create OBJECT rf_3  exporting p1 = 10 p2 = 10 p3 = 'B' .
  32.                       .
  33.   insert rf_1 into table it_test.
  34.   insert rf_2 into table it_test.
  35.   insert rf_3 into table it_test.
  36.  
  37. *(1)
  38.   LOOP AT it_test into ab_test.
  39.     write: ab_test->id , ab_test->knz. NEW-LINE.
  40.   write 'ENDE1'. NEW-LINE.
  41.  
  42. * (2)
  43.   LOOP AT it_test into ab_test where TABLE_LINE->knz = 'A'.
  44.     write: ab_test->id , ab_test->knz. NEW-LINE.
  45.   write 'ENDE2'. NEW-LINE.
  46.  
  47. * (3)
  48.   LOOP AT it_test into ab_test where TABLE_LINE->knz = 'A' and
  49.                                      TABLE_LINE->id  = 2.
  50.     write: ab_test->id , ab_test->knz. NEW-LINE.
  51.   write 'ENDE3'. NEW-LINE.
  52.  
  53.  
  54. * ----------------------------------------------
  55. *  das ganze mal als sorted table ....
  56. * ----------------------------------------------
  57. data it_test_sorted type SORTED TABLE OF ref to my_class with UNIQUE key table_line.
  58. FIELD-SYMBOLS <fs_sorted> like LINE OF it_test_sorted.
  59.  
  60.   insert rf_1 into table it_test_sorted.
  61.   insert rf_2 into table it_test_sorted.
  62.   insert rf_3 into table it_test_sorted.
  63.  
  64.   uline.
  65.   write: 'SORTED'. NEW-LINE.
  66.   uline.
  67.  
  68.  
  69.   LOOP AT it_test_sorted ASSIGNING <fs_sorted> where TABLE_LINE->knz = 'A'.
  70.         write: ab_test->id , ab_test->knz. NEW-LINE.
GeSHi ©



kann man das so machen ????

Ich habe mal aus Performance Sicht die folgende Vermutung
die sortierte Tabelle ist für den A. da ja lediglich die Referenzen sortiert sind, das bringt jedoch keinen Vorteil für die Objektsuche via Attribute -> ergo sollte die interne Tabelle wohl immer als "Hashed Table" typisiert sein oder ?

habt Ihr vielleicht noch ein paar Erfahrungswerte mit dem Speichern von Objekten in Internen Tabellen ?

thx
Maja967
...
...
 
Posts: 229
Joined: Tue Nov 29, 2005 2:44 pm

Re: Objekte in interner Tabelle suchen / speichern

Postby ewx » Fri Jun 01, 2012 5:06 pm

Interessante Fragestellung!
Du brauchst doch aber dein Programm nur noch dahingehend zu erweitern, dass der CONSTRUCTOR seine Attribute selbst setzt (abwechselnd A, B und C z.B.) und dann erzeugst du mal 100.000 Referenzen und machst danach einen LOOP WHERE ->attribut = 'A'.
Das ganze für jede Tabellenart und dann ab in die SE30 damit... 8)
Ergebnisse hier -> . <- bitte posten!! ;)
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 1 guest

cron