ABAP:List中回写CheckBox的值到内表
生活随笔
收集整理的這篇文章主要介紹了
ABAP:List中回写CheckBox的值到内表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們在內表中定義了一個flag字段并以checkbox的方式顯示在List上面后,該如何將用戶的選項回寫到內表中去?
由于可能有Title、Column Heading以及TOP-OF-PAGE事件的存在,List上的行號無法直接對應到內表中的行號。
通常我們的做法是根據List中某行的Key field value來判斷其在內表中的對應記錄。
這里要介紹一個更好的辦法,那就是直接將List行號與內表行號的差異直接記錄下來。
?
REPORT??z04_list_checkbox.
DATA:?g_diff?TYPE?i,
??????????g_line?TYPE?i.
DATA:?BEGIN?OF?itab?OCCURS?0,
????????flag?TYPE?c,
????????data?TYPE?char20,
??????END?OF?itab.
START-OF-SELECTION.
??itab-data?=?'Data?1'.
??APPEND?itab.
??itab-data?=?'Data?2'.
??APPEND?itab.
??itab-data?=?'Data?3'.
??APPEND?itab.
??NEW-PAGE?WITH-TITLE?WITH-HEADING.
??LOOP?AT?itab.
????WRITE:?/?itab-flag?AS?CHECKBOX,?itab-data.
??ENDLOOP.
??g_diff?=?sy-linno?-?LINES(?itab?). " 步驟1
AT?USER-COMMAND.
??CASE?sy-ucomm.
????WHEN?'SAVE'.
??????LOOP?AT?itab.
????????g_line?=?sy-tabix?+?g_diff. " 步驟2
????????READ?LINE?g_line?FIELD?VALUE?itab-flag.
????????MODIFY?itab.
??????ENDLOOP.
??????BREAK-POINT.
????WHEN?OTHERS.
??ENDCASE. 說明: (1)sy-linno和sy-colno是代表Write時候,當前List已經輸出到了某行某列; sy-curow和sy-cucol則代表USER-COMMAND事件中,用戶用鼠標點中了List的哪個位置。 (2)這里把g_diff賦值的語句放在了循環結束后。當然放循環內也是可以的,只是要多次運行。 如果放在循環開始前也不妥,計算的結果未必正確,因為系統是在首次碰到Write語句時觸發TOP-OF-PAGE事件的。
DATA:?g_diff?TYPE?i,
??????????g_line?TYPE?i.
DATA:?BEGIN?OF?itab?OCCURS?0,
????????flag?TYPE?c,
????????data?TYPE?char20,
??????END?OF?itab.
START-OF-SELECTION.
??itab-data?=?'Data?1'.
??APPEND?itab.
??itab-data?=?'Data?2'.
??APPEND?itab.
??itab-data?=?'Data?3'.
??APPEND?itab.
??NEW-PAGE?WITH-TITLE?WITH-HEADING.
??LOOP?AT?itab.
????WRITE:?/?itab-flag?AS?CHECKBOX,?itab-data.
??ENDLOOP.
??g_diff?=?sy-linno?-?LINES(?itab?). " 步驟1
AT?USER-COMMAND.
??CASE?sy-ucomm.
????WHEN?'SAVE'.
??????LOOP?AT?itab.
????????g_line?=?sy-tabix?+?g_diff. " 步驟2
????????READ?LINE?g_line?FIELD?VALUE?itab-flag.
????????MODIFY?itab.
??????ENDLOOP.
??????BREAK-POINT.
????WHEN?OTHERS.
??ENDCASE. 說明: (1)sy-linno和sy-colno是代表Write時候,當前List已經輸出到了某行某列; sy-curow和sy-cucol則代表USER-COMMAND事件中,用戶用鼠標點中了List的哪個位置。 (2)這里把g_diff賦值的語句放在了循環結束后。當然放循環內也是可以的,只是要多次運行。 如果放在循環開始前也不妥,計算的結果未必正確,因為系統是在首次碰到Write語句時觸發TOP-OF-PAGE事件的。
總結
以上是生活随笔為你收集整理的ABAP:List中回写CheckBox的值到内表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP:ALV中自定义搜索帮助
- 下一篇: ABAP:下载服务器文件到本机