我想在ALV网格中重写一些函数。但是我不能通过回调用户命令来做到这一点。这只适用于非标准函数。有什么想法吗?我应该使用事件出口吗?我用它尝试了一些东西,但也做不到:
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_commandD01函数只是为了测试,所以当我访问它时,我可以看到它进入了user_command。但是当我访问这个函数&OUP时,它不再进入这个例子(我用调试来测试它)
发布于 2012-04-12 04:19:53
我不知道这是不是适合你,但是你可能想要ALV对象模型--它是better documented --例如查看this chapter关于处理函数和事件的内容。更重要的是,它得到了官方的支持--如果你使用它,但它不能正常工作,你会得到帮助,而不是习惯上的“你正在使用未发布的内部类/函数模块”。看一下演示程序(SALV_DEMO_*或DEMO_SALV_*,我记不住了)。
同样,如果你想定义一个自定义的排序机制,你可能只需要隐藏默认的按钮,并插入你自己的带有不同功能代码的按钮。谁知道呢,在42版本中,可能会有人想出再次启用默认排序的想法,然后您就不必再适应所有东西了……
https://stackoverflow.com/questions/10112270
复制相似问题