TABLES:spfli.
TYPES:BEGIN OF ty_tab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF ty_tab.
DATA:lt_tab TYPE TABLE OF ty_tab WITH HEADER LINE,
ls_tab TYPE ty_tab.
DATA GS_REFRESH TYPE LVC_S_STBL.
DATA:GS_LAYOUT TYPE LVC_S_LAYO,
GS_VARIANT TYPE DISVARIANT.
DATA:
GT_FIELDCAT TYPE LVC_T_FCAT,
LS_FIELDCAT LIKE LINE OF GT_FIELDCAT.
DATA:CONT_100 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA:GRID_100 TYPE REF TO CL_GUI_ALV_GRID.
DATA:ok_code TYPE sy-ucomm.
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
*--热点点击控制
METHODS:
HANDLE_HOTSPOT_CLICK
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_HOTSPOT_CLICK.
PERFORM HANDLE_HOTSPOT_CLICK USING E_ROW_ID E_COLUMN_ID ES_ROW_NO.
ENDMETHOD. "HANDLE_HOTSPOT_CLICK
ENDCLASS.
START-OF-SELECTION.
SELECT carrid connid cityfrom cityto
FROM spfli
INto CORRESPONDING FIELDS OF TABLE lt_tab.
*end-OF-SELECTION.
CAll SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
CASE ok_code.
WHEN 'BACK' or 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module ALV_DATA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE ALV_DATA OUTPUT.
IF cont_100 IS INITIAL.
PERFORM alv_fill.
ELSE.
CALL METHOD grid_100->refresh_table_display
EXPORTING
is_stable = gs_refresh
i_soft_refresh = ''.
ENDIF.
*修改屏幕后立即刷新
CALL METHOD grid_100->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
ENDMODULE. " ALV_DATA OUTPUT
*&---------------------------------------------------------------------*
*& Form ALV_FILL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ALV_FILL .
DATA:event_receiver TYPE REF TO lcl_event_receiver.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT cont_100
EXPORTING
container_name = 'SUB_100'.
ENDIF.
PERFORM set_100_fill.
"PERFORM set_100_tool.
PERFORM set_100_layout.
CREATE OBJECT grid_100
EXPORTING
i_parent = cont_100.
CREATE OBJECT event_receiver."这2行响应热键
SET HANDLER event_receiver->handle_hotspot_click FOR grid_100."响应热键
CALL METHOD grid_100->set_table_for_first_display
EXPORTING
* is_variant = gs_variant
is_layout = gs_layout"采用自定义的格式
* it_toolbar_excluding = gt_toolbar_excluding
i_save = 'A'
i_default = 'X'
CHANGING
it_outtab = lt_tab[]
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-sUbrc <> 0.
ENDIF.
ENDFORM. " ALV_FILL
*&---------------------------------------------------------------------*
*& Form SET_100_FILL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_100_FILL .
REFRESH gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CARRID'.
ls_fieldcat-coltext = '航班号'.
ls_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CONNID'.
ls_fieldcat-coltext = '航线'.
* ls_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CITYFROM'.
ls_fieldcat-coltext = '出发城市'.
* ls_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'CITYTO'.
ls_fieldcat-coltext = '到达城市'.
* ls_fieldcat-hotspot = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
ENDFORM. " SET_100_FILL
*&---------------------------------------------------------------------*
*& Form SET_100_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_100_LAYOUT .
CLEAR gs_layout.
gs_layout-smalltitle = ''.
gs_layout-grid_title = ''.
gs_layout-cwidth_opt = 'X'.
"gs_layout-zebra = 'X'. "定义GRID的样式如斑马条式
gs_layout-sel_mode = 'D'.
"gs_layout-no_toolbar = 'X'.
gs_layout-no_rowmark = ''."选择行禁用
gs_layout-edit_mode = ''.
ENDFORM. " SET_100_LAYOUT
*&---------------------------------------------------------------------*
*& Form HANDLE_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM HANDLE_HOTSPOT_CLICK USING P_E_ROW_ID TYPE LVC_s_row
P_E_COLUMN_ID TYPE lvc_s_col
P_ES_ROW_NO TYPE lvc_s_roid
.
* READ TABLE lt_tab INDEX p_e_row_id.
* IF sy-subrc = 0 AND p_e_coluMN_id-fieldname = 'CARRID'.
* CALL SCREEN 200.
* ENDIF.
CASE p_e_column_id.
WHEN 'CARRID'." or 'CONNID' OR 'CITYFROM' OR 'CITYTO'.
SET PARAMETER ID 'CAR' FIELD LT_TAB-CARRID.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. " HANDLE_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS '200'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*& Form HOT_SPOT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
" HOT_SPOT
屏幕100:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE alv_data.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.(画一个区域取名SUB_100)
屏幕200:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0200.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0200.