Report RBDMON00 BD87 in externe DB auslesen

Hallo,

bin Student und muss innerhalb eines Studienprojektes die Ausgabe mehrerer Reports und Transaktionen
zur längeren Auswertung in eine externe Datenbank speichern. Leider bin ich noch relativ neu in der ABAP Welt.

Die anbindung an eine externe Datenbank klappt so weit ganz gut, konnte auch schon mehrere Reports und Transaktionen
bzw. die Funktionsbausteine die dahinterstehen aufrufen und die Daten kopieren.

Entweder über CALL FUNCTION mit Übegergabe der Tabelle oder wenn es sich um ein ausführbares Programm
handelte über SUBMIT EXPORTING LIST TO MEMORY.

Leider funktioniert das nicht bei allen ausführbaren Reports (Typ 1), wieso bleibt mit ein Rätsel.

Gerade versuche ich die Transaktion „BD87“ bzw. den Report „RBDMON00“ auszulesen,
aber irgendwie wird diesmal nichts in die Liste geschrieben, da das Programm immer bei LIST_FROM_MEMORY mit
der Exeption NOT FOUND abbricht. Leider finde ich auch keinen passenden FUBA den ich aufrufen könne.

Oder ist das der komplett falsche Ansatz den ich da versuche?

Wäre super dankbar wenn mir jemand helfen könnte.

HILFEEEEE!!!

Hi!

Diese „export to … und export from memory“-
Geschichten funktionieren nur innerhalb eines
Workprozesses.
Wenn du mit allg. Speicherbereichen, die auch anderen
Anwendungen zur Verfügung stehen sollen arbeiten
willst, solltest du mit dem sogenannten „Shared buffer“
arbeiten:
Dieser Speicherbereich erlaubt Zugriffe auch außerhalb
eines Workprozesses:
Export itab = itab to shared buffer indx(st) id
„my_id_key“.
Import itab = itab from shared buffer indx(st) id
„my_id_key“.

Viele Grüße,
Ingo

Hallo,

bin Student und muss innerhalb eines Studienprojektes

die

Ausgabe mehrerer Reports und Transaktionen
zur längeren Auswertung in eine externe Datenbank

speichern.

Leider bin ich noch relativ neu in der ABAP Welt.

Die anbindung an eine externe Datenbank klappt so weit

ganz

gut, konnte auch schon mehrere Reports und

Transaktionen

bzw. die Funktionsbausteine die dahinterstehen

aufrufen und

die Daten kopieren.

Entweder über CALL FUNCTION mit Übegergabe der Tabelle

oder

wenn es sich um ein ausführbares Programm
handelte über SUBMIT EXPORTING LIST TO

MEMORY.

Leider funktioniert das nicht bei allen ausführbaren

Reports

(Typ 1), wieso bleibt mit ein Rätsel.

Gerade versuche ich die Transaktion „BD87“ bzw. den

Report

„RBDMON00“ auszulesen,
aber irgendwie wird diesmal nichts in die Liste

geschrieben,

da das Programm immer bei LIST_FROM_MEMORY mit
der Exeption NOT FOUND abbricht. Leider finde ich auch

keinen

passenden FUBA den ich aufrufen könne.

Oder ist das der komplett falsche Ansatz den ich da

versuche?

Wäre super dankbar wenn mir jemand helfen könnte.

HILFEEEEE!!!

Hallo,

es gibt Programmen, welche ihre Listausgabe zusätzlich in das SAP-memory (dies ist ein Hauptspeicherbereich des SAP) stellen. Nur wenn so eine Liste exportiert wurden könne die Listen auch wieder ausgelesen werden.

Ich hoffe, dass diese erste Hildfe etwas weiterhelfen konnte.

Viele Grüße
Karsten

Hi du,

eventuell ist das Problem, dass bei Export to Memory die entsprechende Variable den gleichen Namen haben wie die Variable, die im empfangen Programm den Memoryinhalt aufnimmt.

