ABAP 報表開發例項

2021-06-16 04:14:22 字數 3914 閱讀 7427

在這裡示範乙個例項,講講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開發報表的乙個常規

流程,並不是講什麼技巧之類的,希望能對初學者有點用

ABAP開發報表

在這裡我給初學者示範乙個例項,講講abap開發報表的簡單過程。程式的正確與 否我們不與討論,我們只關心這個程式的編寫過程。首先,在任何程式的開始階段,我們都要確定將會用到的表。我們所講的這個程式 是查詢採購訂單是否完成的。將會用到以下三個表 ekko,ekpo,eket。程式的開頭為 report ...

ABAP 報表開發學習 (1)

一 分頁 1 無條件分頁 要在頁處理期間觸發分頁 觸發end of page 請使用 new page 語句的基本格式 語法 new page.2 條件分頁定義行塊 要在少於某一頁剩餘行數的條件下執行分頁 觸發end of page 請使用reserve 語句 語法 reserve lines.n為...

ABAP 報表的事件

一,首先介紹一下 abap 的程式的型別 program type 程式型別 introductory statement 型別描述 1 report 報表 m program 螢幕程式 f function pool 函式組 k class pool 類組 j class pool 介面組 t t...