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: 

function code for PRINT

kiran_k8
Active Contributor
0 Kudos

Hi Folks,

Please let me know the funtcion code for PRINT so that I can add the same in my -pf-status ZAT.

Just like &ILT for filter &umc for aggregation I want the function code for PRINT.

Thanks,

K.Kiran.

1 ACCEPTED SOLUTION

raymond_giuseppi
Active Contributor
0 Kudos

Copy the status from program SAPLSALV, stratus STANDARD for full screen, STDPOPUP for popup window, so you get all status of the standard.

&RNT - Print

In you set-status routine, insure that &RNT is allowed, remove it from the internal table parameter used to exclude function code.

  SET PF-STATUS 'ALV' EXCLUDING rt_extab.

Regards

11 REPLIES 11

Former Member
0 Kudos

U can give any name and mention the same in your program

Former Member
0 Kudos

Hi Kiran

function code for print is 'PRIN'.

Regards

Wiboon

kiran_k8
Active Contributor
0 Kudos

Hi,

Ok I got it .It is &RNT.But even if I add it like that I am not getting the same in my ALV toolbar.I mean to say i want to get the print button in my alv tool bar without using oops,so created a pf-status zat but in vain.

Thanks,

K.Kiran.

Former Member
0 Kudos

Hi,

try this

&RNT

usually the print option will come by default when you copy the

pf status

from <b>se41</b> tcode

and the program <b>saplkkbl</b> and <b>standard_fullscreen</b>

is the gui status name

regards,

Venkatesh

Former Member
0 Kudos

HI,

sap uses wb_print.

but you van use of your own.

thanks

vivekanand

0 Kudos

Hi,

I am not talking about the default standard tool bar print.I want PRINT in my ALV toolbar so that I can call a script(label printing) when the user clicks on that.

Thanks,

K.Kiran.

0 Kudos

So remove the standard &RNT by adding its value to rt_extab. And manage you own Zcode in your own USER_COMMAND routine.

Regards

raymond_giuseppi
Active Contributor
0 Kudos

Copy the status from program SAPLSALV, stratus STANDARD for full screen, STDPOPUP for popup window, so you get all status of the standard.

&RNT - Print

In you set-status routine, insure that &RNT is allowed, remove it from the internal table parameter used to exclude function code.

  SET PF-STATUS 'ALV' EXCLUDING rt_extab.

Regards

Former Member
0 Kudos

As said above you need to copy from the standard from SE80 Function group SALV in that under GUI status "Strandard" copy to ur pgm so that you will get all icons and if u want to exclude the normal ones

use SET PF-STATUS 'STANDARD1' EXCLUDING rt_extab.

see sample program below for the same

&----


*& Report YKTEST *

*& *

&----


REPORT yktest.

&----


*& TABLES DECLARATION *

&----


TABLES : ekko, ekpo, t001w, t161t, lfa1.

&----


*& INTERNAL TABLE DECLARATION *

&----


TYPES : BEGIN OF tp_itab1,

bukrs TYPE ekko-bukrs,

lifnr TYPE ekko-lifnr,

ebeln TYPE ekko-ebeln,

waers TYPE ekko-waers,

bsart TYPE ekko-bsart,

ekorg TYPE ekko-ekorg,

ekgrp TYPE ekko-ekgrp,

ebelp TYPE ekpo-ebelp,

txz01 TYPE ekpo-txz01,

matnr TYPE ekpo-matnr,

werks TYPE ekpo-werks,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

netwr TYPE ekpo-netwr,

name1 TYPE t001w-name1,

header_text(132),

chk TYPE c,

END OF tp_itab1.

DATA : t_itab1 TYPE STANDARD TABLE OF tp_itab1,

wa_itab1 TYPE tp_itab1,

ws_name1 TYPE t001w-name1.

DATA : f_itab1 TYPE STANDARD TABLE OF tp_itab1,

wa_fitab1 TYPE tp_itab1.

DATA : f_itab2 TYPE STANDARD TABLE OF tp_itab1,

wa_fitab2 TYPE tp_itab1.

TYPES : BEGIN OF tp_name1,

werks TYPE t001w-werks,

name1 TYPE t001w-name1,

END OF tp_name1.

DATA : t_name1 TYPE STANDARD TABLE OF tp_name1,

wa_name1 TYPE tp_name1.

DATA : t_lfa1 TYPE STANDARD TABLE OF lfa1,

wa_lfa1 TYPE lfa1.

DATA: hold_tabix TYPE sy-tabix.

DATA : t_tlinetab TYPE STANDARD TABLE OF tline,

wa_tlinetab TYPE tline.

DATA: ws_name TYPE thead-tdname,

ws_repid TYPE sy-repid VALUE 'YKTEST'.

DATA : repid TYPE sy-repid.

