Arbeitsbereich dynamisch erzeugen

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

Arbeitsbereich dynamisch erzeugen

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
Hallo zusammen,

kann man in abap ein Arbeitsbereich dynamisch erzeugen?

z.B. jetzt wird der Tabellename fest geschrieben:

TYPE: Begin of wa,
Feld1 TYPE ZBOOK-Feld1,
Feld2 TYPE ZBOOK-Feld2,
End of wa.

aber wie kann ich das ganze dynamisch realisieren, damit der Tabellenname nur am Anfang deklariert und zugewiesen wird?

DATA: tabname TYPE DD02L-TABNAME VALUE 'ZBOOK'.
...usw

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


Re: Arbeitsbereich dynamisch erzeugen

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

dazu die Doku zur Anweisung create data und zu den RTTI (Run Time Services) anschauen - damit wird es verständlich !

Gruss Jens

Folgende Benutzer bedankten sich beim Autor jensschladitz für den Beitrag:
isp

thanks Jens

Re: Arbeitsbereich dynamisch erzeugen

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
Das ganze Thema ist nicht ganz ohne!
Es muss bei dynamischer Deklaration ja auch dynamisch drauf zu gegriffen werden!

Tricktresor "Dynamische Programmierung"

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
isp


Re: Arbeitsbereich dynamisch erzeugen

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
jensschladitz hat geschrieben:Sali,

dazu die Doku zur Anweisung create data und zu den RTTI (Run Time Services) anschauen - damit wird es verständlich !

Gruss Jens

Danke Jens, ich schau mir das an...

Noch ein Frage:
Üblicher Ablauf in den vielen Prog. ist so, Arbeitsbereich definieren und dann eine Interne Tabelle deklarieren und auf Arbeitsbereich verweisen.
Kann man das umgehen, in dem statt des Arbeitsbereichs sofort eine Interne Tabelle verwenden oder auf Arbeitsbereich kann man nicht verzichten?

Re: Arbeitsbereich dynamisch erzeugen

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
isp hat geschrieben:Kann man das umgehen, in dem statt des Arbeitsbereichs sofort eine Interne Tabelle verwenden oder auf Arbeitsbereich kann man nicht verzichten?
Theoretisch und praktisch ja, praktisch und theoretisch solltest du das aber nicht tun.
Du kannst eine Tabelle mit impliziten Arbeitsbereich erzeugen:

Code: Alles auswählen.

data itab type standard table of t000 with header line.
Oder was man noch häufig sieht:

Code: Alles auswählen.

data itab like t000 occurs 0.
Damit löscht man aber z.B. mit "CLEAR itab" nicht die Tabelle, sondern nur den Arbeitsbereich der Kopfzeile. Die Tabelle löscht man dann mit "clear itab[]". Löschen kann man natürlich auch mit FREE.
Unschön ist dann

Code: Alles auswählen.

if itab is initial
Weil nicht klar ist, ob man die Tabelle oder den Arbeitsbereich meint.
Im OO-Kontext ist es auch verboten/ gar nicht möglich!
Trotzdem gibt es in fast jedem Programm Tabellen mit impliziter Kopfzeile:

Code: Alles auswählen.

SELECT-OPTIONS s_matnr for mara-matnr.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
isp


Re: Arbeitsbereich dynamisch erzeugen

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
Beispiel:

Code: Alles auswählen.

TYPES: BEGIN OF wa,
         feld1 TYPE zbook-feld1,
         feld2 TYPE zbook-feld2,
       END OF wa.

DATA: lt_tab1_key            TYPE STANDARD TABLE OF  wa, 
          lw_tab1_key           TYPE  wa,
....

SELECT * FROM zbook INTO TABLE lt_tab1_key.

LOOP AT lt_tab1_key INTO lw_tab1_key.

             SELECT * FROM zbook INTO CORRESPONDING FIELDS OF TABLE <fs_table>
                     WHERE  feld1 =  lw_tab1_key-feld1 AND  feld2 =  lw_tab1_key-feld2.
ENDLOOP.
D.h. wenn ich WHERE dynamisch einbinden möchte, muss der Arbeitsbereich vorher definiert werden?
mit einer interne tabelle wird gar nicht funktionieren, weil interne tabelle keine kopfzeile hat.. dann wäre diese Bedingung "feld1 = lw_tab1_key-feld1" dynamisch nicht realisierbar...
Vestehe das alles nicht ganz.. :(

Ist es möglich, den Quellcode von oben so anzupassen, wenn die Tabellenname und Felder vorgegeben sind und SELECT Abfragen dynamisch generiert werden?
z.B.:
DATA: tabname TYPE DD02L-TABNAME VALUE 'ZBOOK',
lv_bedingung_1 TYPE string VALUE 'Feld1',
lv_bedingung_2 TYPE string VALUE 'Feld',

SELECT * FROM (tabname) INTO TABLE lt_tab1_key.
...
Zuletzt geändert von isp am 29.08.2012 17:57, insgesamt 1-mal geändert.

Re: Arbeitsbereich dynamisch erzeugen

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
isp hat geschrieben:Vestehe das alles nicht ganz.. :(
Ich auch nicht...
Was willst du denn "dynamisch" machen?
und Warum?

Man kann viele Dinge dynamisch programmieren. Du kannst ganze Programme dynamisch generieren.
Du kannst aber auch nur die zu selektierenden Felder bei SELECT oder die Felder nach denen sortiert werden soll dynamisch ermitteln.

Re: Arbeitsbereich dynamisch erzeugen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Bevor man anfaengt, alles moegliche dynamisch zu entwickeln, sollte man sich gut mit den Basics auskennen.

Dynamisch ist schoen und gut, aber die Fehlersuche ist erschwert.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2949
Views
dynamisch einen Arbeitsbereich anlegen
von Steffi221185 » 11.08.2006 08:14 • Verfasst in ABAP Objects®
15
Antw.
2744
Views
Applikations-Toolbar dynamisch erzeugen
von ralf.wenzel » 19.01.2019 22:01 • Verfasst in ABAP® Core
5
Antw.
4258
Views
Dynpro Elemente dynamisch erzeugen
von pohlmann-schwarza » 27.05.2008 15:02 • Verfasst in ABAP® für Anfänger
20
Antw.
7120
Views
Steuerelemente dynamisch im Code erzeugen
von LordDeath » 27.06.2005 11:04 • Verfasst in Dialogprogrammierung
6
Antw.
4543
Views
QR-Code dynamisch erzeugen und in SF ausgeben
von bapimueller » 27.11.2020 17:03 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 47 Minuten von tar 21 / 1380
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2788
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 867
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 422

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.

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 47 Minuten von tar 21 / 1380
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2788
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 867
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 422

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2458
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9044