ABAP/4 報表編程模板

ABAP/4 報表編程模板初學者必看

*&--------------------------------------------------------------*

*& Report Z_X_XXXXX                                               

*&Module                  :  Module \SubModule                    

*&--------------------------------------------------------------*

*&Created                 :  author (2009.10.09)                  

*&Modified                :  author (someday)                     

* Intention               : 程序的詳細說明                        

*  請用戶在ABAP/4REPORT編程時,參考本程序提供的編程框架             

*                      

*  在編碼規範有出入時,以本程序爲準

*  以下各事件可根據實際編程需要使用,對於需要處理的事件,可將該事

*  件後面的語句註釋去掉,再編寫相應的子程序代碼。

*&--------------------------------------------------------------*

INCLUDE Z_X_XXXXXTOP.          " TOP 子程序,用來聲明全局變量

*----以下三個子程序只有在多個程序調用同一邏輯時才建議使用-----*

*INCLUDE Z_X_XXXXXO01.              " PBO 子程序

*INCLUDE Z_X_XXXXXI01.              " PAI 子程序

*INCLUDE Z_X_XXXXXF01.              " form 子程序

INITIALIZATION.

*  PERform INI_SELECTION_SCREEN.      " 初始化選擇屏上的變量

AT SELECTION-SCREEN.

*  PERform INI_DATA.                  " 初始化全局變量

START-OF-SELECTION.

*  PERform PRECESS_DATA.              " 主要數據處理邏輯

AT LINE-SELECTION.

*  PERform PRECESS_LINE_SELECTED.     " 行選擇時的處理

AT USER-COMMAND.

*  PERform PRECESS_USER_COMMAND.     * 用自定義命令按鈕時的處理

TOP-OF-PAGE.

*  PERform PAGE_HEADER.               " 頁眉

END-OF-PAGE.

*  PERform PAGE_FOOT.                 " 頁腳

*&--------------------------------------------------------------*

*&     form  PRECESS_DATA

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form PRECESS_DATA.

*如果邏輯簡單, 則合併若干form爲一個

 PERform SEL_DBTAB_XXXXX.   "從透明表中取數據賦給內表

 PERform CMP_ITAB_XXXXX.   " 內表中數據計算處理

 PERform WRT_ITAB_RESULT.   " 輸出內表數據

ENDform.                   " PRECESS_DATA

*&--------------------------------------------------------------*

*&     form  SEL_DBTAB_XXXXX

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form SEL_DBTAB_XXXXX.

select * into corresponding fields of itab_sales

       from bsid

       where bukrs = s_bukrs.

   authority-check object 'Z:FI-00001'

      id 'ACTVT' field '03'

      id 'BUKRS' field itab_sales-bukrs

      id 'GSBER' fielditab_sales-gsber.   "權限檢查

if sy-subrc ne0.                           "權限檢查未通過

continue.

endif.

append itab_sales.

clear itab_sales.

endselect.

ENDform.                   " SEL_DBTAB_XXXXX

*&--------------------------------------------------------------*

*&     form  CMP_ITAB_XXXXX

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form CMP_ITAB_XXXXX.

ENDform.                   " CMP_ITAB_XXXXX

*&--------------------------------------------------------------*

*&     form  WRT_ITAB_RESULT

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form WRT_ITAB_RESULT.

*  PERform WRT_ITAB_SUB.

ENDform.                   " WRT_ITAB_RESULT

*&--------------------------------------------------------------*

*&     form  PAGE_HEADER

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form PAGE_HEADER.

ENDform.                   " PAGE_HEADER

*&--------------------------------------------------------------*

*&     form  INI_DATA

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form INI_DATA.

ENDform.                   " INI_DATA

*&--------------------------------------------------------------*

*&     form  INI_SELECTION_SCREEN

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form INI_SELECTION_SCREEN.

ENDform.                   " INI_SELECTION_SCREEN

 

 

*&--------------------------------------------------------------*

*& IncludeZ_X_XXXXXTOP                                            

*&--------------------------------------------------------------*

REPORT  Z_X_XXXXX                  .

*-------------------聲明系統字典對象----------------------------*

TABLES: t001.

*--------------------聲明 Selection-screen變量-----------------*

SELECTION-SCREEN BEGIN OF BLOCK B1

                        WITH FRAME

                        TITLE TEXT-001.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS: S_BUKRS  FOR T001-BUKRS MEMORY ID  BUK.

PARAMETERS:    P_DATE   LIKESY-DATUM   DEFAULT SY-DATUM.

SELECTION-SCREEN END   OFBLOCK B1.

