1. Buka t-code se38 lalu buat program baru dengan nama ZREPORT_ALV.
2. Ketikkan kode program seperti di bawah ini:
*&-------------------------------------------*
*& Report ZREPORT_ALV
*&
*&--------------------------------------------*
*&
*&
*&---------------------------------------------*
REPORT zreport_alv.
TABLES : mara, makt.
TYPES : BEGIN OF ty_gab,
chbox,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
meins LIKE mara-meins,
mtart LIKE mara-mtart,
maktx LIKE makt-maktx,
END OF ty_gab.
DATA : gi_makt LIKE STANDARD TABLE OF makt WITH HEADER LINE,
gi_gab TYPE STANDARD TABLE OF ty_gab WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK head1 WITH FRAME TITLE text-101.
SELECT-OPTIONS so_matkl FOR mara-matkl.
SELECT-OPTIONS so_matnr FOR mara-matnr.
SELECTION-SCREEN : END OF BLOCK head1.
START-OF-SELECTION.
PERFORM fm_collect_data.
PERFORM fm_process_data.
PERFORM fm_display_data.
END-OF-SELECTION.
*&---------------------------------------------*
*& Form :
*&---------------------------------------------*
* text
*------------------------------------------------------*
FORM : fm_collect_data.
SELECT matnr matkl mtart meins
INTO CORRESPONDING FIELDS OF TABLE gi_gab
FROM mara
WHERE matnr IN so_matnr
AND matkl IN so_matkl.
SELECT matnr maktx
INTO CORRESPONDING FIELDS OF TABLE gi_makt
FROM makt
FOR ALL ENTRIES IN gi_gab
WHERE matnr = gi_gab-matnr.
ENDFORM. ":
*&--------------------------------------------*
*& Form :
*&---------------------------------------------*
* text
*------------------------------------------------------*
data: lv_message type char100.
FORM : fm_process_data.
LOOP AT gi_gab.
clear lv_message.
concatenate 'Harap Tunggu, sedang memproses ' gi_gab-matnr '...'
into lv_message separated by space.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
text = lv_message.
READ TABLE gi_makt WITH KEY matnr = gi_gab-matnr.
IF sy-subrc = 0.
gi_gab-maktx = gi_makt-maktx.
ENDIF.
modify gi_gab.
ENDLOOP.
ENDFORM. ":
*&------------------------------------------*
*& Form :
*&-------------------------------------------*
* text
*-----------------------------------------------------*
FORM : fm_display_data.
ENDFORM. ":
3. Klik

