調用函數的ALV、面向對象的ALV設置帶選擇列


這個就是通過對應的選擇列,實現對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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM