覆盖ALV ABAP中的函数

时间:2012-04-11 19:04:09

标签: events function grid sap abap

我想覆盖ALV网格中的某些功能。但我无法通过i回调用户命令来实现这一目标。这仅适用于非标准功能。任何的想法?我应该使用i事件退出吗?我尝试了一些东西,但也做不到: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(我通过调试测试)

1 个答案:

答案 0 :(得分:1)

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

然后,如果你想定义一个自定义排序机制,你可能只需要使用默认按钮并插入带有不同功能代码的按钮。谁知道,在版本42中,有人可能会提出再次启用默认排序的想法,然后您将不必再次调整所有内容......