Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Optionen
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline abeape  
#1 Geschrieben : Mittwoch, 27. März 2019 21:15:55(UTC)
abeape

Beiträge: 2
Germany
Hallo zusammen,

ich stehe vor folgender Herausforderung:
Aus dem Report A sollen die Reports B, C und D aufgerufen werden.
In bestimmten Fällen soll der Aufruf sofort geschehen, in anderen, durch eine Einplanung als Job zu einem späteren Zeitpunkt.
Bei Report A gibt der Anwender einige Selektionen auf dem Selektionsbildschirm an, darunter eine SELECT-OPTIONS und einige PARAMETER. Die dortigen Eingaben sollen in an die Reports B, C und D weitergegeben werden (z.B. SELECT-OPTIONS Report A an SELECT-OPTIONS Report B).
Wie ich es bei Soforaufruf mache, ist erstmal klar.
Wenn ich die Ausführung der Reports B, C und D als Job einplanen möchte, nutze ich die Bausteine JOB_OPEN, JOB_SUBMIT und JOB_CLOSE. Bei JOB_SUBMIT habe ich die Möglichkeit Parameter für den aufzurufenden Report mitzugeben. Jetzt stehe ich allerdings vor folgendem Problem:
Wie kann ich die Werte aus der SELECT-OPTIONS mitgeben, deren Ranges-Tabelle über 1000 Werte beinhalten könnte?

Ein Workaround wäre, die Werte aus der SELECT-OPTION in eine eigens definierte Tabelle zu schreiben, aus der die Daten von den verschiedenen Reports gelesen und weiter verarbeitet werden könnten. Aber gibt es da vielleicht eine elegantere und vor allem performantere Lösung?

Vielen Dank und viele Grüße

Bearbeitet vom Benutzer Mittwoch, 27. März 2019 21:30:32(UTC)  | Grund: Nicht angegeben

Nehmen Sie an dieser Diskussion teil! SAP FORUM - SAP Community LoginHier registrieren.

Offline wreichelt  
#2 Geschrieben : Donnerstag, 28. März 2019 11:47:07(UTC)
wreichelt

Beiträge: 1,837
Hallo,

nutzt ihr keine Varianten zur Jobeinplanung ? Wenn die Varianten für die Jobs gepflegt ist können die Reports
doch mit den gleichen Selektionsbedingungen starten

Gruß Wolfgang
Offline abeape  
#3 Geschrieben : Donnerstag, 28. März 2019 12:49:40(UTC)
abeape

Beiträge: 2
Germany
Zitat von: wreichelt Gehe zum zitierten Beitrag
Hallo,

nutzt ihr keine Varianten zur Jobeinplanung ? Wenn die Varianten für die Jobs gepflegt ist können die Reports
doch mit den gleichen Selektionsbedingungen starten

Gruß Wolfgang


Hallo Wolfgang,

erstmal vielen Dank für die Antwort.

Unter Variante verstehe ich vorher definierte Werte. Da die Selektion im rufenden Programm immer unterschiedlich ausfällt (und diese zum gerufenen Programm übergeben werden müssen), kann ich den Nutzen einer Variante nicht erkennen - oder fasse ich eine Variante falsch auf?

Ich denke aber, dass ich eine mögliche Lösung gefunden habe (muss ich noch testen):

Für die Ausführung als Hintergrundjob (zu einem späteren Zeitpunkt) würde ich statt des FuBa JOB-SUBMIT die Anweisung SUBMIT nutzen, wo ich ja auch Selektionsoptionen (Ranges-Tabelle) übergeben und zuderm den Zusatz VIA JOB nutzen kann. Die Aufrufe von JOB_OPEN und JOB_CLOSE finden drumherum weiterhin statt.

Viele Grüße
Offline Horst_1959  
#4 Geschrieben : Montag, 29. April 2019 10:06:29(UTC)
Horst_1959

Beiträge: 5
Moin,

habe für so was eine Puffertabelle 'ZNEWINDX' und ein paar eigene Objekte, aber es ist kein Wunderwerk wenn man es nachbauen mag. Man muss auch keine Objekte haben, es geht auch ohne OO.

Bei SEL_START muss man die eigenen Selektionsvariablen bedienen. Das ganze kann hier nur als Beispiel dienen!
Und SAVE_LAST_SELECTION macht das was der Name verspricht. Zumindest dann, wenn man keine Variante benutzt hat!

Hoffe es hilft weiter.

HK


Lesen und Schreiben der Selektion ( unter USERNAME und REPID!)

*&---------------------------------------------------------------------*
*& Form SEL_START
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sel_start .

FIELD-SYMBOLS : <lfs_select> TYPE rsparams.

