ABAP alv获取鼠标焦点移开事件

&---------------------------------------------------------------------**& Program ID : ZSDR0150& Description: 装箱单打印*&---------------------------------------------------------------------& Created by : N_LI                         Date: 2019/05/31 Ver: 01.0*&-------------------------------------------------------------------& Modified by: author                       Date: YYYY/MM/DD Ver: 02.0*&---------------------------------------------------------------------*
REPORT ZSDR0150 NO STANDARD PAGE HEADING.
&---------------------------------------------------------------------**& INCLUDE&---------------------------------------------------------------------*
include ZBCI0010.include ZBCI0020.include ZBCI0030.
&---------------------------------------------------------------------**& Types:&---------------------------------------------------------------------*
TYPES: BEGIN OF TP_OUTPUT,  SLBOX,  CHECK_BOX   TYPE C,                               "选择框  INDEX       TYPE I,                               "行号  WADAT_IST   TYPE LIKP-WADAT_IST,                  "日期  KUNAG       TYPE VBRK-KUNAG,                      "买方  BSTKD       TYPE VBKD-BSTKD,                      "订单号  VBELN       TYPE VBRK-VBELN,                      "形式发票号  ZTERM       TYPE VBRK-ZTERM,                      "付款条件  FIELD_STYLE TYPE LVC_T_STYL,                      "可编辑  END OF TP_OUTPUT.
----------------------------------------------------------------------* Class*----------------------------------------------------------------------** 注册回车事件*----------------------------------------------------------------------*
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.ENDCLASS.CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.  METHOD HANDLE_MODIFY.    PERFORM FRM_HANDLE_MODIFY USING E_MODIFIED ET_GOOD_CELLS.  ENDMETHOD.ENDCLASS.
&---------------------------------------------------------------------**& Constants:&---------------------------------------------------------------------*
CONSTANTS: C_1 TYPE CHAR1 VALUE ‘1’,           C_DH         TYPE CHAR1            VALUE ‘,’,           C_HG         TYPE CHAR1            VALUE ‘’,           C_XG         TYPE CHAR1            VALUE ‘’,           C_A          TYPE CHAR1            VALUE ‘A’,           C_E          TYPE CHAR1            VALUE ‘E’,           C_YES        TYPE CHAR2            VALUE ‘是’,           C_NO         TYPE CHAR2            VALUE ‘否’,           C_ZF8        TYPE CHAR3            VALUE ‘ZF8’,           C_SLBOX      TYPE CHAR5            VALUE ‘SLBOX’,           C_XLSX       TYPE CHAR5            VALUE ‘.xlsx’,           C_PRINT      TYPE CHAR5            VALUE ‘PRINT’,           C_000000     TYPE CHAR6            VALUE ‘000000’,           C_SHANGHAI   TYPE CHAR8            VALUE ‘SHANGHAI’,           C_CHECK_BOX  TYPE CHAR9            VALUE ‘CHECK_BOX’,           C_STYLE      TYPE CHAR11           VALUE ‘FIELD_STYLE’,           C_CLASSNAME  TYPE SBDST_CLASSNAME  VALUE ‘ZSD001’,           C_OBJECTKEY  TYPE SBDST_OBJECT_KEY VALUE ‘ZSDR0150’.
&---------------------------------------------------------------------**& Data:&---------------------------------------------------------------------*
DATA: T_OUTPUT TYPE STANDARD TABLE OF TP_OUTPUT.DATA: V_FILE TYPE RLGRAP-FILENAME. "路径
* 定义ALV相关字段
DATA: W_LAYOUT TYPE LVC_S_LAYO,      T_FIELDCAT TYPE LVC_T_FCAT.DATA: T_EVENTS TYPE SLIS_T_EVENT, "ALV显示用      V_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
&---------------------------------------------------------------------**& Parameters Screen:&---------------------------------------------------------------------*
DATA: TB_KUNAG TYPE VBRK-KUNAG, "买方      TB_BSTKD TYPE VBKD-BSTKD,                  "订单号      TB_VBELN TYPE VBRK-VBELN,                  "发票号      TB_WADAT TYPE LIKP-WADAT_IST.              "订单号
----选择条件
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-P01.SELECT-OPTIONS: S_KUNAG FOR TB_KUNAG, "买方                S_BSTKD FOR TB_BSTKD,            "订单号                S_VBELN FOR TB_VBELN,            "发票号                S_DATA  FOR TB_WADAT.            "日期SELECTION-SCREEN END OF BLOCK B1.
&---------------------------------------------------------------------**& INITIALIZATION&---------------------------------------------------------------------

