sap中abap的螢幕元素涉及到“定制控制” 和 “table control” 兩個資料顯示容器。
定制控制是單向的資料展示,使用abap的sql語句把資料從透明表(硬碟中)讀取至内表(記憶體),進行一系列資料整理,然後采用alv表格的形式把這些資料展示在“定制控制”這個用于資料顯示的容器中。
而table control不僅擁有“定制控制”的功能,而且還可以通過這個“tc”把使用者使用鍵盤輸入的資料寫入透明表(内表)中。也就是說,差別在于tc是一個雙向的資料顯示容器。
下面給大家示範tc的使用過程。
在sap中使用事務碼se80進入object navigator
選中需要被修改的螢幕(screen)點選格式按鈕(go to layout)
進入了screen painter
看到我們今天提到的兩個控件,如上圖。
嚴格來說,所謂的“控件”其實是 “螢幕元素”,黃佳的書第十章《事務螢幕設計》
接下來12章《進階螢幕元素》繼續講到了table control,他翻譯成表格控件。tc是sap的标準控件之一,标準控件需要使用controls語句在abap程式代碼中進行定義,并且有相應的螢幕元素與之對應。
我準備舉例示範該功能的使用方法。
<a href="http://blog.csdn.net/szlaptop/article/details/8116441">http://blog.csdn.net/szlaptop/article/details/8116441</a>
<a href="http://blog.csdn.net/szlaptop/article/details/8116441">csdn關于tablecontrol的好文</a>
上面連結中的文章,基本講了用tc顯示内表中資料的過程(讀取并顯示),但是沒有描述反向的資料寫入過程(收集資料并儲存)。
首先,使用sap的事務碼se80(object navigator)建立一個程式(program)z_mm_testtc
然後就在se80中建立了一個空程式
我們要在這個空程式中建立一個普通螢幕,然後在螢幕中建立table control,然後使用tc(table control)進行雙向資料傳遞。
下面建立普通螢幕(編号2000)
建立了普通螢幕2000之後需要為它添加gui title 和gui status
上圖所示,為2000螢幕的狀态,也就是螢幕的狀态欄,這是一種互動方式。我們需要添加back exit save這三個按鈕,讓它們生效。而且随時儲存一下,儲存、檢查、激活。
然後輕按兩下螢幕2000 為它設定pbo和pai
去掉注釋
輕按兩下module進行編碼設定
經過上述步驟,建立了程式,建立了螢幕2000
但是程式還不能執行,因為程式并沒有呼叫螢幕,是以螢幕無法被現實,下面讓程式執行的時候,去呼叫螢幕。
在程式中寫語句: start-of-selection
經過上述配置,螢幕2000已經可以使用了
目前它還隻是一個空螢幕,但是已經擁有了三個按鈕save back exit
下面我們對這個螢幕進行配置讓它顯示我們需要的内容
下圖就是這個空螢幕
看到今天的主角:table control 螢幕元素
tc是一個螢幕元素,用來顯示資料和擷取使用者的輸入
tc 與程式中的一個内表 一一對應。
今天例子中的tc用來通路sap中我通過事務碼se11自己定義的透明表zprelink
如下圖所示
是以我們在程式中首先定義内表,内表的結構參考zprelink
然後進入screen painter 修改螢幕2000
經過上述步驟,建立了如下圖所示的tc
關閉screen painter傳回object navigator,我們發現abap編輯器自動添加了很多代碼,這些代碼包括:
1.2000螢幕pbo和pai中除了最初兩個module之外的代碼
2.主程式中自動添加了400行左右的代碼:
然後運作該程式
我們看到已經可以使用tc顯示資料庫中的資料了。
接下來我們要做第二件事:在tc中輸入資料,然後通過螢幕2000的儲存按鈕,将資料存儲到zprelink這個透明表中。
咔嚓,多了一行
我想要的效果是:
首先zcjno這列,應該改為僅僅用來輸出資料,不用輸入
傳回screen painter
然後,為save按鈕添加代碼,響應這個事件。
位置在pai的module中
這樣,我們就實作了通過tc向透明表寫入資料