Warum das so sein, muss ich zwar nicht, aber hatte ich in der Praxis rausgefunden.

Ansonsten habe ich auch keine Idee so von der Ferne.

Viel Erfolg, René

Hallo Pobak,
ich weiß ja nicht was Du da im Detail tust, ich weiß aber das es geht. Eine Vorausseztung ist (hast Du nicht beachtet) ein AND RETURN hinter dem Export list to memory.

Weiter kann die Liste (aufgerufener Report) mit call function ‚SAVE_LIST‘ in ein Listobjekt gebracht werden und dann mit EXPORT in die Datenbank geschrieben. Von Dort kann per Import im rufenden Report die geholt und mit WRITE_LIST ausgegeben werden.

Viel Erfolg

Hallo,

bin Student und muss innerhalb eines Studienprojektes die
Ausgabe mehrerer Reports und Transaktionen
zur längeren Auswertung in eine externe Datenbank speichern.
Leider bin ich noch relativ neu in der ABAP Welt.

Die anbindung an eine externe Datenbank klappt so weit ganz
gut, konnte auch schon mehrere Reports und Transaktionen
bzw. die Funktionsbausteine die dahinterstehen aufrufen und
die Daten kopieren.

Entweder über CALL FUNCTION mit Übegergabe der Tabelle oder
wenn es sich um ein ausführbares Programm
handelte über SUBMIT EXPORTING LIST TO MEMORY.

Leider funktioniert das nicht bei allen ausführbaren Reports
(Typ 1), wieso bleibt mit ein Rätsel.

Ganz einfach: Sobald eine Liste erzeugt wird, funktioniert’s. Wenn ein Dynpro angezeigt wird, wie in BD87, kann LIST_FROM_MEMORY nichts zurückgeben.

Gerade versuche ich die Transaktion „BD87“ bzw. den Report
„RBDMON00“ auszulesen,
aber irgendwie wird diesmal nichts in die Liste geschrieben,
da das Programm immer bei LIST_FROM_MEMORY mit
der Exeption NOT FOUND abbricht. Leider finde ich auch keinen
passenden FUBA den ich aufrufen könne.

Oder ist das der komplett falsche Ansatz den ich da versuche?

In dem Fall ja: Du musst schauen, was für Daten gelesen werden und diese dann ggfs. aus den Tabellen oder mithilfe von Funktionsbausteinen auslesen. Debugger /h, SQL-Trace ST05 oder Laufzeitanalyse SE30 können helfen.

Wäre super dankbar wenn mir jemand helfen könnte.

HILFEEEEE!!!

Vielen Dank für die Hilfe.
Wie gesagt bin noch reltiv neu in der ABAP-Welt. Das ein Dynpro nicht in eine Liste Kopiert wird verstehe ich mittlerweile. Aber wie sieht es mit den Tabellen aus die ich durch Doppelklick aus Transaktion BD87 heraus erhalte zum Beispiel „IDoc entriesf in tRFC queue“?

Ich finde auch irgendwie keinen passenden FB, aber irgendwie muss man doch an die Daten kommen können.

Vielleicht fällt dir noch etwas ein.

Vielen Dank für die Hilfe.
Wie gesagt bin noch reltiv neu in der ABAP-Welt. Das ein Dynpro nicht in eine Liste Kopiert wird verstehe ich mittlerweile. Aber wie sieht es mit den Tabellen aus die ich durch Doppelklick aus Transaktion BD87 heraus erhalte zum Beispiel „IDoc entriesf in tRFC queue“?

Ich finde auch irgendwie keinen passenden FB, aber irgendwie muss man doch an die Daten kommen können.

Vielleicht fällt dir noch etwas ein…

Vielen Dank für die Hilfe.
Wie gesagt bin noch reltiv neu in der ABAP-Welt.
Könntest du mir ein Beispiel machen, wie und wann SAVE_LIST ausgeführt werden kann.