4. Buiat program include baru.
5. Beri nama dengan "ZINCLUDE" Lalu tekan tombol Centang atau Enter.
6. Save program.
7. Isikan kode program berikut ke dalam program include yang telah kita buat tadi.
*&---------------------------------------------------------------------*
*& Include ZINCLUDE
*&---------------------------------------------------------------------*
TYPE-POOLS : slis.
DATA : gw_is_layout TYPE slis_layout_alv,
gi_it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gi_it_excluding TYPE slis_t_extab WITH HEADER LINE,
gi_it_special_groups TYPE slis_t_sp_group_alv WITH HEADER LINE,
gi_it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
gi_it_filter TYPE slis_t_filter_alv WITH HEADER LINE,
gw_is_sel_hide TYPE slis_sel_hide_alv,
gv_i_default,
gv_i_save,
gw_is_variant LIKE disvariant,
gi_it_events TYPE slis_t_event WITH HEADER LINE,
gi_it_event_exit TYPE slis_t_event_exit WITH HEADER LINE,
gw_is_print TYPE slis_print_alv,
gw_is_reprep_id TYPE slis_reprep_id,
zcalvlogo type char40 value '',
zcalvbackground like bapibds01-objkey value 'ALV_BACKGROUND'. .
*&--------------------------------------------------------------------*
*& Form fm_alv_show
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FT_ITAB text
*---------------------------------------------------------------------*
FORM fm_alv_show TABLES ft_itab.
CLEAR gi_it_event_exit.
gi_it_event_exit-ucomm = '&OUP'.
gi_it_event_exit-after = 'X'.
APPEND gi_it_event_exit.
CLEAR gi_it_event_exit.
gi_it_event_exit-ucomm = '&ODN'.
gi_it_event_exit-after = 'X'.
APPEND gi_it_event_exit.
CLEAR gi_it_event_exit.
gi_it_event_exit-ucomm = '&ETA'.
gi_it_event_exit-after = 'X'.
APPEND gi_it_event_exit.
CLEAR gi_it_event_exit.
gi_it_event_exit-ucomm = '&IC1'.
gi_it_event_exit-after = 'X'.
APPEND gi_it_event_exit.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
i_callback_pf_status_set = 'FM_ALV_SET_PF_STATUS'
i_callback_user_command = 'FM_ALV_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'FM_ALV_TOP_OF_PAGE'
i_background_id = zcalvbackground
* I_STRUCTURE_NAME =
is_layout = gw_is_layout
it_fieldcat = gi_it_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = gi_it_sort[]
it_filter = gi_it_filter[]
is_sel_hide = gw_is_sel_hide
i_default = gv_i_default
i_save = gv_i_save
is_variant = gw_is_variant
it_events = gi_it_events[]
it_event_exit = gi_it_event_exit[]
is_print = gw_is_print
is_reprep_id = gw_is_reprep_id
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = ft_itab
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. "fm_alv_show
*&--------------------------------------------------------------------*
*& Form fm_alv_reset_data
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_reset_data.
CLEAR : gw_is_layout,
gi_it_fieldcat,
gi_it_excluding,
gi_it_special_groups,
gi_it_sort,
gi_it_filter,
gw_is_sel_hide,
gv_i_default,
gv_i_save,
gw_is_variant,
gi_it_events,
gi_it_event_exit,
gw_is_print,
gw_is_reprep_id.
REFRESH : gi_it_fieldcat,
gi_it_excluding,
gi_it_special_groups,
gi_it_sort,
gi_it_filter,
gi_it_events,
gi_it_event_exit.
ENDFORM. "fm_alv_reset_data
*&--------------------------------------------------------------------*
*& Form fm_alv_set_layout
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_set_layout USING fu_title.
gw_is_layout-window_titlebar = fu_title.
gw_is_layout-zebra = 'X'.
gw_is_layout-colwidth_optimize = 'X'.
gw_is_layout-no_colhead = space.
gw_is_layout-group_change_edit = 'X'.
gw_is_layout-box_fieldname = 'CHBOX'.
"gw_is_layout-no_totalline = 'X'.
ENDFORM. "fm_alv_set_layout
*&--------------------------------------------------------------------*
*& Form fm_alv_set_print
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_set_print.
gw_is_print-no_print_listinfos = 'X'.
gw_is_print-no_print_selinfos = 'X'.
gw_is_print-no_coverpage = 'X'.
gw_is_print-no_print_hierseq_item = 'X'.
ENDFORM. "fm_alv_set_print
*&--------------------------------------------------------------------*
*& Form fm_alv_add_fieldcat
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FU_1 text
* -->FU_2 text
* -->FU_3 text
* -->FU_4 text
* -->FU_5 text
* -->FU_6 text
* -->FU_7 text
* -->FU_8 text
* -->FU_9 text
* -->FU_10 text
* -->FU_11 text
* -->FU_12 text
* -->FU_13 text
* -->FU_14 text
* -->FU_15 text
* -->FU_16 text
* -->FU_17 text
* -->FU_18 text
* -->FU_19 text
* -->FU_20 text
* -->FU_21 text
*---------------------------------------------------------------------*
FORM fm_alv_add_fieldcat USING fu_1 fu_2 fu_3 fu_4 fu_5 fu_6 fu_7 fu_8 fu_9 fu_10
fu_11 fu_12 fu_13 fu_14 fu_15 fu_16 fu_17 fu_18 fu_19 fu_20 fu_21 fu_22 fu_23.
CLEAR: gi_it_fieldcat.
gi_it_fieldcat-fieldname = fu_1. " Fieldname
gi_it_fieldcat-ref_tabname = fu_2. " Reference Tablename
gi_it_fieldcat-ref_fieldname = fu_3. " Reference Fieldname
gi_it_fieldcat-no_out = fu_4. " (O)blig.(X)no out
gi_it_fieldcat-outputlen = fu_5. " Output length
gi_it_fieldcat-seltext_l = fu_6. " long key word
gi_it_fieldcat-seltext_m = fu_7. " middle key word
gi_it_fieldcat-seltext_s = fu_8. " short key word
gi_it_fieldcat-reptext_ddic = fu_9. " heading (ddic)
gi_it_fieldcat-round = fu_10. " round in write statement
gi_it_fieldcat-do_sum = fu_11. " sum up
gi_it_fieldcat-hotspot = fu_12. " 'X' = hotspot is active -> Event click
gi_it_fieldcat-decimals_out = fu_13. " decimals in write statement
gi_it_fieldcat-currency = fu_14.
gi_it_fieldcat-quantity = fu_15.
gi_it_fieldcat-qfieldname = fu_16. " field with quantity unit
gi_it_fieldcat-cfieldname = fu_17. " field with currency unit
gi_it_fieldcat-checkbox = fu_18. " 'X' = checkbox or ' ' = not checkbox
gi_it_fieldcat-icon = fu_19. " 'X' = icon or ' ' = not icon
gi_it_fieldcat-fix_column = fu_20. " 'X' = Fix Column On or ' ' = Fix Column off gi_it_fieldcat-key
gi_it_fieldcat-key = fu_21 . " 'X' = Key or ' ' = not Key
gi_it_fieldcat-no_zero = fu_22. " 'X' = Remove Zero
gi_it_fieldcat-edit = fu_23. "sets whole column to be editable
APPEND gi_it_fieldcat.
ENDFORM. "fm_alv_add_fieldcat
*&--------------------------------------------------------------------*
*& Form FM_ALV_SET_PF_STATUS
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->RT_EXTAB text
*---------------------------------------------------------------------*
FORM fm_alv_set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'YSTANDARD'.
ENDFORM. "fm_alv_set_pf_status
*&--------------------------------------------------------------------*
*& Form FM_USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_user_command USING fu_ucomm LIKE sy-ucomm
fu_selfield TYPE slis_selfield.
DATA: lt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE,
lv_ok_code LIKE sy-ucomm.
MOVE fu_ucomm TO lv_ok_code.
CASE lv_ok_code.
WHEN '&IC1'.
* PERFORM fm_alv_event_double_click.
WHEN '&ETA'.
* PERFORM fm_alv_event_double_click.
WHEN '&F03' OR '&F15' OR '&F12'.
ENDCASE.
MOVE 'X' TO fu_selfield-refresh.
ENDFORM. "FM_USER_COMMAND
8. Aktifkan program include tersebut.
9.Buka sesi baru denga mengetikkan "/ose38" lalu isi nama program dengan "SAPLKKBL" lalu display.
11. Copy Gui Status -> "Standard".
12. Isi Program dengan "ZREPORT_ALV" dan Status dengan "YSTANDARD".
13.Klik Copy.
14. Kembali ke program ZREPORT.
Tambahkan kode berikut di dalam form fm_display_data.
PERFORM fm_alv_reset_data.
* Set ALV Parameters and Data
PERFORM fm_alv_set_layout USING 'Display List of Master Material'.
"PERFORM fm_set_header USING 'Pembayaran Valas'.
PERFORM fm_alv_set_print.
PERFORM fm_alv_set_column.
gv_i_default = 'X'.
gv_i_save = 'A'.
PERFORM fm_alv_show TABLES gi_gab.
15. Tambahkan kode berikut di bawah form fm_display_data.
FORM fm_alv_set_column.
* Displaying Column by Fieldname
PERFORM fm_alv_add_fieldcat USING :
'MATNR' 'MARA' 'MATNR' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X' '' '',
'MATKL' 'MARA' 'MATKL' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X' '' '',
'MTART' 'MARA' 'MTART' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',
'MAKTX' 'MAKT' 'MAKTX' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.
* Sort and Group by Field
* CLEAR gi_it_sort.
* gi_it_sort-fieldname = 'LIFNR'. ">> Filled by Fieldname
* gi_it_sort-up = 'X'. ">> 'X' = Ascending ; ' ' = Descending
* gi_it_sort-subtot = 'X'.
* gi_it_sort-group = '*'. ">> '*' = Grouped by field ; ' ' = Not grouped by this field
* APPEND gi_it_sort.
ENDFORM. "fm_alv_set_column
FORM fm_alv_top_of_page.
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 = 'Laporan Material'.
* APPEND wa_header TO t_header.
* CLEAR wa_header.
* wa_header-typ = 'S'.
* wa_header-key = 'Company : '.
* wa_header-info = so_bukrs.
*
* APPEND wa_header TO t_header.
* CLEAR wa_header.
* wa_header-typ = 'S'.
* wa_header-key = 'Vendor : '.
* wa_header-info = so_lifnr.
* APPEND wa_header TO t_header.
* CLEAR wa_header.
* wa_header-typ = 'S'.
* wa_header-key = 'Periode: '.
** wa_header-info = so_budat.
* CONCATENATE so_budat+9(2)'.' so_budat+7(2)'.' so_budat+3(4) ' ' ' - ' ' '
* so_budat+17(2)'.' so_budat+15(2)'.' so_budat+11(4) INTO wa_header-info.
APPEND wa_header TO t_header.
CLEAR: wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM. "FM_ALV_TOP_OF_PAGE
16. Aktifkan semua program lalu jalankan.
Tidak ada komentar:
Posting Komentar