在ALV中添加搜索帮助并返回多列值

**=====================================================================*
*& Report ZPM_RP_09
**=====================================================================*
REPORT zpm_rp_09.
*======================================================================*
*                     Modify Log History.
*----------------------------------------------------------------------*
*
*No. Modified by    Date      Transport  Description
*--- -----------    ----      ---------  -----------
*M1

*======================================================================*
*                             Tables
*======================================================================*
TABLES:zpm_rp_09.
*======================================================================*
*                             Constants
*======================================================================*

*======================================================================*
*                             Types
*======================================================================*
TYPE-POOLS : abap,slis,icon,shlp.
*======================================================================*
*                     Internal Tables/work areas
*======================================================================*
DATA:BEGIN OF gt_out OCCURS 0,
  zzjhbh LIKE zpm_rp_09-zzjhbh,     "计划编号
  zzhxmh LIKE zpm_rp_09-zzhxmh,     "行项目号
  werks LIKE zpm_rp_09-werks,       "工厂
  name1 LIKE zpm_rp_09-name1,       "工厂名称
  pspnr TYPE zpm_rp_09-pspnr,       "大修预算编号
  post1 LIKE zpm_rp_09-post1,       "大修预算名称
  sel(1) TYPE c,
  END OF gt_out.
DATA: fieldcat TYPE lvc_t_fcat WITH HEADER LINE.
DATA:gt_excel LIKE TABLE OF alsmex_tabline,
     gw_excel LIKE alsmex_tabline.
DATA:BEGIN OF gt_upload OCCURS 0,
  zzjhbh LIKE zpm_rp_09-zzjhbh,     "计划编号
  zzhxmh LIKE zpm_rp_09-zzhxmh,     "行项目号
  werks LIKE zpm_rp_09-werks,       "工厂
  name1 LIKE zpm_rp_09-name1,       "工厂名称
  pspnr LIKE zpm_rp_09-pspnr,       "大修预算编号
  post1 LIKE zpm_rp_09-post1,       "大修预算名称
  END OF gt_upload.
*======================================================================*
*                      Data declarations
*======================================================================*
DATA: wa_layout   TYPE lvc_s_layo,
      gt_events   TYPE slis_t_event WITH HEADER LINE,
      gs_event   LIKE LINE OF gt_events.
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
DATA:gv_file TYPE rlgrap-filename.
DATA:  ref_grid TYPE REF TO cl_gui_alv_grid.
DATA:lw_layout TYPE slis_layout_alv.
*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS handle_modify
    FOR EVENT data_changed_finished OF cl_gui_alv_grid
    IMPORTING e_modified et_good_cells.

        METHODS:
      handle_f4
        FOR EVENT onf4 OF cl_gui_alv_grid
        IMPORTING e_fieldname
                  es_row_no
                  er_event_data
                  et_bad_cells.
ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION
*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_modify.
    DATA stbl TYPE lvc_s_stbl.
    DATA:wa_out LIKE gt_out.
    LOOP AT gt_out INTO wa_out.
      CALL FUNCTION 'CONVERSION_EXIT_ABPSN_INPUT'
        EXPORTING
          input         = wa_out-pspnr
       IMPORTING
         output        = wa_out-pspnr.
      SELECT SINGLE post1
        INTO wa_out-post1
        FROM prps
        WHERE posid = wa_out-pspnr.
      CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'
        EXPORTING
          input         = wa_out-pspnr
       IMPORTING
         output        = wa_out-pspnr.
        MODIFY gt_out FROM wa_out.
    ENDLOOP.
*   稳定刷新
    stbl-row = 'X'." 基于行的稳定刷新
    stbl-col = 'X'." 基于列稳定刷新
    CALL METHOD ref_grid->refresh_table_display
      EXPORTING
        is_stable = stbl.
  ENDMETHOD.                    "HANDLE_MODIFY
*---------------------------------------------------------------------------------------------*
      METHOD  handle_f4.
*     窗口时间参数的自定义f4检索帮助
      PERFORM f4_help_zsjcs USING e_fieldname
                                  es_row_no.
*     设置后,alv稳定刷新
      PERFORM refresh_table_alv.
  ENDMETHOD.                    "HANDLE_F4

ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION
DATA gt_event_receiver TYPE REF TO lcl_event_receiver .
*---------------------------------------------------------------*
*DEFINATION
*---------------------------------------------------------------*
DEFINE fill_field.
  CLEAR FIELDCAT.
  FIELDCAT-FIELDNAME     = &1.
  FIELDCAT-SCRTEXT_L     = &2.
  FIELDCAT-CFIELDNAME    = &3.
  FIELDCAT-OUTPUTLEN     = &4.
  FIELDCAT-EDIT          = &5.
  APPEND FIELDCAT.
END-OF-DEFINITION.
*======================================================================*
*                       Range declarations
*===

你可能感兴趣的:(ALV,添加F4,返回多列值,编辑属性,搜索)