Oder kennst du eine andere Methode wie ich die Tabellen auslesen könnte die ich durch Doppelklick aus Transaktion BD87 heraus erhalte zum Beispiel „IDoc entriesf in tRFC queue“?

Ich finde auch irgendwie keinen passenden FB, aber irgendwie muss man doch an die Daten kommen können.

Vielleicht fällt dir noch etwas ein.

Vielen Dank für die Hilfe.

Gerne!

Wie gesagt bin noch reltiv neu in der ABAP-Welt. Das ein
Dynpro nicht in eine Liste Kopiert wird verstehe ich
mittlerweile. Aber wie sieht es mit den Tabellen aus die ich
durch Doppelklick aus Transaktion BD87 heraus erhalte zum
Beispiel „IDoc entriesf in tRFC queue“?

Das sind alles Daten, die in der Transaktion ermittelt und ausgelesen werden. Die kann man nicht einfach „irgendwohin zaubern“.

Ich finde auch irgendwie keinen passenden FB, aber irgendwie
muss man doch an die Daten kommen können.

Kommt man auch. Wie gesagt:

  • Debugging: Du kannst vor Doppelklick auf einen Eintrag den Debugger mit /h einschalten und dann z.b. bei Anweisung „SELECT“ oder „CALL FUNCTION“ Breakpoints setzen.
  • F1: Wenn du die Hilfe für ein Feld aufrufst, dann kommst du häufig auch an die Tabelle. Oft ist es aber auch eine Struktur, dann muss man eben anders weiter suchen.

Vielleicht fällt dir noch etwas ein.

data ilist like abaplist occurs 50.

call function ‚SAVE_LIST‘
exporting
list_index = ‚0‘
tables
listobject = ilist
exceptions
list_index_invalid = 1
others = 2.
if sy-subrc 0.
free memory id ‚ZSLH‘.
refresh ilist.
export ilist to database indx(z1) id ‚ZSLH‘.
write: ‚Druckliste konnte nicht abgelegt werden.‘.
exit.
else.
export ilist to database indx(z1) id ‚ZSLH‘.
endif.

Zum Ausgeben dann
import ilist from database indx(z1) id ‚ZSLH‘.
if sy-subrc 0.
write:/ 'Fehler bei ilist from Database ', sy-subrc.
else.
call function ‚WRITE_LIST‘
tables
listobject = ilist
exceptions
empty_list = 1
others = 2.
endif.
if sy-subrc ne 0.
Write: / ‚Fehler bei Write_list‘.
endif.

Wenn Du neu in der ABAP-Welt bist, dann würde ich doch nicht gleich unbedingt mit den schwierigsten Dingen anfangen.
Ich habe mir kurz angeschaut was die BD87 für eine Transaktion ist. Damit dann die ALE-Schnittstelle überwacht werden. Da hier keine einfachen Listen erstellt werden, sondern table-control-ausgaben, glaube ich nicht, das diese Programme Listen in das SAP-Memory schreiben. Um diese vom Report angezeigten Daten in eine externe DB zu bringen musst Du Dir selber ein Programm schreiben, welche die Daten aus den entsprechenden Tabellen ausliest. Die ALE-Schnittstelle ich meiner Meinung nach nicht das geeignete Übungsobjekt für ABAP-Anfänger.

Viele Grüße
Karsten

Hallo,

Sorry, bin mit meiner Antwort sehr spät aber ich habe zur Zeit extrem viel Streß.

Zur Frage:
Der Report hinter der BD87, der RBDMON00, ist eigentlich kein ausführbarer Report (Typ 1) sondern ein Modulpool.

Er ist also nicht nur als Dialogprogramm ausführbar.

Wenn das Problem noch akut ist, schick mir mal etwas von Deinem Coding. Vielleicht finde ich dann noch was. Kann aber etwas dauern.

Gruß
Christian