Maximale Anzahl an Subroutine-Pools erreicht.

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

Maximale Anzahl an Subroutine-Pools erreicht.

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hallo.

Ich hab ein problem mit dynamischen Tabellen / Struckturen. Erstelle eine dynamische Tabelle mit der Methode cl_alv_table_create=>create_dynamic_table. Das funktioniert auch wunderbar. Ich muss das pro Fakturaposition einmal machen. Mein Problem ist das das ganze nur 36 mal geht und dann nicht mehr => generate_subpool_dir_full. :(
Kann ich diese temporären Subroutin Pools zwischenzeitig wieder löschen um nicht diese Ausnahme zu erzeugen?


Danke, Andreas
Hauptsoch: HAUPTSOCH!

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


Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hallo nochmal.

Hab leider immer noch keine Lösung für mein Problem. Aber einen Ansatz:
Ich lagere die Erstellung der dynamischen Tabelle in ein eigenes Programm aus, so umgehe ich die Ausnahme und kann so oft ich will eine neue dynamische Tabelle erstellen und nicht nur 36 mal.

Code: Alles auswählen.

...
* Feldkatalog für die dyn. Tabelle
gs_fieldcatalog-fieldname = 'MATNR'.
gs_fieldcatalog-ref_table = 'MARA'.
gs_fieldcatalog-tabname = 'MARA'.
gs_fieldcatalog-ref_field = 'MATNR'.
APPEND gs_fieldcatalog TO itab_fieldcatalog.
CLEAR gs_fieldcatalog.

gs_fieldcatalog-fieldname = 'VBELN'.
gs_fieldcatalog-ref_table = 'BSEG'.
gs_fieldcatalog-tabname = 'BSEG'.
gs_fieldcatalog-ref_field = 'VBELN'.
APPEND gs_fieldcatalog TO itab_fieldcatalog.
CLEAR gs_fieldcatalog.

FIELD-SYMBOLS: <my_table> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <struct>.
FIELD-SYMBOLS: <feld>.
DATA: ep_table TYPE REF TO data.
  
ASSIGN ep_table->* TO <my_table>.
EXPORT itab_fieldcatalog FROM itab_fieldcatalog TO MEMORY ID 'test'.
SUBMIT programm02 AND RETURN.
IMPORT <my_table> TO <my_table> FROM MEMORY ID 'table'.
...

Das aufgerufene Programm:

Code: Alles auswählen.

...
* Feldkatalog vom ersten Programm importieren
IMPORT itab_fieldcatalog TO itab_fieldcatalog FROM MEMORY ID 'test'.

* Tabelle erstellen
CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = itab_fieldcatalog
  IMPORTING
    ep_table = ep_table
  EXCEPTIONS
    generate_subpool_dir_full = 1
    OTHERS = 2.
IF sy-subrc EQ '1'.
  WRITE:/ 'SUBPOOL_FULL!!'.
ENDIF.

FIELD-SYMBOLS: <my_table> TYPE STANDARD TABLE.
* Feldsymbol auf die Referenz zeigen lassen, da man Refenzen mit
EXPORT/IMPORT nicht ubergeben/übernehmen kann
ASSIGN ep_table->* TO <my_table>.
* Die dynamische Tabelle soll wieder in das erste Programm zurückgegeben werden
EXPORT <my_table> FROM <my_table> TO MEMORY ID 'table'.
Das alles funktioniert schon ganz gut. Die einzigen Codezeilen wo ich noch immer Probleme habe ist diese (aus dem ersten Programm):

Code: Alles auswählen.

ASSIGN ep_table->* TO <my_table>.
IMPORT <my_table> TO <my_table> FROM MEMORY ID 'table'.
dadurch das ep_table->* keine Referenz besitzt, funktioniert das ASSIGN nicht. Wenn das ASSIGN nun nicht gesetzt ist, kommt ein Kurzdump beim IMPORT (GETWA_NOT_ASSIGNED)

Hat jemand eine Idee wie ich die Referenz (dynamische Tabelle) von dem 2ten (aufgerufenen) Programm in das erste (aufrufende) Programm bekommen?

mfg Andi
Hauptsoch: HAUPTSOCH!

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Erstell doch ein Unterprogramm in deinen 2ten aufrufenden Programm und gibts die Daten mit Changing zurück.

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hallo Steffi.

Das mit dem Unterprogramm hab ich ausprobiert.
Das klappt auch ganz gut. Nur hab ich jetzt wieder die Ausnahme das der Subroutinen - Pool voll ist, wenn ich das öfter als 36 mal mache. :(

Code: Alles auswählen.

PERFORM test IN PROGRAM z_dev_test_gla_09 USING itab_fieldcatalog
                                              CHANGING ep_table.
Kann ja auch nicht mehr das SUBMIT nutzten sondern muss das mittels PERFORM machen.

Aber danke für die Idee.

Andi
Hauptsoch: HAUPTSOCH!

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Mhh aso hab leider noch nichts mit Export gemacht.

Aber wenn ich das richtig sehe hast du ja beim zuweisen in deinem ersten Programm das Problem. Wieso übergibts du nicht einfach ep_table von deinem zweiten ins erste Programm und weist die Sachen danach zu. Ich weiß zwar nicht ob das jetzt so funktioniert aber so haben wir das auch gelöst. wir haben klassen die wir aufrufen und bekomme auch ne tabelle zurück bzw. wir bekommen einen Pointer auf einer tabelle zurück. vielleicht bekommst du es ja so irgendwie gelöst.

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Ja, so hät ich mir das auch gedacht. Das Problem ist, dass ep_table keine richtige Tabelle ist, sondern nur ein Referenz auf eine Tabelle. Und im SAP ist es nun mal leider Verboten Referenzen beim IMPORT/EXPORT anzugeben. :(

Gibts vielleicht noch andere Vorschläge?


mfg Andi
Hauptsoch: HAUPTSOCH!

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
An was ich auch schon gedacht habe:

Code: Alles auswählen.

SUBMIT z_dev_test_gla_09 AND RETURN EXPORTING LIST TO MEMORY.
Aber das hab ich noch nicht so ganz verstanden.
Ich weis das es dann den FuBa LIST_FROM_MEMORY gibt um den Memory zu holen, nur bekomm ich bei dem FuBa immer die Ausnahme "NOT_FOUND".
Wie funktioniert das genau? WELCHE Liste wird in den MEMORY gestellt? Und hilft mir das mit meinem Problem der zu übergebenden Referenz weiter?

Vielleicht kann mir das ja jemand erklären.


Danke, Andi
Hauptsoch: HAUPTSOCH!

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1667
Views
Maximale Anzahl Codingzeilen
von ralf.wenzel » 02.09.2024 09:41 • Verfasst in ABAP® Core
3
Antw.
4178
Views
Maximale Anzahl Felder u. Satzlänge
von kbit100 » 05.02.2007 10:56 • Verfasst in ABAP® für Anfänger
2
Antw.
1697
Views
Maximale Anzahl Datensätze im Grid
von ewx » 27.08.2015 19:17 • Verfasst in ABAP® Core
3
Antw.
2285
Views
Parameter für maximale Anzahl an Ergebnissen (like se16n)
von Mockingbird » 19.03.2020 12:49 • Verfasst in ABAP® Core
1
Antw.
4589
Views
maximale Anzahl interner Modi bei call transaction
von ABAP-Neuling » 07.03.2008 10:20 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 4 Stunden von rob_abc 4 / 31
Dialog-Container mit Toolbar/Status
vor 23 Stunden von tar gelöst 19 / 2091
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1446

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

Zeilenumbrüche ersetzen
vor 4 Stunden von rob_abc 4 / 31
Dialog-Container mit Toolbar/Status
vor 23 Stunden von tar gelöst 19 / 2091
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1446

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741