26 Flares Twitter 0 Facebook 26 Google+ 0 LinkedIn 0 Email -- Pin It Share 0 26 Flares ×

Requirement:

  • Display particular column data as a Pushbutton in the ALV Report Output. (In this example I am displaying company code(BUKRS)data as a Pushbutton).
  • When the user clicks on pushbutton display the vendor(Call XK03 Tcode) details in popup screen.

 Display a Column As a Pushbutton in the ALV Output

*&———————————————————————*
*& Report  ZALV_BUTTON_IN_OUTPUT_LIST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT ZALV_BUTTON_IN_OUTPUT_LIST.

*// Types declaration for LFB1
TYPES : BEGIN OF TY_LFB1,
LIFNR  TYPE LIFNR,
BUKRS  TYPE BUKRS,
PERNR  TYPE PERNR_D,
ERNAM  TYPE ERNAM_RF,
END OF ty_lfb1.

*// Internal table declaration
DATA : LT_LFB1 type table of ty_lfb1,
LT_FIELDCAT TYPE LVC_T_FCAT.

*// Work Area declaration
DATA : WA_LFB1 type ty_lfb1,
wa_filedcat type LVC_S_FCAT.

*//Conatiners
DATA : LRV_GRID TYPE REF TO CL_GUI_ALV_GRID,
LRV_CONTAINER TYPE REF TO cl_gui_docking_container.

DATA : okcode type sy-ucomm.

*//Selection Screen Design.
PARAMETERS:  p_bukrs TYPE bukrs obligatory.

*———————————————————————*
*       CLASS lc_eventhandler DEFINITION
*———————————————————————*
*
*———————————————————————*
CLASS lc_eventhandler DEFINITION.
PUBLIC SECTION.

CLASS-METHODS:
button_click_event FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING
es_col_id
es_row_no
sender.

ENDCLASS.                    “lc_eventhandler DEFINITION

*———————————————————————*
*       CLASS lc_eventhandler IMPLEMENTATION
*———————————————————————*
*
*———————————————————————*
CLASS lc_eventhandler IMPLEMENTATION.

METHOD button_click_event.
*   define local data
DATA:
ls_lfb1     TYPE lfb1,
ls_col_id   TYPE lvc_s_col.

READ TABLE lt_lfb1 INTO ls_lfb1 INDEX es_row_no-row_id.
CHECK ( ls_lfb1-lifnr IS NOT INITIAL ).

SET PARAMETER ID ‘LIF’ FIELD ls_lfb1-lifnr.
SET PARAMETER ID ‘BUK’ FIELD ls_lfb1-bukrs.

CALL TRANSACTION ‘XK03’ AND SKIP FIRST SCREEN.

ENDMETHOD.                    “button_click_event

ENDCLASS.                    “lc_eventhandler IMPLEMENTATION

START-OF-SELECTION.
*// Retreving Data From LFB1
SELECT LIFNR BUKRS PERNR ERNAM
FROM lfb1
INTO TABLE lt_lfb1
WHERE  bukrs  = p_bukrs.

**Create docking container
**Select Pattern button
**Select ABAP Objects Pattrens radio button and click on enter
**And select create object radio button enter the instance(LRV_CONTAINER) & class (cl_gui_docking_container)
**Click on enter
CREATE OBJECT LRV_CONTAINER
EXPORTING
parent                      = cl_gui_container=>screen0
ratio                       = 90
EXCEPTIONS
CNTL_ERROR                  = 1
CNTL_SYSTEM_ERROR           = 2
CREATE_ERROR                = 3
LIFETIME_ERROR              = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others                      = 6.
IF SY-SUBRC <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

**Create ALV grid
**Select Pattern button
**Select ABAP Objects Pattrens radio button and click on enter
**And select create object radio button enter the instance(LRV_GRID) & class (CL_GUI_ALV_GRID)
CREATE OBJECT LRV_GRID
EXPORTING
i_parent          = LRV_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT   = 2
ERROR_CNTL_LINK   = 3
ERROR_DP_CREATE   = 4
others            = 5.
IF SY-SUBRC <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*//Set the event handler
SET HANDLER:
lc_eventhandler=>button_click_event FOR LRV_GRID.

