概要
基本的なALVの作り方を記載。流れはデータの取得->編集->ALVの設定->表示。
たったこれだけで簡単なALVであれば作成できます。
それぞれの設定には汎用モジュールが利用できますので、パラメータを設定するだけで要件にあった表示が可能です。
サンプルコード
REPORT ytest.
TYPE-POOLS:slis.
************************************************************************
* Internal Table
************************************************************************
DATA: gi_sflight TYPE TABLE OF sflight.
*** ALV ***
DATA: gi_fieldcat TYPE slis_t_fieldcat_alv. "フィールドカタログ
************************************************************************
* Structure
************************************************************************
FIELD-SYMBOLS: <fs_sflight> LIKE LINE OF gi_sflight.
*** ALV ***
DATA: gw_layout TYPE slis_layout_alv. "レイアウト
DATA: gw_variant TYPE disvariant. "バリアント
DATA: gw_fieldcat TYPE slis_fieldcat_alv. "フィールドカタログ
************************************************************************
* Variable
************************************************************************
DATA: v_carrid TYPE sflight-carrid,
v_fldate TYPE sflight-fldate.
************************************************************************
* Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.
SELECT-OPTIONS s_carrid FOR v_carrid OBLIGATORY.
SELECT-OPTIONS s_fldate FOR v_fldate.
SELECTION-SCREEN END OF BLOCK b01.
************************************************************************
* Initial Process
************************************************************************
INITIALIZATION.
CLEAR: gi_sflight.
************************************************************************
* Main Process
************************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM edit_data.
PERFORM set_variant.
PERFORM set_layout.
PERFORM get_fieldcatalog.
PERFORM output_alv.
************************************************************************
* GET_DATA
************************************************************************
FORM get_data.
SELECT * INTO TABLE gi_sflight
FROM sflight
WHERE carrid IN s_carrid
AND fldate IN s_fldate.
ENDFORM.
************************************************************************
* EDIT_DATA
************************************************************************
FORM edit_data.
LOOP AT gi_sflight ASSIGNING <fs_sflight>.
****** 処理が必要な場合は記述 ******
ENDLOOP.
ENDFORM.
************************************************************************
* SET_VARIANT
************************************************************************
FORM set_variant.
gw_variant-report = sy-cprog.
** IT_VARIANT-HANDLE =
** IT_VARIANT-LOG_GROUP =
gw_variant-username = sy-uname.
** IT_VARIANT-VARIANT =
** IT_VARIANT-TEXT =
** IT_VARIANT-DEPENDVARS =
ENDFORM.
************************************************************************
* SET_LAYOUT
************************************************************************
FORM set_layout.
gw_layout-zebra = 'X'. "縞模様
gw_layout-colwidth_optimize = 'X'. "項目長にあわせる
gw_layout-window_titlebar = sy-title. "ALV枠のタイトル
** GW_LAYOUT-no_colhead =
** GW_LAYOUT-no_hotspot =
** GW_LAYOUT-no_vline =
** GW_LAYOUT-no_hline =
** GW_LAYOUT-cell_merge =
** GW_LAYOUT-edit =
** GW_LAYOUT-edit_mode =
** GW_LAYOUT-numc_sum =
** GW_LAYOUT-no_input =
** GW_LAYOUT-f2code =
** GW_LAYOUT-reprep =
** GW_LAYOUT-no_keyfix =
** GW_LAYOUT-expand_all =
** GW_LAYOUT-no_author =
** GW_LAYOUT-def_status =
** GW_LAYOUT-item_text =
** GW_LAYOUT-countfname =
** GW_LAYOUT-colwidth_optimize =
** GW_LAYOUT-no_min_linesize =
** GW_LAYOUT-min_linesize =
** GW_LAYOUT-max_linesize =
** GW_LAYOUT-window_titlebar =
** GW_LAYOUT-no_uline_hs =
** GW_LAYOUT-lights_fieldname =
** GW_LAYOUT-lights_tabname =
** GW_LAYOUT-lights_rollname =
** GW_LAYOUT-lights_condense =
** GW_LAYOUT-no_sumchoice =
** GW_LAYOUT-no_totalline =
** GW_LAYOUT-no_subchoice =
** GW_LAYOUT-no_subtotals =
** GW_LAYOUT-no_unit_splitting =
** GW_LAYOUT-totals_before_items =
** GW_LAYOUT-totals_only =
** GW_LAYOUT-totals_text =
** GW_LAYOUT-subtotals_text =
** GW_LAYOUT-box_fieldname =
** GW_LAYOUT-box_tabname =
** GW_LAYOUT-box_rollname =
** GW_LAYOUT-expand_fieldname =
** GW_LAYOUT-hotspot_fieldname =
** GW_LAYOUT-confirmation_prompt =
** GW_LAYOUT-key_hotspot =
** GW_LAYOUT-flexible_key =
** GW_LAYOUT-group_buttons =
** GW_LAYOUT-get_selinfos =
** GW_LAYOUT-group_change_edit =
** GW_LAYOUT-no_scrolling =
** GW_LAYOUT-detail_popup =
** GW_LAYOUT-detail_initial_lines =
** GW_LAYOUT-detail_titlebar =
** GW_LAYOUT-header_text =
** GW_LAYOUT-default_item =
** GW_LAYOUT-info_fieldname =
** GW_LAYOUT-coltab_fieldname =
** GW_LAYOUT-list_append =
** GW_LAYOUT-xifunckey =
** GW_LAYOUT-xidirect =
** GW_LAYOUT-dtc_layout =
ENDFORM.
************************************************************************
* GET_FIELDCATALOG
************************************************************************
FORM get_fieldcatalog.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
* i_internal_tabname =
I_STRUCTURE_NAME = 'SFLIGHT'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = gi_fieldcat
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
************************************************************************
* OUTPUT_ALV
************************************************************************
FORM output_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gw_layout
it_fieldcat = gi_fieldcat
is_variant = gw_variant
TABLES
t_outtab = gi_sflight
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
最近のコメント