ABAP、BW培訓筆記

ABAP開發

目標:ABAP編輯器、報表程序創建語法檢查修改執行等基本操作、ABAP數據字典、SQL的使用

大體介紹

  • ABAPAdvanced  Business    Application  Programming

  • ABAP第四代的語言(ABAP/4),到後期會有JAVA的東西引進來,PI有自己的JAVA端,但ERP/R3還是主要用ABAP開發

  • 報表(Reports)不會改變業務(主要關注報表開發);對話(Dialogs)可能會改變業務、功能增強的開發

  • ABAP程序組成要素:關鍵字Keywords;選項Options(字體界面等);Parameters(參數)

關鍵詞,選項和參數是用至少一個空格分開

EgWRITE  Figure  CURRENCY  ‘TWD’.

每寫完一句代碼是用.號結束的,每句是用關鍵字開始的,每個語句可能用到很多行,關鍵字選項參數等是用空格隔開的

註釋:如果是用*註釋,*號前面是註釋,號是後面都都是註釋

Report    ZFRLFA01  //程序名

程序類型:1MFI

應用(哪個模塊的):ZFKMSCV…….001

開發類:如果不需要傳輸那麼就放在本地  $TMP-Local object

             需要傳輸的就放到一個開發類中(按照模塊保存數據)

編輯鎖(Editor Lock)鎖住編輯權限

做開發事務代碼:se38

ZC001(成本控制)ZF001FI)。。。。。。。。。。。。。。。。。

程序名,保存地,請求號命名等都是有規範的,爲後期查找等提供了方便。

程序開發時用到的數據類型,定義一些變量(P大型數據、I整型數據、F浮點型、N數字文本、C文本、D日期、T時間、X16進制)

Initial value 是各變量默認的初始值

定義變量最大隻能30個字符,不能使用的特殊符號:()+.,:

空格是一個定義好的值了

用已經定義好了的變量去定義兩一個變量

DATA:

Company       like T001-BUKRS  *在這個公司代碼下

String130   type C  *這樣string130位的 C類型的

String2      like string1  * string 2string1數據是一致的

String3      like string1

可以用一個結構定義多個變量

TYPESBEGIN OF ADDRESS

恢復初始化CLEAR<FIELD>

給一個變量賦值(用=即可)

通過位移的方式來賦值,在保存一個字符串是有位的,可定義從第幾個字符開始取,從第0位開始算

2個結構的相同字段可以直接賦值,不用一一用=號賦值

定義文本編號:標題文本、編碼文本,選擇文本

ULINE    隔一行

SKIP  跳過

NEW-PAGE   新起一頁

Write一種格式、值等直接在打印機以這種形式打印

zm024

se93

zp*

 

語句if   else       

Range變量   in <range>

A co B      A盡包含B

IF A >= B.

C = A - B.

ELSE.

C = B -  A.

ENDIF.

Write/ ‘|A-B|=’,C.

‘   ’表示不顯示值,而是直接顯示字符串

,後的C顯示的C的值

 

 

REPORT  test.

TABLES  LFB1.

SELECT *  FROM  LFB1.

CASE  LFB1-BUKRS.

     WHEN ‘TW00’.

    WRITE: / ‘DELTA’.

     WHEN ‘TW02’.

    WRITE: / ‘NETWORKING’.

ENDCASE.

ENDSELECT.

 

On   change操作

REPORT   test.

TABLES   LFB1.

SELECT *  FROM  LFB1.

ON  CHANGE  OF  LFB1 - LIFNR.

NEW - PAGE.

ENDON.

WRITE: / LFB1 - LIFNR, LFB1 - BUKRS .......

ENDSELECT.

 

 

循環LOOP的操作

LOOP  AT WT_TABLE.    //表名

INTO   WS_TABLE_LINE.    //從第一行開始拿到定義的結構中

WS_LINE-PRICE= WS_LINE-PRICE-100.

ENDLOOP.              //結束LOOP

 

ONCHANG 是用在LOOP裏的,在LOOP數據裏對比兩個字段有什麼變化、區別,LOOP是在內表循環時用的,對比當前數據和上一個數據在某個字段的是否一致。

DO varying<field>from<field1>.      //從第幾行到第幾行

DO.

寫一段IF的條件退出語句,不然會無限循環

ENDDO.

DO<n>TIMES.    //做幾次

<> 

ENDDO

 

WHILE  A=<10.