*--------------------聲明全局變量-------------------------------*

*聲明內表時,表名爲 ITAB_XXXX,後綴儘可能爲關聯DBTab或內表用途

DATA:  bldat  like  bsid-bldat.

RANGES: R_FIELD  FOR   DBTAB-FIELD.

說明:以上是模板程序的框架及說明,在R/3系統的開發環境中有該模板程序(Z_X_XXXXX),建議編程序之前,先將該程序另存一新文件,再根據需要修改這新文件。

*&--------------------------------------------------------------*

*& Report Z_X_XXXXX                                               

*&Module                  :  Module \SubModule                    

*&--------------------------------------------------------------*

*&Created                 :  author (2003.10.09)                  

*&Modified                :  author (someday)                     

* Intention               : 程序的詳細說明                        

*  請用戶在ABAP/4REPORT編程時,參考本程序提供的編程框架             

*                      

*  在編碼規範有出入時,以本程序爲準

*  以下各事件可根據實際編程需要使用,對於需要處理的事件,可將該事

*  件後面的語句註釋去掉,再編寫相應的子程序代碼。

*&--------------------------------------------------------------*

INCLUDE Z_X_XXXXXTOP.          " TOP 子程序,用來聲明全局變量

*----以下三個子程序只有在多個程序調用同一邏輯時才建議使用-----*

*INCLUDE Z_X_XXXXXO01.              " PBO 子程序

*INCLUDE Z_X_XXXXXI01.              " PAI 子程序

*INCLUDE Z_X_XXXXXF01.              " form 子程序

INITIALIZATION.

*  PERform INI_SELECTION_SCREEN.      " 初始化選擇屏上的變量

AT SELECTION-SCREEN.

*  PERform INI_DATA.                  " 初始化全局變量

START-OF-SELECTION.

*  PERform PRECESS_DATA.              " 主要數據處理邏輯

AT LINE-SELECTION.

*  PERform PRECESS_LINE_SELECTED.     " 行選擇時的處理

AT USER-COMMAND.

*  PERform PRECESS_USER_COMMAND.     * 用自定義命令按鈕時的處理

TOP-OF-PAGE.

*  PERform PAGE_HEADER.               " 頁眉

END-OF-PAGE.

*  PERform PAGE_FOOT.                 " 頁腳

*&--------------------------------------------------------------*

*&     form  PRECESS_DATA

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form PRECESS_DATA.

*如果邏輯簡單, 則合併若干form爲一個

 PERform SEL_DBTAB_XXXXX.   "從透明表中取數據賦給內表

 PERform CMP_ITAB_XXXXX.   " 內表中數據計算處理

 PERform WRT_ITAB_RESULT.   " 輸出內表數據

ENDform.                   " PRECESS_DATA

*&--------------------------------------------------------------*

*&     form  SEL_DBTAB_XXXXX

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form SEL_DBTAB_XXXXX.

select * into corresponding fields of itab_sales

       from bsid

       where bukrs = s_bukrs.

   authority-check object 'Z:FI-00001'

      id 'ACTVT' field '03'

      id 'BUKRS' field itab_sales-bukrs

      id 'GSBER' fielditab_sales-gsber.   "權限檢查

if sy-subrc ne0.                           "權限檢查未通過

continue.

endif.

append itab_sales.

clear itab_sales.

endselect.

ENDform.                   " SEL_DBTAB_XXXXX

*&--------------------------------------------------------------*

*&     form  CMP_ITAB_XXXXX

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form CMP_ITAB_XXXXX.

ENDform.                   " CMP_ITAB_XXXXX

*&--------------------------------------------------------------*

*&     form  WRT_ITAB_RESULT

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form WRT_ITAB_RESULT.

*  PERform WRT_ITAB_SUB.

ENDform.                   " WRT_ITAB_RESULT

*&--------------------------------------------------------------*

*&     form  PAGE_HEADER

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form PAGE_HEADER.

ENDform.                   " PAGE_HEADER

*&--------------------------------------------------------------*

*&     form  INI_DATA

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form INI_DATA.

ENDform.                   " INI_DATA

*&--------------------------------------------------------------*

*&     form  INI_SELECTION_SCREEN

*&--------------------------------------------------------------*

*      text

*---------------------------------------------------------------*

*  --> p1       text

*  <-- p2       text

*---------------------------------------------------------------*

form INI_SELECTION_SCREEN.

ENDform.                   " INI_SELECTION_SCREEN

 

 

*&--------------------------------------------------------------*

*& IncludeZ_X_XXXXXTOP                                            

*&--------------------------------------------------------------*