DATA : total TYPE p DECIMALS 2,

quantity TYPE p DECIMALS 3.

CONSTANTS : ws_id TYPE thead-tdid VALUE 'F01',

ws_object TYPE thead-tdobject VALUE 'EKKO',

lc_view(1) TYPE c VALUE 'F',

lc_form(10) TYPE c VALUE 'YK_FORM'.

&----


*& ALV DECLARATION *

&----


TYPE-POOLS : slis.

DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,

lf_fieldcat TYPE slis_fieldcat_alv.

DATA: lh_index LIKE lf_fieldcat-col_pos.

DATA: l_layout TYPE slis_layout_alv.

DATA : l_sort TYPE slis_t_sortinfo_alv,

w_sort TYPE slis_sortinfo_alv.

&----


*& SELECTION-SCREEN *

&----


SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.

SELECTION-SCREEN SKIP 2.

SELECT-OPTIONS: s_bukrs FOR ekko-bukrs OBLIGATORY.

SELECT-OPTIONS: s_lifnr FOR ekko-lifnr OBLIGATORY.

SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.

PARAMETERS: p_bsart TYPE ekko-bsart.

SELECT-OPTIONS: s_matnr FOR ekpo-matnr.

SELECT-OPTIONS: s_ekorg FOR ekko-ekorg.

SELECT-OPTIONS: s_ekgrp FOR ekko-ekgrp.

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN END OF BLOCK a1.

&----


*& START-OF-SELECTION *

&----


START-OF-SELECTION.

  • FETCHING DATA

PERFORM fetch_data.

  • BUILD FIELD CATALOG

PERFORM build_fieldcatalog.

  • BUILD LAYOUT

PERFORM build_layout.

  • SORT LAYOUT

PERFORM sort_layout.

&----


*& END-OF-SELECTION. *

&----


END-OF-SELECTION.

*DISPLAY GRID

PERFORM display_grid.

&----


*& Form fetch_data *

&----


FORM fetch_data.

IF p_bsart IS INITIAL.

SELECT ekko~bukrs

ekko~lifnr

ekko~ebeln

ekko~waers

ekko~bsart

ekko~ekorg

ekko~ekgrp

ekpo~ebelp

ekpo~txz01

ekpo~matnr

ekpo~werks

ekpo~menge

ekpo~meins

ekpo~netpr

ekpo~netwr

INTO TABLE t_itab1 FROM

ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln

WHERE ekko~ebeln IN s_ebeln AND

ekko~bukrs IN s_bukrs AND

ekko~lifnr IN s_lifnr AND

ekko~ekorg IN s_ekorg AND

ekko~ekgrp IN s_ekgrp AND

ekpo~matnr IN s_matnr.

ELSE.

SELECT ekko~bukrs

ekko~lifnr

ekko~ebeln

ekko~waers

ekko~bsart

ekko~ekorg

ekko~ekgrp

ekpo~ebelp

ekpo~txz01

ekpo~matnr

ekpo~werks

ekpo~menge

ekpo~meins

ekpo~netpr

ekpo~netwr

INTO TABLE t_itab1 FROM

ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln

WHERE ekko~ebeln IN s_ebeln AND

ekko~bukrs IN s_bukrs AND

ekko~lifnr IN s_lifnr AND

ekko~ekorg IN s_ekorg AND

ekko~ekgrp IN s_ekgrp AND

ekpo~matnr IN s_matnr AND

ekko~bsart = p_bsart.

ENDIF.

IF NOT t_itab1[] IS INITIAL.

  • FETCHING NAME1

SELECT werks

name1

FROM t001w

INTO TABLE t_name1

FOR ALL ENTRIES IN t_itab1

WHERE werks = t_itab1-werks.

SORT t_itab1 BY werks.

SORT t_name1 BY werks.

IF sy-subrc = 0.

LOOP AT t_itab1 INTO wa_itab1.

hold_tabix = sy-tabix.

READ TABLE t_name1 INTO wa_name1 WITH KEY werks = wa_itab1-werks

BINARY SEARCH.

IF sy-subrc = 0.

wa_itab1-name1 = wa_name1-name1.

MODIFY t_itab1 INDEX hold_tabix FROM wa_itab1.

ENDIF.

  • FETCHING HEADER TEXT

MOVE wa_itab1-ebeln TO ws_name.

CALL FUNCTION 'READ_TEXT'

EXPORTING

id = ws_id

language = sy-langu

name = ws_name

object = ws_object

TABLES

lines = t_tlinetab

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8.

IF sy-subrc = 0.

LOOP AT t_tlinetab INTO wa_tlinetab.

wa_itab1-header_text = wa_tlinetab-tdline.

MODIFY t_itab1 FROM wa_itab1.

ENDLOOP.

