abap
中開發的程式分2種。
report
和dialog.
在report
程式設計中,
sap系統中已經安排了事件流執行順序。我們只要在相應的事件塊塊中敲上**,程式會按照事件塊的先後順序執行的。
report
事件流大概如下:initialization——》at-selection——》at-selection-output
——》start-of-selection
——》at user_command
——》at line-selection.
——》top-of-pgae
——》end-of-page
——end-of-selection.
dialog
中由flow logic
控制, flow logic
分成pbo(process before output)
與pai(process after input)
。乙個螢幕流的執行過程是:螢幕對應的
pbo(
螢幕輸出前處理塊
)——》輸出相應的螢幕——》
pai(
螢幕輸出後處理塊
)。如果在
pai中沒有去觸發執行下乙個螢幕事件的話,會在當前的螢幕流中進行迴圈,也就是當前
pbo->
顯示螢幕
->pai
進行迴圈。
pbo過程中處理的大部分是內錶資料填充到要顯示的螢幕欄位中。
pai過程中處理的大部分是把更新的螢幕資料更新到內錶,根據相應的螢幕命令動作做相應的事件。比如儲存按鈕的畫,要把資料從內錶更新到資料庫中。
如果輸出螢幕是數字的畫,在
se51
製作的螢幕欄位中,後面要加大寫的『
v』,否則負數會導致系統的
short dump.
在乙個dialog
中乙個內錶很有可能貫穿好幾個螢幕,這時就要非常小心螢幕的流向了。比如這樣乙個場景:在
500中抓取資料放入乙個內錶中,在
600螢幕中發生乙個動作到螢幕
700進行乙個資料的更新,資料跟新完之後跳回螢幕
600,螢幕
600進行儲存後返回到螢幕
500。而這時又開始執行螢幕
500的
pbo,
這時這個內錶資料照理說要重新抓取的哦!但是問題是如果在螢幕
500中抓取的這個內錶資料是根據後續的一些條件來抓取的話就會產生一些問題。這時候千萬要注意的是在抓取資料到這個內錶要進行內錶清空的動作。否則這個內錶在第二次進入
500螢幕時是還存在值的,不一定是我們想要的!所以在抓取資料到乙個內錶前對內表的清空操作是必要的。以免引起不必要的麻煩!
區別於report的一點是report就按事件流執行下來完就完成了,而在dialog中常常存在著殺回馬槍的動作,而這時資料該是什麼樣的要非常小心,就因為沒寫乙個clear就會要了你的命!
關於螢幕適配
目前主流裝置的長寬比為16比9,該比例的占有率還在持續上公升中。且在等寬情況下,該比例下的長為最大,因此在設計時以16比9為基礎,螢幕適配時只要對更矮的比例進行適配就可以了。2014.3.29日 主流android裝置解析度演示文稿 考慮如下情況,螢幕四角採用相對布局停靠有四個ui物件,有個跟當前螢...
關於螢幕適配
普通顯示屏 舊手機,iphone3,在螢幕上能看到物理畫素點 iphone3和iphone4的螢幕寬度都是320px。對於物理畫素,前者320 280,而後者640 960。後者的畫素密度更大,以至於肉眼基本看不到畫素點了。對於普通顯示屏,1px對應乙個畫素點。高畫質顯示屏內1px對應2個畫素點了 ...
關於螢幕擷取
有時候需要將乙個視窗實時截取出視窗畫面,常用的 bitblt 可以將源裝置區域畫素拷貝到目標區域,而在視窗擋住或者隱藏的情況下就無能為力了,這個時候可以用 printwindow 不論是視窗被隱藏,或者被擋住都能截出想要的區域 示例 intptr hscrdc getwindowdc hwnd co...