這個就是通過對應的選擇列,實現對ALV數據的選擇,在調用函數的ALV和面向對象的ALV
實現方法存在差異,下面講兩者的方法:
1)調用函數的ALV。
通過 SLIS_LAYOUT_ALV-BOX_FIELDNAME的字段來設置,這個字段的值對應的是輸出內表的
一個字段名字(專門用於標記選擇哪些列,選中的為‘X’),其實這種實現方法就跟平時我
們增加一列復選擇框用於選擇的方法大致一樣的,但是這種方法選擇的方式比較快。
2)面向對象的ALV。
通過結構 LVC_S_LAYO-SEL_MODE的了段來設置,這個字段對應的值有以下5個:
1、sapce,等同於B,默認的設置。
2、A(行與列的選擇,無法選擇單元格)。
3、B(單選,不可以多選行,不可以多選單元格)。
4、C(多選行、列,不可以多選單元格)。
5、D(多選行、列,還可以多選單元格)。
只有設置的值為‘C’或者‘D’帶選擇列才可以顯示出來,其它值一概不行。如果ALV輸出
有列是可以編輯,則會覆蓋了 sel_mode的值,帶選擇列也會顯示出來的哦。
通過與1)種方法比較,很容易發現2)種方法沒有通過內表的一個字段值來記錄哪些值沒選
中了,那我們如何知道哪些列被選中了呢?可以通過CL_GUI_ALV_GRID-> GET_SELECTED_ROWS的
方法來獲取選中列對應的在輸出內表中的行ID了,具體就看下面的例子了:
DATA : LT_ROW TYPE LVC_T_ROID, "內表
LS_ROW TYPE LVC_S_ROID. "工作區
ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LS_ROW.
READ TABLE T_OUTPUT INDEX LS_ROW-ROW_ID.
IF SY-SUBRC EQ 0 .
T_ARG-PASS = 0 .
APPEND T_OUTPUT TO T_PRINT1.
ENDIF .
CLEAR T_OUTPUT.
ENDLOOP .
轉自 http://blog.163.com/arhao_h/blog/static/1251690201061495557590/