ABAP ALV Grid Control (BC-SRV-ALV) eBook
ABAP Tips No Comments »Below eBook is for ALV Grid Control (BC-SRV-ALV). If you need it, you can download it.
Download ALV Grid Control eBook
Below eBook is for ALV Grid Control (BC-SRV-ALV). If you need it, you can download it.
Download ALV Grid Control eBook
Today, my customer ask me to add a function that when he double click order colum, he wants to see CO03.
Below is the ABAP code.
*&———————————————————————*
*& Form LINE_SELECTION
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CHECK r_ucomm EQ ‘&IC1′ AND NOT rs_selfield-value IS INITIAL.
CASE rs_selfield-fieldname.
WHEN ‘AUFNR’.
SET PARAMETER ID ‘ANR’ FIELD rs_selfield-value.
CALL TRANSACTION ‘CO03′ AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. ” LINE_SELECTION
REPORT zgrd_sd_flow_alv_001 .
TYPE-POOLS: slis.
TABLES: vbak,vbap, knvv, kna1, mara ,lips, vbrp.
TYPES: BEGIN OF record,
sdoc LIKE vbak-vbeln,
sitem LIKE vbap-posnr,
mcode LIKE mara-matnr,
mname LIKE vbap-arktx,
oquanti LIKE vbap-kwmeng,
ovalue LIKE vbap-netwr,
ocurrency LIKE vbap-waerk,
ddoc LIKE lips-vbeln,
ditem LIKE lips-posnr,
idoc LIKE vbrp-vbeln,
iitem LIKE vbrp-posnr,
END OF record.
DATA: itab TYPE STANDARD TABLE OF record WITH HEADER LINE.
DATA: name1 LIKE kna1-name1,
name2 LIKE kna1-name2.
DATA: i_fieldcat_alv TYPE slis_t_fieldcat_alv WITH HEADER LINE,
it_events TYPE slis_alv_event OCCURS 1 WITH HEADER LINE,
alv_event TYPE slis_t_event,
I_layout TYPE slis_layout_alv,
i_fieldcat TYPE slis_fieldcat_alv,
pos TYPE i VALUE 1,
w_repid LIKE sy-repid.
*———————————————————————-*
* Selection-screen design *
*———————————————————————-*
SELECT-OPTIONS: o_date FOR vbak-erdat OBLIGATORY. “sales docu date
PARAMETERS: customer LIKE vbak-kunnr OBLIGATORY
DEFAULT ‘GCN00010′, “customer code
material LIKE mara-matnr OBLIGATORY
DEFAULT ‘000000000280012001′. “material number
*———————————————————————-*
* Start of selection event *
*———————————————————————-*
*START-OF-SELECTION.
PERFORM data_selection.
perform layout_build.
PERFORM fields.
PERFORM append_alv_event CHANGING alv_event.
PERFORM display_data.
*———————————————————————-*
*form data_selection
**
*———————————————————————-*
FORM data_selection.
SELECT a~vbeln b~posnr c~matnr b~arktx b~kwmeng b~netwr b~waerk
c~vbeln c~posnr d~vbeln d~posnr
INTO (itab-sdoc, itab-sitem, itab-mcode, itab-mname,
itab-oquanti,itab-ovalue,itab-ocurrency, itab-ddoc,
itab-ditem, itab-idoc, itab-iitem)
FROM ( ( lips AS c
INNER JOIN vbrp AS d ON c~vbeln = d~vgbel
AND c~posnr = d~vgpos
INNER JOIN vbap AS b ON c~vgbel = b~vbeln
AND c~vgpos = b~posnr )
INNER JOIN vbak AS a ON a~vbeln = b~vbeln )
WHERE a~erdat IN o_date AND a~kunnr = customer AND b~matnr = material.
APPEND itab.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE ‘No Corresponding Record!’ TYPE ‘I’.
ENDIF.
ENDFORM. “data_selection
*———————————————————————-*
*form fields
**
*———————————————————————-*
FORM fields.
REFRESH i_fieldcat_alv.
pos = 1.
CLEAR i_fieldcat.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘SDOC’.
i_fieldcat-seltext_l = ‘주문번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘SITEM’.
i_fieldcat-seltext_l = ‘아이템번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘MCODE’.
i_fieldcat-seltext_l = ‘제품코드’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘MNAME’.
i_fieldcat-seltext_l = ‘제품명’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘OQUANTI’.
i_fieldcat-seltext_l = ‘주문수량’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘OVALUE’.
i_fieldcat-seltext_l = ‘주문실적’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘OCURRENCY’.
i_fieldcat-seltext_l = ‘단위’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘DDOC’.
i_fieldcat-seltext_l = ‘납품문서번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘DITEM’.
i_fieldcat-seltext_l = ‘아이템’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘IDOC’.
i_fieldcat-seltext_l = ‘대금청구번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘IITEM’.
i_fieldcat-seltext_l = ‘아이템번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
ENDFORM. “fields
*———————————————————————-*
*form display_data
**
*———————————————————————-*
FORM display_data.
w_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program = w_repid
i_callback_user_command = ‘USER_COMMAND’
is_layout = i_layout
it_events = alv_event[]
* i_save = ‘ ‘
it_fieldcat = i_fieldcat_alv[]
TABLES
t_outtab = itab.
ENDFORM. “display_data
*———————————————————————-*
*form layout_build
**
*———————————————————————-*
Form layout_build.
* I_layout-detail_popup = ‘X’. ” Display row in popup
I_layout-get_selinfos = ‘X’. ” Read selection screen in
i_layout-colwidth_optimize = ‘X’.
* layout-zebra = ‘X’. “striped pattern
* I_layout-f2code = ‘&ETA’.
endform. ” BUILD_LAYOUT
*———————————————————————-*
* <–P_ALV_EVENT text
*———————————————————————-*
FORM append_alv_event CHANGING p_alv_event TYPE slis_t_event.
DATA ls_events TYPE slis_alv_event.
ls_events-name = ‘USER_COMMAND’.
ls_events-form = ‘USER_COMMAND’.
APPEND ls_events TO p_alv_event.
* ls_events-name = ‘TOP_OF_PAGE’.
* ls_events-form = ‘TOP_OF_PAGE’.
* APPEND ls_events TO p_alv_event.
ENDFORM. ” append_alv_event
*&———————————————————————*
*& Form LINE_SELECTION
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CHECK r_ucomm EQ ‘&IC1′ AND NOT rs_selfield-value IS INITIAL.
CASE rs_selfield-fieldname.
WHEN ‘ITAB-SDOC’.
SET PARAMETER ID ‘AUN’ FIELD rs_selfield-valuE.
CALL TRANSACTION ‘VA03′ AND SKIP FIRST SCREEN.
WHEN ‘ITAB-DDOC’.
SET PARAMETER ID ‘VL’ FIELD rs_selfield-value.
CALL TRANSACTION ‘VL03N’ AND SKIP FIRST SCREEN.
WHEN ‘ITAB-IDOC’.
SET PARAMETER ID ‘VF’ FIELD rs_selfield-value.
CALL TRANSACTION ‘VF03′ AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. ” LINE_SELECTION
*&———————————————————————*
*& Report ZJACKTEST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
REPORT ZJACKTEST.
TYPE-POOLS: slis.
TABLES: vbak,vbap, knvv, kna1, mara ,lips, vbrp.
TYPES: BEGIN OF record,
sdoc LIKE vbak-vbeln,
sitem LIKE vbap-posnr,
mcode LIKE mara-matnr,
mname LIKE vbap-arktx,
oquanti LIKE vbap-kwmeng,
ovalue LIKE vbap-netwr,
ocurrency LIKE vbap-waerk,
ddoc LIKE lips-vbeln,
ditem LIKE lips-posnr,
idoc LIKE vbrp-vbeln,
iitem LIKE vbrp-posnr,
END OF record.
DATA: itab TYPE STANDARD TABLE OF record WITH HEADER LINE.
DATA: name1 LIKE kna1-name1,
name2 LIKE kna1-name2.
DATA: i_fieldcat_alv TYPE slis_t_fieldcat_alv WITH HEADER LINE,
it_events TYPE slis_alv_event OCCURS 1 WITH HEADER LINE,
alv_event TYPE slis_t_event,
I_layout TYPE slis_layout_alv,
i_fieldcat TYPE slis_fieldcat_alv,
pos TYPE i VALUE 1,
w_repid LIKE sy-repid.
*———————————————————————-*
* Selection-screen design *
*———————————————————————-*
SELECT-OPTIONS: o_date FOR vbak-erdat OBLIGATORY. "sales docu date
PARAMETERS: customer LIKE vbak-kunnr OBLIGATORY
DEFAULT ‘GCN00010′, "customer code
material LIKE mara-matnr OBLIGATORY
DEFAULT ‘000000000280012001′. "material number
*———————————————————————-*
* Start of selection event *
*———————————————————————-*
*START-OF-SELECTION.
PERFORM data_selection.
perform layout_build.
PERFORM fields.
PERFORM append_alv_event CHANGING alv_event.
PERFORM display_data.
*———————————————————————-*
*form data_selection
**
*———————————————————————-*
FORM data_selection.
SELECT a~vbeln b~posnr c~matnr b~arktx b~kwmeng b~netwr b~waerk
c~vbeln c~posnr d~vbeln d~posnr
INTO (itab-sdoc, itab-sitem, itab-mcode, itab-mname,
itab-oquanti,itab-ovalue,itab-ocurrency, itab-ddoc,
itab-ditem, itab-idoc, itab-iitem)
FROM ( ( lips AS c
INNER JOIN vbrp AS d ON c~vbeln = d~vgbel
AND c~posnr = d~vgpos
INNER JOIN vbap AS b ON c~vgbel = b~vbeln
AND c~vgpos = b~posnr )
INNER JOIN vbak AS a ON a~vbeln = b~vbeln )
WHERE a~erdat IN o_date AND a~kunnr = customer AND b~matnr = material.
APPEND itab.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE ‘No Corresponding Record!’ TYPE ‘I’.
ENDIF.
ENDFORM. "data_selection
*———————————————————————-*
*form fields
**
*———————————————————————-*
FORM fields.
REFRESH i_fieldcat_alv.
pos = 1.
CLEAR i_fieldcat.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘SDOC’.
i_fieldcat-seltext_l = ‘주문번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘SITEM’.
i_fieldcat-seltext_l = ‘아이템번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘MCODE’.
i_fieldcat-seltext_l = ‘제품코드’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘MNAME’.
i_fieldcat-seltext_l = ‘제품명’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘OQUANTI’.
i_fieldcat-seltext_l = ‘주문수량’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘OVALUE’.
i_fieldcat-seltext_l = ‘주문실적’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘OCURRENCY’.
i_fieldcat-seltext_l = ‘단위’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘DDOC’.
i_fieldcat-seltext_l = ‘납품문서번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘DITEM’.
i_fieldcat-seltext_l = ‘아이템’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘IDOC’.
i_fieldcat-seltext_l = ‘대금청구번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
pos = pos + 1.
i_fieldcat-col_pos = pos.
i_fieldcat-fieldname = ‘IITEM’.
i_fieldcat-seltext_l = ‘아이템번호’.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
ENDFORM. "fields
*———————————————————————-*
*form display_data
**
*———————————————————————-*
FORM display_data.
w_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program = w_repid
i_callback_user_command = ‘USER_COMMAND’
is_layout = i_layout
it_events = alv_event[]
* i_save = ‘ ‘
it_fieldcat = i_fieldcat_alv[]
TABLES
t_outtab = itab.
ENDFORM. "display_data
*———————————————————————-*
*form layout_build
**
*———————————————————————-*
Form layout_build.
* I_layout-detail_popup = ‘X’. " Display row in popup
I_layout-get_selinfos = ‘X’. " Read selection screen in
i_layout-colwidth_optimize = ‘X’.
* layout-zebra = ‘X’. "striped pattern
* I_layout-f2code = ‘&ETA’.
endform. " BUILD_LAYOUT
*———————————————————————-*
* <–P_ALV_EVENT text
*———————————————————————-*
FORM append_alv_event CHANGING p_alv_event TYPE slis_t_event.
DATA ls_events TYPE slis_alv_event.
ls_events-name = ‘USER_COMMAND’.
ls_events-form = ‘USER_COMMAND’.
APPEND ls_events TO p_alv_event.
* ls_events-name = ‘TOP_OF_PAGE’.
* ls_events-form = ‘TOP_OF_PAGE’.
* APPEND ls_events TO p_alv_event.
ENDFORM. " append_alv_event
*&———————————————————————*
*& Form LINE_SELECTION
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CHECK r_ucomm EQ ‘&IC1′ AND NOT rs_selfield-value IS INITIAL.
CASE rs_selfield-fieldname.
WHEN ‘ITAB-SDOC’.
SET PARAMETER ID ‘AUN’ FIELD rs_selfield-valuE.
CALL TRANSACTION ‘VA03′ AND SKIP FIRST SCREEN.
WHEN ‘ITAB-DDOC’.
SET PARAMETER ID ‘VL’ FIELD rs_selfield-value.
CALL TRANSACTION ‘VL03N’ AND SKIP FIRST SCREEN.
WHEN ‘ITAB-IDOC’.
SET PARAMETER ID ‘VF’ FIELD rs_selfield-value.
CALL TRANSACTION ‘VF03′ AND SKIP FIRST SCREEN.
ENDCASE.
*&———————————————————————*
*& Report ZJACKTEST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
REPORT ZJACKTEST.
*========================== Global definitions =======================*
**
* Data Types
**
TYPE-pools: slis.
TYPES: BEGIN OF tp_data,
ebeln LIKE ekko-ebeln,
aedat LIKE ekko-aedat,
lifnr LIKE ekko-lifnr,
ebelp LIKE ekpo-ebelp,
txz01 LIKE ekpo-txz01,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
__mark,
END OF tp_data,
tp_tbl_data TYPE STANDARD TABLE OF tp_data.
**
* Constants
**
**
* Data objects (variable declarations and definitions)
**
* Report data to be shown.
DATA: it_data TYPE STANDARD TABLE OF tp_data.
* Heading of the report.
DATA: t_heading TYPE slis_t_listheader.
*========================== Selection Screen ==========================*
selection-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01.
DATA: w_aux_ebeln LIKE ekko-ebeln.
SELECT-OPTIONS s_ebeln FOR w_aux_ebeln .
DATA: w_aux_aedat LIKE ekko-aedat.
SELECT-OPTIONS s_aedat FOR w_aux_aedat .
DATA: w_aux_name1 LIKE lfa1-name1.
SELECT-OPTIONS s_name1 FOR w_aux_name1 .
selection-SCREEN: END OF BLOCK b1.
*=========================== Event Blocks =============================*
AT selection-SCREEN.
start-OF-selection.
PERFORM get_data USING it_data.
END-OF-selection.
PERFORM build_alv USING it_data t_heading.
*=========================== Subroutines ==============================*
*&———————————————————————*
*& Form get_data
*&———————————————————————*
* Gets the information to be shown in the report.
*———————————————————————-*
FORM get_data USING t_data TYPE tp_tbl_data.
SELECT e~lifnr
e~ebeln
e~aedat
p~ebelp
p~txz01
p~menge
p~netpr
p~peinh
INTO CORRESPONDING FIELDS OF TABLE t_data
FROM ekko AS e
inner JOIN lfa1 AS l ON e~lifnr = l~lifnr
inner JOIN ekpo AS p ON p~ebeln = e~ebeln
WHERE e~ebeln IN s_ebeln
AND e~aedat IN s_aedat
AND l~name1 IN s_name1
.
ENDFORM. " get_data
*&———————————————————————*
*& Form build_alv
*&———————————————————————*
* Builds and display the ALV Grid.
*———————————————————————-*
FORM build_alv USING t_data TYPE tp_tbl_data
t_heading TYPE slis_t_listheader.
* ALV required data objects.
DATA: w_title TYPE lvc_title,
w_comm TYPE slis_formname,
w_status TYPE slis_formname,
x_layout TYPE slis_layout_alv,
t_event TYPE slis_t_event,
t_fieldcat TYPE slis_t_fieldcat_alv,
t_sort TYPE slis_t_sortinfo_alv.
REFRESH t_fieldcat.
REFRESH t_event.
REFRESH t_sort.
CLEAR x_layout.
CLEAR w_title.
* Field Catalog
PERFORM set_fieldcat2 USING:
1 ‘__MARK’ ‘XFELD’ space space space ‘Select’ ‘Select this row’ ‘Sel’ ‘Select this row’ space space space ‘X’ ‘X’ space t_fieldcat,
2 ‘LIFNR’ ‘LIFNR’ ‘EKKO’ space space space space space space space space space space space space t_fieldcat ,
3 ‘EBELN’ ‘EBELN’ ‘EKKO’ space space space space space space space ‘X’ space space space space t_fieldcat ,
4 ‘AEDAT’ ‘AEDAT’ ‘EKKO’ space space space space space space space space space space space space t_fieldcat ,
5 ‘EBELP’ ‘EBELP’ ‘EKPO’ space space space space space space space space space space space space t_fieldcat ,
6 ‘TXZ01′ ‘TXZ01′ ‘EKPO’ space space space space space space space space space space space space t_fieldcat ,
7 ‘MENGE’ ‘MENGE’ ‘EKPO’ space space space space space space space space space space space ‘X’ t_fieldcat ,
8 ‘NETPR’ ‘NETPR’ ‘EKPO’ space space space space space space space space space space space space t_fieldcat ,
9 ‘PEINH’ ‘PEINH’ ‘EKPO’ space space space space space space space space space space space space t_fieldcat .
* Layout
x_layout-zebra = ‘X’.
* Top of page heading
PERFORM set_top_page_heading USING t_heading t_event.
* Events
PERFORM set_events USING t_event.
* GUI Status
w_status = ”.
* User commands
w_comm = ‘USER_COMMAND’.
* Order
* Example
* PERFORM set_order USING ‘<field>’ ‘IT_DATA’ ‘X’ space space t_sort.
PERFORM set_order USING ‘LIFNR’ ‘IT_DATA’ ‘X’ space ‘X’ t_sort.
PERFORM set_order USING ‘EBELN’ ‘IT_DATA’ ‘X’ space ‘X’ t_sort.
PERFORM set_order USING ‘EBELP’ ‘IT_DATA’ ‘X’ space space t_sort.
* Displays the ALV grid
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
it_fieldcat = t_fieldcat
is_layout = x_layout
it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = ‘X’
it_events = t_event
i_grid_title = w_title
TABLES
t_outtab = t_data
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. " build_alv.
*&———————————————————————*
*& Form set_top_page_heading
*&———————————————————————*
* Creates the report headings.
*———————————————————————-*
FORM set_top_page_heading USING t_heading TYPE slis_t_listheader
t_events TYPE slis_t_event.
DATA: x_heading TYPE slis_listheader,
x_event TYPE LINE OF slis_t_event.
* Report title
CLEAR t_heading[].
CLEAR x_heading.
x_heading-typ = ‘H’.
x_heading-info = ‘Reporte Prueba’(001).
APPEND x_heading TO t_heading.
* Program name
CLEAR x_heading.
x_heading-typ = ‘S’.
x_heading-KEY = ‘Program: ‘.
x_heading-info = sy-repid.
APPEND x_heading TO t_heading.
* User who is running the report
CLEAR x_heading.
x_heading-typ = ‘S’.
x_heading-KEY = ‘User: ‘.
x_heading-info = sy-uname.
APPEND x_heading TO t_heading.
* Date of execution
CLEAR x_heading.
x_heading-typ = ‘S’.
x_heading-KEY = ‘Date: ‘.
WRITE sy-datum TO x_heading-info.
APPEND x_heading TO t_heading.
* Time of execution
CLEAR x_heading.
x_heading-typ = ‘S’.
x_heading-KEY = ‘Time: ‘.
WRITE sy-uzeit TO x_heading-info.
APPEND x_heading TO t_heading.
* Top of page event
x_event-name = slis_ev_top_of_page.
x_event-FORM = ‘TOP_OF_PAGE’.
APPEND x_event TO t_events.
ENDFORM.
*&———————————————————————*
*& Form set_events
*&———————————————————————*
* Sets the events for ALV.
* The TOP_OF_PAGE event is alredy being registered in
* the set_top_page_heading subroutine.
*———————————————————————-*
FORM set_events USING t_events TYPE slis_t_event.
DATA: x_event TYPE LINE OF slis_t_event.
**
* Example
* ——-
* clear x_event.
* x_event-name = .
* x_event-form = .
* append x_event to t_event.
**
ENDFORM.
*&———————————————————————*
*& Form set_order
*&———————————————————————*
* Adds an entry to the order table.
*———————————————————————-*
FORM set_order USING p_fieldname p_tabname p_up p_down p_subtot
t_sort TYPE slis_t_sortinfo_alv.
DATA: x_sort TYPE slis_sortinfo_alv.
CLEAR x_sort.
x_sort-fieldname = p_fieldname.
x_sort-tabname = p_tabname.
x_sort-UP = p_up.
x_sort-down = p_down.
x_sort-subtot = p_subtot.
APPEND x_sort TO t_sort.
ENDFORM. "set_order
*&———————————————————————*
*& Form set_fieldcat2
*&———————————————————————*
* Adds an entry to the field catalog.
*———————————————————————-*
FORM set_fieldcat2 USING p_colpos p_fieldname p_ref_fieldname p_ref_tabname
p_outputlen p_noout
p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
p_hotspot p_showasicon p_checkbox p_edit
p_dosum
t_fieldcat TYPE slis_t_fieldcat_alv.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
CLEAR wa_fieldcat.
* General settings
wa_fieldcat-fieldname = p_fieldname.
wa_fieldcat-col_pos = p_colpos.
wa_fieldcat-no_out = p_noout.
wa_fieldcat-HOTSPOT = p_hotspot.
wa_fieldcat-CHECKBOX = p_checkbox.
wa_fieldcat-ICON = p_showasicon.
wa_fieldcat-do_sum = p_dosum.
* Set reference fieldname, tablenam and rollname.
* If p_ref_tabname is not given, the ref_fieldname given is a data element.
* If p_ref_tabname is given, the ref_fieldname given is a field of a table. In case ref_fieldname is not given, it is copied from the fieldname.
IF p_ref_tabname IS INITIAL.
wa_fieldcat-rollname = p_ref_fieldname.
ELSE.
wa_fieldcat-ref_tabname = p_ref_tabname.
IF p_ref_fieldname EQ space.
wa_fieldcat-ref_fieldname = wa_fieldcat-fieldname.
ELSE.
wa_fieldcat-ref_fieldname = p_ref_fieldname.
ENDIF.
ENDIF.
* Set output length.
IF NOT p_outputlen IS INITIAL.
wa_fieldcat-outputlen = p_outputlen.
ENDIF.
* Set text headers.
IF NOT p_seltext_m IS INITIAL.
wa_fieldcat-seltext_m = p_seltext_m.
ENDIF.
IF NOT p_seltext_l IS INITIAL.
wa_fieldcat-seltext_l = p_seltext_l.
ENDIF.
IF NOT p_seltext_s IS INITIAL.
wa_fieldcat-seltext_s = p_seltext_s.
ENDIF.
IF NOT p_reptext_ddic IS INITIAL.
wa_fieldcat-reptext_ddic = p_reptext_ddic.
ENDIF.
IF NOT p_ddictxt IS INITIAL.
wa_fieldcat-ddictxt = p_ddictxt.
ENDIF.
* Set as editable or not.
IF p_edit IS NOT INITIAL.
wa_fieldcat-INPUT = ‘X’.
wa_fieldcat-EDIT = ‘X’.
ENDIF.
APPEND wa_fieldcat TO t_fieldcat.
ENDFORM. "set_fieldcat2
*=========================== Subroutines called by ALV ================*
*&———————————————————————*
*& Form top_of_page
*&———————————————————————*
* Called on top_of_page ALV event.
* Prints the heading.
*———————————————————————-*
FORM top_of_page.
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
* i_logo = ‘XXXXX’
it_list_commentary = t_heading.
ENDFORM. " alv_top_of_page
*&———————————————————————*
*& Form user_command
*&———————————————————————*
* Called on user_command ALV event.
* Executes custom commands.
*———————————————————————-*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
**
* Example Code
*
* Executes a command considering the sy-ucomm.
* CASE r_ucomm.
* WHEN ‘&IC1′.
*
* Set your "double click action" response here.
*
* Example code: Create and display a status message.
* DATA: w_msg TYPE string,
* w_row(4) TYPE n.
* w_row = rs_selfield-tabindex.
* CONCATENATE ‘You have clicked row’ w_row
* ‘field’ rs_selfield-fieldname
* ‘with value’ rs_selfield-value
* INTO w_msg SEPARATED BY space.
* MESSAGE w_msg TYPE ‘S’.
*
* ENDCASE.
*
* End of example code.
**
Result
via web
Recent Comments