INITIALIZATION.
&---------------------------------------------------------------------**& AT SELECTION-SCREEN OUTPUT&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
&---------------------------------------------------------------------**& AT SELECTION-SCREEN&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
&---------------------------------------------------------------------**& START-OF-SELECTION&---------------------------------------------------------------------*
START-OF-SELECTION.
* 取数
  PERFORM FRM_FIND_DATA.
&---------------------------------------------------------------------**& END-OF-SELECTION&---------------------------------------------------------------------*
END-OF-SELECTION.
* 展示数据到ALV画面上
  PERFORM FRM_DISPLAY_ALV.
&---------------------------------------------------------------------**& Form FRM_FIND_DATA&---------------------------------------------------------------------& 取数*&---------------------------------------------------------------------*
FORM FRM_FIND_DATA .DATA: L_BSTKD TYPE VBKD-BSTKD. "DATA: LW_OUTPUT TYPE TP_OUTPUT.SELECT VBRK~VBELN, "形式发票号       VBRK~KUNAG,                          "买方       VBRK~ZTERM,                          "付款条件       VBKD~BSTKD,                          "订单号       LIKP~WADAT_IST                       "日期  FROM VBRK  JOIN VBRP ON VBRK~VBELN = VBRP~VBELN  JOIN VBKD ON VBRP~AUBEL = VBKD~VBELN  JOIN LIKP ON VBRP~VGBEL = LIKP~VBELN  INTO TABLE @DATA(LT_DISPLAY)  WHERE VBRK~FKART = @C_ZF8    AND VBRK~VBELN IN @S_VBELN    AND VBRK~KUNAG IN @S_KUNAG    AND VBKD~BSTKD IN @S_BSTKD    AND VBKD~POSNR = @C_000000    AND LIKP~WADAT_IST IN @S_DATA. IF LT_DISPLAY IS INITIAL.
*  无查询记录
   MESSAGE S008(ZSD01) DISPLAY LIKE C_E.   LEAVE LIST-PROCESSING. ELSE.   MOVE-CORRESPONDING LT_DISPLAY TO T_OUTPUT.   SORT T_OUTPUT BY VBELN.   DELETE ADJACENT DUPLICATES FROM T_OUTPUT COMPARING VBELN.    LOOP AT T_OUTPUT ASSIGNING FIELD-SYMBOL(<LW_OUTPUT>).
*     行号
      <LW_OUTPUT>-INDEX = SY-TABIX.
*     日期/买方/订单号/付款方式
      READ TABLE LT_DISPLAY INTO DATA(LW_DISPALY)                            WITH KEY VBELN = <LW_OUTPUT>-VBELN.      IF SY-SUBRC = 0.        <LW_OUTPUT>-WADAT_IST = LW_DISPALY-WADAT_IST.        <LW_OUTPUT>-KUNAG     = LW_DISPALY-KUNAG.        <LW_OUTPUT>-ZTERM     = LW_DISPALY-ZTERM.      ENDIF.
*     订单号
      CLEAR: L_BSTKD.      LOOP AT LT_DISPLAY INTO LW_DISPALY                         WHERE VBELN = <LW_OUTPUT>-VBELN.        CONCATENATE L_BSTKD LW_DISPALY-BSTKD               INTO L_BSTKD SEPARATED BY C_DH.        SHIFT L_BSTKD LEFT  DELETING LEADING C_DH.      ENDLOOP.      <LW_OUTPUT>-BSTKD = L_BSTKD.    ENDLOOP. ENDIF.ENDFORM.
*&---------------------------------------------------------------------
& Form FRM_DISPLAY_ALV*&---------------------------------------------------------------------& 展示数据到ALV画面上*&---------------------------------------------------------------------*
FORM FRM_DISPLAY_ALV .
* 设置输出格式
  PERFORM FRM_SET_AL_LAYOUT.
* 设置字段属性
  PERFORM FRM_BUILD_FIELDCAT.
* 自动刷新事件
  PERFORM FRM_SET_EVENT.
* 调用ALV函数输出ALV
  PERFORM FRM_CALL_AL_FUNC.ENDFORM.
