04數(shù)據(jù)輸出,A3-物料基本信息及在訂單中的銷售統(tǒng)計

圖4-A3 物料基本信息及在訂單中的銷售統(tǒng)計

需求分析:

1识颊、具體需求

本《物料基本信息及在訂單中的銷售統(tǒng)計》有如下需求:

  1. 除輸出物料基本信息(物料诚镰、物料名稱、物料類型)外祥款,還需要獲得此物料在多少個訂單中有銷售清笨,在不同訂單中銷售的情況(總計銷售數(shù)量、最大銷售數(shù)量刃跛、最小銷售數(shù)量函筋、平均銷售數(shù)量),因此奠伪,本實踐所需數(shù)據(jù)除了物料表跌帐,還需要用到訂單明細表;
  2. 物料列表按物料編號升序排序绊率,同時輸出序號谨敛;
  3. 對于銷售總數(shù)量為0的物料,不需要顯示滤否。
2脸狸、開發(fā)分析

要達成本實踐目標,需要通過Open SQL藐俺,實現(xiàn)對多表的連接和聚合處理炊甲,以對數(shù)據(jù)進行合計、取最小最大值等欲芹。

實踐步驟:

本實踐通過程序編輯器(SE38)即可完成卿啡,編寫的代碼將有如下幾部分組成,按開發(fā)人員風格不同菱父,其組成部分并非強制一致颈娜。

No 部分 說明
1 程序聲明 聲明本程序執(zhí)行后是否包含標準標題,數(shù)據(jù)輸出寬度和每頁的行數(shù)量為多少浙宜,另需考慮頁腳輸出
2 對象定義 通過定義類型池以在程序中使用相應的圖標官辽,通過定義要使用的以變量或常量或要使用的表結構等,以在程序執(zhí)行過程中計算和存儲臨時值
3 頁眉頁腳 通過代碼設置輸出頁眉頁腳
4 獲取數(shù)據(jù) 從表中獲得要輸出的數(shù)據(jù)數(shù)據(jù)并存儲到內(nèi)表中以待后續(xù)輸出
5 輸出數(shù)據(jù) 將內(nèi)表中的數(shù)據(jù)按要求輸出粟瞬,本代碼可有2種方式實現(xiàn):條件同仆、AT NEW事件。
1裙品、程序聲明

程序聲明部分的代碼如下:

REPORT zu0403_mat_aggregate NO STANDARD PAGE HEADING
       LINE-SIZE 100 LINE-COUNT 80.

通過如上代碼定義俗批,程序輸出時俗或,頁面寬度為100(能容納100個數(shù)字或英文字符),每頁輸出區(qū)域為80行扶镀。

2蕴侣、對象定義

對象定義部分的代碼如下:

*****對象定義
TYPES: BEGIN OF mat_ag_type,                              " mat_ag_type-類型名稱
         materialid   TYPE ztmaterial-materialid,
         materialname TYPE ztmaterial-materialname,
         materialtype TYPE ztmaterial-materialtype,
         count        TYPE i,
         total        TYPE ztorders_i-oquantity,
         max          TYPE ztorders_i-oquantity,
         min          TYPE ztorders_i-oquantity,
         average      TYPE ztorders_i-oquantity,
       END OF mat_ag_type.

DATA:mat_ag_itab TYPE STANDARD TABLE OF mat_ag_type     " 含工作區(qū)的內(nèi)表
                 WITH HEADER LINE.

如上代碼焰轻,使用類型MAT_AG_TYPE定義了一個含工作區(qū)的標準內(nèi)表臭觉,如此,在輸出時辱志,可以將內(nèi)表數(shù)據(jù)遍歷后放到內(nèi)表自己的工作區(qū)中蝠筑,而不需要另外一個結構存儲。在實際開發(fā)中揩懒,偏向于使用不含工作區(qū)的內(nèi)表什乙,如此增加代碼的可讀性。

3已球、頁眉輸出

頁眉輸出部分的代碼如下:

*&----------------------------------------------------------------------*
*& 輸出頁眉
*&----------------------------------------------------------------------*
TOP-OF-PAGE.                                            "頁眉事件
  FORMAT RESET.
  WRITE:/5(95) sy-uline,
        /5 '序號', 10(5) '物料', 15(20) '物料名稱',
         35(12) '物料類型', 48(6) '項目數(shù)',
         55(10) '總計' , 65(10) '最大',
         75(10) '最小', 85(10) '平均值',
        /5(95) sy-uline.

如上代碼定義了頁眉的輸出臣镣。