IF o_new_persistent IS INITIAL.
o_new_persistent = zcl_new_persistent=>create( ).
ENDIF.

DEFINE fill_seltab.
&1-SIGN = <lfs_select>-SIGN.
&1-option = <lfs_select>-option.
&1-low = <lfs_select>-low.
&1-high = <lfs_select>-high.
APPEND &1 TO &1.
END-OF-DEFINITION.


*----- Nutzerspezifische Werte
CONCATENATE sy-repid sy-uname INTO puffer_id.
*----- nicht aus dem memory holen!
DELETE FROM SHARED BUFFER znewindx(hk) ID puffer_id.

CALL METHOD o_new_persistent->read_object
EXPORTING
e_srtfd = puffer_id
IMPORTING
i_object = ta_select
i_error = error.
IF NOT o_new_persistent IS INITIAL.
CLEAR o_new_persistent.
ENDIF.

CHECK NOT ta_select[] IS INITIAL.
LOOP AT ta_select ASSIGNING <lfs_select>.
CASE <lfs_select>-selname.
*----- Tabellen

*----- Zeitraum abgrenzen
WHEN 'SO_GSTRP'.
fill_seltab so_gstrp.
*----- Werk
WHEN 'SO_WERKS'.
fill_seltab so_werks.
*----- Arbeitsplatz
WHEN 'SO_ARBPL'.
fill_seltab so_arbpl.
**----- Memory-Optimierte Liste
* WHEN 'P_KURZ'.
* IF g_dau_user = abap_false.
* p_kurz = <lfs_select>-low.
* ELSE.
* p_kurz = abap_true.
* ENDIF.
*----- Parameter Steuerung
WHEN 'P_PLUSM'.
p_plusm = <lfs_select>-low.
WHEN 'P_MINUS'.
p_minus = <lfs_select>-low.
WHEN 'P_FORM'.
p_form = <lfs_select>-low.
WHEN 'P_CLOCK'.
p_clock = <lfs_select>-low.
WHEN 'P_PRODI'.
p_prodi = <lfs_select>-low.
*----- GLEICHTEILE
WHEN 'P_1001'.
p_1001 = <lfs_select>-low.
WHEN 'P_1002'.
p_1002 = <lfs_select>-low.
WHEN 'P_1003'.
p_1003 = <lfs_select>-low.
WHEN 'P_2001'.
p_2001 = <lfs_select>-low.
WHEN 'P_2002'.
p_2002 = <lfs_select>-low.
WHEN 'P_2003'.
p_2003 = <lfs_select>-low.
WHEN 'P_3001'.
p_3001 = <lfs_select>-low.
WHEN 'P_3002'.
p_3002 = <lfs_select>-low.
WHEN 'P_3003'.
p_3003 = <lfs_select>-low.
WHEN 'P_4001'.
p_4001 = <lfs_select>-low.
WHEN 'P_4002'.
p_4002 = <lfs_select>-low.
WHEN 'P_4003'.
p_4003 = <lfs_select>-low.
* p_5001 existiert nicht
WHEN 'P_5002'.
p_5002 = <lfs_select>-low.
WHEN 'P_5003'.
p_5003 = <lfs_select>-low.
WHEN OTHERS.
ENDCASE.
ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form
Code:
SAVE_LAST_SELECTION

*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM save_last_selection.

DATA : l_wa TYPE znewindx.


CHECK sy-slset IS INITIAL. " Nur wenn keine Variante genutzt wurde
CLEAR l_wa.
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = sy-repid
* IMPORTING
* SP =
TABLES
selection_table = ta_select
EXCEPTIONS
not_found = 1
no_report = 2
OTHERS = 3.
IF sy-subrc <> 0.
RETURN.
ENDIF.
*----- Immer auf die Platte
CONCATENATE sy-repid sy-uname INTO puffer_id.
CALL FUNCTION 'ENQUEUE_EZNEWINDX'
EXPORTING
mode_znewindx = 'E'
mandt = sy-mandt
relid = 'hk'
srtfd = puffer_id
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc = 0.
DELETE FROM DATABASE znewindx(hk) ID puffer_id.
COMMIT WORK AND WAIT.
l_wa-aedat = sy-datum.
l_wa-usera = sy-uname.
l_wa-pgmid = sy-repid.
EXPORT l_wa FROM ta_select TO DATABASE znewindx(hk)
ID puffer_id
FROM l_wa
COMPRESSION ON.
COMMIT WORK AND WAIT.
CALL FUNCTION 'DEQUEUE_EZNEWINDX'
EXPORTING
mode_znewindx = 'E'
mandt = sy-mandt
relid = 'hk'
srtfd = puffer_id.
ENDIF.

ENDFORM.




Benutzer, die gerade dieses Thema lesen
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

- Impressum / Datenschutz -