09-17-2007 11:11 AM
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.
09-17-2007 11:21 AM
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
09-17-2007 11:13 AM
09-17-2007 11:14 AM
09-17-2007 11:15 AM
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.
09-17-2007 11:15 AM
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
09-17-2007 11:16 AM
HI,
sap uses wb_print.
but you van use of your own.
thanks
vivekanand
09-17-2007 11:19 AM
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.
09-17-2007 11:23 AM
So remove the standard &RNT by adding its value to rt_extab. And manage you own Zcode in your own USER_COMMAND routine.
Regards
09-17-2007 11:21 AM
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
09-17-2007 11:26 AM
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
09-17-2007 11:40 AM
Hi Kiran,
&PRT----> Function Code for print.
Define this in Application tool bar of PFstatus.
Reward points if found useful.
Radhi..
09-22-2007 7:51 AM