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

Former Member
0 Kudos

Hi,

Can anyone tell me the significane of I_CALLBACK_PF_STATUS_SET and I_CALLBACK_USER_COMMAND in the FM REUSE_ALV_GRID_DISPLAY. Can we pass the PF status to this FM??

Regards,

Ganesh Prasanna

1 ACCEPTED SOLUTION

LucianoBentiveg
Active Contributor
0 Kudos

In I_CALLBACK_PF_STATUS_SET you can pass a FORM routine, in that routine you can set PF-STATUS.

In the other parameter you can specify a FORM routine where you can handle user actions in ALV report.

Examples:

FORM status USING extab TYPE slis_t_extab.

SET PF-STATUS 'STATUS' EXCLUDING extab.

ENDFORM. "STATUS

FORM user_command USING l_ucomm ls_selfield TYPE slis_selfield.

CASE ls_selfield-fieldname.

WHEN 'OBJ_NAME'.

SET PARAMETER ID 'MON' FIELD t_salida-obj_name.

CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

WHEN 'NOMBRE_PROJ'.

CALL TRANSACTION 'CMOD' AND SKIP FIRST SCREEN.

ENDCASE.

ENDFORM.

Regards.

6 REPLIES 6

LucianoBentiveg
Active Contributor
0 Kudos

In I_CALLBACK_PF_STATUS_SET you can pass a FORM routine, in that routine you can set PF-STATUS.

In the other parameter you can specify a FORM routine where you can handle user actions in ALV report.

Examples:

FORM status USING extab TYPE slis_t_extab.

SET PF-STATUS 'STATUS' EXCLUDING extab.

ENDFORM. "STATUS

FORM user_command USING l_ucomm ls_selfield TYPE slis_selfield.

CASE ls_selfield-fieldname.

WHEN 'OBJ_NAME'.

SET PARAMETER ID 'MON' FIELD t_salida-obj_name.

CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

WHEN 'NOMBRE_PROJ'.

CALL TRANSACTION 'CMOD' AND SKIP FIRST SCREEN.

ENDCASE.

ENDFORM.

Regards.

0 Kudos

hi,

do you have any example program on this.

regards.

Former Member
0 Kudos

Hi Ganesh,

You can pass your own PF-status & User commands for the ALV.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'

i_callback_user_command = 'USER_COMMAND'

is_layout = Gs_layout

it_fieldcat = Gt_fieldcat

it_sort = Gt_sort

IT_EVENTS = GT_EVENTS[]

TABLES

t_outtab = ITAB.

Former Member
0 Kudos

Hi,

You can check Funciton Module Documentaion in SE37.

There is nice documentation over there.

Thanks,

Pramod

Former Member
0 Kudos

Hi,

Example program:

REPORT ZUP_alv_Dobule_click .

*Purchasing Document Header

TABLES: ekko.

TYPE-POOLS: slis. "ALV Declarations

*Data Declaration

*----


TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,

gd_repid LIKE sy-repid.

************************************************************************

*Start-of-selection.

START-OF-SELECTION.

PERFORM data_retrieval.

PERFORM build_fieldcatalog.

PERFORM display_alv_report.

&----


*& Form BUILD_FIELDCATALOG

&----


  • Build Fieldcatalog for ALV Report

----


FORM build_fieldcatalog.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

APPEND fieldcatalog TO fieldcatalog.

CLEAR fieldcatalog.

ENDFORM. " BUILD_FIELDCATALOG

&----


*& Form DISPLAY_ALV_REPORT

&----


  • Display report using ALV grid

----


FORM display_alv_report.

gd_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = gd_repid

<b>i_callback_user_command = 'HANDLE_ALV_UCOMM'</b>

it_fieldcat = fieldcatalog[]

i_save = 'X'

TABLES

t_outtab = it_ekko

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_ALV_REPORT

&----


*& Form DATA_RETRIEVAL

&----


  • Retrieve data form EKPO table and populate itab it_ekko

----


FORM data_retrieval.

SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh

UP TO 9 ROWS INTO TABLE it_ekko

FROM ekpo." WHERE MATNR = 'CH 01'.

ENDFORM. " DATA_RETRIEVAL

&----


*& Form HANDLE_ALV_UCOMM

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELDtext

----


<b>FORM handle_alv_ucomm USING r_ucomm LIKE sy-ucomm rs_selfield TYPE

slis_selfield.

DATA : mess TYPE string, index(4) TYPE n.

DATA wa TYPE t_ekko.

index = rs_selfield-tabindex.

READ TABLE it_ekko INTO wa INDEX index.

SET PARAMETER ID : 'BES' FIELD wa-ebeln.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

CLEAR INDEX.

ENDFORM. "HANDLE_ALV_UCOMM</b>

Thanks,

Pramod

Former Member
0 Kudos

Hi,

Sample exmaple for I_CALLBACK_PF_STATUS_SET

- <i>Create your status GUI as copy of std gui</i> STANDARD_FULLSCREEN of program SAPLKKBL;

- Insert your new push button;

- Create a routine to call your bar:

FORM set_pf_status USING rt_extab TYPE slis_t_extab

SET PF-STATUS 'MY_ALV_BAR' EXCLUDING rt_extab.

ENDFORM.

- <i>Create e routine to manage your commands:</i>

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE R_UCOMM.

WHEN 'XXXX'........

ENDCASE.

ENDFORM.

- Transfers these routines to ALV fm:

GT_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = GT_REPID

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

i_callback_user_command = 'USER_COMMAND'

Thanks,

Pramod