聲明:本文僅代表作者觀點(diǎn)和立場(chǎng),不代表任何公司!僅用于SAP軟件應(yīng)用學(xué)習(xí)參考,文中操作截圖來(lái)源于SAP軟件,相應(yīng)著作權(quán)歸SAP公司所有。 表格控件是ABAP編程中最常用的SAP標(biāo)準(zhǔn)控件之一,通過(guò)它可以非常方便的根據(jù)用戶的操作動(dòng)態(tài)對(duì)內(nèi)表數(shù)據(jù)進(jìn)行ALV格式的顯示、更改、排序等操作。簡(jiǎn)單的說(shuō)表格控件是一個(gè)雙向的數(shù)據(jù)輸入/輸出容器,它可以顯示程序內(nèi)表數(shù)據(jù),也可將用戶在表控件界面錄入數(shù)據(jù)寫回程序內(nèi)表。下面通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)初步了解下下表控件如何使用 寫一個(gè)程序?qū)崿F(xiàn)如下簡(jiǎn)單功能
- 讀取數(shù)據(jù)庫(kù)一個(gè)表(SPFLI)的數(shù)據(jù),將讀取數(shù)據(jù)使用表控件顯示。備注:SPFLI是SAP IDES系統(tǒng)內(nèi)已定義的存儲(chǔ)航空信息數(shù)據(jù)庫(kù)表,如果你的系統(tǒng)不存在這個(gè)表,可以選取任何自定義表作為系統(tǒng)操作演示使用。
2.對(duì)表控件顯示數(shù)據(jù)進(jìn)行修改,點(diǎn)擊保存后更新數(shù)據(jù)庫(kù)表。1.創(chuàng)建一個(gè)程序ZTABLECON(SE38)在程序中定義表控件顯示的內(nèi)表數(shù)據(jù) 這里定義的程序內(nèi)表ITAB,通過(guò)表控件顯示此內(nèi)表的內(nèi)容,表控件錄入的更新數(shù)據(jù)寫回此內(nèi)表,然后在更新到數(shù)據(jù)庫(kù)。 表控件需要放置到屏幕上,需要先創(chuàng)建一個(gè)屏幕。 點(diǎn)擊創(chuàng)建屏幕,進(jìn)入如下界面3.創(chuàng)建表控件(使用表控件向?qū)?chuàng)建)在上面步驟創(chuàng)建的屏幕上創(chuàng)建表控件對(duì)象 表控件名稱:ZTBL,這里名稱沒(méi)特別要求,英文字符即可。 內(nèi)表程序表:要和前面程序中定義內(nèi)表名ITAB的一致。激活屏幕后,點(diǎn)擊返回邏輯流 系統(tǒng)自動(dòng)生成表控件的PBO和PBA邏輯流系統(tǒng)自動(dòng)生成表控件的PBO和PBA邏輯流處理代碼上面步驟把放置表控件的屏幕和表控件創(chuàng)建好了。接下來(lái)在程序里面寫一個(gè)代碼,將數(shù)據(jù)庫(kù)表SPFLI的數(shù)據(jù)去取出到內(nèi)表ITAB里面,在通過(guò)表控件將內(nèi)表ITAB數(shù)據(jù)顯示處理。(如下圖) 激活后點(diǎn)擊測(cè)試圖標(biāo)(如下圖)點(diǎn)擊測(cè)試按鈕,顯示如下 從上圖可以看到程序已取出數(shù)據(jù)庫(kù)表SPFLI的數(shù)據(jù),并通過(guò)表控件以ALV格式顯示出來(lái)。上圖可以看到目前屏幕9000只能顯示數(shù)據(jù),不能做任何操作。為了能對(duì)顯示的數(shù)據(jù)進(jìn)行操作,比如:修改某行的數(shù)據(jù),然后點(diǎn)擊保存后將更改后數(shù)據(jù)保存到數(shù)據(jù)庫(kù)表。新增屏幕9000 GUI Status狀態(tài)要在屏幕9000上使用上面創(chuàng)建GUI狀態(tài),需要在屏幕的PBO邏輯流增加如下代碼 點(diǎn)擊激活后回到主程序,點(diǎn)擊測(cè)試。 顯示如下。上圖可以看到9000屏幕的GUI狀態(tài)的2個(gè)按鈕高亮顯示出來(lái),但是點(diǎn)擊它們沒(méi)有任何反應(yīng)。下面還需要對(duì)2個(gè)按鍵點(diǎn)擊動(dòng)作寫上執(zhí)行處理代碼,要實(shí)現(xiàn)具體功能如下: 1.點(diǎn)擊SAVE將用戶修改后的表控件顯示的數(shù)據(jù),更新到數(shù)據(jù)庫(kù)。2.點(diǎn)擊BACK退出當(dāng)前程序。在下圖寫上點(diǎn)擊按鈕的處理代碼并激活程序 處理代碼如下:MODULE USER_COMMAND_9000 INPUT. CASE SY-UCOMM. WHEN 'BACK'. LEAVE PROGRAM. WHEN 'SAVE'. MODIFY SPFLI FROM TABLE ITAB. IF SY-SUBRC NE 0. MESSAGE I005(YMESS) WITH '更新數(shù)據(jù)錯(cuò)誤!'. EXIT. ELSE. MESSAGE I005(YESS) WITH '更新數(shù)據(jù)OK!'. ENDIF. ENDCASE. ENDMODULE. " USER_COMMAND_9000 INPUT 執(zhí)行程序 將第1行紅色框的修改上圖所示,讓后點(diǎn)擊保存,可以看到SAVE按鈕已起作用,執(zhí)行了更新數(shù)據(jù)庫(kù)操作。通過(guò)SE16N查詢數(shù)據(jù)庫(kù)表SPFLI可以看到上面表控件的修改數(shù)據(jù)已更新到數(shù)據(jù)庫(kù)表里面(如下)
|