Code: Alles auswählen.
* Set editing mode
LOOP AT gt_thdr INTO ls_thdr.
CLEAR ls_style.
MOVE-CORRESPONDING ls_thdr TO ls_header.
IF ls_thdr-cruser EQ sy-uname.
ls_style-style = cl_gui_alv_grid=>mc_style_enabled.
ELSE.
LOOP AT gt_admin INTO ls_admin.
IF sy-uname EQ ls_admin-sap_user.
ls_style-style = cl_gui_alv_grid=>mc_style_enabled.
EXIT.
ELSE.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
ENDLOOP.
ENDIF.
APPEND ls_style TO ls_header-edit.
APPEND ls_header TO gt_header.
ENDLOOP.
Den Satz versteh ich jetzt zwar nicht, aber dein Coding schaut soweit nicht schlecht aus. Dir fehlt nur noch in der Struktur LS_STYLE den Feldnamen der Spalte zu setzen für die das "editierbar" bzw. "nicht editierbar" gelten soll. Wenn mehrere Spalten gleichzeitig denselben Stil haben sollen, dann musst du je Spalte den entsprechenden Style in deine EDIT-Tabelle eintragen. Schließlich noch die Tabelle GT_HEADER an dein Grid übergeben und im Layout (LVC_S_LAYO) den Feldnamen "EDIT" (aus deiner HEADER-Struktur) in das Feld STYLEFNAME reinschreiben.
Code: Alles auswählen.
ls_style-fieldname = 'ADRESS'.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
append ls_style to lt_style.
ls_style-fieldname = 'MAIL'.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
append ls_style to lt_style.
Code: Alles auswählen.
APPEND ls_style TO ls_header-edit.
APPEND ls_header TO gt_header.