Standard-Tabelle -> erweiterte DDIC-Tabelle (Struktur)

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Standard-Tabelle -> erweiterte DDIC-Tabelle (Struktur)

Beitrag von kl ( / / 0 / 3 ) »
Hallo,

ich versuche z.Zt. erfolglos, die Standard-Tabelle "SBOOK" in eine von mir im DDIC erstellte, um eine Spalte erweiterte Tabelle (ZCS_SBOOK) (Struktur) einzulesen und dann via REUSE_ALV_GRID_DISPLAY (einfachste Version der Funktion) anzuzeigen.

ZCS_SBOOK besteht aus der Tabelle SBOOK + einer zusätzlichen Spalte "ampel" (vom Typ CHAR4), also z.B.:

Code: Alles auswählen.

zcs_sbook-sbook-carrid
zcs_sbook-sbook-connid
zcs_sbook-ampel
Einlesen tue ich den Inhalt der SBOOK-Tabelle so:

Code: Alles auswählen.

data:
  l_tab_sbook_x type standard table of zcs_sbook.

select * from sbook into table l_tab_sbook_x.
Wenn ich mir dann l_tab_sbook_x z.B. im Debugger anschaue, dann sieht dort alles wie geplant aus. Alle Felder der SBOOK-Tabelle sind vorhanden und entsprechend gepflegt.

Wenn ich nun aber die Funktion REUSE_ALV_GRID_DISPLAY aufrufe,

Code: Alles auswählen.

call function 'REUSE_ALV_GRID_DISPLAY'
     exporting
          i_structure_name = 'ZCS_SBOOK'
     tables
          t_outtab         = l_tab_sbook_x
     exceptions
          program_error    = 1
          others           = 2. 
dann bekomme ich immer einen Kurzdump, weil irgendwo ein nicht zugewiesenes Feldsymbol auftritt (in SAPLSLVC oder so beim Einlesen der anzuzeigenden Daten).

Wenn ich jedoch REUSE_ALV_GRID_DISPLAY aufrufe, ohne vorher per select die Daten eingelesen zu haben, dann wird ein korrektes (wenn auch leeres) ALV-Grid angezeigt (mit der zusätzlichen Spalte "ampel").

Mache ich hier etwas Grundsätzliches falsch, oder muß der Fehler woanders (als im obigen Code) liegen?

Grüße,
Kaspar

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


corrsponding

Beitrag von Norbert guest ( / / 0 / 3 ) »
Versuche vielleicht mal den Zusatz:

select *
from sbook
into CORRESPONDING FIELDS OF
table l_tab_sbook_x.

Möglicherweise hat sich hier was verschoben ??

corresponding will nicht

Beitrag von kl ( / / 0 / 3 ) »
Hallo,

mit "into corresponding fields of table" werden leider gar keine Daten in die erweiterte Tabelle geschrieben.

Ich werde jetzt erstmal versuchen, von 0 an ein paar selbst definierte Zeilen in die erweiterte Tabelle einzufügen, um so herauszubekommen, ob das Problem evtl. am Aufbau der Daten der vorgefüllten Tabelle liegt oder so...

Gibt es eigentlich einen komfortablen Weg, mein Zusatzfeld "ampel" auf dieselbe Ebene wie die Felder der SBOOK-Tabelle zu bekommen?

Also anstatt (wie momentan):

Code: Alles auswählen.

zcs_sbook-sbook-carrid
zcs_sbook_sbook-connid
zcs_sbook-ampel
so etwas:

Code: Alles auswählen.

zcs_sbook-sbook-carrid
zcs_sbook_sbook-connid
zcs_sbook-sbook-ampel
bzw. noch besser:

Code: Alles auswählen.

zcs_sbook-carrid
zcs_sbook-connid
zcs_sbook-ampel
In einem ABAP-Buch habe ich dafür zwar ein Beispiel mittels "include structure" und "include type" gefunden, doch erscheint sie mir vom Aufbau her etwas umständlich und veraltet:

Code: Alles auswählen.

types:
  begin of t_mark,
    mark type c,
  end of t_mark,
  begin of t_str_reservationx.

include structure zptb00_hreservat.
include type t_mark.

types:
  end of t_str_reservationx.
Übertrage ich dieses Beispiel auf meinen Code, so erhalte ich eine erweiterte Tabelle, in der mein zusätzlcihes Feld "ampel" auf derselben Ebene liegt wie die Felder der Tabelle "SBOOK". Und damit hat dann REUSE_ALV_GRID_DISPLAY auch keine Probleme...