*// Populatefieldcatalog and set button for field BUKRS
PERFORM build_fieldcatalog_knb1.

**Display data
**Display the data in the grid format by using set_table_for_first_display Method
**Click on patter button
**Select ABAP Objects Pattrens radio button and click on enter
**Click on enter
**Select the first radio button call method
**Enter the class name (CL_GUI_ALV_GRID), instance(LRV_GRID), method names (set_table_for_first_display) and click on enter

CALL METHOD LRV_GRID->set_table_for_first_display
CHANGING
it_outtab       = lt_lfb1
it_fieldcatalog = LT_FIELDCAT.

**Link the docking container to the target dynpro
**Click on patter button
**Select ABAP Objects Pattrens radio button and click on enter
**Click on enter
**Select the first radio button call method
**Enter the class name(cl_gui_docking_container), instance(LRV_CONTAINER), method(link) names and click on enter

CALL METHOD LRV_CONTAINER->link
EXPORTING
repid                       = syst-repid
dynnr                       = ‘0100’.

*//Call The Screen
CALL SCREEN ‘0100’.

END-OF-SELECTION.

*&———————————————————————*
*&      Module  STATUS_0100  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘STATUS_0100’.
*  SET TITLEBAR ‘xxx’.
ENDMODULE.                 ” STATUS_0100  OUTPUT

*&———————————————————————*
*&      Module  USER_COMMAND_0100  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE user_command_0100 INPUT.
*//Back Button Functinality
CASE okcode.
WHEN ‘BACK’.
SET SCREEN 0. LEAVE SCREEN.
WHEN OTHERS.
ENDCASE.

CLEAR: okcode.

ENDMODULE.                 ” USER_COMMAND_0100  INPUT

*&———————————————————————*
*&      Form  BUILD_FIELDCATALOG_KNB1
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM build_fieldcatalog_knb1 .
*// Populate Fieldcatlog
wa_filedcat-col_pos   = 1.
wa_filedcat-FIELDNAME = ‘LIFNR’.
wa_filedcat-outputlen = 10.
wa_filedcat-seltext   = ‘Vendor Number’.
APPEND wa_filedcat TO LT_FIELDCAT.
CLEAR wa_filedcat.

wa_filedcat-col_pos   = 2.
wa_filedcat-FIELDNAME = ‘BUKRS’.
wa_filedcat-outputlen = 10.
wa_filedcat-seltext   = ‘Company Code’.
APPEND wa_filedcat TO LT_FIELDCAT.
CLEAR wa_filedcat.

wa_filedcat-col_pos   = 3.
wa_filedcat-FIELDNAME = ‘PERNR’.
wa_filedcat-outputlen = 10.
wa_filedcat-seltext   = ‘Personnel Number’.
APPEND wa_filedcat TO LT_FIELDCAT.
CLEAR wa_filedcat.

wa_filedcat-col_pos   = 4.
wa_filedcat-FIELDNAME = ‘ERNAM’.
wa_filedcat-outputlen = 15.
wa_filedcat-seltext   = ‘who Created the Object’.
APPEND wa_filedcat TO LT_FIELDCAT.
CLEAR wa_filedcat.

*//set button for field BUKRS
LOOP AT LT_FIELDCAT INTO wa_filedcat
WHERE ( fieldname = ‘BUKRS’ ).
wa_filedcat-style = cl_gui_alv_grid=>mc_style_button.
MODIFY LT_FIELDCAT FROM wa_filedcat.
ENDLOOP.

ENDFORM.                    ” BUILD_FIELDCATALOG_KNB1

Note:Copy and past above code in SE38, Double click on screen number in the statement CALL SCREEN ‘0100’. to create a screen,Provide OKCODE in Elementary List and create MODULE STATUS_0100 and MODULE user_command_0100 modules in flow logic tab as shown above. 

Output:

Display a Column As a Pushbutton in the ALV OutputEnjoy 🙂

Also Read:

List of Transaction Codes in SAP ABAP.

Difference between Type and Like in SAP ABAP.

Creating Pushbuttons on Selection Screen.

26 Flares Twitter 0 Facebook 26 Google+ 0 LinkedIn 0 Email -- Pin It Share 0 26 Flares ×