REPORT  Z_X_XXXXX                  .

*-------------------聲明系統字典對象----------------------------*

TABLES: t001.

*--------------------聲明 Selection-screen變量-----------------*

SELECTION-SCREEN BEGIN OF BLOCK B1

                        WITH FRAME

                        TITLE TEXT-001.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS: S_BUKRS  FOR T001-BUKRS MEMORY ID  BUK.

PARAMETERS:    P_DATE   LIKESY-DATUM   DEFAULT SY-DATUM.

SELECTION-SCREEN END   OFBLOCK B1.

*--------------------聲明全局變量-------------------------------*

*聲明內表時,表名爲 ITAB_XXXX,後綴儘可能爲關聯DBTab或內表用途

DATA:  bldat  like  bsid-bldat.

RANGES: R_FIELD  FOR   DBTAB-FIELD.

說明:以上是模板程序的框架及說明,在R/3系統的開發環境中有該模板程序(Z_X_XXXXX),建議編程序之前,先將該程序另存一新文件,再根據需要修改這新文件。

////////////////////////////////////////////////////////////

1,ObjectNavigator是ABAP工作平臺上衆中開發工具的中心入口,事務代碼爲:se80,其中還有幾個經常會用到的T-CODE: SE38,SE24, SE37.

2,在ABAP Editor中有一個Excute with variant按鈕,代表通過變量運行(變式與選擇屏幕相關).

3,Editor Pretty Printer ON/OFF的設置: 菜單項:Utilites->settings有相關項,選中Indent,Convertupper/lowercase同Keyword Uppercase.

4,ABAP有三種類型的處理塊:Event blocks, DialogModules,Procedures只有後一種可擁有自己的局部變量,而且程序語句是內部調用,前兩者處理塊之間實行外部調用.

5,應用程序類型,可執行的:以Report關鍵字引導,不能定義功能模塊但可以調用.模塊池的:以Program關鍵字引導,必須通過事務代碼運行.

6,語句鏈 Write: text1, text2. 等同於: Write text1. Write text2.

7,在一個Program中,處於Form和Endform之間的是Subroutines.該程序由Program引導,不能直接運行,需被調用,不能包含自定義的用戶屏幕.

8,數據內部定義: types type(len) Type type [decimal dec]

data data(len) Type type [decimal dec] [value var]

Decimal 附加項只適用於指定P類型的小數位.

9,兩個結構體進行賦值操作,如果 Source與Destination的組件結構不完全相同,則用

Move-corresponding, eg: move-corresponding source-data todestination-data.

10.在ABAP數據表達式中,關鍵字前後必須有空格,eg: Fault: (a=b+c) true:: a = b + c.

11.在用戶主記錄裏可以設置日期的顯示分隔符,小數點字符和千位分隔符,在system->userprofile->owndata或T-code: su01.

12,內表是一種大批量數據管理形式,用於在程序運行期間存儲多行結構相同的數據,程序對內表的行操作不能直接進行,必須通過一種接口來傳輸,這個接口就是工作區.

13,ABAP的兩種動態數據對象: Field symbols 與 Data reference.

14,內表有三種形式: standard table , sorted table , hashedtable後一種不能進行索引查找,只能通過關鍵字搜索.

15,子程序的定義和調用分別用Form/Endform和perform來實現,如果想生成子程序的代碼框架,則在prefomadd處雙擊即可.

1,package的命名規則: begin with A-S or U-X是SAP standard object, beginwith Y or Z are customer objects, begin with T are private testpackage, begin with $ are local package.

2.在數據字典中,每創建一個TABLE,都將生成一個同名的結構化數據類型,其中的組件字段與實際物理數據庫表完全一致.

3,在select查詢中如果要指定多個數據對象,則需要將這些對象放在括號內,並用逗號隔開,eg: select * fromspfli into (a, b).

4.FunctionModule是最爲常用的複用組件,它是獨立的R/3倉庫對象,也是一種過程模塊,在不同的系統間可以通過RFC(Remotefunction call)技術進行功能模塊的調用.

5,幾個有用的系統函數: sy-uname, sy-host, sy-datum, sy-uzedit, sy-subrc,sy-bdcnt,sy-index, sy-tabix,sy-dynnr.

6,可用於交互式報表的列表事件有: at line-selection, at user-command前者爲選擇某行時觸發,後者由某個GUI觸發.

7,在可執行程序中,只要在程序代碼中使用parametes或select-options語句,則在程序運行後就會產生用戶的選擇屏幕.

發佈了259 篇原創文章 · 獲贊 8 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章