Wenn ich jedoch obiges auf "modernere" Weise versuche, dann bekomme ich (unerwartet) wiederum verschiedene Ebenen:

Code: Alles auswählen.

types:
  begin of sbook_x,
    sbook_x type sbook,
    ampel type char4,
  end of sbook_x.
Gruß,
Kaspar

Re: corresponding will nicht

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
kl hat geschrieben:...Wenn ich jedoch obiges auf "modernere" Weise versuche, dann bekomme ich (unerwartet) wiederum verschiedene Ebenen:

Code: Alles auswählen.

types:
  begin of sbook_x,
    sbook_x type sbook,
    ampel type char4,
  end of sbook_x.
...
Du verwechselt da etwas:
mit der Deklaration im obigen Beispiel vereinbarst Du ein Feld SBOOK_X in Deiner Struktur, das selbst eine Struktur hat, nämlich die von SBOOK.

Der einzige Weg, in eine Struktur Felder einer bestehenden Struktur einzufügen, funktioniert über den INCLUDE STRUCTURE.
Dazu sollte aber nachfolgende Vereinbarung reichen:

Code: Alles auswählen.

types: 
  begin of t_str_reservationx. 
include structure zptb00_hreservat. 
types: 
    mark type c, "eine explizite Verwendung von INCLUDE TYPE ist nicht notwendig
  end of t_str_reservationx. 

REUSE_ALV_GRID_DISPLAY und tiefe Strukturen

Beitrag von kl ( / / 0 / 3 ) »
@ereglam: Ja, richtig. Jetzt ist mir der Unterschied klar. Vielen Dank für den Hinweis!

Um nochmal auf mein ursprüngliches Problem zurückzukommen: Ich vermute nun, daß zumindest die einfachste Version von REUSE_ALV_GRID_DISPLAY nicht mit tiefen Strukturen à la

Code: Alles auswählen.

types:
  begin of sbook_x,
    sbook_x type sbook,
    ampel type char4,
  end of sbook_x.
klarkommt. Habe nämlich ein bißchen weiter mit dem Debugger herumgespielt und dabei herausgefunden, daß bei einer solchen Struktur im Code des entsprechenden Programms (SAPLSLVC) versucht wird, anhand der flachen Spaltenbezeichnung (z.B. "carrid") in der erweiterten Struktur den passenden Feldinhalt einer Variable zuzuweisen. Um jedoch auf den entsprechenden Inhalt der jeweiligen Spalte zugreifen zu können, müßte an jener Stelle im Code anstatt z.B. "carrid" die erweiterte Fassung "sbook-carrid" benutzt werden, da in der Tabelle, in der nach dem Inhalt gesucht wird, selbiger natürlich nur unter "sbook-carrid" und nicht bloß "carrid" zu finden ist.

Wenn ich damit richtig liege, dann müßte man entweder wie beschrieben mithilfe von "include structure" eine erweiterte *flache* Struktur erstellen oder der Funktion REUSE_ALV_GRID_DISPLAY einen angepaßten Feldkatalog übergeben, der dann die erweiterten Spaltenbezeichnungen ("sbook-carrid" usw.) enthält. Oder so ähnlich. Ob das mit dem angepaßten Feldkatalog funktioniert, muß ich erst noch austesten. Sollte aber machbar sein, denke ich.

Vielen Dank jedenfalls an alle für die Hinweise!

Gruß,
Kaspar

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
freut mich, dass ich von Hilfe sein konnte... :)
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

5
Antw.
7524
Views
Tabelle geändert - Fehler in DDIC-Struktur
von KleinerEisbaer » 24.08.2007 11:47 • Verfasst in ABAP® für Anfänger
1
Antw.
2955
Views
MD04 Bestandsliste - direkt erweiterte Tabelle beim Aufruf?!
von Striker » 09.04.2009 10:10 • Verfasst in ABAP® Core
5
Antw.
2084
Views
Fileupload in eine DDIC-Tabelle
von hunter » 07.11.2005 15:41 • Verfasst in Basis
0
Antw.
1059
Views
Smartforms: Spaltenname für Tabelle auch DDIC?
von MacLeod » 10.11.2011 13:23 • Verfasst in ABAP® für Anfänger
3
Antw.
14677
Views
DDIC-Tabelle und itab nicht unicode-konvertibel
von KleinerEisbaer » 28.07.2008 13:46 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1509
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8127