You are on page 1of 6

ABAP Code Sample to Attach F1 and

F4 Help Fields in ALV Grid


Code samples are intended for educational use only, not deployment. They are untested and
unsupported by SAP. SAP disclaims all liability to any person in respect to any damage that is
incurred, whether wholly or partially, from use of the code.

Applies To:
ABAP
By: Kavitha Bhuvaneswaran, Wipro Technologies
Date: 20 Jan 2005

Code Sample
REPORT zooalvf14 .
*Global data definitions for ALV.......................................*
DATA : alvgrid TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
fieldcatalog TYPE lvc_t_fcat.
*table to contain fields that require f4...............................*
DATA : lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
*ok_code declaration...................................................*
DATA : ok_code TYPE sy-ucomm.
*Tables declaration....................................................*
TABLES : zemployee_c7.
*Types declaration.....................................................*
TYPES : BEGIN OF ty_emp,
empid LIKE zemployee_c7-empid,
empname LIKE zemployee_c7-empname,
END OF ty_emp.
*Internal table declaration............................................*
DATA : i_emp TYPE TABLE OF ty_emp.
*Workarea declaration..................................................*
DATA : wa_emp TYPE ty_emp.

*Selection screen parameters...........................................*


SELECT-OPTIONS : s_empid FOR zemployee_c7-empid.
*---------------------------------------------------------------------*
*
CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*
........
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS :
handle_on_f1 FOR EVENT onf1 OF cl_gui_alv_grid
IMPORTING e_fieldname es_row_no er_event_data,
handle_on_f4 for event onf4 of cl_gui_alv_grid
importing e_fieldname es_row_no er_event_data
.
ENDCLASS.
*---------------------------------------------------------------------*
*
CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*
........
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_on_f1.
*custom f1 help for empid field.......................................*
IF e_fieldname = 'EMPID'.
CALL SCREEN 3001.
ENDIF.
*to prevent processing of standard f1 help............................*
er_event_data->m_event_handled = 'X'.
ENDMETHOD.
Method handle_on_f4.
*standard f4 help will be invoked......................................*
endmethod.
ENDCLASS.
*start of selection....................................................*
START-OF-SELECTION.
SELECT empid empname FROM zemployee_c7
INTO CORRESPONDING FIELDS OF TABLE i_emp
WHERE empid IN s_empid.

CALL SCREEN 3000.


*&---------------------------------------------------------------------*
*&
Module STATUS_3000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_3000 OUTPUT.
SET PF-STATUS 'ZTOOL'.
SET TITLEBAR 'ZTITLE'.
IF alvgrid IS INITIAL.
CREATE OBJECT custom_container
EXPORTING
container_name = 'ZCONTAINER'.
CREATE OBJECT alvgrid
EXPORTING
i_parent = custom_container.
PERFORM prepare_f4.
CALL METHOD alvgrid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4[]
.
*creating instance for event handler..................................*
DATA : event_handler TYPE REF TO lcl_event_handler.
CREATE OBJECT event_handler.
SET HANDLER event_handler->handle_on_f1 FOR alvgrid.
SET HANDLER event_handler->handle_on_f4 FOR alvgrid.
*preparing field catalog..............................................*
PERFORM prepare_fieldcatalog CHANGING fieldcatalog.

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

CALL METHOD alvgrid->set_table_for_first_display


EXPORTING
I_BYPASSING_BUFFER
=
I_BUFFER_ACTIVE
=
I_CONSISTENCY_CHECK
=
I_STRUCTURE_NAME
=
IS_VARIANT
=
I_SAVE
=
I_DEFAULT
= 'X'
IS_LAYOUT
=
IS_PRINT
=
IT_SPECIAL_GROUPS
=
IT_TOOLBAR_EXCLUDING
=
IT_HYPERLINK
=
IT_ALV_GRAPHICS
=
IT_EXCEPT_QINFO
=

CHANGING
it_outtab
= i_emp
it_fieldcatalog
= fieldcatalog
*
IT_SORT
=
*
IT_FILTER
=
*
EXCEPTIONS
*
INVALID_PARAMETER_COMBINATION = 1
*
PROGRAM_ERROR
=2
*
TOO_MANY_LINES
=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.
ENDIF.
ENDMODULE.
" STATUS_3000 OUTPUT
*preparing field catalog...............................................*
FORM prepare_fieldcatalog CHANGING i_fieldcatalog TYPE lvc_t_fcat.
DATA : ls_fcat TYPE lvc_s_fcat.
ls_fcat-fieldname = 'EMPID'.
ls_fcat-ref_table = 'ZEMPLOYEE_C7'.
ls_fcat-coltext = 'EMPLOYEE ID'.
APPEND ls_fcat TO i_fieldcatalog.
CLEAR ls_fcat.
ls_fcat-fieldname = 'EMPNAME'.
ls_fcat-ref_table = 'ZEMPLOYEE_C7'.
ls_fcat-coltext = 'EMPLOYEE NAME'.
APPEND ls_fcat TO i_fieldcatalog.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_3000 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_3000 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

" USER_COMMAND_3000 INPUT

*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_3001 INPUT
*&---------------------------------------------------------------------*

*
text
*----------------------------------------------------------------------*
MODULE user_command_3001 INPUT.
CASE ok_code.
WHEN 'SAVE'.
LEAVE TO SCREEN 0.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

" USER_COMMAND_3001 INPUT

*&---------------------------------------------------------------------*
*&
Module STATUS_3001 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_3001 OUTPUT.
SET PF-STATUS 'GUI'.
SET TITLEBAR 'TITLE'.
ENDMODULE.

" STATUS_3001 OUTPUT

*preparing fields to be registered for f4 help.........................*


FORM prepare_f4.
lt_f4-fieldname = 'EMPNAME'.
lt_f4-register = 'X'.
lt_f4-getbefore = 'X'.
lt_f4-chngeafter = 'X'.
APPEND lt_f4.
ENDFORM.

Disclaimer & Liability Notice


This document may discuss sample coding, which does not include official interfaces and
therefore is not supported. Changes made based on this information are not supported and can
be overwritten during an upgrade.
SAP will not be held liable for any damages caused by using or misusing of the code and
methods suggested here, and anyone using these methods, is doing it under his/her own
responsibility.
SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the
content of the technical article, including any liability resulting from incompatibility between the
content of the technical article and the materials and services offered by SAP. You agree that you
will not hold SAP responsible or liable with respect to the content of the Technical Article or seek
to do so.
Copyright 2004 SAP AG, Inc. All Rights Reserved. SAP, mySAP,
mySAP.com, xApps, xApp, and other SAP products and services
mentioned herein as well as their respective logos are trademarks or
registered trademarks of SAP AG in Germany and in several other
countries all over the world. All other product, service names,

trademarks and registered trademarks mentioned are the trademarks of


their respective owners.