ABAP -ALV DrillDown Report to Transcation Code ME23N

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_tab_group type slis_t_sp_group_alv,
gd_layout    type slis_layout_alv,
gd_repid     like sy-repid,
gt_events     type slis_t_event,
gd_prntparams type slis_print_alv.

************************************************************************
*Start-of-selection.
START-OF-SELECTION.

perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
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’.
*  fieldcatalog-do_sum      = ’X’.
*  fieldcatalog-no_zero     = ’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-do_sum      = ’X’.
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  BUILD_LAYOUT
*&———————————————————————*
*       Build layout for ALV grid report
*———————————————————————-*
form build_layout.
gd_layout-no_input          = ’X’.
gd_layout-colwidth_optimize = ’X’.
gd_layout-totals_text       = ’Totals’(201).
*  gd_layout-totals_only        = ’X’.
*  gd_layout-f2code            = ’DISP’.  ”Sets fcode for when double
*                                         ”click(press f2)
*  gd_layout-zebra             = ’X’.
*  gd_layout-group_change_edit = ’X’.
*  gd_layout-header_text       = ’helllllo’.
endform.                    ” BUILD_LAYOUT

*&———————————————————————*
*&      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
i_callback_top_of_page   = ’TOP-OF-PAGE’  ”see FORM
i_callback_user_command = ’USER_COMMAND’
*            i_grid_title           = outtext
is_layout               = gd_layout
it_fieldcat             = fieldcatalog[]
*            it_special_groups       = gd_tabgroup
it_events               = gt_events
is_print                = gd_prntparams
i_save                  = ’X’
*            is_variant              = z_template
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 10 rows
from ekpo
into table it_ekko.
endform.                    ” DATA_RETRIEVAL

*——————————————————————-*
* Form  TOP-OF-PAGE                                                 *
*——————————————————————-*
* ALV Report Header                                                 *
*——————————————————————-*
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.

* Title
wa_header-typ  = ’H’.
wa_header-info = ’EKKO Table Report’.
append wa_header to t_header.
clear wa_header.

* Date
wa_header-typ  = ’S’.
wa_header-key = ’Date: ’.
CONCATENATE  sy-datum+6(2) ’.’
sy-datum+4(2) ’.’
sy-datum(4) INTO wa_header-info.   ”todays date
append wa_header to t_header.
clear: wa_header.

* Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate ’Total No. of Records Selected: ’ ld_linesc
into t_line separated by space.
wa_header-typ  = ’A’.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.

call function ’REUSE_ALV_COMMENTARY_WRITE’
exporting
it_list_commentary = t_header.
*            i_logo             = ’Z_LOGO’.
endform.

*——————————————————————*
*       FORM USER_COMMAND                                          *
*——————————————————————*
*       –> R_UCOMM                                                *
*       –> RS_SELFIELD                                            *
*——————————————————————*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

* Check function code
CASE r_ucomm.
WHEN ’&IC1′.
*   Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = ’EBELN’.
*     Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
*     Set parameter ID for transaction screen field
SET PARAMETER ID ’BES’ FIELD wa_ekko-ebeln.
*     Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION ’ME23N’ AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.

*&———————————————————————*
*&      Form  BUILD_EVENTS
*&———————————————————————*
*       Build events table
*———————————————————————-*
form build_events.
data: ls_event type slis_alv_event.

call function ’REUSE_ALV_EVENTS_GET’
exporting
i_list_type = 0
importing
et_events   = gt_events[].
read table gt_events with key name =  slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move ’END_OF_PAGE’ to ls_event-form.
append ls_event to gt_events.
endif.

read table gt_events with key name =  slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move ’END_OF_LIST’ to ls_event-form.
append ls_event to gt_events.
endif.
endform.                    ” BUILD_EVENTS

*&———————————————————————*
*&      Form  BUILD_PRINT_PARAMS
*&———————————————————————*
*       Setup print parameters
*———————————————————————-*
form build_print_params.
gd_prntparams-reserve_lines = ’3′.   ”Lines reserved for footer
gd_prntparams-no_coverpage = ’X’.
endform.                    ” BUILD_PRINT_PARAMS

*&———————————————————————*
*&      Form  END_OF_PAGE
*&———————————————————————*
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10)    type c.

write: sy-uline(50).
skip.
write:/40 ’Page:’, sy-pagno .
endform.

*&———————————————————————*
*&      Form  END_OF_LIST
*&———————————————————————*
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10)    type c.

skip.
write:/40 ’Page:’, sy-pagno .
endform.

Comment are closed.

INFORMATION