
需求分析:
1、具體需求
本《按輸入銷售訂單輸出銷售信息》有如下需求:
- 程序的初始界面可以輸入銷售訂單信息,訂單號、產(chǎn)品編號、數(shù)量、價格、折扣率;
- 輸入后執(zhí)行將輸出輸入的銷售訂單信息;
- 根據(jù)輸入的數(shù)量、價格和折扣,得到銷售金額:數(shù)量*價格*(1-折扣);
- 將銷售數(shù)量和銷售金額的單位進行轉(zhuǎn)換,數(shù)量以斤為輸出,銷售金額以美元輸出。
2、開發(fā)分析
要達(dá)成本實踐目標(biāo),需要綜合ABAP的數(shù)據(jù)輸出實現(xiàn)方式:
- 輸入信息包括訂單號、數(shù)量、價格等是用戶輸入的界面字段,可以通過選擇字段PARAMETERS進行定義;
- 銷售金額、轉(zhuǎn)換后的數(shù)量、轉(zhuǎn)換后的金額,將會根據(jù)輸入的信息變動,如此可以在程序中定義為變量,以存儲及輸出要處理的數(shù)據(jù);
- 通過對數(shù)據(jù)的運算,包括加減乘除,計算出銷售金額、轉(zhuǎn)換后的數(shù)量等;
- 通過Write語句可以將數(shù)據(jù)輸出到屏幕,而在輸出時需要考慮每列數(shù)據(jù)輸出起始位置及所占字符長度;
實踐步驟:
本實踐通過程序編輯器(SE38)即可完成,編寫的代碼將有如下幾部分組成,按開發(fā)人員風(fēng)格不同,其組成部分并非強制一致。
| No | 部分 | 說明 |
|---|---|---|
| 1 | 程序聲明 | 聲明本程序執(zhí)行后是否包含標(biāo)準(zhǔn)標(biāo)題,數(shù)據(jù)輸出寬度和每頁的行數(shù)量為多少 |
| 2 | 對象定義 | 通過定義變量或常量等,以在程序執(zhí)行過程中計算和存儲臨時值 |
| 3 | 數(shù)據(jù)處理 | 根據(jù)需求對數(shù)據(jù)進行處理 |
| 4 | 文本元素 | 通過文本元素定義程序輸出時的文字內(nèi)容以及初始界面中的字段 |
| 5 | 輸出數(shù)據(jù) | 將計算結(jié)果數(shù)據(jù)按要求輸出 |
1、程序聲明
程序聲明部分代碼如下:
REPORT zu0301_num_cal.
本語句是對程序的定義,表明此程序代碼不是FUNCTION MODULE(功能函數(shù)),不是CLASS(類),而是可以執(zhí)行的可以輸出數(shù)據(jù)的此程序;這是對程序最基本的聲明,且必須存在的部分。
2、對象定義
對象定義部分代碼如下:
*****對象定義
DATA: oamount TYPE f, "銷售金額
qualityc TYPE p DECIMALS 1, "公斤轉(zhuǎn)換為斤后的數(shù)量
pricec TYPE p DECIMALS 1, "轉(zhuǎn)換為斤后的價格
oamountc TYPE f, "轉(zhuǎn)換為美元后的銷售金額
strng TYPE string. "輸出信息
CONSTANTS crate TYPE p DECIMALS 4 "假設(shè)匯率為固定值,此處定義為常量
VALUE '0.1512'.
PARAMETERS: orderno(6) TYPE n, "定義類型為N(數(shù)字字符)的訂單編號變量
product(10) TYPE c, "定義類型為C(字符)的產(chǎn)品編號變量
quality TYPE i DEFAULT 10, "定義類型為I(整數(shù))默認(rèn)值為10的數(shù)量變量
price(4) TYPE p DECIMALS 2, "定義類型為P(定點)小數(shù)位數(shù)2的數(shù)量變量
discount(4) TYPE p DECIMALS 1. "定義類型為P(定點)小數(shù)位數(shù)1的折扣變量
如上代碼,首先通過DATA定義在程序中要存儲和輸出數(shù)據(jù)的變量及其類型,包含:oamount(銷售金額,浮點小數(shù))、qualityc(斤數(shù)量,小數(shù)位數(shù)1的定點小數(shù))、pricec(斤價格,小數(shù)位數(shù)1的定點小數(shù))、oamountc(美元銷售金額,浮點小數(shù))。隨后通過CONSTANTS定義1個常量crate(匯率人民幣與美元匯率),此常量類型是4位小數(shù)的定點小數(shù),并將匯率賦值0.1512,通過此常量定義后表示在程序執(zhí)行過程中不需要改變。
然后,按需求通過PARAMETER定義初始界面中要輸入的訂單編號、產(chǎn)品編號、數(shù)量、價格、折扣率,并根據(jù)需要設(shè)置了其類型。
3、數(shù)據(jù)處理
通過字符處理、計算、得到各變量的值以進行下一步的程序處理:
*----------------------------------------------------------------------*
*****數(shù)值計算
oamount = quality * price
* ( 1 - discount / 100 ). "計算銷售金額
qualityc = quality * 2. "1公斤 = 2斤
pricec = price / 2.
oamountc = oamount * crate . "指定匯率為1人民幣=0.1512美元
*****輸入信息顯示
WRITE: /5 TEXT-001, "WRITE輸出數(shù)據(jù),/5 換行從第5位開始輸出
/10 '訂單號:', 20 orderno, "訂單號值從第20位開始輸出
/10 '產(chǎn) 品:', 20 product,
/10 '數(shù) 量:', 20(10) quality, '公斤',
/10 '價 格:', 20(10) price,'元/公斤',
/10 '折扣率:', 20(10) discount && '%' . "%顯示效果
注意運算符包括+、-、*、/還有括號等左右需要留空,不留空的話其意義不同,如不留空時,+在字符中為截取字符,-表示一個結(jié)構(gòu)包含的字段,/在WRITE中為換行。
4、文本元素
對如上部分代碼輸入并保存后,通過菜單“轉(zhuǎn)到”-->“文本元素”,設(shè)置文本符號(圖3-1)、標(biāo)題(圖3-2),以為后續(xù)輸出數(shù)據(jù)部分使用。


5、輸出數(shù)據(jù)
根據(jù)要求,通過Write進行輸出。
*****輸出信息顯示
SKIP 1. "空一行輸出
WRITE: /5 TEXT-002.
strng = oamount && ','. "通過&&合并金額(浮點型)和,
CONCATENATE TEXT-003 strng INTO strng. "通過CONCATENATE合并多個字符到STRNG
WRITE: /10 strng.
strng = TEXT-005 && qualityc && '斤,'
&& TEXT-006 && pricec && '元/斤,'.
WRITE: /10 TEXT-004,
/10 strng.
strng = TEXT-008 && oamountc && '美元。'.
WRITE: /10 TEXT-007,
/10 strng.
如上通過WRITE語句進行數(shù)據(jù)的輸出,其中strng根據(jù)輸出的需求,進行了多次的賦值。
將如上4部分代碼按順序組合在一起,則是此開發(fā)實踐的完整實現(xiàn)代碼,輸入后可通過程序美化器自動編排,由此完成程序的開發(fā)。
本實踐小結(jié):
1、數(shù)據(jù)類型

2、對象定義

3、注釋
