Variante bei Programmstart automatisch laden
Einige Programme lassen sich leichter bedienen, wenn für einen Benutzer automatisch eine bestimmte Variante geladen wird. Dies kann zum Beispiel anhand einer Namenskonvention geschehen (UV_SCHMIDT: Uservariante für den Benutzer SCHMIDT) oder anhand eines Parameters im Benutzerstammsatz.
Im folgenden Beispielprogramm wird beim Programmstart die benutzerspezifische Variante gezogen.
Wir benutzen dazu den Funktionsbaustein RS_COVERPAGE_SELECTIONS.
In der Tabelle T_INFO stehen die Selektionsparameter ausgabebereit aufbereitet. Laut Dokumentation macht der Baustein auch nichts anderes. Tatsächlich lädt er aber die Daten aus der Variante in das aktuelle Selektionsbild.
REPORT zzvariante.
DATA:
l_report TYPE raldb_repo,
l_variante TYPE raldb_vari,
BEGIN OF t_info OCCURS 0,
typ(1),
null(1),
line(120),
END OF t_info.
PARAMETERS:
p1(10),
p2(20).
INITIALIZATION.
l_report = sy-repid.
CONCATENATE 'UV_' sy-uname INTO l_variante.
CALL FUNCTION 'RS_COVERPAGE_SELECTIONS'
EXPORTING
report = l_report
variant = l_variante
TABLES
infotab = t_info
EXCEPTIONS
OTHERS = 3.
Wiederverwendbarkeit
Wenn man nun die Hauptlogik in eine Klasse verfrachtet, dann kannst du die Funktionalität sehr einfach mit einem einfachen Methodenaufruf einbinden:
INITIALIZATION.
zcl_report_tools=>load_user_variant( ).
Klasse
CLASS zcl_report_tools DEFINITION.
PUBLIC SECTION.
CLASS-METHODS load_user_variant.
ENDCLASS.
CLASS zcl_report_tools IMPLEMENTATION.
METHOD load_user_variant.
TYPES: BEGIN OF _info,
typ(1),
null(1),
line(120),
END OF _info.
DATA t_info TYPE STANDARD TABLE OF _info.
CALL FUNCTION 'RS_COVERPAGE_SELECTIONS'
EXPORTING
report = sy-repid
variant = CONV raldb_vari( |U_{ sy-uname }| )
TABLES
infotab = t_info
EXCEPTIONS
OTHERS = 3.
IF sy-subrc = 0.
MESSAGE 'Benutzervariante wurde geladen' TYPE 'S'.
ENDIF.
ENDMETHOD.
ENDCLASS.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024