唐突にALVテンプレート
ABAPをやっていて、ALVってどう作るんだろう、
という人にしか、役に立たないものだが、
ALV一覧を作るときのテンプレートである。
選択項目、テーブル抽出、出力定義を書けば、
一応ALVの一覧ができあがる、というもので、
私は結構使っているモノである。
多分他の人が使っても、役にたつのではないかなあ、
ということで、公開である。
なお、使用に関しては、皆様自己責任でお願いするのである。
report y00001 . type-pools slis . *テーブル宣言 tables : .... *出力データ types: begin of out_data, .... end of out_data. data: vi_out_data type table of out_data, "出力 wk_count type i . *検索データ data : begin of i_data occurs 0 , ..... end of i_data . *選択画面 select-options .... *入力値チェック at selection-screen . *検索・表示 start-of-selection . *テーブル検索 perform get_data . *データの編集 perform edit_data . *データ件数の確認 clear wk_count. describe table vi_out_data lines wk_count . if wk_count = 0. message id ... "表示対象は0件です else. perform data_output. endif. *&---------------------------------------------------------------------* *& form data_output *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form data_output. *項目指定 data : it_fieldcat type slis_t_fieldcat_alv. *レイアウト設定 data : st_layout type slis_layout_alv. *ソート基準 data : it_sort type standard table of slis_sortinfo_alv, he_sort type slis_sortinfo_alv. *レポートid data : l_repid like sy-repid. *alvタイトル data : wk_title type lvc_title . *レポートid設定 l_repid = sy-repid. *タイトル設定 wk_title = .... * レイアウトの指定 st_layout-colwidth_optimize = 'X'. "列幅最適化 st_layout-zebra = 'X'. "ストライプパターン st_layout-f2code = 'detail'. "クリック時のコマンド st_layout-expand_all = 'X'. st_layout-get_selinfos = 'X'. *各項目の属性指定 perform set_property tables it_fieldcat . *ソート基準の設定 perform set_sort tables it_sort . *出力 call function 'reuse_alv_grid_display' exporting * i_interface_check = ' ' * i_bypassing_buffer = * i_buffer_active = ' ' i_callback_program = l_repid "戻り指定 * i_callback_pf_status_set = ' ' * i_callback_user_command = ' ' * i_callback_top_of_page = ' ' * i_callback_html_top_of_page = ' ' * i_callback_html_end_of_list = ' ' * i_structure_name = * i_background_id = ' ' i_grid_title = wk_title "タイトル * i_grid_settings = is_layout = st_layout it_fieldcat = it_fieldcat "項目カタログ * it_excluding = * it_special_groups = * it_sort = it_sort "ソート基準 * it_filter = * is_sel_hide = * i_default = 'X' i_save = 'a' "バリアント保存可能 * is_variant = * it_events = * it_event_exit = * is_print = * is_reprep_id = * i_screen_start_column = 0 * i_screen_start_line = 0 * i_screen_end_column = 0 * i_screen_end_line = 0 * it_alv_graphics = * it_add_fieldcat = * it_hyperlink = * importing * e_exit_caused_by_caller = * es_exit_caused_by_user = tables t_outtab = vi_out_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. " data_outpur *&---------------------------------------------------------------------* *& form set_property *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->p_he_fieldcat text *----------------------------------------------------------------------* form set_property tables p_it_fieldcat . data : he_fieldcat type slis_fieldcat_alv. *項目設定 clear he_fieldcat. he_fieldcat-fieldname = '.... he_fieldcat-seltext_s = '..... "out_dataの項目ひとつひとつについて宣言 append he_fieldcat to p_it_fieldcat. * clear he_fieldcat. he_fieldcat-fieldname = '.... he_fieldcat-seltext_s = '..... "out_dataの項目ひとつひとつについて宣言 append he_fieldcat to p_it_fieldcat. .... endform. " set_property *&---------------------------------------------------------------------* *& form set_sort *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->p_he_sort text *----------------------------------------------------------------------* form set_sort tables p_it_sort . data : he_sort type slis_sortinfo_alv. *ソート順を指定する際は、ここで指定 endform. " set_sort *&---------------------------------------------------------------------* *& form edit_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form edit_data. data : wk_outdata type out_data . loop at i_data . move-corresponding i_data to wk_outdata . *品目テキストの取得 ....などなど、編集する項目を取得し、wk_outdataに登録 append wk_outdata to vi_out_data . endloop. endform. " edit_data *&---------------------------------------------------------------------* *& form get_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form get_data. *テーブルセレクト select ... into table i_data-.... from .... where .... endform. " get_data