ABAP 報表開發例項
在這裡我給初學者示範一個例項,講講abap開發報表的簡單過程。程式的正確與
否我們不與討論,我們只關心這個程式的編寫過程。
首先,在任何程式的開始階段,我們都要確定將會用到的表。我們所講的這個程式
是查詢採購訂單是否完成的。將會用到以下三個表:EKKO,EKPO,EKET。
程式的開頭為:
REPORT TEST.
TABLES: EKKO,EKET,EKPO.
現在我們已經定義了所要用到的表,接下來的工作就是定義內表和資料。內表是
用來儲存我們從上述三個表中查詢到的資料。相關定義如下:
DATA: BEGIN OF ITAB OCCURS 0,
EBELN LIKE EKKO-EBELN,
MENGE LIKE EKPO-MENGE,
WEMNG LIKE EKET-WEMNG,
END OF ITAB.
現在我們已經定義完了內表ITAB。接著我們該定義資料了。資料就像C語言裡的
常量。其相關定義如下:
DATA: MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
WEMNG LIKE EKET-WEMNG,
EBELN LIKE EKPO-EBELN.
到這裡我們已經把程式裡要用到的資料和內表都定義好了。接著我們要做的工作
就是選擇螢幕。所謂選擇螢幕是指程式執行時,你要從螢幕上輸入的內容。比如
說一個程式執行時,你輸入一個物料號,就可以得到該物料的當前的庫存數,那
你就要編寫一個螢幕以供查詢者輸入查詢的條件。其相關定義如下:
SELECT-OPTIONS: EBELN1 FOR EKKO-EBELN,
BEDAT FOR EKKO-BEDAT,
EKGRP FOR EKKO-EKGRP.
PARAMETERS: R1 RADIOBUTTON GROUP RADI,
R2 RADIOBUTTON GROUP RADI,
R3 RADIOBUTTON GROUP RADI.
現在我們已經完成了程式的前期準備,接著就開始真正的到表裡查詢我們需要的
相關資料了。其程式碼如下:
SELECT K~EBELN
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM EKKO AS K
WHERE K~EBELN IN EBELN1
AND K~BEDAT IN BEDAT
AND K~EKGRP IN EKGRP.
LOOP AT ITAB.
SELECT SUM( MENGE ) INTO ITAB-MENGE
FROM EKPO
WHERE EBELN EQ ITAB-EBELN.
MODIFY ITAB.
ENDLOOP.
LOOP AT ITAB.
SELECT SUM( WEMNG ) INTO ITAB-WEMNG
FROM EKET
WHERE EBELN EQ ITAB-EBELN.
MODIFY ITAB.
ENDLOOP.
然後我們需要定義輸出介面。把我們查詢到的資料輸出時要有一個輸出的格式,
這樣大家看起來才會方便。程式碼如下:
TOP-OF-PAGE .
WRITE: /'採購憑證號',22 '物料號碼',
47 '採購訂單數量',77 '收到貨物數量',
95 '完成標誌'.
ULINE AT /1(130).
END-OF-PAGE .
START-OF-SELECTION.
最後就是把我們查到的資料輸出了。其實我舉的這個程式到這一步時穿插了
一些查詢,所以比較長。程式碼如下:
IF R1 = 'X'.
LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
INTO (MATNR, MENGE, WEMNG, EBELN)
FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN
WHERE S~EBELN = ITAB-EBELN.
IF ITAB-MENGE > ITAB-WEMNG.
WRITE: /2 EBELN,23 MATNR,41 MENGE,
71 WEMNG,97 '否'.
ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG.
ENDIF.
ENDSELECT.
ENDLOOP.
ELSEIF R2 = 'X'.
LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
INTO (MATNR, MENGE, WEMNG, EBELN)
FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN
WHERE S~EBELN = ITAB-EBELN.
IF ITAB-MENGE <= ITAB-WEMNG.
WRITE: /2 EBELN,23 MATNR,41 MENGE,
71 WEMNG,97 '是'.
ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG.
ENDIF.
ENDSELECT.
ENDLOOP.
ELSE.
LOOP AT ITAB.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
INTO (MATNR, MENGE, WEMNG, EBELN)
FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN
WHERE S~EBELN = ITAB-EBELN.
IF ITAB-MENGE > ITAB-WEMNG.
WRITE: /2 EBELN, 23 MATNR,41 MENGE,
71 WEMNG,97 '否'.
ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG.
ENDIF.
ENDSELECT.
ENDLOOP.
ENDIF.
LOOP AT ITAB.
IF R3 = 'X' AND ITAB-MENGE <= ITAB-WEMNG.
SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
INTO (MATNR, MENGE, WEMNG, EBELN)
FROM EKPO AS S INNER JOIN EKET AS P
ON S~EBELP = P~EBELP AND S~EBELN = P~EBELN
WHERE S~EBELN = ITAB-EBELN.
WRITE: /2 EBELN,23 MATNR,41 MENGE,
71 WEMNG,97 '是'.
ULINE AT /1(130).
CLEAR: EBELN,MATNR,MENGE,WEMNG.
ENDSELECT.
ENDIF.
ENDLOOP.
這時程式就結束了。其實舉這個例子是想讓大家知道ABAP開發報表的一個常規
流程,並不是講什麼技巧之類的,希望能對初學者有點用。拋磚引玉!
相關文章
- iReport 報表、子報表、主從報表、合計、例項解析
- ABAP報表的事件事件
- Word類報表例項 - 質量檢測報告
- 水晶報表官方例項下載:報表和應用程式 (轉)
- .NET中列印Excel報表程式碼例項Excel
- C#開發例項大全C#
- angular模組庫開發例項Angular
- jquery外掛開發例項jQuery
- python開發例項-python開發案例Python
- ABAP 開發常用icon對應的程式碼 報表 table control icon
- SQL開發例項和優化SQL優化
- ssh+json開發例項JSON
- SharePoint PerformancePoint開發例項ORM
- Jasperreport 報表開發
- 原生javascript開發計算器例項JavaScript
- javascript專案開發規範例項JavaScript
- 簡易型PDA的開發例項
- MongoDB+PHP聯合開發例項MongoDBPHP
- BCB 客戶端 tuxedo 開發例項客戶端UX
- android移動開發簡單的開發例項Android移動開發
- oracle 例項表查詢Oracle
- PHP 完整表單例項PHP單例
- 用Excel模板開發報表Excel
- 利用xml publisher開發報表XML
- 報表開發工具FineReport報表填報資料校驗
- 測試驅動開發(TDD)例項演示
- android原生開發recyclerview基礎例項AndroidView
- vlc qt player 播放器開發例項QT播放器
- Docker開發例項之應用場景Docker
- BCB 客戶端 tuxedo 開發例項 (轉)客戶端UX
- SAP ABAP報表依賴設計原理詳解
- dubbo請求報文例項
- 啟動ASM 例項報錯ASM
- HarmonyOS遠端狀態訂閱開發例項
- Android開發:ContentProvider例項詳解AndroidIDE
- Restlet - 基於Spring的Restlet開發例項RESTSpring
- 安卓開發SQLite增刪改查操作例項安卓SQLite
- Sql Server 2005開發新特性例項SQLServer