Code: Alles auswählen.
IF g_zaehler IS INITIAL.
* Setze Zähler auf 1 wenn in Ändern Modus gesprungen
g_zaehler = 1.
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
IF <g_fieldcat>-fieldname <> 'ID'.
<g_fieldcat>-edit = 'X'.
ELSEIF <g_fieldcat>-fieldname = 'ID'.
<g_fieldcat>-no_out = 'X'.
ENDIF.
ENDLOOP.
ELSE.
ENDIF.
CALL METHOD im_cl_alv->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = g_fieldcat_t.
CALL METHOD cl_gui_cfw=>flush.
Deine ALV-Spalte verschwindet deshalb, weil dein ELSEIF IMMER ausgeführt wird bei der Spalte ID. Somit wirst du dieses Feld nie wieder sehnMavrix hat geschrieben:Hallo
Code: Alles auswählen.
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>. IF <g_fieldcat>-fieldname <> 'ID'. <g_fieldcat>-edit = 'X'. ELSEIF <g_fieldcat>-fieldname = 'ID'. <g_fieldcat>-no_out = 'X'. ENDIF. ENDLOOP.
Code: Alles auswählen.
If g_zaehler is initial. " Änderungsmodus
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
<g_fieldcat>-edit = 'X'.
IF <g_fieldcat>-fieldname = 'ID'.
<g_fieldcat>-no_out = 'X'.
ENDIF.
ENDLOOP.
else. "Ansichtsmodus
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
clear: <g_fieldcat>-edit,
<g_fieldcat>-no_out .
ENDLOOP.
endif.
Code: Alles auswählen.
if g_zaehler is initial.
g_zaehler = 1.
else.
clear g_zaehler.
endif.
Code: Alles auswählen.
else. "Ansichtsmodus
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
clear: <g_fieldcat>-edit,
<g_fieldcat>-no_out .
ENDLOOP.
endif.
Code: Alles auswählen.
else. "Ansichtsmodus
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
clear: <g_fieldcat>-edit,
<g_fieldcat>-no_out .
ENDLOOP.
endif.
Code: Alles auswählen.
else. "Ansichtsmodus
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
clear: <g_fieldcat>-edit,
<g_fieldcat>-no_out .
ENDLOOP.
endif.
Du wiederholst dichMavrix hat geschrieben:Hallo Markus.
So funktioniert es schon einmal halbwegs...
so wie oben, schaltet er zwar zurück, aber das ALV bleibt trotzdem eingabebereit...Code: Alles auswählen.
else. "Ansichtsmodus LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>. clear: <g_fieldcat>-edit, <g_fieldcat>-no_out . ENDLOOP. endif.
Markus
Echt vielen Dank im Voraus..
Code: Alles auswählen.
* Usercommand abfangen
CASE g_okcode.
WHEN 'CHANGE'.
* Wechsle in den Change Modus
PERFORM change_modus USING g_cl_alv.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Form change_modus
*&---------------------------------------------------------------------*
FORM change_modus USING im_cl_alv TYPE REF TO cl_gui_alv_grid.
*----------------------------------------------------------------------*
* Hier wird das ALV Grid in den Ändern Modus oder Anzeige Modus
* geschaltet
*----------------------------------------------------------------------*
* Lokale Variablendeklaration
DATA l_event_receiver TYPE REF TO lcl_event_receiver.
*
** Setze ALV-GRID in ÄnderungsModus
* CALL METHOD im_cl_alv->set_ready_for_input
* EXPORTING
* i_ready_for_input = 1.
*
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZMBE_ADRESSDATEN_S'
CHANGING
ct_fieldcat = g_fieldcat_t
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
IF 1 = 2. MESSAGE e049(zmbe) WITH ''. ENDIF. "#EC *
CREATE OBJECT g_cl_msg
EXPORTING
i_msgid = 'ZMBE'
i_msgno = '049'
i_msgty = /auk/cl_msg=>gc_msgty_fehler.
ENDIF.
IF g_zaehler IS INITIAL.
g_zaehler = 1.
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
<g_fieldcat>-edit = 'X'.
IF <g_fieldcat>-fieldname = 'ID'.
<g_fieldcat>-no_out = 'X'.
ENDIF.
ENDLOOP.
* Damit wird Eintrag sofort in ITAB geschrieben, bei ENTER Betätigung
CALL METHOD im_cl_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD im_cl_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CREATE OBJECT l_event_receiver.
SET HANDLER l_event_receiver->check_data_changed FOR g_cl_alv.
ELSE.
LOOP AT g_fieldcat_t ASSIGNING <g_fieldcat>.
CLEAR: <g_fieldcat>-no_out,
<g_fieldcat>-edit.
ENDLOOP.
* Setze ALV-GRID in AnzeigenModus
CALL METHOD im_cl_alv->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
CLEAR: g_zaehler.
ENDIF.
CALL METHOD im_cl_alv->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = g_fieldcat_t.
CALL METHOD cl_gui_cfw=>flush.
ENDFORM. " change_modus