Code: Alles auswählen.
TYPE-POOLS: rsdg, slis.
TABLES: rsrparametrizat.
DATA: it_variant TYPE STANDARD TABLE OF rsrparametrizat.
DATA int_fcat2 TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA int_fcat TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF line,
langu TYPE langu,
paramnm TYPE rsparamnm,
objvers TYPE rsobjvers,
txtsh TYPE rstxtsh,
txtmd TYPE rstxtmd,
txtlg TYPE rstxtlg,
END OF line.
SELECTION-SCREEN BEGIN OF SCREEN 600.
" PARAMETERS p_param TYPE rsparamnm OBLIGATORY.
"PARAMETERS p_param LIKE rsrparametrizat-paramnm.
PARAMETERS p_langu LIKE rsrparametrizat-langu OBLIGATORY.
PARAMETERS: cb_all AS CHECKBOX DEFAULT rs_c_false.
"PARAMETERS p_txt TYPE rstxtlg.
"SELECTION-SCREEN END OF SCREEN 500.
SELECTION-SCREEN END OF SCREEN 600.
CALL SELECTION-SCREEN 600.
IF cb_all = rs_c_false.
SELECT *
FROM rsrparametrizat
INTO CORRESPONDING FIELDS OF TABLE it_variant
WHERE langu = 'DE'
AND paramnm LIKE 'Z%'
AND objvers = 'A'.
"AND txtlg = ''. "nur nicht übersetzte anzeigen
* variante existiert nur in DE nicht in EN -> n. übers.
ENDIF.
IF cb_all = rs_c_true.
SELECT *
FROM rsrparametrizat
INTO CORRESPONDING FIELDS OF TABLE it_variant
WHERE langu = p_langu
AND paramnm LIKE 'Z%'
AND objvers = 'A'.
ENDIF.
int_fcat2-fieldname = 'LANGU'.
int_fcat2-seltext_m = 'Sprache'.
int_fcat2-col_pos = 1.
APPEND int_fcat2 TO int_fcat.
CLEAR int_fcat2.
int_fcat2-fieldname = 'PARAMNM'.
int_fcat2-seltext_m = 'Variante'.
int_fcat2-col_pos = 1.
APPEND int_fcat2 TO int_fcat.
CLEAR int_fcat2.
int_fcat2-fieldname = 'OBJVERS'.
int_fcat2-seltext_m = 'Objektversion'.
int_fcat2-col_pos = 1.
APPEND int_fcat2 TO int_fcat.
CLEAR int_fcat2.
int_fcat2-fieldname = 'TXTSH'.
int_fcat2-seltext_m = 'Beschreibung kurz'.
int_fcat2-col_pos = 1.
APPEND int_fcat2 TO int_fcat.
CLEAR int_fcat2.
int_fcat2-fieldname = 'TXTMD'.
int_fcat2-seltext_m = 'Beschreibung mittel'.
int_fcat2-col_pos = 1.
APPEND int_fcat2 TO int_fcat.
CLEAR int_fcat2.
int_fcat2-fieldname = 'TXTLG'.
int_fcat2-seltext_m = 'Beschreibung lang'.
int_fcat2-col_pos = 1.
APPEND int_fcat2 TO int_fcat.
CLEAR int_fcat2.
*LOOP AT it_variant INTO line.
* WRITE: / line-langu, line-paramnm, line-txtlg, line-objvers.
*ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = int_fcat
TABLES
t_outtab = it_variant
EXCEPTIONS
program_error = 1
OTHERS = 2. Code: Alles auswählen.
DATA: lt_rsrparametrizat TYPE TABLE OF rsrparametrizat,
ls_rsrparametrizat TYPE rsrparametrizat,
langu TYPE langu.
PARAMETERS p_param LIKE rsrparametrizat-paramnm.
PARAMETERS p_txt TYPE rstxtlg.
PARAMETERS sprache LIKE rsrparametrizat-langu OBLIGATORY.
START-OF-SELECTION.
SELECT SINGLE *
FROM rsrparametrizat
INTO ls_rsrparametrizat
WHERE langu = sprache
AND paramnm = p_param
AND objvers = 'A' .
ls_rsrparametrizat-langu = sprache.
ls_rsrparametrizat-paramnm = p_param.
ls_rsrparametrizat-objvers = 'A'.
ls_rsrparametrizat-txtlg = p_txt.
MODIFY rsrparametrizat FROM ls_rsrparametrizat.
CALL FUNCTION 'DB_COMMIT'.
IF sy-subrc IS INITIAL.
WRITE: 'Update erfolgreich'.
SKIP.
WRITE: / p_param,
p_txt,
sprache.
ENDIF. Code: Alles auswählen.
DELETE it_variant WHERE paramnm NE '!PERS*'.definier das Feld paramnm als SELECT-OPTIONS, dann kannst du bei der Selektion bequem mit Mustern arbeiten:Problem 1 (Ausgabe Programm):
Die Ausgabe soll nur Werte enthalten, welche nicht !PERS* enthalten.
Code: Alles auswählen.
SELECT-OPTIONS: o_paramnm for rsrparametrizat-paramnm.
SELECT *
FROM rsrparametrizat
INTO CORRESPONDING FIELDS OF TABLE it_variant
WHERE langu = 'DE'
AND paramnm IN o_paramnm "<--- die auszuschliessenden Werte gibst du in dem Selektionsbild in der Mehrfachselektion vor
AND objvers = 'A'.
wo ist denn hier der Unterschied? Wird überhaupt etwas aus der Tabelle selektiert? Hast du dir das im Debugger angeschaut?Problem 2 (Ausgabe Programm):
Die beschreibung lang wird gar nicht angezeigt, bei der kurzen bescheibung stehen keine Werte.?
Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
holderda