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: 

PRINT button in ALV output without using OOPS

kiran_k8
Active Contributor
0 Kudos

Hi Folks,

Can anyone here please let me know how to add a print button in the ALV output without using OOPS.I had added the syntax

set pf-status 'ZAT' and then print in this status but in vain.

Kindly let me know how to do this.

REPORT ZEDITALV .

<b>type-pools:slis,icon.</b>

TABLES:MAKT.

*Declarations for ALV

DATA:itfieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

DATA:itfieldcat1 TYPE slis_t_fieldcat_alv WITH HEADER LINE.

DATA:itprintparams TYPE slis_print_alv.

DATA:itrepid TYPE sy-repid.

itrepid = sy-repid.

DATA:itevent TYPE slis_t_event.

DATA:itlistheader TYPE slis_t_listheader.

DATA:walistheader LIKE LINE OF itlistheader.

DATA:itlayout TYPE slis_layout_alv.

DATA:top TYPE slis_formname.

DATA:itsort TYPE slis_t_sortinfo_alv WITH HEADER LINE.

DATA : grid TYPE REF TO cl_gui_alv_grid.

data:begin of imakt occurs 0,

matnr like makt-matnr,

spras like makt-spras,

maktx like makt-maktx,

label1(03) TYPE C,

qty1(03) type c,

label2(03) type c,

qty2(03) type c,

end of imakt.

data:imakt1 like imakt occurs 0 with header line.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS:MATNR FOR MAKT-MATNR OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

<b>set pf-status 'ZAT'.</b>

START-OF-SELECTION.

select matnr spras maktx from makt into CORRESPONDING FIELDS OF TABLE IMAKT where spras = sy-langu.

if sy-subrc = 0.

perform alv.

ELSE.

STOP.

ENDIF.

FORM ALV.

DEFINE m_fieldcat.

itfieldcat-fieldname = &1.

itfieldcat-col_pos = &2.

itfieldcat-seltext_l = &3.

itfieldcat-do_sum = &4.

itfieldcat-outputlen = &5.

itfieldcat-edit = &6.

append itfieldcat to itfieldcat.

clear itfieldcat.

END-OF-DEFINITION.

m_fieldcat 'MATNR' '' 'MATERIAL No' '' 18 ''.

m_fieldcat 'SPRAS' '' 'Language' '' 02 ''.

m_fieldcat 'MAKTX' '' 'Description' '' 40 ''.

m_fieldcat 'LABEL1' '' 'LABEL1' '' 12 'X'.

m_fieldcat 'QTY1' '' 'QTY1' '' 12 'X'.

m_fieldcat 'LABEL2' '' 'LABEL2' '' 12 'X'.

m_fieldcat 'QTY2' '' 'QTY2' '' 12 'X'.

itlayout-zebra = 'X'.

itlayout-colwidth_optimize = 'X'.

itlayout-no_subtotals = ' '.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

is_layout = itlayout

i_callback_user_command = 'LIST1'

i_callback_top_of_page = 'TOP'

it_fieldcat = itfieldcat[]

i_save = 'A'

  • is_variant = ITVARIANT

it_events = itevent[]

is_print = ITPRINTPARAMS

it_sort = itsort[]

TABLES

t_outtab = imakt

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.

clear itfieldcat.

ENDFORM.

FORM list1 USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE R_UCOMM.

WHEN 'EXIT'.

STOP.

WHEN '&IC1'.

IF rs_selfield-fieldname = 'QTY1' .

READ TABLE IMAKT INDEX rs_selfield-tabindex.

SET PARAMETER ID 'QTY' FIELD iMAKT-QTY1.

ENDIF.

ENDCASE.

*test

if sy-subrc = 0.

loop at imakt.

move-corresponding imakt to imakt1.

append imakt1.

endloop.

DEFINE k_fieldcat.

itfieldcat1-fieldname = &1.

itfieldcat1-col_pos = &2.

itfieldcat1-seltext_l = &3.

itfieldcat1-outputlen = &4.

append itfieldcat1 to itfieldcat1.

clear itfieldcat.

END-OF-DEFINITION.

k_fieldcat 'MATNR' '' 'MATERIAL No' 18 .

k_fieldcat 'SPRAS' '' 'Language' 02 .

k_fieldcat 'MAKTX' '' 'Description' 40 .

k_fieldcat 'LABEL1' '' 'LABEL1' 12 .

k_fieldcat 'QTY1' '' 'QTY1' 12 .

k_fieldcat 'LABEL2' '' 'LABEL2' 12 .

k_fieldcat 'QTY2' '' 'QTY2' 12 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

is_layout = itlayout

i_callback_user_command = 'LIST2'

i_callback_top_of_page = 'TOP'

it_fieldcat = itfieldcat1[]

