Code: Alles auswählen.
FORM edit_student.
DATA: lt_fields TYPE STANDARD TABLE OF sval,
ls_fields TYPE sval,
lv_returncode(1) TYPE c.
*&---------------------------------------------------------------------*
* lokale Variablen für Studentendaten
*&---------------------------------------------------------------------*
DATA lv_zmatrnr TYPE zadc_t_student-zmatrnr.
DATA lv_zsname TYPE zadc_t_student-zsname.
DATA lv_zsvorname TYPE zadc_t_student-zsvorname.
DATA lv_zsstudiengang TYPE zadc_t_student-zsstudiengang.
* lokale variablen
DATA lt_rows TYPE lvc_t_row.
DATA ls_row TYPE lvc_s_row.
clear lt_rows.
free ls_row.
*&---------------------------------------------------------------------*
* Methode zur Zeilenselektion
*&---------------------------------------------------------------------*
CALL METHOD grid_r->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
* et_row_no =
* SORT lt_rows BY index DESCENDING.
CLEAR wa_studenten.
LOOP AT lt_rows INTO ls_row.
READ TABLE it_studenten INTO wa_studenten INDEX ls_row-index .
ENDLOOP.
lv_zmatrnr = wa_studenten-zmatrnr.
lv_zsname = wa_studenten-zsname.
lv_zsstudiengang = wa_studenten-zsstudiengang.
lv_zsvorname = wa_studenten-zsvorname.
ls_fields-tabname = 'ZADC_T_STUDENT'.
ls_fields-fieldname = 'ZSVORNAME'.
ls_fields-fieldtext = 'Vorname'.
ls_fields-field_obl = 'X'.
ls_fields-value = lv_zsvorname.
APPEND ls_fields TO lt_fields.
CLEAR ls_fields.
ls_fields-tabname = 'ZADC_T_STUDENT'.
ls_fields-fieldname = 'ZSNAME'.
ls_fields-fieldtext = 'Nachname'.
ls_fields-field_obl = 'X' .
ls_fields-value = lv_zsname.
APPEND ls_fields TO lt_fields.
CLEAR ls_fields.
ls_fields-tabname = 'ZADC_T_STUDENT'.
ls_fields-fieldname = 'ZSSTUDIENGANG'.
ls_fields-fieldtext = 'Studiengang'.
ls_fields-field_obl = 'X' .
ls_fields-value = lv_zsstudiengang.
APPEND ls_fields TO lt_fields.
CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
no_value_check = ' '
popup_title = 'Bitte geben Sie Ihre Veränderungen ein: '
* START_COLUMN = '5'
* START_ROW = '5'
IMPORTING
returncode = lv_returncode
TABLES
fields = lt_fields
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
IF lv_returncode = 'A'.
free grid_r.
CLEAR ok_code.
* Implement suitable error handling here
RETURN.
ENDIF.
* wa_studenten. CLEAR
LOOP AT lt_fields INTO ls_fields.
CASE ls_fields-fieldname.
WHEN 'ZSVORNAME' .
wa_studenten-zsvorname = ls_fields-value.
UPDATE zadc_t_student SET zsvorname = ls_fields-value
WHERE zmatrnr = lv_zmatrnr.
WHEN 'ZSNAME' .
wa_studenten-zmatrnr = ls_fields-value.
UPDATE zadc_t_student SET zsname = ls_fields-value
WHERE zmatrnr = lv_zmatrnr.
WHEN 'ZSSTUDIENGANG' .
wa_studenten-zsstudiengang = ls_fields-value.
UPDATE zadc_t_student SET zsstudiengang = ls_fields-value
WHERE zmatrnr = lv_zmatrnr.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
* CLEAR it_studenten.
SELECT * FROM zadc_t_student INTO CORRESPONDING FIELDS OF TABLE it_studenten.
grid_r->refresh_table_display( ).
ENDFORM. "edit_student
CALL METHOD grid_r->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
* et_row_no =
* SORT lt_rows BY index DESCENDING.
CLEAR wa_studenten.
LOOP AT lt_rows INTO ls_row.
READ TABLE it_studenten INTO wa_studenten INDEX ls_row-index .
ENDLOOP.
habe das Free Grid rausgenommen...das Objekte erzeuge ich in einem Modul create_control welches ich im PBO des ALV ausführeblack_adept hat geschrieben:Hallo,
wenn ich das "FREE GRID" sehe gehe ich mal davon aus, dass du den Grid mehrfach aufbaust ( Breakpoint im Debugger da wo du den Constructor aufrufst ), sonst wäre das ja gar nicht nötig gewesen. Wenn das der Fall sein sollte sorge dafür, dass das Grid nur 1x erzeugt wird - dann wird es wohl auch mit dem get_selected_rows funktionieren.