WRITE:/’A=’,A.

A=A+1.

ENDWHILE.

 

LOOP可以套LOOP,但儘量少用

CHECK判斷條件語句,做一個檢查,不符合檢查便跳出當前循環或報表

EXITCHECK差不多,看你寫的位置跳到哪一步

STOP無需檢查直接退出到最外

創建HELLO  WORLD界面

Se38,輸入程序名,創建

點小筆更改報告(程序名)

Write後加:可顯示多個值,如果不加只顯示一個

右鍵----格式-----添加註釋/取消註釋

 /是換行,wirte/    就是換行顯示的

輸完代碼,按激活對象,然後執行

REPORT     XXXXXX

DATA:A   TYPE   I.

     B   TYPE  I.

     C   TYPE  I.

A=25.

B=12.

IF  A>B.

C=A-B.

WRITE:/’A>B’.

ELSEIF  A=B.

C=0.

WRITE:/’A=B’.

ELSE.

C=B-A.

WRITE:/’A<B’.

ENDIF.

WRITE:/’|A-B|=’,C.

 

REPORT     XXXXXX

DATA:A   TYPE   I.

     B   TYPE  I.

     C   TYPE  I.

A=12.

B=11.

IF  A>B.

C=A-B.

WRITE:/’A>B’.

IF A=12.

WRITE:/’A=12’.

ENDIF.

ELSE.

C=B-A.

WRITE:/’A<B’.

ENDIF.

WRITE:/’|A-B|=’,C.

 

ABAPDOCU進入各命令用法的例子,解釋

每查一個按ABAP   EDIT可以直接把代碼拷到編輯器中

//查看是否匹配

CASE.

WHEN.

WRITE.

ENDCASE.

 

循環(DO  LOOP)例子

REPORT    xxxxxx

DATA:CNTR   TYPE   I.

CNTR=1.

DO.

WRITE:/CNTR.

CNTR=CNTR+1.

IF  CNTR  GT   10.

EXIT.

ENDIF.

ENDDO.

UNLINE.   //顯示一條分隔線

//CLEAR CNTR.

CNTR=1.

DO  9  TIMES.

WRITE:/CNTR.

CNTR=CNTR+1.

ENDDO.

 

循環(WHILE   LOOP)例子

REPORT    xxxxxx

DATA:CNTR  TYPE   I.

     CNTR=1.

 WHILE  CNTR>9.

WRITE:/CNTR.

CNTR=CNTR+1.

ENDWHILE.

 

 

 

 

 

REPORT    xxxxxx

DATA:CNTR  TYPE   I.

     CNTR=1.

 WHILE  CNTR>10.

CNTR=CNTR+1.

WRITE:/CNTR.

IF  CNTR=5.

CONTINUE.

ENDIF.

WRITE:/CNTR.

ENDWHILE.

CONTINUE只跳出本次循環繼續執行下次循環,如果是exitstop,就全部跳出,WHILE就不執行了。

Insert   into

APPENDAPPEND….TO,往表裏增加一行,先掃描表裏是否有該行,如果有,那麼進行加和操作(只對比非數字的字段項),如果沒有,就直接加入。

COLLECT:收集彙總,相同的關鍵字,其數字部分(例如金額)是自己加和的

 

 

 

SORT:排序,升序降序

例如:sort  itab   descenging  by   age. 

READ  TABLE.       //讀表的一條數據

WITH  KEY<key>.    //按條件讀取

      INDEX<idx>.      //按索引讀取

 

INSERT:插到當前索引的位置

APPEND:插到表的最後的位置

DELETE:刪除一行

MODIFY:修改

例子:

REPORT    XXXXXXX

TABLES:T001.

DATA

BEGIN  OF  IntTab   OCCURS   15.

BUKRS  LIKE  T001-BUKRS.   //公司代碼

BUTXT  LIKE  T001-BUTXT.   // 公司名稱

END  OF   IntTab.

DATA:ws_int   like   inttab.

SELECT * FROM  T001.

CLEAR  inttab.

Inttab-bukrs=t001-bukrs.

Inttab-butxt=t001-butxt.

Insert  ws_int  into  table   inttab.

APPEND  inttab.

ENDSELECT.

LOOP  AT  INTTAB.

WRITE:/INTTAB-BUKRS,’        ’,INTTAB-BUTXT.

ENDLOOP.

 

Se11,查看數據庫

TABLEST001.

