generate_subpool_dir_full, SELECT in Schritte

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

generate_subpool_dir_full, SELECT in Schritte

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Seid gegrüsst an diesem grauen und diesigen Dienstag morgen!

-------------------------

Ich benutze die Methode create_dynamic_table der Klasse cl_alv_table_create.

Code: Alles auswählen.

  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog           = lt_fieldcat_lvc
    IMPORTING
      ep_table                  = dyn_table
    EXCEPTIONS
      generate_subpool_dir_full = 1
      OTHERS                    = 2.
Hiermit möchte ich einen SAP-Tabellenextraktor ermöglichen, bei dem die Tabellen- und Feldauswahl dynamisch zur Laufzeit erfolgen soll. Diesen dynamischen Table (in den ich die Daten reinlade, bevor ich sie speicher) kann ich allerdings nur 36 Mal (also nur für 36 Tabellen) erstellen. Danach gibt es die generate_subpool_dir_full Excepion.

Konkret bedeutet das, dass SAP nach 36 Mal (aus Speichergründen) dicht macht und man diese Zahl (36) weder erhöhen noch den Zähler resetten kann. Kennt jemand eine Möglichkeit, wie ich dieses Problem umgehen kann? Denn grundsätzlich sollen mit diesem Extraktor bis zu 100 oder gar 150 Tabellen heruntergeladen werden (zur Not auch über Nacht oder über mehrere Tage - Performanceprobleme gibt es also grundsätzlich nicht).

-------------------------

Und Problem zwei: Ihr alle werdet es kennen, wenn man einen SELECT über z.B. die BSEG ausführt, kriegt man schleunigst nen Timeout - weil es schlicht zu viele Datensätze sind.

Gibt es ne Möglichkeit wie beim nativen SQL, einen Limit-von und Limit-bis anzugeben (SELECT * FROM <table> UP TO [n] ROWS hilft ja in dem Fall nicht wirklich). Oder muss ich das über die WHERE-Bedingung steuern?

-------------------------

Wär echt spitzikato wenn da jemand ein paar Anregungen zu hat.

Danke, Gruss,
Martin[/b]

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Martin,

wenn Du Dich in einem neueren Release befindest, kannst Du mit CREATE DATA tab TYPE [STANDARD] TABLE OF (tab_name) [WITH DEFAULT KEY]. eine interne Tabelle anlegen. Das geht auch mehr als 36 mal (ist eine Einschränkung des GENERATE SUBROUTINE POOL).

Wenn die BSEG zu groß ist, um sie in einem Rutsch lesen zu können, musst Du mit OPEN CURSOR/FETCH NEXT CUSOR und SELECT PACKAGE SIZE arbeiten.[/code]

PS: hier, ca. Mitte D-Land, Siegerland, herrscht Sonnenschein...

Folgende Benutzer bedankten sich beim Autor ereglam für den Beitrag:
andy-meyer

Gruß
Ereglam


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

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Wow - ihr Glückspilze!

Vielen Dank für die Hinweise. Zum Glück entwickle ich in einem neuen System. Es ist zwar grundsätzlich immer besser, wenn man es auch abwärtskompatibel programmiert. Aber wo kommen wir denn da hin? Müssen uns schliesslich unsere eigene Daseinsberechtigung schaffen... :roll:

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Hmm... so richtig weiterbringen tut es mich doch nicht (also das SELECT PACKAGE SIZE schon, nicht aber das dynamische CREATE DATA). Oder wahrscheinlich habe ich auch einfach nur Tomaten auf den Augen und im Gehirn:

Ich will ja nicht den gesamten Table sondern ggf. nur bestimmte Felder herunterladen. Dann bringt es mir ja nix den gesamten Table zu erstellen. Also das könnte man schon. Und dann einfach nur die gewollten Spalten füllen. Aber wenn ich von einer Tabelle wie der BSEG nur 5 von 323 auslesen will, ist das ja ein grober Unsinn.

Also wie gesagt, wahrscheinlich habe ich nur nicht den konkreten Durchblick, aber vielleicht lichtet ja einer den Nebel...?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Martin,

dann musst Du Dir zunächst mit CL_ABAP_STRUCTDESCR die Felder Deiner Tabelle bestimmen, alle herauswerfen, die Du nicht benötigst, eine neue Strukturdefinition über CL_ABAP_STRUCTDESCR=>CREATE anlegen, diesen für das Anlegen eines Tabellentypen via CL_ABAP_TABLEDESCR benutzen. Die Objektinstanz kann dann mit (der modernen Form des) CREATE DATA... TYPE HANDLE eine interne Tabelle anlegen. Beim SELECT musst Du dann natürlich auch dynamisch die Felder mitgeben.

PS:
obiges funktinioniert ab ca. 6.20
Gruß
Ereglam


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

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2776
Views
PRIMARY' filegroup is full
von ewx » 02.03.2005 22:23 • Verfasst in Basis
4
Antw.
1211
Views
Nächsten Schritte als ABAP Entwickler
von retsch » 16.05.2023 07:07 • Verfasst in ABAP® für Anfänger
3
Antw.
7557
Views
Observerobjekt am Applikationsserver (erste Schritte in ABAP OO)
von akaAKI » 30.07.2024 12:23 • Verfasst in Tips + Tricks & FAQs
1
Antw.
1252
Views
Nach dynprofeldauswahl anderes Tabellenfeld in Variable füll
von kaim77 » 10.07.2014 14:03 • Verfasst in ABAP Objects®
14
Antw.
5739
Views
Generate Subroutine Pool
von Steffi221185 » 26.10.2007 09:53 • Verfasst in ABAP® Core

Über diesen Beitrag


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.