ENDIF. " IF sy-subrc = 0.

CLEAR : wa_itab1,

hold_tabix,

wa_name1.

ENDLOOP.

ENDIF.

ENDIF. " IF NOT t_itab1[] IS INITIAL.

IF t_itab1[] IS INITIAL.

MESSAGE i000(zg) WITH text-008.

ENDIF.

SORT : t_itab1 BY bukrs lifnr ebeln ebelp.

ENDFORM. " fetch_data

&----


*& Form build_fieldcatalog *

&----


FORM build_fieldcatalog .

  • COMPANY CODE

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'BUKRS'.

lf_fieldcat-ref_tabname = 'EKKO'.

lf_fieldcat-ref_fieldname = 'BUKRS'.

lf_fieldcat-fix_column = 'X'.

APPEND lf_fieldcat TO lt_fieldcat.

  • VENDOR

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'LIFNR'.

lf_fieldcat-ref_tabname = 'EKKO'.

lf_fieldcat-ref_fieldname = 'LIFNR'.

lf_fieldcat-fix_column = 'X'.

APPEND lf_fieldcat TO lt_fieldcat.

  • PURCHASING DOCUMENT NUMBER

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'EBELN'.

lf_fieldcat-ref_tabname = 'EKKO'.

lf_fieldcat-ref_fieldname = 'EBELN'.

  • lf_fieldcat-key = 'X'.

lf_fieldcat-do_sum = 'X'.

lf_fieldcat-fix_column = 'X'.

APPEND lf_fieldcat TO lt_fieldcat.

  • ITEM NUMBER OF PURCHASING DOCUMENT

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'EBELP'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'EBELP'.

APPEND lf_fieldcat TO lt_fieldcat.

  • SHORT TEXT

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'TXZ01'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'TXZ01'.

APPEND lf_fieldcat TO lt_fieldcat.

  • MATERIAL NUMBER

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'MATNR'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'MATNR'.

APPEND lf_fieldcat TO lt_fieldcat.

  • PLANT

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'WERKS'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'WERKS'.

APPEND lf_fieldcat TO lt_fieldcat.

  • NAME

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NAME1'.

lf_fieldcat-ref_tabname = 'T001W'.

lf_fieldcat-ref_fieldname = 'NAME1'.

APPEND lf_fieldcat TO lt_fieldcat.

  • PURCHASE ORDER QUANTITY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'MENGE'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'MENGE'.

lf_fieldcat-do_sum = 'X'.

lf_fieldcat-qfieldname = 'MEINS'.

APPEND lf_fieldcat TO lt_fieldcat.

  • UNIT

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'MEINS'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'MEINS'.

APPEND lf_fieldcat TO lt_fieldcat.

  • NET PRICE IN PURCHASING DOCUMENT

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NETPR'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'NETPR'.

lf_fieldcat-cfieldname = 'WAERS'.

lf_fieldcat-do_sum = 'X'.

APPEND lf_fieldcat TO lt_fieldcat.

  • NET ORDER VALUE IN PO CURRENCY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NETWR'.

lf_fieldcat-ref_tabname = 'EKPO'.

lf_fieldcat-ref_fieldname = 'NETWR'.

lf_fieldcat-cfieldname = 'WAERS'.

lf_fieldcat-do_sum = 'X'.

APPEND lf_fieldcat TO lt_fieldcat.

  • CURRENCY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'WAERS'.

lf_fieldcat-ref_tabname = 'EKKO'.

lf_fieldcat-ref_fieldname = 'WAERS'.

APPEND lf_fieldcat TO lt_fieldcat.

  • HEADER TEXT

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'HEADER_TEXT'.

lf_fieldcat-seltext_m = 'Header Text'.

APPEND lf_fieldcat TO lt_fieldcat.

ENDFORM. " build_fieldcatalog

&----


*& Form display_grid *

&----


FORM display_grid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = ws_repid

i_callback_pf_status_set = 'PF_STATUS'

i_callback_user_command = 'USER_COMMAND'

is_layout = l_layout

it_fieldcat = lt_fieldcat

it_sort = l_sort

i_save = 'X'

  • IMPORTING

TABLES

t_outtab = t_itab1

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. " display_grid

&----


*& Form build_layout *

&----


FORM build_layout .

l_layout-colwidth_optimize = 'X'.

l_layout-zebra = 'X'.

l_layout-box_fieldname = 'CHK'.

l_layout-box_tabname = 'T_ITAB1' .

ENDFORM. " build_layout

&----


*& Form sort_layout *

&----


FORM sort_layout .

CLEAR w_sort.

w_sort-fieldname = 'BUKRS'.

w_sort-tabname = 'T_ITAB1'.

w_sort-spos = 1.

w_sort-up = 'X'.

