需求分析:
1泛鸟、具體需求
本《使用Include輸出訂單列表》有如下需求:
- 從訂單表中獲得訂單信息并按圖示輸出蝠咆;
- 訂單列表按訂單編號升序輸出,同時輸出訂單編號時不保留前導0北滥。
其中列表輸出效果如圖刚操。
2、開發(fā)分析
要達成本實踐目標再芋,分析有如下:
- 此實踐也可以通過一般的方式在一個程序中實現(xiàn)頁眉和數(shù)據的輸出菊霜;
- 在本實踐中,將頁眉輸出通過Include(包含)程序進行定義济赎,如此此頁眉可在不同的程序中重復使用鉴逞。
實踐步驟:
本實踐將會需要建立2個程序,一個是要在其他程序中包含的Include程序司训,另一個是輸出列表數(shù)據的程序构捡;2個程序都可以通過程序編輯器(SE38)即可完成,編寫的代碼將有如下幾部分組成壳猜,按開發(fā)人員風格不同勾徽,其組成部分并非強制一致。
1统扳、建立Include
在程序編輯器的初始界面喘帚,輸入程序名稱(本實例為ZU0504_PAGE_HEADER)后畅姊,點擊創(chuàng)建,將會出現(xiàn)設定程序屬性的界面吹由,從界面中輸入標題涡匀,并選擇類型為“I INCLUDE程序”程序,如圖溉知,完成后點擊保存陨瘩。
然后將進入源代碼編輯界面,詳細代碼如下:
*&---------------------------------------------------------------------*
*& INCLUDE ZU0504_PAGE_HEADER
*&---------------------------------------------------------------------*
TOP-OF-PAGE.
WRITE:/5 '訂單列表', 60 '頁碼:', (3) sy-pagno.
WRITE:/5(70) sy-uline.
WRITE:/5(4) '序號', (8) '訂單編號',
(8) '訂單日期', (6) '客戶',
(20) '客戶名稱', (8) '城市', (8) '所在地區(qū)'.
WRITE:/5(70) sy-uline.
如上代碼相當于把主程序中頁眉輸出部分的內容级乍,放到此Include中舌劳;在Include的源代碼中也可以使用主程序中的變量。
完成后激活玫荣,則建立了一個子程序甚淡。
2、程序聲明
新建一程序zu0504_order_list_include以完成本實踐需求捅厂,程序聲明部分的代碼如下:
REPORT zu0504_order_list_include NO STANDARD PAGE HEADING
LINE-SIZE 100 LINE-COUNT 80.
通過如上代碼贯卦,設定了此程序輸出不使用標準頁眉,頁面寬度100個字符焙贷,頁面高度為80行撵割。
3、對象定義
對象定義部分的代碼如下:
*****對象定義
DATA:BEGIN OF order_list_stru,
orderid TYPE ztorders_h-orderid,
orderdate TYPE ztorders_h-orderdate,
customerid TYPE ztcustomer-customerid,
customername TYPE ztcustomer-customername,
city TYPE ztcustomer-city,
region TYPE ztcustomer-region,
END OF order_list_stru.
通過如上代碼定義了一個名稱為order_list_stru的結構辙芍,以在后續(xù)獲取和輸出數(shù)據部分中啡彬,存儲和輸出記錄的值。
4故硅、輸出頁眉
輸出頁眉部分的代碼如下:
*&----------------------------------------------------------------------*
*& 輸出頁眉
*&----------------------------------------------------------------------*
INCLUDE zu0504_page_header.
通過INCLUDE關鍵字庶灿,將INCLUDE程序zu0504_page_header包含到此程序中,由此實現(xiàn)頁眉的輸出吃衅。
5往踢、獲得和輸出數(shù)據
獲得和輸出數(shù)據部分的代碼如下:
*&----------------------------------------------------------------------*
*& START-OF-SELECTION
*&----------------------------------------------------------------------*
START-OF-SELECTION.
*****獲取和輸出訂單數(shù)據
SELECT oh~orderid oh~orderdate ct~customerid ct~customername ct~city ct~region
INTO order_list_stru
FROM ( ztorders_h AS oh
INNER JOIN ztcustomer AS ct ON ct~customerid = oh~customerid )
ORDER BY orderid.
SHIFT order_list_stru-orderid LEFT DELETING LEADING '0'.
WRITE:/5(4) sy-dbcnt, (8) order_list_stru-orderid,
(8) order_list_stru-orderdate, (6) order_list_stru-customerid,
(20) order_list_stru-customername, (8) order_list_stru-city,
(8) order_list_stru-region.
ENDSELECT.
如上代碼,通過SELECT關鍵字將數(shù)據從ztorders_h和ztcustomer中逐條獲取數(shù)據并存儲到結構order_list_stru中徘层,然后通過SHIFT關鍵字對訂單編號的前導0去除后峻呕,按需求通過WRITE輸出。
將如上2~5部分的代碼順序合并后惑灵,則得到本需求本程序的實現(xiàn)代碼山上。
本實踐小結:包含程序
包含(Include)程序也是一種ABAP程序,是類型為I的不可執(zhí)行的程序英支,作為代碼復用技術在SAP的應用也是非常廣泛。主要應用于:1)將大型程序分為不同的部分進行維護哮伟,2)多個程序中相同的代碼段干花;由此實現(xiàn)代碼的協(xié)同開發(fā)和提高代碼的質量和效率妄帘。