*&---------------------------------------------------------------------
& Form FRM_SET_AL_LAYOUT*&---------------------------------------------------------------------& 设置输出格式*&---------------------------------------------------------------------*
FORM FRM_SET_AL_LAYOUT .CLEAR: W_LAYOUT.  W_LAYOUT-ZEBRA      = C_X.             "斑马线  W_LAYOUT-CWIDTH_OPT = C_X.             "自动列宽  W_LAYOUT-BOX_FNAME  = C_SLBOX.         "选择框字段名  W_LAYOUT-STYLEFNAME = C_STYLE.         "将内表中的字段名存入显示格式ENDFORM.
*&---------------------------------------------------------------------
& Form FRM_BUILD_FIELDCAT*&---------------------------------------------------------------------& 设置字段属性*&---------------------------------------------------------------------*
FORM FRM_BUILD_FIELDCAT .PERFORM FRM_APPEND_FIELDCAT_ROW TABLES T_FIELDCAT USING :       ‘CHECK_BOX’ ‘’          ‘’      ‘X’  ‘X’ TEXT-H01, "选择       ‘INDEX’     ‘’          ‘’      ‘’   ‘’  TEXT-H02, "行号       ‘WADAT_IST’ ‘WADAT_IST’ ‘LIKP’  ‘’   ‘’  TEXT-H03, "日期       ‘KUNAG’     ‘KUNAG’     ‘VBRK’  ‘’   ‘’  TEXT-H04, "买方       ‘BSTKD’     ‘BSTKD’     ‘VBKD’  ‘’   ‘’  TEXT-H05, "订单号       ‘VBELN’     ‘VBELN’     ‘VBRK’  ‘’   ‘’  TEXT-H06, "形式发票号       ‘ZTERM’     ‘ZTERM’     ‘VBRK’  ‘’   ‘’  TEXT-H07. "付款方式ENDFORM.
*&---------------------------------------------------------------------
&      Form  FRM_APPEND_FIELDCAT_ROW*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->P_IT_FIELDCAT  text*      -->P_0149   FIELDNAME*      -->P_0150   REF_FIELD*      -->P_0151   REF_TABLE*      -->P_0152   CHECKBOX*      -->P_0153   EDIT*      -->P_0154   TITLE*----------------------------------------------------------------------*
FORM FRM_APPEND_FIELDCAT_ROW TABLES IT_FIELDCAT STRUCTURE LVC_S_FCAT                         USING IU_FIELDNAME TYPE LVC_S_FCAT-FIELDNAME                               IU_REF_FIELD TYPE LVC_S_FCAT-REF_FIELD                               IU_REF_TABLE TYPE LVC_S_FCAT-REF_TABLE                               IU_CHECKBOX  TYPE LVC_S_FCAT-CHECKBOX                               IU_EDIT      TYPE LVC_S_FCAT-EDIT                               IU_TITLE     TYPE LVC_S_FCAT-COLTEXT.   DATA: LW_FIELDCAT TYPE LVC_S_FCAT.   CLEAR: LW_FIELDCAT.   LW_FIELDCAT-FIELDNAME = IU_FIELDNAME.   LW_FIELDCAT-REF_FIELD = IU_REF_FIELD.   LW_FIELDCAT-REF_TABLE = IU_REF_TABLE.   LW_FIELDCAT-CHECKBOX  = IU_CHECKBOX.   LW_FIELDCAT-EDIT      = IU_EDIT.   LW_FIELDCAT-COLTEXT   = IU_TITLE.   LW_FIELDCAT-SCRTEXT_L = IU_TITLE.   LW_FIELDCAT-SCRTEXT_M = IU_TITLE.   LW_FIELDCAT-SCRTEXT_S = IU_TITLE.   APPEND LW_FIELDCAT TO IT_FIELDCAT.   CLEAR: LW_FIELDCAT.ENDFORM.
&---------------------------------------------------------------------**& Form FRM_CALL_AL_FUNC&---------------------------------------------------------------------& 调用ALV函数输出ALV*&---------------------------------------------------------------------*
FORM FRM_CALL_AL_FUNC .CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’     EXPORTING       I_CALLBACK_PROGRAM       = SY-REPID       I_SAVE                   = C_A       I_CALLBACK_PF_STATUS_SET = ‘FRM_SET_PF_STATUS’       I_CALLBACK_USER_COMMAND  = ‘FRM_USER_COMMAND’       IS_LAYOUT_LVC            = W_LAYOUT       IT_EVENTS                = T_EVENTS       IT_FIELDCAT_LVC          = T_FIELDCAT     TABLES       T_OUTTAB                 = T_OUTPUT     EXCEPTIONS       PROGRAM_ERROR            = 1       OTHERS                   = 2.   IF SY-SUBRC <> 0.     MESSAGE E000(ZSD01) WITH TEXT-M02.  "ERROR!   ENDIF.ENDFORM.
*&---------------------------------------------------------------------
&      Form  FRM_PF_STATUS_0200*&---------------------------------------------------------------------**       FRM_PF_STATUS_0200*----------------------------------------------------------------------**      -->IT_EXTAB    text*----------------------------------------------------------------------*
FORM FRM_SET_PF_STATUS USING IT_EXTAB TYPE SLIS_T_EXTAB.  CLEAR IT_EXTAB.  SET PF-STATUS ‘0100’ .ENDFORM.
&---------------------------------------------------------------------**&     Form  FRM_USER_COMMAND&---------------------------------------------------------------------&     FRM_USER_COMMAND*&---------------------------------------------------------------------&      --> I_UCOMM*&      <-- IW_SELFIELD*&---------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING I_UCOMM TYPE SY-UCOMM                            IW_SELFIELD TYPE SLIS_SELFIELD.DATA: L_ALVGRID TYPE REF TO CL_GUI_ALV_GRID.   CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’     IMPORTING       E_GRID = L_ALVGRID.   CALL METHOD L_ALVGRID->CHECK_CHANGED_DATA.   IW_SELFIELD-REFRESH = C_X.
&------------基于行列稳定刷新
   IW_SELFIELD-COL_STABLE = C_X.   IW_SELFIELD-ROW_STABLE = C_X.  IF I_UCOMM = C_PRINT.
