2012-04-11 74 views
0

我想覆盖ALV网格中的某个函数。但我不能设法用我的回调用户命令。这只是针对非标准功能。任何想法?我应该使用我的事件退出吗?我试着用它的东西,但不能这样做既:P覆盖ALV中的函数ABAP

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

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

然后,如果你想要定义一个自定义的排序机制,你可能只需要隐藏默认按钮并插入你自己的按钮具有不同的功能代码。谁知道,在版本42有人可能想出的想法,使默认排序再次,然后你将不必再适应一切...

+0

它只是训练课程,我还是一个初级程序员并通过广阔的sap世界学习我的方式^^ – kookies 2012-04-12 06:19:33