ALV Hotspot-热点

本文介绍了如何在ABAP的ALV表格中使用Fieldcat-hotspot属性创建热点链接,点击时触发USER_COMMAND中的FCode,如点击CARRID字段时显示事件信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

实战

核心代码

实战开发


前言

        在ABAP ALV中,"热点"(Hotspot)是指ALV表格中的特定单元格或列,它们被赋予了额外的交互性,比如点击后触发特定的操作或事件。通过设置热点,开发人员可以让用户直接在ALV列表上进行更多操作,而不仅仅局限于查看数据。

实战

        热点链接即 Fieldcat-hotspot 属性,设置之后当用户点击带有热点的字段时,就会触发Form(USER_COMMAND)中的动作。

        对于热点链接,所对应的FCode为 “&IC1“。(注意:双击行项目时也会触发FCode“&IC1“);

核心代码

 gs_fieldcat-hotspot = 'X'.
…
FORM f_user_command  USING p_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
  CASE p_ucomm.
    WHEN '&IC1' . "判断用户的动作
      IF rs_selfield-fieldname EQ 'CARRID'. "点击该字段时触发
        MESSAGE i001(00) WITH '事件触发时当前行:' rs_selfield-tabindex.
      ENDIF.
  ENDCASE.
ENDFORM.

实战开发

展示效果:

完整代码:

TYPE-POOLS:slis.

DATA:gt_fieldcat TYPE slis_t_fieldcat_alv,
     gs_fieldcat TYPE slis_fieldcat_alv,
     gs_layout   TYPE slis_layout_alv,
     gv_repid    TYPE sy-repid.

DATA:gt_spfli LIKE STANDARD TABLE OF spfli WITH HEADER LINE.

INITIALIZATION.
  gv_repid = sy-repid.

*屏幕开始事件
START-OF-SELECTION.
  PERFORM f_getdata.
  PERFORM f_catalog.
  PERFORM f_alvshow.

FORM f_getdata.
  SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
ENDFORM.

FORM f_catalog.
*fieldcat属性
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = gv_repid
      i_structure_name       = 'SPFLI'
    CHANGING
      ct_fieldcat            = gt_fieldcat "导出gt_fieldcat内表数据
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CLEAR gs_fieldcat.
*"对gt_fieldcat属性的修改
  READ TABLE gt_fieldcat INTO gs_fieldcat INDEX 2. "将第二列设为热点显示
  gs_fieldcat-hotspot = 'X'.
  MODIFY gt_fieldcat  FROM gs_fieldcat INDEX 2.

*layout属性
  gs_layout-zebra = 'X'."斑马线显示
  gs_layout-colwidth_optimize = 'X'."列宽度最优化显示
ENDFORM.

FORM f_alvshow.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = gv_repid
      i_grid_title             = 'ALV REPORT TEST' "ALV显示标题
      i_callback_pf_status_set = 'F_SET_STATUS'
      is_layout                = gs_layout
      it_fieldcat              = gt_fieldcat
      i_callback_user_command  = 'F_USER_COMMAND'
    TABLES
      t_outtab                 = gt_spfli
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.

FORM f_set_status USING p_extab TYPE slis_t_extab.
  SET PF-STATUS 'ZALV_STATUS'.
ENDFORM.

FORM f_user_command  USING p_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
  CASE p_ucomm.
    WHEN '&IC1' . "判断用户的动作
      MESSAGE i001(00) WITH '事件触发时当前行:' rs_selfield-tabindex.
    ENDCASE.
ENDFORM.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP_亮亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值