yssooalv

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=>offlineIS 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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值