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開發報表的一個常規
流程,並不是講什麼技巧之類的,希望能對初學者有點用。拋磚引玉!
相關文章
- python開發例項-python開發案例Python
- Word類報表例項 - 質量檢測報告
- C#開發例項大全C#
- oracle 例項表查詢Oracle
- PHP 完整表單例項PHP單例
- 一個pyspark 開發練習例項Spark
- android原生開發recyclerview基礎例項AndroidView
- 原生javascript開發計算器例項JavaScript
- JFreeChart圖表製作例項
- 測試驅動開發(TDD)例項演示
- vlc qt player 播放器開發例項QT播放器
- Docker開發例項之應用場景Docker
- Jasperreport 報表開發
- 開始例項化
- C#雜湊表的例項C#
- dubbo請求報文例項
- HarmonyOS開發例項:【相機和媒體庫】
- HarmonyOS遠端狀態訂閱開發例項
- table表頭分組程式碼例項
- JavaScript 表單驗證程式碼例項JavaScript
- oracle 10203啟動例項報警Oracle
- 原生js使用物件導向的方法開發選項卡例項教程JS物件
- WEB例項:開發一個聊天室應用Web
- 直播平臺軟體開發,flex佈局例項Flex
- Thread 併發執行例項thread
- SAP ABAP報表依賴設計原理詳解
- ArcGIS開發(二)——一個基本視窗的例項化
- PHP+jQuery開發簡單的翻牌抽獎例項PHPjQuery
- [MobX State Tree資料元件化開發][2]:例項-TodoList元件化
- 基於svelteKit開發仿微信app介面聊天例項APP
- Java開發中的事件驅動模型例項詳解Java事件模型
- SAP雲平臺上兩個ABAP系統例項之間的互連
- IT報表開發者必看:別加班了,快用這個神器提高報表開發效率
- 帆軟報表開發新手教程
- SQL觸發器例項講解SQL觸發器
- 用圖表和例項解釋 Await 和 AsyncAI
- Excel vba 例項(1) - 批量製作工資表頭Excel
- php例項化物件的例項方法PHP物件
- CSS 例項之開啟大門CSS