Hier ein kurzes Programm (aus fremder Feder) zum setzen der Userparameter.
Eine Auswahltabelle wird gefüllt.
Abhängig von den vorhandenen Userparametern wird die aktuelle Einstellung ausgewählt.
Die Auswahl wird aufgerufen.
Abhängig von der Auswahl werden die Parameter gesetzt.
*&---------------------------------------------------------------------*
*& Report ZZSET_USRVARS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zzset_usrvars.
DATA: BEGIN OF spopli OCCURS 15.
INCLUDE STRUCTURE spopli.
DATA: END OF spopli.
DATA: antwort TYPE c,
werks TYPE werks_d,
lgnum TYPE lgnum,
hstr TYPE string,
line TYPE i.
spopli-varoption = 'Freilassing(Log.)/FRL/ZL1'. APPEND spopli.
spopli-varoption = 'Freilassing(Prod.)/FRL/100'. APPEND spopli.
spopli-varoption = 'Haagen/HIB/HI1'. APPEND spopli.
spopli-varoption = 'Schweiz/CH10/CH1'. APPEND spopli.
spopli-varoption = 'Sittensen/SIT/SI1'. APPEND spopli.
SELECT SINGLE parva INTO werks FROM usr05 WHERE bname = sy-uname AND parid = 'WRK'.
SELECT SINGLE parva INTO lgnum FROM usr05 WHERE bname = sy-uname AND parid = 'LGN'.
hstr = '/' && werks.
IF lgnum IS NOT INITIAL.
hstr = hstr && '/' && lgnum.
ENDIF.
LOOP AT spopli WHERE varoption CS hstr.
line = sy-tabix.
EXIT.
ENDLOOP.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
cursorline = line
titel = 'Benutzerparameter setzen,'
textline1 = 'wählen Sie das richtige Werk'
* TEXTLINE2 = ' '
start_col = 5
start_row = 3
IMPORTING
answer = antwort
TABLES
t_spopli = spopli
EXCEPTIONS
too_much_answers = 1
too_much_marks = 2.
IF sy-subrc = 2.
WRITE: 'Zu viele Antworten wurden markiert.'.
RETURN.
ENDIF.
IF antwort = 'A'.
* WRITE: 'Das Popup wurde abgebrochen.'.
RETURN.
ENDIF.
WRITE: 'Folgende Einstellung wurde gesetzt:'.
LOOP AT spopli WHERE selflag = 'X'.
SPLIT spopli-varoption AT '/' INTO hstr werks lgnum.
WRITE: / hstr, / 'Werk(WRK)=' , werks, / 'Lagernummer(LGN,MLV)=' , lgnum.
PERFORM update_insert USING 'WRK' werks.
PERFORM update_insert USING 'LGN' lgnum.
PERFORM update_insert USING 'MLV' lgnum.
COMMIT WORK AND WAIT.
EXIT.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form update_insert
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->VALUE text
* -->(PARID) text
* -->VALUE text
* -->(PARVA) text
*----------------------------------------------------------------------*
FORM update_insert USING value(parid) TYPE usr05-parid
value(parva) TYPE clike.
DATA: s_usr05 TYPE usr05.
s_usr05-parid = parid.
s_usr05-parva = parva.
s_usr05-bname = sy-uname .
set parameter id parid field parva.
UPDATE usr05 FROM s_usr05.
IF sy-subrc <> 0.
INSERT INTO usr05 VALUES s_usr05.
IF sy-subrc <> 0.
MESSAGE 'Fehler beim update' TYPE 'E'.
ENDIF.
ENDIF.
ENDFORM.