DATAWS_T001  LIKE  T001.   

DATAWT_T001  LIKE  TABLE  OF  T001.   //table定義一個內表

SELECT * FROM  T001.

   WS_T001-BUKRS=T001-bukrs.       //BUKRS公司代碼

   WS_T001-BUTXT=T001-butxt.      //BUTXT公司名稱

ENDSELECT.

LOOP  AT  WT_T001   INTO   WS_T001.

WRITE:/WS_T001-BUKRS, WS_T001-BUTXT.

ENDLOOP.

 

 

 

TABLEST001.

DATAWS_T001  LIKE  T001. 

 DATAWT_T001  LIKE  TABLE  OF  T001.   //table定義一個內表

SELECT  SINGLE * FORM  T001  WHERE  BUKRS=’5640’.

WRITE:/T001-BUKRS,T001-BUTXT.

 

TABLEST001.

DATAWS_T001  LIKE  T001. 

 DATAWT_T001  LIKE  TABLE  OF  T001.   //table定義一個內表

SELECT  * INTO  CORRESPONDING  FIELDS  OF  TABLE WT_001  FROM  T001  WHERE  BUKRS=’5640’.   // 對比WT_001T001

       所有字段一致的選擇出來

LOOP  AT  WT_T001  INTO   WS_T001.

WRITE:/ WS_T001-BUKRS,WS_T001-BUTXT.

ENDLOOP.

 

LOOP  AT     INTO  

 

LOOP  AT  itab   INTO  line  FROM  2  TO  5.  

//一般在制定一頁顯示幾行時用

 

 

NUM=1.

LOOP  AT  itab  TRANSPORTING  NO  FIELDS  WHERE  land=’USA’  .

WRITE:/NUM.

NUM=NUM+1.

WRITE:/itab-land,itab-name,itab-age,itab-weight.

ENDLOOP.

//不給itab賦任何值,

At first  顯示在最前面的東西,放在at first

At new字段關鍵字是否是第一次出現,第一次出現執行at new

Select options做選擇屏幕用的,可調出標準查詢的選項

Paramenters  做選擇屏幕用的,

SELECTION-SCREEN  BEGIN  OF  BLOCK  B1  WITH  FRAME  title  text-020.

SELECTION-SCREEN  COMMENT/1(30)  text-020.

PARAMENT  p_vkorg  type  TVKO-vkorg  DEFAULT’0005’.

SELECT-OPTIONS  S_vkorg  FOR  TVKO-vkorg.

SELECTION-SCREEN  END  OF  BLOCK  B1.

 

Se37裏可查Function  Modules系統已經寫好了一些標準的功能,可以直接調用,也可以自己寫Function  Modules,然後再寫程序即可調用。

程序先調用Function  Modules,然後定義一些參數,Function  Modules會去數據庫取數,不用自己去數據庫取數,然後程序可直接接調用。

程序調用Function  Modules,直接處理我給你文本的值,處理完了返回給程序即可。

Macro

Include直接調用其他地方的程序,include  程序名

 

開發人員要註冊SAP用戶名,還要申請開發KEY,第一次用的時候只要輸入一次開發KEY即可,以後都不用了

 

Include,引用了其他地方的程序等,可以寫在該程序前面

DATA:數據定義,內表變量等都在這定義

Initialization初始化

Perform  check  權限檢查,一上來基本都是要做權限檢查的

End  of

At  end  of

At  last

Sap分三個過程:  開發系統——>測試系統——>生產系統(正式的日常業務)

開發一個程序後可以分配一個TCODE,類似於事務代碼,但是是z打頭的

表、數據元素、域(數據元素依賴的基礎)

依靠已經創建的域來創建數據元素,數據元素組成表描述描述描描述新建沙箱

ECC_Sandbox_erp  ides

10.8.5.167

00

SND

用戶名:abap01   密碼:chem123   新密碼:chem1234

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