*   点EXCEL导出时
    PERFORM FRM_PRINT.  ENDIF.   "刷新ALV   PERFORM REFRESH_ALV.ENDFORM.
&---------------------------------------------------------------------**& Form FRM_PRINT&---------------------------------------------------------------------**& 点Excel导出
&---------------------------------------------------------------------*
FORM FRM_PRINT .  READ TABLE T_OUTPUT INTO DATA(LW_OUTPUT) WITH KEY CHECK_BOX = C_X.  IF SY-SUBRC = 0.
*   选择路径
    PERFORM FRM_CHOOSE_PATH.  ELSE.
*   请选择一条有效数据!
    MESSAGE S000(ZSD01) WITH TEXT-M03 DISPLAY LIKE C_E.  ENDIF.ENDFORM.
&---------------------------------------------------------------------**& Form FRM_CHOOSE_PATH&---------------------------------------------------------------------& 选择路径*&---------------------------------------------------------------------*
FORM FRM_CHOOSE_PATH .DATA: L_SELECTED_FOLDER TYPE STRING,      L_PATH            TYPE STRING,      L_FILENAME        TYPE STRING,      L_ANSWER          TYPE CHAR1 .
*  文件选择框
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE    CHANGING      SELECTED_FOLDER      = L_SELECTED_FOLDER    EXCEPTIONS      CNTL_ERROR           = 1      ERROR_NO_GUI         = 2      NOT_SUPPORTED_BY_GUI = 3      OTHERS               = 4          .  IF SY-SUBRC <> 0.
*   请选择一条有效数据!
    MESSAGE E000(ZSD01) WITH TEXT-M03.  ENDIF.  IF L_SELECTED_FOLDER IS INITIAL.
*   取消下载
    MESSAGE S065(ZSD01) DISPLAY LIKE C_E.    EXIT.  ENDIF.  READ TABLE T_OUTPUT INTO DATA(LW_OUTPUT) WITH KEY CHECK_BOX = C_X.  IF SY-SUBRC = 0.    CONCATENATE TEXT-M04 LW_OUTPUT-VBELN LW_OUTPUT-WADAT_IST         INTO L_PATH SEPARATED BY C_HG.  ENDIF.
*将获取的服务器上的文件内容下载到上面获取的文件名中
  CONCATENATE L_SELECTED_FOLDER              C_XG              L_PATH              C_XLSX         INTO L_FILENAME.
* 保存的路径名
  V_FILE = L_FILENAME.
* 检查是否本地已有同名文件,如果有,选择是否覆盖
  PERFORM FRM_CHECK_IF_FILE_EXIST USING L_FILENAME CHANGING L_ANSWER.  IF L_ANSWER <> C_1.    MESSAGE S065(ZSD01). "取消下载    EXIT.  ENDIF.
* DOWNLOAD TEMPLATE
  CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’            "给个进度条信息    EXPORTING      TEXT = ‘LOADING…’.   CALL SCREEN 0100.   MESSAGE S066(ZSD01). "下载成功ENDFORM.
