天天看點

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

sap中abap的螢幕元素涉及到“定制控制” 和 “table control” 兩個資料顯示容器。

定制控制是單向的資料展示,使用abap的sql語句把資料從透明表(硬碟中)讀取至内表(記憶體),進行一系列資料整理,然後采用alv表格的形式把這些資料展示在“定制控制”這個用于資料顯示的容器中。

而table control不僅擁有“定制控制”的功能,而且還可以通過這個“tc”把使用者使用鍵盤輸入的資料寫入透明表(内表)中。也就是說,差別在于tc是一個雙向的資料顯示容器。

下面給大家示範tc的使用過程。

在sap中使用事務碼se80進入object navigator

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

選中需要被修改的螢幕(screen)點選格式按鈕(go to layout)

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

進入了screen painter

看到我們今天提到的兩個控件,如上圖。

嚴格來說,所謂的“控件”其實是 “螢幕元素”,黃佳的書第十章《事務螢幕設計》

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

接下來12章《進階螢幕元素》繼續講到了table control,他翻譯成表格控件。tc是sap的标準控件之一,标準控件需要使用controls語句在abap程式代碼中進行定義,并且有相應的螢幕元素與之對應。

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

我準備舉例示範該功能的使用方法。

<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

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

然後就在se80中建立了一個空程式

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

我們要在這個空程式中建立一個普通螢幕,然後在螢幕中建立table control,然後使用tc(table control)進行雙向資料傳遞。

下面建立普通螢幕(編号2000)

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

建立了普通螢幕2000之後需要為它添加gui title 和gui status

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

上圖所示,為2000螢幕的狀态,也就是螢幕的狀态欄,這是一種互動方式。我們需要添加back exit save這三個按鈕,讓它們生效。而且随時儲存一下,儲存、檢查、激活。

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

然後輕按兩下螢幕2000 為它設定pbo和pai

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

去掉注釋

輕按兩下module進行編碼設定

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

經過上述步驟,建立了程式,建立了螢幕2000

但是程式還不能執行,因為程式并沒有呼叫螢幕,是以螢幕無法被現實,下面讓程式執行的時候,去呼叫螢幕。

在程式中寫語句: start-of-selection

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

經過上述配置,螢幕2000已經可以使用了

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

目前它還隻是一個空螢幕,但是已經擁有了三個按鈕save back exit

下面我們對這個螢幕進行配置讓它顯示我們需要的内容

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

下圖就是這個空螢幕

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

看到今天的主角:table control 螢幕元素

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

tc是一個螢幕元素,用來顯示資料和擷取使用者的輸入

tc 與程式中的一個内表 一一對應。

今天例子中的tc用來通路sap中我通過事務碼se11自己定義的透明表zprelink

如下圖所示

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

是以我們在程式中首先定義内表,内表的結構參考zprelink

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

然後進入screen painter 修改螢幕2000

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

經過上述步驟,建立了如下圖所示的tc

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

關閉screen painter傳回object navigator,我們發現abap編輯器自動添加了很多代碼,這些代碼包括:

1.2000螢幕pbo和pai中除了最初兩個module之外的代碼

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

2.主程式中自動添加了400行左右的代碼:

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

然後運作該程式

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

我們看到已經可以使用tc顯示資料庫中的資料了。

接下來我們要做第二件事:在tc中輸入資料,然後通過螢幕2000的儲存按鈕,将資料存儲到zprelink這個透明表中。

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

咔嚓,多了一行

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

我想要的效果是:

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

首先zcjno這列,應該改為僅僅用來輸出資料,不用輸入

傳回screen painter

SAP的ABAP螢幕程式如何使用Table Control進行資料互動

然後,為save按鈕添加代碼,響應這個事件。

位置在pai的module中

SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動
SAP的ABAP螢幕程式如何使用Table Control進行資料互動

這樣,我們就實作了通過tc向透明表寫入資料