繁体   English   中英

覆盖 ALV 中的函数

[英]Overwrite functions in ALV

我想覆盖 ALV 网格中的某些功能。 但是我无法通过回调用户命令来做到这一点。 这仅适用于非标准功能。 任何的想法? 我应该使用事件退出吗? 我用它尝试了一些东西,但也做不到:P

FORM event_exits.

  CLEAR wa_eventexit.
  wa_eventexit-ucomm = '&OUP'.
  wa_eventexit-before = 'X'.
  APPEND wa_eventexit TO it_eventexit.
  CLEAR wa_eventexit.
  wa_eventexit-ucomm = '&ODN'.
  wa_eventexit-before = 'X'.
  APPEND wa_eventexit TO it_eventexit.

ENDFORM.                     "event_exits

FORM user_command Using r_ucomm LIKE sy-ucomm
                    rs_selfield TYPE slis_selfield.
 CASE r_ucomm.
    WHEN '&OUP'.
      IF ck_del = 'X'.
        SORT gt_salord BY audat vbeln lfimg ASCENDING.
      ELSE.
        SORT gt_salord BY audat vbeln kwmeng ASCENDING.
      ENDIF.
    WHEN '&ODN'.
      IF ck_del = 'X'.
        SORT gt_salord BY audat vbeln lfimg DESCENDING.
      ELSE.
        SORT gt_salord BY audat vbeln kwmeng DESCENDING.
      ENDIF.
    WHEN 'D01'.
      BREAK-POINT.
  ENDCASE.
   CLEAR sy-ucomm.
ENDFORM.    "user_command

D01 函数仅用于测试,因此当我访问它时,我可以看到它输入了 user_command。 但是当我访问函数 &OUP 时,它不再在 CASE 中输入(我用调试来测试它)

我不知道这是否适合您,但您可能想要 ALV 对象模型 - 它有更好的文档记录- 例如,请参阅有关处理函数和事件的章节 更重要的是,它得到了官方支持——如果你使用它并且它不能正常工作,你会得到帮助而不是习惯性的“你正在使用未发布的内部类/功能模块”的评论。 看看演示程序(SALV_DEMO_* 或 DEMO_SALV_*,记不清了。)

再说一次,如果您想定义自定义排序机制,您可能应该只对默认按钮进行着色并插入具有不同功能代码的自己的按钮。 谁知道,在版本 42 中,有人可能会想出再次启用默认排序的想法,然后您就不必再次调整所有内容......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM