主要學習的博客轉自:http://www.abaptech.com/2008/07/alv-grid-demo/
先記錄下爲何要用繁體吧。
oh 前兒去學guitar 遇見了個外國人,在中國3、4年, 一口流利的普通話,自愧不如,人家外語怎麽就這麽好。
了解到原是教中國厤史的老師,我對於祖國的歷史局限于初高中那點底子,唉。
留下個聯係方式,居然是繁體的中文名字,我,慚愧,所以,開始用繁體,希望潛移默化的起到些作用吧。
言歸正傳!!!!!!!!!!!!
大概框架:
左邊是2個tree,
涉及到的幾個類,不分先後順序:
cl_gui_docking_container
cl_gui_container
cl_gui_splitter_manager
cl_gui_alv_tree
cl_gui_alv_grid
cl_gui_column_tree
事件流:
- 先為分割器第一行顯示内表數據加值
- call screen 9000
- call method lcl_splitter_manager=>create
- 註冊事件
- 執行吧
- 出發按鈕,轉換子屏幕
1: 先創建個分割器類定義
涉及了兩個類:lcl_launchpad_manager / lcl_displaytl_manager.
2: 分割器的實現
這個還蠻重要的,裏面很多方法、屬性神馬的,挺有用的。其實,有的我也不明白,記一個最不解的
問題1:
DATA alignment TYPE i.
alignment = cl_gui_splitter_container=>align_at_left +
cl_gui_splitter_container=>align_at_right +
cl_gui_splitter_container=>align_at_top +
cl_gui_splitter_container=>align_at_bottom.
CREATE OBJECT splitter_control
EXPORTING
metric = space
align = alignment
parent = parent
rows = 2
columns = 1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
嗯 这段,什麽意思那?
3: 分割器,上下兩區域的類方法,定義
實現:
結構還蠻清楚的
4:實現分割器下面,類定義和實現
實現:
嗯 這部分超級點單的
5: 實現tree/alv 的雙擊事件
實現:
最主要的代碼:
read table it_order with key key = node_key into ...
之後就是數據的導入 之類的。
在alv 雙擊后觸發事件裏面有:leave to screen 9000 . [9000就是這個主屏幕]
6. 屏幕流
主屏幕9000 包含一個tabstrip, 默認的子屏幕是0301, 第二個標簽包含alv 所在子屏幕是0400,
9000:
PBO: CALL SUBSCREEN subscr_menu INCLUDING sy-repid number.
PAI: CALL SUBSCREEN subscr_menu.
0301:
PBO:LOOP AT it_sbook WITH CONTROL tc_s CURSOR tc_s-top_line.
MODULE sub_dispay_sbook.
ENDLOOP.
DESCRIBE TABLE it_sbook LINES fill. "竖滚动条
tc_s-lines = fill.
PAI:LOOP AT it_sbook.
MODULE sub_set_line_count.
ENDLOOP.
line_count = sy-loopc.
MODIFY it_sbook FROM wa_sbook INDEX tc_s-current_line. "竖滚动条
0400:
PBO:
注:要在程序裏聲明:
CONTROLS menu_tabstrip TYPE TABSTRIP.
DATA number TYPE sy-dynnr.
menu_tabstrip-activetab = 'TAB01'.
number = '0300'.
"---------------------------------------------
CONTROLS tc_s TYPE TABLEVIEW USING SCREEN 0301.
DATA line_count TYPE i.
附加結果圖片:
其實還有很多交互 沒有完成,懶啦 有時間做一下吧