Hallo Leute,
ich bin ziemlich neu in der ABAP-Welt. Hatte bis jetzt 2 Tageskurse und bin inzwischen soweit dass ich dank der schicken Vorlage die wir uns dort erarbeitet haben kleinere bis mittlere Reports schreiben kann.
Sitze gerade an einem Report, der soweit auch fertig ist, doch ich hätte noch gerne, dass es möglich ist im Selektionsbildschirm ein bestimmtes Layout auszuwählen welches nach dem Ausführen des Reports gezogen wird.
Ich bin bereits soweit, dass ich über die F4-Hilfe die bestehenden Layouts auswählen kann, doch das ausgewählte Layout wird nicht gezogen (keine Werte übergeben) und der Report wird "ohne" Layout durchgeführt.
Hab mich schon eine Weile mit dem Thema beschäftigt und ich denke ich brauche den richtigen FuBa um das Layout zu übergeben. Doch beim Thema FuBa ging uns die Zeit etwas aus bei der Schulung, dadurch bin ich da noch gar nicht fit...
Hab mir auch bereits andere Reports rausgesucht wo es die Layout-Funktion gibt und mir dort das Coding kopiert (wodurch ich wie gesagt zumindest die F4-Hilfe aufrufen kann) doch dann ist Endstation.
Bin mir jetzt nicht so ganz sicher was ihr alles an Coding von mir braucht um mir weiterzuhelfen, aber ich probiers mal:
Das sind die Daten, welche ich vom anderen Programm zu meinem bestehenden hinzukopiert habe:
DATA: layout TYPE slis_layout_alv.
DATA: variant LIKE disvariant.
DATA: alv_repid LIKE sy-repid.
DATA: alv_variant LIKE disvariant.
DATA: field_tab TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: slis_t_event TYPE slis_t_event.
DATA: slis_alv_event TYPE slis_alv_event.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
PARAMETERS:
p_varia TYPE disvariant-variant.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_for_variant.
PERFORM init_variant.
FORM f4_for_variant.
DATA: i_variant LIKE disvariant,
e_variant LIKE disvariant.
i_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = i_variant
i_save = 'A'
IMPORTING
es_variant = e_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE s205(0k).
ELSE.
p_varia = e_variant-variant.
ENDIF.
ENDFORM.
FORM init_variant.
CLEAR variant.
variant-report = sy-repid.
IF NOT p_varia IS INITIAL.
MOVE p_varia TO variant-variant.
ENDIF.
ENDFORM.
Ich verwende in meinem Report den "alv_9000" mit der FORM: "init_9000", hier sind bereits etliche Sachen deklariert (Feldkatalog, Events,...):
Auszug aus der init_9000-Form:
FORM init_9000.
DATA: gs_variant TYPE disvariant,
gs_layout TYPE lvc_s_layo,
x_save,
it_fcat TYPE lvc_t_fcat,
st_fcat TYPE lvc_s_fcat,
t_repid TYPE syrepid,
t_dynnr TYPE sydynnr,
t_exten TYPE i,
lv_title(70) TYPE c,
lv_datum(10) TYPE c,
lv_time(8) TYPE c.
PERFORM get_datum CHANGING lv_datum
lv_time
lv_title.
SET TITLEBAR 'ALV' WITH lv_title.
IF cc_alv IS INITIAL.
* Control erstellen
* Layout sichern ermöglichen
gs_variant-report = sy-repid.
x_save = 'A'.
* Alternierende Farben im Grid
gs_layout-zebra = 'X'.
* Spaltenbreite optimieren
gs_layout-cwidth_opt = 'X'.
* Zeilenmarkierung
gs_layout-sel_mode = 'A'.
* Custom Control
t_repid = sy-repid.
t_dynnr = '9000'.
t_exten = 3000.
IF sy-batch IS INITIAL.
CREATE OBJECT cc_alv
EXPORTING
repid = t_repid
dynnr = t_dynnr
extension = t_exten.
ENDIF.
* ALV List Viewer
CREATE OBJECT grid_r
EXPORTING
i_parent = cc_alv.
Wie gesagt vermute ich, dass ich nun noch einen FuBa brauche, nur tue ich mir schwer welchen und wie ich ihn dann füllen muss, damit das Layout dann auch wirklich übergeben wird.
Folgende habe ich dazu bereits gefunden und ohne Erfolg (ws. aufgrund falscher Befüllung) ausprobiert:
- 'REUSE_ALV_GRID_DISPLAY
- 'REUSE_ALV_GRID_DISPLAY_LVC'
- F4IF_INT_TABLE_VALUE_REQUEST
Meine "Haupttabelle" in die ich alle Daten des Reports einlese heißt: gt_data.
Vielen Dank schon mal an jeden der sich die Mühe macht sich das Ganze durchzulesen.
Ich hoffe ich konnte mich verständlich ausdrücken. Falls noch weitere Informationen benötigt werden bitte einfach bescheid geben.
Lg Gabriel