i_save = 'A'

  • is_variant = ITVARIANT

it_events = itevent[]

is_print = ITPRINTPARAMS

it_sort = itsort[]

TABLES

t_outtab = imakt1

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.

clear:itfieldcat1,ITFIELDCAT.

ENDFORM.

FORM list2 USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE R_UCOMM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'OTHERS'.

EXIT.

ENDCASE.

ENDFORM.

form top.

data:title(70) type c.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = itevent

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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.

title = 'TEST'.

walistheader-typ = 'H'.

walistheader-info = title.

APPEND walistheader TO itlistheader.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = itlistheader

  • I_LOGO = ''.

  • I_END_OF_LIST_GRID =

.

CLEAR itlistheader.

ENDFORM. "TOP

Message was edited by:

Kiran K

10 REPLIES 10

kiran_k8
Active Contributor
0 Kudos

Hi Folks,

Looking forward to SDN Experts replies.

Thanks,

K.Kiran.

Message was edited by:

Kiran K

Former Member
0 Kudos

Hi Kiran,

You have done it in the right way for the User Command Do the same it for PF status.

FORM call_alv TABLES p_out STRUCTURE wa_out.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_pf_status_set = 'PF_STATUS_SET'

i_callback_user_command = 'USER_COMMAND'

is_layout = i_layout

it_fieldcat = i_fieldcat[]

TABLES

t_outtab = p_out

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.

ENDFORM. " call_alv

You have to pass 'PF_STATUS_SET' as it is passed to FM as shown above and you will have to write a form with the same name as 'PF_STATUS_SET'

&----


*& Form PF_STATUS_SET

&----


  • Setting PF Status

----


FORM pf_status_set USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'ZAT' .

ENDFORM. "PF_STATUS_SET

If you still face problem reply otherwise reward point.

Regards,

Mukesh Kumar

0 Kudos

Mukesh,

i_callback_pf_status_set = 'PF_STATUS_SET'

The moment I add this the ,default buttons like save,back,cancel,exit are getting disabled.

I want the printbutton in ALV tool bar.

Thanks,

K.Kiran.

Message was edited by:

Kiran K

Message was edited by:

Kiran K

Former Member
0 Kudos

hi,

by default PRINT button will appear...

if u have included ur own PF_STATUS,

include this line in ALV_GRID_DISPLAY ...

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-CPROG

I_CALLBACK_USER_COMMAND = 'F_USERCOMMAND_ALV'

<b> I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'</b>

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

IS_LAYOUT = ILAYOUT

IT_FIELDCAT = INT_FIELDCAT

TABLES

T_OUTTAB = INT_DATA2.

<b>FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'ZSTATUS' .

ENDFORM.</b>

reply back...

With Rgds,

S.Barani

Former Member
0 Kudos

Hello Kiran,

In REUSE_ALV_GRID_DISPLAY there is an export parameter called

<b>I_CALLBACK_PF_STATUS_SET = ' '</b> Give some PF status name in quotations and add ur own button by doble clicking it. and write relevent code in user command of that pf status.

Reward If Helpful.

Regards

--

Sasidhar Reddy Matli.

0 Kudos

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-CPROG

I_CALLBACK_USER_COMMAND = 'F_USERCOMMAND_ALV'

<b>I_CALLBACK_PF_STATUS_SET = 'ZAT'</b>

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

IS_LAYOUT = ILAYOUT

IT_FIELDCAT = INT_FIELDCAT

TABLES

T_OUTTAB = INT_DATA2.

FORM ZAT USING RT_EXTAB TYPE SLIS_T_EXTAB.

<b>SET PF-STATUS 'ZAT' .</b>

ENDFORM.

If I do like the above,the default save,back and cancel buttons are getting disabled.Kindly let me know the solutions.I want the print button to be in ALV tool bar without using OOPS.

Thanks,

K.Kiran.

0 Kudos

Kiran,

check ur PF_STATUS whether it has the PRINT icon,

else, do try this,

1. goto se80, under <b>Function Group --> SALV ---></b>

2. copy the GUI_STATUS named <b>STANDARD</b> into ur program,

remove the unwanted buttons , activate and try..

reply..

With Rgds,

S.Barani

0 Kudos

Bharani,

My Pf-status has print both in APPLICATION tool bar as well as in Function keys but still it is not getting displayed in the ALV tool bar.

As mentioned by you SALV function group is not having PRINT in the application tool bar.Kindly opine.

Thanks,

K.Kiran.

Message was edited by:

Kiran K

0 Kudos

Kiran,

tell me whther the print icon is disabled or not at all coming ?

In SALV, under Function Keys, PRINT is there.

With Rgds,

S.Barani

kiran_k8
Active Contributor
0 Kudos

Thanks a lot,

K.Kiran.