[ABAP] Eigene SET/GET-Parameter-ID im Programm verwenden

Oft ist es hilfreich, wenn man sich eigene Parameter festlegen kann, über die man in einem Programm Funktionen steuert.

Anlegen eines Parameters

  • SE80 -> Paket -> Rechtsklick -> Anlegen -> Weitere (1) -> SET/GET-Parameter-ID
  • Parameter-ID (z.B. ‚ZADM_SHOW_PARAMS‘) und Kurzbeschreibung eingeben

Wert für Parameter setzen

  • SU3 -> Reiter „Parameter“
  • Set-/Get-Parameter-Id: zuvor angelegten Parameter (z.B. ‚ZADM_SHOW_PARAMS‘) auswählen
  • Parameterwert: beliebigen Wert zur späteren Auswertung eintragen, z.B. ‚X‘

Werte werden in folgenden Tabelle abgelegt

  • TPARA (Verzeichnis der Memory-Id’s (vorlaeufig))
  • TPARAT (Kurztexte zu den Memory-Id’s)
  • USR05 (Benutzerstamm Parameter-ID)

Auslesen eines Parameters im Code

* Konstante für angelegten Parameter 'ZADM_SHOW_PARAMS'
CONSTANTS: co_parameter_id TYPE usr05-parid VALUE 'ZADM_SHOW_PARAMS'.

* Parameter mit einer Modifikationsgruppe namens 'ADM'
PARAMETERS: p_matnr TYPE matnr MODIF ID adm.
PARAMETERS: p_bukrs TYPE bukrs MODIF ID adm.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN INTO DATA(lv_scr).
* Name der Modifikationsgruppe ermitteln
    CASE lv_scr-group1.
* wenn in Modifikationsgruppe 'ADM'
      WHEN 'ADM'.
* Wert vorbelegen
        DATA(lv_adm_show_params) = CONV usr05-parva( abap_false ).

* Benutzerparameter lesen, muss in Tabelle TPARA enthalten sein
        GET PARAMETER ID co_parameter_id FIELD lv_adm_show_params.
* wenn Parameter vorhanden
        IF sy-subrc = 0.
* anhand des Benutzerparameters die Anzeige der Modifikationsgruppe namens 'ADM' aktivieren / deaktivieren
          lv_scr-active = COND #( WHEN lv_adm_show_params = abap_true THEN '1' ELSE '0' ).
* Adminparameter zur Info als hervorgehoben darstellen
          lv_scr-intensified = 1.
        ENDIF.
    ENDCASE.

* geänderte Anzeigewerte setzen
    MODIFY screen FROM lv_scr.
  ENDLOOP.

Links

[ABAP] Selektionsbildschirm: Auf Änderung der Auswahl in einer Listbox reagieren (OnChange-Ereignis)

* Type für Listbox-Inhalt
TYPES: ty_it_listbox TYPE STANDARD TABLE OF vrm_value WITH DEFAULT KEY.

* Merker für Kommando für ListBox-Change
DATA: lv_ucomm TYPE sy-ucomm.
      
* Listbox auf dem Selektionsbild mit Kommando LB_CHG
* TYPE / Länge des Typs hat Einfluss auf key
PARAMETERS: p_lst TYPE char1 AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND lb_chg.

INITIALIZATION.
* Listbox vorbelegen
  DATA(it_lb) = VALUE ty_it_listbox( ( key = 'A' text = 'Punkt 1' )
                                     ( key = 'B' text = 'Punkt 2' )
                                     ( key = 'C' text = 'Punkt 3' ) ).

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'P_LST'
      values          = it_lb
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

* Vorselektion
  IF lines( it_lb ) > 0.
    p_lst = p_lst[ 1 ]-key.
  ENDIF.

AT SELECTION-SCREEN.
* hier das User-Kommando merken
  lv_ucomm = sy-ucomm.

  IF sy-ucomm EQ 'LB_CHG'.
    ...
  ENDIF.
  
AT SELECTION-SCREEN OUTPUT.
* bei Ausgabe auf das gemerkte User-Kommando reagieren
  CASE lv_ucomm.
    WHEN 'LB_CHG'.
      LOOP AT SCREEN INTO DATA(wa).
        ...
        MODIFY SCREEN FROM wa.
      ENDLOOP.
  ENDCASE.