*&---------------------------------------------------------------------
&      FORM  FRM_CHECK_IF_FILE_EXIST*&---------------------------------------------------------------------**       检查是否本地已有同名文件,如果有,选择是否覆盖*----------------------------------------------------------------------**      -->PV_FILE    TEXT*----------------------------------------------------------------------*
FORM FRM_CHECK_IF_FILE_EXIST USING I_FILE                          CHANGING O_ANSWER.  DATA: L_EXIST       TYPE ABAP_BOOL,        L_ANSWER      TYPE C LENGTH 1.  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST    EXPORTING      FILE                 = I_FILE    RECEIVING      RESULT               = L_EXIST    EXCEPTIONS      CNTL_ERROR           = 1      ERROR_NO_GUI         = 2      WRONG_PARAMETER      = 3      NOT_SUPPORTED_BY_GUI = 4      OTHERS               = 5.  IF SY-SUBRC <> 0.
*   ERROR!
    MESSAGE E000(ZSD01) WITH TEXT-M02.    EXIT.  ENDIF.  IF L_EXIST = ABAP_TRUE.    CALL FUNCTION ‘POPUP_TO_CONFIRM’      EXPORTING        TEXT_QUESTION  = TEXT-M01        TEXT_BUTTON_1  = C_YES(001)        TEXT_BUTTON_2  = C_NO(002)      IMPORTING        ANSWER         = L_ANSWER  "RETURN VALUE: 1, 2, A      EXCEPTIONS        TEXT_NOT_FOUND = 1        OTHERS         = 2.    IF SY-SUBRC <> 0.
*     ERROR!
      MESSAGE E000(ZSD01) WITH TEXT-M02.    ENDIF.  ELSE.    L_ANSWER = C_1.  ENDIF.  O_ANSWER = L_ANSWER.ENDFORM. "FRM_CHECK_IF_FILE_EXIST
&---------------------------------------------------------------------**&      Module  status_0100  OUTPUT&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.DATA: L_DATA TYPE CHAR10.  SET PF-STATUS ‘0100’.  PERFORM FRM_GET_CONTAINER.  PERFORM FRM_CREATE_CONTAINER_CONTROL.  PERFORM FRM_GET_TEMPLATE_URL USING C_CLASSNAME C_OBJECTKEY.  PERFORM FRM_OPEN_EXCEL_DOC.  LOOP AT T_OUTPUT INTO DATA(LW_OUPUT) WHERE CHECK_BOX = C_X.    WRITE LW_OUPUT-WADAT_IST TO L_DATA USING EDIT MASK '
___//’.
*   日期
    PERFORM FRM_WRITE_DATA_TO_CELL USING 6               "行                                         3               "列                                         L_DATA.        "写入的数据
*   订单号码
    PERFORM FRM_WRITE_DATA_TO_CELL USING 7               "行                                         3               "列                                         LW_OUPUT-BSTKD. "写入的数据
*   发票号码
    PERFORM FRM_WRITE_DATA_TO_CELL USING 7               "行                                         9               "列                                         LW_OUPUT-VBELN. "写入的数据
*   买方
    PERFORM FRM_WRITE_DATA_TO_CELL USING 11              "行                                         4               "列                                         LW_OUPUT-KUNAG. "写入的数据
*   SHANGHAI
    PERFORM FRM_WRITE_DATA_TO_CELL USING 15              "行                                         4               "列                                         C_SHANGHAI.     "写入的数据  ENDLOOP.
*      PERFORM FRM_CHANGING_PATH  CHANGING V_FILE.
  PERFORM FRM_SAVE_DOCUMENT USING V_FILE.  PERFORM FRM_CLOSE_EXCEL_DOC.ENDMODULE. " status_0100 OUTPUT
