2012-04-11 69 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