Zugriff auf interne Tabelle

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Zugriff auf interne Tabelle

Beitrag von LittleT (ForumUser / 48 / 0 / 0 ) »
Hallo alle zusammen,

ich bin leider ein Neuling in ABAP.
Ich möchte eine Datenbanktabelle auslesen, was ich auch schon geschafft habe. Ich habe also einen "Select *" auf die Tabelle gemacht. Jetzt möchte ich aber nicht alle einträge von dieser Datenbanktabelle haben, sondern die summe von einigen spalten.
Ich spiele mich jetzt bereits schon seit 2 Tagen damit, aber es funktioniert nicht. Kann mir von euch jemand helfen?

Gruß
LittleT

Ach ja. Eine Frage hätte ich noch. Im OO Konzept darf man ja keine itab mehr with header line angeben. Wie schaffe ich es dann dass ich auf einzelne Spalten dieser itab zugreife?
Vielen Dank
Es ist nicht schlimm nichts zu wissen, nichts dagegen zu unternehmen ist schlimm.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Zugriff auf interne Tabelle

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hallo LittleT,
LittleT hat geschrieben:Ich habe also einen "Select *" auf die Tabelle gemacht. Jetzt möchte ich aber nicht alle einträge von dieser Datenbanktabelle haben, sondern die summe von einigen spalten.
Dazu musst Du mit Aggregatfunktionen arbeiten, eine Beschreibung der einzelnen Funktionen findest Du z.B. hier:

http://help.sap.com/saphelp_470/helpdat ... ameset.htm
LittleT hat geschrieben:Wie schaffe ich es dann dass ich auf einzelne Spalten dieser itab zugreife?
Dazu musst Du Dir eine Workarea definieren, die Du dann über LOOP oder READ füllst:

Code: Alles auswählen.

DATA: it_sflight TYPE TABLE OF sflight,
      wa_sflight LIKE LINE OF it_sflight.

SELECT *
  FROM sflight
  INTO TABLE it_sflight.

LOOP AT it_sflight INTO wa_sflight.
  ...
ENDLOOP.

READ TABLE it_sflight INTO wa_sflight INDEX 1.
Gruß,
Charadin

Beitrag von m4rkusr (ForumUser / 12 / 0 / 0 ) »
Hallo,

also zur ersten Frage:
SELECT sum(feld1) sum(feld2) ... INTO TABLE t_summen.
Du kannst also den Befehl sum() zum Summieren von Spalten verwenden.

zur zweiten Frage:
Um Zugriff auf eine Standard Tabelle (ohne Kopfzeile) zu ermöglichen benötigst du eine sogenannte Workarea. Dies quasi eine Zeile der Tabelle, hat also den gleichen Aufbau, die gleiche Struktur. Daher nennt man den Typ einer Workarea auch Struktur.
Dann kann man in einer Loop-Schleife auf die einzelnen Einträge/zeilen der Tabelle zugreifen. Jeweils eine Zeile wird dabei in die Workarea geladen -> kopiert! Da es sich also nur um eine Kopie des Eintrages handelt, müssen Änderungen an der Workarea am Ende wieder an die Tabelle weitergegeben werden. Beispiel:

Code: Alles auswählen.

* Tabelle mit Workarea
DATA: t_summen TABLE of t_summen_struc,
t_summen_wa LIKE LINE of t_summen.

* Loop Schleife wird sooft durchlaufen, wie Einträge in t_summen 
LOOP at t_summen INTO t_summen_wa.
  write t_summen_wa-summe1.
  t_summen_wa-summe_ges = t_summen_wa-summe1 + t_summen_wa-summe2.
  *aktuellen Eintrag der Tabelle editieren
 MODIFIY t_summen FROM t_summen_wa. 
ENDLOOP.
Außerhalb einer Loop schleife ist beim Befehl MODIFY übrigens der Zusatz "INDEX" nötig, siehe dazu Doku im AbapEditor!

Alternativ kannst du natürlich auch über "READ TABLE FROM xyz INTO xyz_wa" nur eine Zeile lesen.

==

hm, hab beim Tippen länger gebraucht, sorry ;)

Beitrag von LittleT (ForumUser / 48 / 0 / 0 ) »
vielen Dank für eure genauen Antworten. Jetzt bin ich schon wieder ein bisschen schlauer.
Zu meiner ersten Frage habe ich mich wahrscheinlich falsch ausgedrückt.
Ich habe z.B. folgende Tabelle :

_________________
| t | t2 | t3 | t4 |
-------------------------
| 2 | 3 | 5 | 3 |
-------------------------

Und jetzt wollte ich in ein Feld die 13 stehen haben. Mit der Aggregatfunktion sum funktioniert dies leider nicht, da diese mir ja nur eine Summe über eine Spalte berechnet.
Aber mit der Workarea funktionierts ja dann bestimmt. Bin gespannt ob ich es hinbekomme.

Also nochmal danke.

Gruß
LittleT wünscht ein frohes schaffen ;-)
Es ist nicht schlimm nichts zu wissen, nichts dagegen zu unternehmen ist schlimm.

Beitrag von Heiner Tiling (ForumUser / 15 / 0 / 0 ) »
Hallo,

wenn Du ausserdem, so wie ich es verstanden habe, nur die Summe von bestimmten Spalten aus bestimmten Zeilen haben möchtest, musst Du die Selektion (SELECT ....) nich mit einer WHERE-Klausel einschränken.

Mit dem Summenfeld ist das so eine Sache ... aber du könntest versuchen in einem 2. Lesegang ein Feld damit zu füllen ...

Vielleicht kannst Du mal etwas mehr zum Einsatz schreiben ...

Gruß
Heiner

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1244
Views
Zugriff auf interne Tabelle
von Jan 2005 » 08.12.2005 11:57 • Verfasst in ABAP® Core
4
Antw.
3940
Views
Zugriff auf interne Tabelle Performance
von cut1 » 28.03.2007 11:23 • Verfasst in ABAP® für Anfänger
6
Antw.
8178
Views
Zugriff auf "strukturlose interne Tabelle"
von janfri » 22.06.2005 17:07 • Verfasst in ABAP® für Anfänger
3
Antw.
7880
Views
Zugriff auf SAP interne Tabellen
von ille » 03.12.2007 13:37 • Verfasst in Java & SAP®
4
Antw.
227
Views

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.