Generate Subroutine Pool

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

Generate Subroutine Pool

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Hallo zusammen,

hat mittlerweile jemand eine Lösung wie man die Ausnahme subroutine_pool_full umgehen kann d.h. 36 mal mit Subroutine ein Programm aufrufen und dann knallt es.

Ich hab das Problem, dass ich dynamisch Tabellen erstelle und ich dann max. nur 4 Durchläufe meines Programmes machen kann, da pro Programmdurchlauf 12 mal ein Subroutine Pool erstellt wird.


Ich hoffe es kann mir jemand helfen.

P.S.: Die Idee ein Programm anzulegen und das aufzurufen soll umgangen werden.

Gruß
Steffi

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


Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
Die Beschränkung ist meines Wissens noch nicht aufgehoben. Da diese Beschränkung aber nur für interne Modi gilt, könnte man versuchen die Generierung in einem RFC-fähigen FuBa zu erledigen und diesen mit der Destination NONE aufzurufen.

Wenn es die Basis (ab 6.40) hergibt, kann man Datentypen dynamisch mit RTTC (run time type creation) aufbauen.

Gruß BlackMail.

Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
BlackMail hat geschrieben:Da diese Beschränkung aber nur für interne Modi gilt, könnte man versuchen die Generierung in einem RFC-fähigen FuBa zu erledigen und diesen mit der Destination NONE aufzurufen.
Gruß BlackMail.
Die Idee war ein bisschen voreilig. Schließlich kann man bei RFC keine generischen Datentypen in der Schnittstelle verwenden.

Re: Generate Subroutine Pool

Beitrag von ewx (Top Expert / 4843 / 311 / 638 ) »
Steffi221185 hat geschrieben:Ich hab das Problem, dass ich dynamisch Tabellen erstelle und ich dann max. nur 4 Durchläufe meines Programmes machen kann, da pro Programmdurchlauf 12 mal ein Subroutine Pool erstellt wird.
Was meinst du denn mit "4 Durchläufe"?

Ich habe mir dein voriges Posting noch mal durchgelesen...
Wenn ich dich richtig verstanden habe, dann hast du eine bestimmte Menge von unterschiedlichen Tabellen, zu denen du die Struktur und die Daten bekommst.
Dann müsstest du doch einen Fuba schreiben können (siehe meine erste Antwort), dem du die Struktur und die Daten mitgibst. Der macht dann den ganzen dynamischen Krams und da er mit "Starting New Task" aufgerufen wird, kannst du den Bsuatein dann zigmal aufrufen, jeweils mit anderen Strukturen und Daten...
Lass mich raten: Wahrscheinlich ist es komplizierter...?

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
Hallo Steffi,

1. Frage. Welchen SAP-Releasestand habt ihr denn. Denn davon abhängig können die Lösungsvorschläge sein.

2. Frage. Warum muss 12x ein Subroutine pool angelegt werden? Ist es nicht möglich sich vorab zu überlegen was für Tabellen denn nun genau angelegt werden müssen. Wenn es 12 Stück pro Durchlauf sind - kann mann denn nicht 12 Unterroutinen in einen einzigen Subroutinepool schaufeln?
Dann bricht dein Prog zwar jetzt wieder nach dem 36. Lauf ab - aber 36*12 =432 Tabellen sollte m.E. schon ausreichend sein. Wenn nicht kannst du ja auch all diese Läufe in einem Subroutinepool zusammenfassen mit sehr vielen Unterroutinen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Hallo zusammen,

erst mal sorry für die späte Antwort.
Vorab noch ein paar Infos:
- Release ist 6.40
- Ich durchlaufe den Subroutine Pool so oft, weil bei mir die Tabellen dynamisch angelegt werden. Zu beschreiben, wie das vorgehen ist, ist ein wenig kompliziert. Wir haben schon allerhand Klassen gebaut z.b.: Eine Klasse für interne Tabelle mit einer Methode zum erstellen von internen Tabellen über einen Feldcatalog. Dort wird dann auch der Fub Create_dynamic_Tabelle genutzt. Eine weitere Klasse baut alle möglichen SQL-Statements zusammen und führt dieses dann aus. Als Rückgabe bekommt der Benutzer eine gefüllte ITAB. Ich versuch mal den momentanen Ablauf darzustellen.

Rahmenprogramm:
Do 6 Times.
je nachdem bei welchen durchlauf man ist, sieht die Tabelle anders aus.
Aufruf SQL Klasse
Enddo.

SQL Klasse:
Ermittelt SQL Statement und stellt Feldkatalog zusammen
Aufruf Klasse Interne Tabelle
Füllen der internen Tabelle mit Daten -> über Generate Subroutine Pool

Klasse Interne Tabelle:
Erstellen der Tabelle über den Feldkatalog
Aufruf Create dynamic Table -> über Generate Subroutine Pool

So ungefähr sieht das ganze dann aus. Deswegen komm ich an die Grenzen des Subroutine Pools.
Habs mittlerweile schon versucht über ein anderes externes Programm zu lösen, nur hab ich da nen Problem bei der Rückgabe der Tabelle, welche gerade erstellt wurde.

@ewx
An einen Fuba hab ich auch schon gedacht. Nur ist das das Problem das man den nicht dynamisch anpassen kann. Oder meinste das ich da das ganze Subroutine gedönz machen soll. Und der Fuba somit nen eigenen externen Modi bildet. Oder wie meinst du das genau? Danach muss auch die Rückkehr ins eigene Programm möglich sein.

Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
Hallo Steffi221185,

die Idee mit dem RFC-Baustein hatte ich ja auch schon verfolgt (s.o), aber sofort wieder verworfen (s.o.), weil man dort keine generischen Parameter definieren darf. Schließlich bräuchte man dort ja einen Parameter mit "type any table" oder "ref to data".

