Skip to Content
0
Former Member
Feb 27, 2007 at 02:58 PM

Change edit mode with clasic FM REUSE_ALV_GRID_DISPLAY

243 Views

Hello,

I'm using the function "REUSE_ALV_GRID_DISPLAY", in the classic method. I want to switch from display to edit mode when the user press the edit mode button. But I don't get it to work.

So far as I know building up the ALV is correct so I don't put all the source code here.

What's wrong in my code?

FORM BUILD_ALV_REPORT.

perform build_field_cat.

----


  • After building the field catalog (e.g., from a DDIC structure), we can

  • modify these settings in the following subroutine.

----


PERFORM modify_fieldcatalog.

IF Not fieldcatalog is initial.

perform collect_data

TABLES it_collector

USING werks

lgort

s_jaar

s_mnd.

PERFORM t_sort_build USING gd_sort.

perform build_layout CHANGING gd_layout.

----


  • Table ta_comment is used to display header information in the

  • top-of-page of the ALV output.

----


PERFORM build_comment CHANGING ta_comment[].

----


  • Table gd_tab_group wordt gebruikt om een groepering op te bouwen.

----


PERFORM build_group CHANGING gd_tab_group[].

SET PF-STATUS 'STANDARD_FULLSCREEN'.

gx_variant-report = gd_repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = 'A'

CHANGING

CS_VARIANT = gx_variant

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = gd_repid

I_CALLBACK_PF_STATUS_SET = 'STANDARD_FULLSCREEN'

I_CALLBACK_USER_COMMAND = 'R1_PROCESS_USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = co_rout_top_of_page

I_BACKGROUND_ID = 'ALV_BACKGROUND'

I_GRID_TITLE = 'Lijst goedgekeurde ATBs'

  • I_GRID_SETTINGS =

IS_LAYOUT = gd_layout

IT_FIELDCAT = fieldcatalog

  • IT_EXCLUDING =

IT_SPECIAL_GROUPS = gd_tab_group[]

IT_SORT = gd_sort[]

I_SAVE = 'A'

IS_VARIANT = gx_variant

I_SCREEN_START_COLUMN = 0

TABLES

T_OUTTAB = it_collector

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

  • SET PF-STATUS 'xxxxxxxx'.

  • SET TITLEBAR 'xxx'.

ENDFORM. " BUILD_ALV_REPORT

  • Setting the column to edit mode

ls_fieldcat-fieldname = '3_ATWRT'.

ls_fieldcat-seltext_m = 'WBS-NRG'.

ls_fieldcat-seltext_l = 'WBS-element NRG'.

ls_fieldcat-row_pos = 0.

ls_fieldcat-col_pos = 30.

  • ls_fieldcat-outputlen = 4.

  • ls_fieldcat-emphasize = 'X'.

  • ls_fieldcat-key = 'X'.

  • ls_fieldcat-do_sum = 'X'.

ls_fieldcat-edit = 'X'.

append ls_fieldcat to fieldcatalog.

clear ls_fieldcat.

ENDFORM. " modify_fieldcatalog

FORM r1_process_user_command "#EC CALLED

USING utp_ucomm TYPE syucomm

utp_selfield TYPE slis_selfield.

DATA: ltp_repid TYPE syrepid.

----


  • Handle the specific user-commands.

----


CASE utp_ucomm.

----


  • Handle double click or hotspot on a specific field. *

  • These are some examples *

----


WHEN co_double_click.

WHEN OTHERS.

ENDCASE.

WHEN 'SWITCH'.

IF V_EDIT = ' '.

V_EDIT = 'X'.

ELSE.

V_EDIT = ' '.

ENDIF.

PERFORM modify_edit_mode.

utp_selfield-refresh = 'X'.

WHEN OTHERS.

ENDCASE.

ENDFORM. "R1_PROCESS_USER_COMMAND

FORM modify_edit_mode .

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

LOOP AT fieldcatalog into ls_fieldcat.

CASE ls_fieldcat-FIELDNAME.

WHEN '3_ATWRT'.

ls_fieldcat-edit = V_EDIT.

gd_layout-edit = V_EDIT.

gd_layout-edit_mode = V_EDIT.

ENDCASE.

modify fieldcatalog from ls_fieldcat.

clear ls_fieldcat.

ENDLOOP.

ENDFORM. " modify_edit_mode