&---------------------------------------------------------------------**&      Module  USER_COMMAND_0100  INPUT&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.  SET SCREEN 0.ENDMODULE.
&---------------------------------------------------------------------**&      Form  FRM_AL_REFRESH&---------------------------------------------------------------------**       ALV刷新*----------------------------------------------------------------------**      <–P_L_SELFIELD_COL_STABLE  text*      <–P_L_SELFIELD_ROW_STABLE  text*      <–P_L_SELFIELD_REFRESH  text*----------------------------------------------------------------------*
FORM FRM_AL_REFRESH CHANGING O_COL_STABLE                              O_ROW_STABLE                              O_REFRESH.   DATA: L_GRID TYPE REF TO CL_GUI_ALV_GRID.   CLEAR: L_GRID, O_COL_STABLE, O_ROW_STABLE,O_REFRESH.   CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’     IMPORTING       E_GRID = L_GRID.   CALL METHOD L_GRID->CHECK_CHANGED_DATA.   O_COL_STABLE = C_X.   O_ROW_STABLE = C_X.   O_REFRESH    = C_X.ENDFORM. "FRM_ALV_REFRESH
&---------------------------------------------------------------------**&      Form  FRM_HANDLE_MODIFY&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->P_E_MODIFIED  I_MODIFIED*      -->P_ET_GOOD_CELLS  IT_GOOD_CELLS*----------------------------------------------------------------------*
FORM FRM_HANDLE_MODIFY USING I_MODIFIED                             IT_GOOD_CELLS TYPE LVC_T_MODI.DATA: LW_STYLEROW TYPE LVC_S_STYL .  CHECK I_MODIFIED = C_X.  LOOP AT IT_GOOD_CELLS INTO DATA(LW_GOOD_CELLS)                                WHERE FIELDNAME = C_CHECK_BOX.    IF LW_GOOD_CELLS-VALUE = ‘’.      LOOP AT T_OUTPUT ASSIGNING FIELD-SYMBOL(<LW_OUTPUT>).        CLEAR: <LW_OUTPUT>-FIELD_STYLE.      ENDLOOP.    ELSEIF LW_GOOD_CELLS-VALUE = C_X.      LOOP AT T_OUTPUT ASSIGNING <LW_OUTPUT>.        IF <LW_OUTPUT>-CHECK_BOX NE C_X.          LW_STYLEROW-FIELDNAME = C_CHECK_BOX.
*         设成可以输入用MC_STYLE_ENABLED
          LW_STYLEROW-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.          APPEND LW_STYLEROW TO <LW_OUTPUT>-FIELD_STYLE.          CLEAR: LW_STYLEROW.        ENDIF.      ENDLOOP.    ENDIF.  ENDLOOP.  IF SY-UCOMM = ‘’.    PERFORM REFRESH_ALV.  ENDIF.ENDFORM.
&---------------------------------------------------------------------**&      Form  FRM_SET_EVENT&---------------------------------------------------------------------**       回车事件*----------------------------------------------------------------------*
FORM FRM_SET_EVENT .T_EVENTS = VALUE #( ( NAME = ‘CALLER_EXIT’ FORM = ‘FRM_ALV_EVENT’ ) ).ENDFORM.
--------------------------------------------------------------------------------------------------------------------------------------------
FORM FRM_ALV_EVENT USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.   DATA: L_GRID TYPE REF TO CL_GUI_ALV_GRID.   IF L_GRID IS INITIAL.     CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’       IMPORTING         E_GRID = L_GRID.   ENDIF.
* ENTER
  CALL METHOD L_GRID->REGISTER_EDIT_EVENT     EXPORTING       I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER     EXCEPTIONS       ERROR      = 1       OTHERS     = 2.  IF SY-SUBRC <> 0.     MESSAGE E000(ZSD01) WITH TEXT-M02.    "ERROR!  ENDIF.
–·设置 单光标焦点移开被修改单元格后既触发事件
  CALL METHOD L_GRID->REGISTER_EDIT_EVENT     EXPORTING       I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED     EXCEPTIONS       ERROR      = 1       OTHERS     = 2.  IF sy-SUBRC <> 0.     MESSAGE E000(ZSD01) WITH TEXT-M02.    "ERROR!  ENDIF.   CREATE OBJECT V_EVENT_RECEIVER.   SET HANDLER V_EVENT_RECEIVER->HANDLE_MODIFY FOR L_GRID.ENDFORM.
&---------------------------------------------------------------------*& Form  REFRESH_ALV
&---------------------------------------------------------------------
*  刷新ALV*----------------------------------------------------------------------*
FORM REFRESH_ALV .   DATA: L_GRID    TYPE REF TO CL_GUI_ALV_GRID,         LW_STABLE TYPE LVC_S_STBL.   CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’     IMPORTING       E_GRID = L_GRID.   LW_STABLE-ROW = C_X.   LW_STABLE-COL = C_X.   L_GRID->REFRESH_TABLE_DISPLAY(     EXPORTING       IS_STABLE = LW_STABLE     EXCEPTIONS       FINISHED  = 1       OTHERS    = 2 ).   IF sy-SUBRC <> 0.      MESSAGE E000(ZSD01) WITH TEXT-M02.    "ERROR!   ENDIF.ENDFORM.
Messages---------------------------** Message class: Hard coded*   无可用模板,请检查

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值