w_sort-subtot = 'X'.

APPEND w_sort TO l_sort.

CLEAR w_sort.

w_sort-fieldname = 'EBELN'.

w_sort-tabname = 'T_ITAB1'.

w_sort-spos = 1.

w_sort-up = 'X'.

w_sort-subtot = 'X'.

APPEND w_sort TO l_sort.

ENDFORM. " sort_layout

&----


*& Form PF_STATUS

&----


FORM pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD1' EXCLUDING rt_extab.

ENDFORM. " PF_STATUS

&----


*& Form user_command

&----


FORM user_command USING s_ucomm TYPE sy-ucomm

rs_selfield TYPE slis_selfield.

CLEAR wa_itab1.

READ TABLE t_itab1 INTO wa_itab1 INDEX rs_selfield-tabindex.

CASE s_ucomm.

WHEN 'POD'.

SET PARAMETER ID 'BES' FIELD wa_itab1-ebeln.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

CLEAR wa_itab1.

WHEN 'MAT'.

SET PARAMETER ID 'MAT' FIELD wa_itab1-matnr.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

WHEN '&IC1'.

IF rs_selfield-fieldname = 'MATNR'.

SET PARAMETER ID 'MAT' FIELD wa_itab1-matnr.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

ELSEIF rs_selfield-fieldname = 'EBELN'.

SET PARAMETER ID 'BES' FIELD wa_itab1-ebeln.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

WHEN 'PRINT'.

PERFORM multiple_sel.

PERFORM call_form.

CLEAR : f_itab1, f_itab2.

WHEN 'SMART'.

PERFORM multiple_sel.

PERFORM call_smartform.

ENDCASE.

ENDFORM. "user_command

&----


*& Form multiple_sel

&----


FORM multiple_sel .

LOOP AT t_itab1 INTO wa_itab1 WHERE chk = 'X' .

MOVE wa_itab1 TO wa_fitab1.

APPEND wa_fitab1 TO f_itab1.

CLEAR: wa_itab1, wa_fitab1.

ENDLOOP.

SORT f_itab1 BY ebeln ebelp bukrs lifnr.

ENDFORM. " multiple_sel

&----


*& Form call_form

&----


  • Calling script form layout

----


FORM call_form .

CALL FUNCTION 'OPEN_FORM'.

LOOP AT f_itab1 INTO wa_fitab1.

  • MOVE wa_fitab1 TO wa_fitab2.

APPEND wa_fitab1 TO f_itab2.

ENDLOOP.

SORT f_itab2 BY ebeln ebelp.

DELETE ADJACENT DUPLICATES FROM f_itab2 COMPARING ebeln.

CLEAR: wa_itab1, wa_fitab1.

LOOP AT f_itab2 INTO wa_fitab2.

  • START FORM

CALL FUNCTION 'START_FORM'

EXPORTING

form = lc_form

program = repid.

  • HEADER

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'PON'

window = 'PON'.

*FETCHING ADDRESS

SELECT SINGLE *

FROM lfa1 INTO wa_lfa1

WHERE lifnr = wa_fitab2-lifnr.

  • ADDRESS

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ADDRESS'

window = 'ADDRESS'.

*FETCHING PURCHASE ORDER TYPE DESCRIPTION.

SELECT SINGLE batxt FROM t161t INTO t161t-batxt WHERE

bsart = wa_fitab2-bsart AND

spras = sy-langu.

  • PURCHASE ORDER TYPE

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'POT'

window = 'POT'.

  • HEADER TEXT

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'HTEXT'

window = 'HTEXT'.

  • COLUMN HEADINGS

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'COLUMN'

window = 'COLUMN'.

LOOP AT f_itab1 INTO wa_fitab1 WHERE ebeln = wa_fitab2-ebeln.

  • MAIN

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'MAIN'

window = 'MAIN'.

total = total + wa_fitab1-netpr. "TOTAL

quantity = quantity + wa_fitab1-menge. "QUANTITY

ENDLOOP.

  • FOOTER

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'FOOTER'

window = 'FOOTER'.

*END FORM

CALL FUNCTION 'END_FORM'.

CLEAR : total, quantity.

ENDLOOP.

*CLOSE FORM

CALL FUNCTION 'CLOSE_FORM'.

ENDFORM. " call_form

&----


*& Form CALL_SMARTFORM

&----


FORM call_smartform.

DATA: fm_name TYPE rs38l_fnam.

DATA: lc_form TYPE tdsfname.

ENDFORM. " CALL_SMARTFORM

Former Member
0 Kudos

Hi Kiran,

&PRT----> Function Code for print.

Define this in Application tool bar of PFstatus.

Reward points if found useful.

Radhi..

kiran_k8
Active Contributor
0 Kudos

Thanks a lot,

K.Kiran.