Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV GRID Custom Print Button

Former Member
0 Kudos

Hello Experts,

I need your help on how to create a custom button on toolbar to print alv . The standard toolbar contains a print preview button but this one creates a spool request. So is there a way to create a button to print immediately or bypass spool request on print preview button ?

Regards

3 REPLIES 3

former_member196651
Contributor
0 Kudos

Hi Loannis,

Hope you are using OOPs ALV. If so, then you can add buttons to the ALV toolbar using the event  toolbar of the class CL_GUI_ALV_GRID. You can add functionality by using the event  user_command of the class CL_GUI_ALV_GRID. This can be done using an event handler class.

Consider the following piece of code:

CLASS lcl_alv1_handler DEFINITION.

     "To handle adding buttons to toolbar

     METHODS handle_toolbar_set FOR EVENT toolbar OF cl_gui_alv_grid

               IMPORTING e_object e_interactive.

     "To handle button click of newly added buttons

     METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid

               IMPORTING e_ucomm.

ENDCLASS.


CLASS lcl_alv1_handler IMPLEMENTATION.

   METHOD handle_toolbar_set.

     CLEAR wa_button.

     wa_button-function  = '&PRNT'.

     wa_button-icon      = '@0X@'.

     wa_button-butn_type = '0'.

     wa_button-quickinfo = text-004.

     APPEND wa_button TO e_object->mt_toolbar.

   ENDMETHOD.                    "handle_toolbar_set


   METHOD handle_user_command.

        CASE e_ucomm.

            WHEN '&PRNT'.                 "Print ALV

       

        ENDCASE.

   ENDMETHOD.

ENDCLASS.

Regards,

Abijith

0 Kudos

Unfortunately I ' m using SLIS ALV

Thank you for answering though

Former Member
0 Kudos

Hi Loannis,

Use this code.

*- Fieldcatalog

DATA: IT_FIELDCAT  TYPE LVC_T_FCAT,

      IT_FIELDCAT1  TYPE SLIS_T_FIELDCAT_ALV..

*- For Events

DATA:IT_EVENTS TYPE SLIS_T_EVENT.

DATA:  X_FIELDCAT  TYPE LVC_S_FCAT,

        X_FIELDCAT1  TYPE SLIS_FIELDCAT_ALV.

DATA:X_LAYOUT TYPE LVC_S_LAYO.

"{ FOR DISABLE

DATA: LS_EDIT TYPE LVC_S_STYL,

      LT_EDIT TYPE LVC_T_STYL.

"} FOR DISABLE

DATA: BEGIN OF IT_VBAP OCCURS 0,

      VBELN LIKE VBAP-VBELN,

      POSNR LIKE VBAP-POSNR,

      HANDLE_STYLE TYPE LVC_T_STYL, "FOR DISABLE

   <b>   BUTTON(10),</b>

     END OF IT_VBAP.

DATA: LS_OUTTAB LIKE LINE OF IT_VBAP.

SELECT VBELN

       POSNR

       UP TO 10 ROWS

      INTO CORRESPONDING FIELDS OF TABLE IT_VBAP

      FROM VBAP.

DATA:L_POS TYPE I VALUE 1.

CLEAR: L_POS.

L_POS = L_POS + 1.

<b>X_FIELDCAT-SELTEXT = 'Button'.

x_fieldcat-fieldname = 'BUTTON'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS    = L_POS.

X_FIELDCAT-OUTPUTLEN = '10'.

X_FIELDCAT-style = X_FIELDCAT-style bit-xor

                  cl_gui_alv_grid=>MC_STYLE_BUTTON bit-xor

                  cl_gui_alv_grid=>MC_STYLE_ENABLEd.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.</b>

L_POS = L_POS + 1.

X_FIELDCAT-SELTEXT = 'VBELN'.

X_FIELDCAT-FIELDNAME = 'VBELN'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS    = L_POS.

X_FIELDCAT-EDIT = 'X'.

X_FIELDCAT-OUTPUTLEN = '10'.

x_fieldcat-ref_field = 'VBELN'.

x_fieldcat-ref_table = 'VBAK'.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

L_POS = L_POS + 1.

X_FIELDCAT-SELTEXT = 'POSNR'.

X_FIELDCAT-FIELDNAME = 'POSNR'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS    = L_POS.

X_FIELDCAT-EDIT = 'X'.

X_FIELDCAT-OUTPUTLEN = '5'.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

L_POS = L_POS + 1.

"{FOR DISABLE HERE 6ROW IS DISABLED

SY-TABIX = 6.

LS_EDIT-FIELDNAME = 'VBELN'.

LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.

LS_EDIT-STYLE2 = SPACE.

LS_EDIT-STYLE3 = SPACE.

LS_EDIT-STYLE4 = SPACE.

LS_EDIT-MAXLEN = 10.

INSERT LS_EDIT INTO TABLE LT_EDIT.

*LS_EDIT-FIELDNAME = 'POSNR'.

*LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.

*LS_EDIT-STYLE2 = SPACE.

*LS_EDIT-STYLE3 = SPACE.

*LS_EDIT-STYLE4 = SPACE.

*LS_EDIT-MAXLEN = 6.

*INSERT LS_EDIT INTO TABLE LT_EDIT.

INSERT LINES OF LT_EDIT INTO TABLE LS_OUTTAB-HANDLE_STYLE.

MODIFY IT_VBAP INDEX SY-TABIX FROM LS_OUTTAB  TRANSPORTING

                                  HANDLE_STYLE .

X_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.

"} UP TO HERE

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

  EXPORTING

    I_CALLBACK_PROGRAM = SY-REPID

    IS_LAYOUT_LVC      = X_LAYOUT

    IT_FIELDCAT_LVC    = IT_FIELDCAT

  TABLES

    T_OUTTAB           = IT_VBAP[]

  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.

Hope it will help you.