Bleiben immer noch die RTTC-Klassen, über die ich schon viel geschrieben habe ( http://www.abapforum.com/forum/viewtopi ... 1&start=15 ), die Du aber anscheinend nicht so magst ... :)

Gruß BlackMail.

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Was heißt ich mag die nicht. Diese werden ja sogar genutzt. aber um mir die Tabelle erstellen lassen zu können brauch ich ja trotzdem create_dynamic_table. Da die RTTC doch keine Tabelle erstellen können wenns keine DDIC-Objekte sind, oder?

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
Was heißt ich mag die nicht. Diese werden ja sogar genutzt. aber um mir die Tabelle erstellen lassen zu können brauch ich ja trotzdem create_dynamic_table. Da die RTTC doch keine Tabelle erstellen können wenns keine DDIC-Objekte sind, oder?

Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
Steffi221185 hat geschrieben:aber um mir die Tabelle erstellen lassen zu können brauch ich ja trotzdem create_dynamic_table. Da die RTTC doch keine Tabelle erstellen können wenns keine DDIC-Objekte sind, oder?
Doch, man kann auch Tabellen erstellen, die nicht auf dem DDIC basieren (s. Posting http://www.abapforum.com/forum/viewtopi ... 1&start=15 ).

Gruß BlackMail.

Beitrag von ewx (Top Expert / 4843 / 311 / 638 ) »
Steffi221185 hat geschrieben:Oder meinste das ich da das ganze Subroutine gedönz machen soll.
genau!
do 6 times.
aufruf fuba.
enddo.
Du kriegst natürlich keine Rückgabewerte...
Falls du Daten mitgeben musst, könnte man IMHO einen "Container" mitgeben, also eine Datenstruktur von z.B. 1000 Zeichen. Nachdem im Fuba die "richtige" tabelle generiert wurde, überführt man die Daten vom Container in die richtig strukturierte Tabelle.

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
BlackMail hat geschrieben:
Steffi221185 hat geschrieben:aber um mir die Tabelle erstellen lassen zu können brauch ich ja trotzdem create_dynamic_table. Da die RTTC doch keine Tabelle erstellen können wenns keine DDIC-Objekte sind, oder?
Doch, man kann auch Tabellen erstellen, die nicht auf dem DDIC basieren (s. Posting http://www.abapforum.com/forum/viewtopi ... 1&start=15 ).

Gruß BlackMail.
geil das funktioniert sogar. nur das nen insert nicht erlaubt ist und ich das ganze mit append versucht habe.

kann man eigentlich auch Referenzfelder(type strucktur-field) übergeben?
also wenn des auch geht. wär das super. dann müssten doch meine Probleme gelöst sein. ist dann zwar nen bissl umständlicher aber ok.

wie doof von mir das ich mir das nicht schon eher angeguckt habe und halt doch ne kleine abneigung gegen die klassen hatte.

Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
Steffi221185 hat geschrieben: geil das funktioniert sogar. nur das nen insert nicht erlaubt ist und ich das ganze mit append versucht habe.
Das verstehe ich nicht. Ein INSERT ... INTO ist doch bei nicht sortierten Tabellen das gleiche wie ein APPEND, weshalb die SAP auch neuerdings empfiehlt, gar nicht mehr mit APPEND zu arbeiten.
Steffi221185 hat geschrieben: kann man eigentlich auch Referenzfelder(type strucktur-field) übergeben?
also wenn des auch geht. wär das super. dann müssten doch meine Probleme gelöst sein. ist dann zwar nen bissl umständlicher aber ok.
"Referenzfelder" ist etwas missverständlich. Ich nehme an, Du willst wissen ob man Typobjekte auf Basis von Variablen erstellen kann, oder?
Dazu gibt es die Methode "describe_by_data".
Steffi221185 hat geschrieben: wie doof von mir das ich mir das nicht schon eher angeguckt habe und halt doch ne kleine abneigung gegen die klassen hatte.
Verstehe ich schon, weil die Vorgehensweise ja auch etwas gewöhnungsbedürftig ist. Aber wenn man das Prinzip einmal verstanden hat, ist es eigentlich super, was man damit alles machen kann.

Gruß BlackMail.

Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
Ein INSERT ... INTO ist doch bei nicht sortierten Tabellen das gleiche wie ein APPEND
Sorry, es muss natürlich ein INSERT ... INTO TABLE sein.

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
BlackMail hat geschrieben:
Ein INSERT ... INTO ist doch bei nicht sortierten Tabellen das gleiche wie ein APPEND
Sorry, es muss natürlich ein INSERT ... INTO TABLE sein.
:D darauf hat ich auch nicht geachtet, da ich normalerweise APPEND benutze.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3456
Views
GENERATE SUBROUTINE POOL
von Gast » 25.05.2005 13:16 • Verfasst in ABAP® für Anfänger
1
Antw.
2260
Views
Generate Subroutine Pool Parameter
von codierknecht » 22.01.2008 15:40 • Verfasst in ABAP® Core
0
Antw.
1113
Views
Insert report oder Generate Subroutine Pool?
von naphro » 15.06.2007 11:01 • Verfasst in ABAP® Core
12
Antw.
3886
Views
Generate Subroutine-Pool mit Unterprogrammen u. Insert-State
von Steffi221185 » 08.12.2006 11:20 • Verfasst in ABAP® Core
2
Antw.
3048
Views
GENERATE DYNPRO und rollbare Felder
von msta » 30.03.2017 11:43 • Verfasst in Dialogprogrammierung

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

Daten an Tabelle binden
vor 4 Stunden von Bright4.5 1 / 81
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1728
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8331