4、獲取數(shù)據(jù)

獲取數(shù)據(jù)部分的代碼如下:

*&----------------------------------------------------------------------*
*& START-OF-SELECTION
*&----------------------------------------------------------------------*
START-OF-SELECTION.                                    "數(shù)據(jù)處理事件
*****獲得客戶信息
  SELECT
    mt~materialid mt~materialname mt~materialtype
       COUNT( * )          AS count
       SUM( oi~oquantity ) AS total
       MAX( oi~oquantity ) AS max
       MIN( oi~oquantity ) AS min
       AVG( oi~oquantity ) AS average
    INTO TABLE mat_ag_itab
    FROM ( ztmaterial AS mt
           INNER JOIN ztorders_i AS oi
           ON oi~materialid = mt~materialid )
    GROUP BY mt~materialid mt~materialname mt~materialtype
    HAVING SUM( oi~oquantity ) <> 0.
  SORT mat_ag_itab BY materialid.

如上代碼通過select語句智亮,將多個表(ztmaterial忆某、ztorders_i)的數(shù)據(jù)獲取后存儲到內(nèi)表,此select語句需符合Open SQL的語法阔蛉,而其與傳統(tǒng)的SQL類似也有差異弃舒;同時在語句中用到了聚合函數(shù)用來統(tǒng)計物料的銷售數(shù)量;并因為MAT_AG_ITAB不是排序內(nèi)表状原,因此為了在數(shù)據(jù)輸出時按物料編號排序聋呢,通過SORT語句對內(nèi)表的數(shù)據(jù)進行相應排序處理。

5颠区、輸出數(shù)據(jù)

輸出數(shù)據(jù)部分的代碼如下:

  LOOP AT mat_ag_itab.
    WRITE:
        /5(5) sy-tabix, 10(5) mat_ag_itab-materialid, 15(20) mat_ag_itab-materialname,
         35(15) mat_ag_itab-materialtype, 48(6) mat_ag_itab-count,
         55(10) mat_ag_itab-total, 65(10) mat_ag_itab-max,
         75(10) mat_ag_itab-min,85(10) mat_ag_itab-average.
  ENDLOOP.

因為內(nèi)表含工作區(qū)削锰,因此LOOP AT后不需帶INTO,所遍歷的數(shù)據(jù)將逐行存儲到內(nèi)表MAT_AG_ITAB相同名稱的結構中毕莱,并可按要求進行輸出喂窟。

本實踐小結:

內(nèi)表是我們在數(shù)據(jù)處理中經(jīng)常使用的ABAP對象,其主要用于臨時存儲從表或數(shù)據(jù)中讀取的數(shù)據(jù)并進行后續(xù)的處理央串,本小結將對內(nèi)表的定義和處理進行說明磨澡。

1、內(nèi)表的類型及定義方式
內(nèi)表類型及定義
不同類型內(nèi)表的差異
2质和、內(nèi)表的管理和操作

(實踐A3 End)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稳摄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饲宿,更是在濱河造成了極大的恐慌厦酬,老刑警劉巖胆描,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仗阅,居然都是意外死亡昌讲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門减噪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來短绸,“玉大人,你說我怎么就攤上這事筹裕〈妆眨” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵朝卒,是天一觀的道長证逻。 經(jīng)常有香客問我,道長抗斤,這世上最難降的妖魔是什么囚企? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮瑞眼,結果婚禮上龙宏,老公的妹妹穿的比我還像新娘。我一直安慰自己负拟,他們只是感情好烦衣,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掩浙,像睡著了一般花吟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厨姚,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天衅澈,我揣著相機與錄音,去河邊找鬼谬墙。 笑死今布,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的拭抬。 我是一名探鬼主播部默,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼造虎!你這毒婦竟也來了傅蹂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎份蝴,沒想到半個月后犁功,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡婚夫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年浸卦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片案糙。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡限嫌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侍筛,到底是詐尸還是另有隱情萤皂,我是刑警寧澤撒穷,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布匣椰,位于F島的核電站,受9級特大地震影響端礼,放射性物質(zhì)發(fā)生泄漏禽笑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一蛤奥、第九天 我趴在偏房一處隱蔽的房頂上張望佳镜。 院中可真熱鬧,春花似錦凡桥、人聲如沸蟀伸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啊掏。三九已至,卻和暖如春衰猛,著一層夾襖步出監(jiān)牢的瞬間迟蜜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工啡省, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娜睛,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓卦睹,卻偏偏與公主長得像畦戒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子结序,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容