商務智能(BI

商務智能將數據進行整理規範

後勤數據統計分析

BW的報表是由各模塊的數據經過抽取到數據倉庫,然後以一定的規範做報表

ABAP直接從ERP中做報表

ETL:數據的導入傳輸

 

多維分析是給管理層的決策用的,綜合的

多維數據集(CUBE

度量值:數量、金額;組成了事實表

維度:從哪個方面分析數據(時間維度、業務分類維度等,除了量金額的都叫維度)

多維數據集的結構

上卷(聚合、合併):1.各個季度合併成年,從圖上看,是第一季度和第二季度合併成上半年,第三季度第四季度合併成下半年。

2.消除維度,變成平面圖看

下鑽:將季度分開成月

切片:立體正方形切成單面

切塊:立體正方形切成塊

轉軸:立體正方形轉個

 

CubeBW的常見的操作

統計表的組成,列、行、自由特性

數據倉庫,ETL抽取、轉換、裝載

BW中的,OLAP在線分析;R/3中的,OLTP

BW數據倉庫中開發時常用的詞:第一層就是PSA(一個存儲的空間,選擇性的過濾一些數據放到PSA中比如選擇某個公司下的)、然後是DSO(抽取加工轉換,進行運算,合併數據提高性能)、Info Cubes(加載到多維立方體中)再通過多個工具轉換

Eg.要看三年的營業收入的數據,關注每一個月(DSO

處理鏈:安排好任務的先後順序,到點會做處理

Cube是最重要的*******

 

切片、切塊:在日曆年、物料等上點右鍵,過濾器——選擇篩選值,填入篩選的值

很少用到轉軸功能,一般都是關鍵值在列上

打開一個報表

全局變量下:日曆日  2009.01.01 – 2009.12.31(之間用空格隔開)

             物料         //可不輸

             公司代碼     //可不輸

變量前面帶*號的是必輸的,不輸的是默認的當前權限下可看的報表信息。

物料可選擇多個物料,並存入可用變式裏,那麼就自動保存了,每次進去直接選擇原來保存的可用變式即可。

過濾報表:右上角過濾器

下溯跟下鑽差不多,在列裏的日曆月右鍵更改下溯-下溯曲(垂直、水平曲線),可以刪除,恢復原來的顯示

行上面是維度,列是關鍵值

 

 

數據倉庫

聯機事務處理(OLTP

ABAP報表更新快,隨時可查

數據倉庫的四個特點要記住:面向主題、集成的、數據不可更改、隨時間變化的

數據倉庫,數據具有不同的細節級

粒度這個詞很重要

分割。。。。。。。。。。。。

事實表只記錄業務的量和金額,事實表的列(指標)少,但是記錄行數缺相當大

BW中做了擴展的星形結構

BW中的信息對象的概念:特性、指標

信息立方體

事實表最多可以有16個維度表

BW報表操作,三範式,數據倉庫,

BW開發工具------Query  Designer

關鍵值、特徵、變量、例外條件

開始----程序

進入主界面後,查詢(新建、打開)

試圖

最右邊的技術名稱,[關鍵]文本,關鍵字有且唯一的標識

打開查詢;選擇查詢:查找

                     歷史

                     收藏夾

                     角色(還沒用到)

                     信息範圍:將所有的報表按照模塊分類

過濾器中,紅色=,就是不等於,例如合同編號 =[#],就是將帶着些符號的都過濾掉

描述是表頭名字

屬性----顯示----小數位數(數量3位的,金額2位的)

屬性-----轉換(統一單位,kgt等進行統一,目標單位統一爲一個單位)

任務=---查詢----另存爲,可對相似的報表直接複製,在修改即可

禁止用零,一般規定行爲零就禁止,不會啓用列爲零禁止。

新選擇是CUBE裏已存在的關鍵值,新公式

NDIV0X):被0除時等於0,否則爲X

例如:銷售數量爲0,收入不是0

技術名稱,唯一的標識每張報表

保存時的技術名稱是有規範的

技術名稱:X表示三級企業開發的,RCSCCCA01是該報表基於的CUBE的編號

限制關鍵值、計算關鍵值

信息立方體:一個信息立方體只能有一個事實表和最多16個維度表,有3個維度是SAP自動維護的(時間、單位、信息包),剩下只有最多13個維度表能我們自己設計。

三個倉庫:目標(信息對象、信息立方體、DSO

           PSA

           數據源

兩個車:信息包:把外部的數據源抽取到PSA

         DTP:數據傳輸過程

一個轉換:容器---容器間進行加工,這之間要用到轉換

Rsa1-----數據倉庫工作臺(建模)

數據源裏提供的字段對應下一個數據目標,就叫轉換

 

總結:ERP——>PSA——>DSO數據存儲對象——>DSO——>信息立方體——>query  designer——>BO——>儀表盤

 

 

 

PI培訓

IR ——>ID——>IE

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章