SAP-ABAP程序開發規范


SAP--ABAP程序開發規范

1  范圍

本標准規定了SAP S/4 系統程序開發過程中術語定義、命名規則、程序結構、測試方法和請求管理。

本標准適用於SAP S/4 系統的ABAP語言開發的程序。

2  規范性引用文件

下列文件對於本文件的應用是必不可少的。凡是注日期的引用文件,僅所注日期的版本適用於本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用於本文件。

GB/T 1.1-2000《標准化工作導則 第1部分:標准的結構和編寫規則》

3  術語和定義

3.1  SAP

SAP來自於Systems Applications and Products in Data Processing,它是德國思愛普公司的英文名稱。

3.2  SAP S/4

SAP S/4 是一個基於客戶/服務機結構的開放、集成的企業資源計划系統(Enterprise Resource Planning,簡稱:ERP)軟件,其功能涵蓋企業的財務管理、后勤管理(含采購、庫存、生產、銷售、設備、項目、質量等模塊)和人力資源管理等各個方面。SAP S/4 軟件由德國SAP公司所研創,其R 指實時(realtime), 而3表示S/4 系統是三層架構:數據庫、應用服務器、展現層。

3.3  ABAP

ABAP是一種高級商務應用編程語言(Advanced Business Application Programming),SAP S/4 系統的應用程序就是用ABAP/4編寫的。

3.4  AA

AA表示SAP S/4 應用模塊,其模塊如下:

AA模塊

模塊名稱

FI

財務會計

CO

管理會計

SD

銷售分銷

MM

物料管理

PM

工廠維護

HR

人力資源

PS

項目管理

BW

數據倉庫

BC

系統相關

OT

其他

 

3.5  PT

PT表示程序類型,其類型如下:

PT類型

名稱

RP

Printing Report 打印輸出報表

EX

Enhancement User Exit 功能增強

FM

Function module函數

QR

Query 查詢

SF

Smart Forms快速格式報表

BI

Batch Input 批輸入

 

3.6  DT

DT表示數據對象類型,其類型如下:

DT類型

名稱

TB

透明表

VW

視圖

DE

數據元素

ST

結構表

TT

表類型

CI

TG

類型組

DM

HP

幫助

LO

鎖對象

 

3.7  符號說明

符號類型

名稱

[XX]

XX是必要組成部分

{XX}

XX是條件式的必要組成部分

<XX>

XX是可選組成部分

4  命名規則

4.1  程序名命名規則

4.1.1  克隆系統標准程序的程序其名稱按Y{_}[PROGRAM]格式編寫;

4.1.1.1  Y表示該程序是克隆自系統標准程序;

4.1.1.2  克隆的程序是函數時,必須包含“_”;

4.1.1.3  PROGRAM表示被克隆的系統標准程序名稱,如果PROGRAM的字符長度達到最大長度,可省略后面多余的字符;

4.1.2  新開發程序名稱按Z{_}<AA><PT><SEQ>{FSQ}格式編寫;

4.1.2.1  AA表示SAP S/4 應用模塊,其定義見3.4;

4.1.2.2  PT表示程序類型,其定義見3.5;

4.1.2.3  SEQ表示流水序號,范圍為000-999;

4.1.2.4  FSQ表示包含文件的流水號,范圍為F00-F99;

4.1.2.5  創建的程序為函數時,必須包含“_”;

4.1.2.6  創建的程序為INCLUDE程序時,必須包含FSQ;當該程序僅用於一個特定程序時,程序名稱由AA、PT、SEQ、FSQ部分組成;當該程序可用於某類程序類型時,程序名稱由AA、PT、FSQ部分組成;當該程序可用於所有程序時,程序名稱只包含FSQ;

4.2  事務代碼命名規則

事務代碼是由一組有效字符組成的字符串,在SAP系統中為了方便用戶使用系統功能和應用的快捷方式。在ABAP程序開發過程中,為了體現事務代碼的有效意義,只針對程序類型為報表類(RP)、函數模塊類(FM)、維護表視圖以及查詢建立事務代碼。為了便於事務代碼的分類和區別應用,把事務代碼分為業務類事務代碼和管理類事務代碼,其中業務類事務代碼作用於報表類應用,管理類事務代碼作用於配置類應用。

4.2.1  在克隆系統標准程序的程序開發過程中,當原系統標准程序有事務代碼時新建事務代碼名稱為:Y+原事務代碼;當原系統標准程序無事務代碼時新建事務代碼名稱按Y[AA][SEQ]格式編寫;其它情況下的事務代碼名稱按Z[AA][SEQ]{SQ}格式編寫;

4.2.2  AA表示SAP S/4 應用模塊,其定義見3.4;

4.2.3  SEQ流水號必須與對應報表的流水號相同,相同應用模塊下的不同程序類型的流水號不能相同,如果存在相同情況,那么需在后面加上報表類型,如ZMM010QR;

4.2.4  SQ表示流水號,范圍為00-99,其只適用於管理類事務代碼;

4.3  開發類命名規則

4.3.1  開發類的名稱按Z[AA][SQ]格式編寫。其中AA表示SAP S/4 應用模塊,其定義見3.4;SQ表示流水號,其范圍為00-99;

4.3.2  一個開發類只對應一次項目的一個應用模塊,非項目期間的開發類流水號使用99,一個應用模塊可對應多個開發類,在增加開發類時需按流水號遞增編寫;

4.4  函數組命名規則

4.4.1  函數組的名稱按Z[AA][SQ]格式編寫。其中AA表示SAP S/4 應用模塊,其定義見3.4; SQ表示流水號,其范圍為00-99;

4.4.2  一個函數組只對應一次項目的一個應用模塊,非項目期間的函數組流水號使用99,一個應用模塊可對應多個函數組,在增加函數組時需按流水號遞增編寫;

4.4.3  表格維護生成器里的函數組使用該數據字典對象名作為其名稱;

4.5  消息類命名規則

消息類是ABAP程序開發中為異常情況而設計的故障信息類別,這樣有利於問題的跟蹤、診斷和解決。消息類的名稱按Z[AA]格式編寫,其中AA表示SAP S/4 應用模塊,其定義見3.4;

4.6  區域菜單命名規則

4.6.1  區域菜單的名稱按Z[AA][SQ]格式編寫。其中AA表示SAP S/4 應用模塊,其定義見3.4; SQ表示流水號,其范圍為00-99;

4.6.2  一個區域菜單對應一個應用模塊,一個應用模塊對應多個區域菜單,在增加區域菜單時需按流水號遞增編寫;

4.7  數據字典命名規則

4.7.1  數據字典包含表、視圖、數據元素、結構、域、幫助等方面的內容,新建名稱按Z[AA][DT][NNN]格式編寫;

4.7.1.1  AA表示SAP S/4 應用模塊,其定義見3.4;

4.7.1.2  DT表示數據對象類型,其定義見3.6;

4.7.1.3  NNN表示數據對象說明,可以用三位數字或字母來描述;

4.7.2  克隆系統標准數據對象的對象,按Y[DO]格式編寫。其中DO表示被克隆的系統標准數據對象,當DO的數據對象名稱長度已經達到最大長度時,可省略后面多余的字符;

4.8  文本符號命名規則

4.8.1  在程序中盡可能使用文本符號存儲文本信息,避免“硬代碼”;

4.8.2  文本符號也可以進行分類,分類如下:

文本號

用途

E01-E99

錯誤文本

I01-I99

提示文本

W01-W99

警告文本

S01-S99

SELECTION-Screen使用

T01-T99

一般文本

H01-H99

報表頭或表格標題等

 

4.9  變量命名規則

4.9.1  為了更好的區分變量的作用范圍,規范變量的正確引用,把變量分為局部變量和全局變量。全局變量必須定義於程序頭,其名稱一般增加前綴“g_”,但為簡化書寫可省略全局變量的前綴;局部變量可根據實際情況靈活定義,其名稱必須增加前綴“l_”;

4.9.2  為保證數據的一致性,在變量定義時盡量使用like、type等進行引用已有類型;

4.9.3  定義變量應按照一定的順序定義,參考順序如下:

4.9.3.1  Tables (only if required for SELECT-options)

4.9.3.2  Nodes

4.9.3.3  Infotypes

4.9.3.4  Controls (for dialogue processing only)

4.9.3.5  Type-groups

4.9.3.6  Types

4.9.3.7  Constants

4.9.3.8  Data (structures)

4.9.3.9  Data (internal tables and their work areas)

4.9.3.10  Data (objects)

4.9.3.11  Ranges

4.9.3.12  Data (simple fields)

4.9.3.13  Field-symbols

4.9.3.14  Field groups (followed by INSERT into field-groups)

4.9.3.15  SELECTION-Screen data (for list processing only)

4.9.3.16  Parameters

4.9.3.17  SELECT-options

4.9.4  為便於識別變量類型,在變量前需要增加變量類型前綴,如下:

類型

說明

變量前綴

備注

C

字符串

c_

 

N

數字

n_

 

D

日期

d_

 

T

時間

t_

 

X

十六進制

x_

 

I

整數

i_

 

P

壓縮號

pn_

 

F

浮點數

f_

 

String

字符串

str_

 

Xstring

X字符串

xstr_

 

Constants

常量

con_

 

Type

類型

ty_

 

Internal Table

內表

itb_

 

Work Area

工作區

wa_

 

Range

范圍

s_

 

Field-symbols

字段符號

fs_

 

SELECT Options

選擇選項

s_

 

Parameters

選擇參數

p_

p_名稱

Radiobutton

單選

rb_

 

Checkbox

復選框

cb_

 

Select

下拉框

sl_

 

Form Name

子程序名

動詞_其它描述

Form Parameters

子程序參數

p_

p_變量屬性_名稱

Function Name

函數名

z_,y_

參考4.1.2

Function Parameters

函數參數

變量前綴

變量屬性_名稱

 

4.10  子程序命名規則

4.10.1  在子程序定義時必須有相應的用途和參數說明等,樣式如下:

 

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

*&      Form  子程序名

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

*       用途說明

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

*      -->P_P1  傳入參數1

*      -->P_P2  傳入參數2

*      <--P_RP1 返回參數名

*      -->P_TB1 表參數

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

4.10.2  子程序引用參數前綴使用“p_”;

4.11  報表輸出

4.11.1  報表輸出方式有ALV,EXCEL,直接寫屏或其它;

4.11.2  EXCEL輸出方式模板文件名稱按[AA][SEQ]<OT>格式編寫;

4.11.2.1  AA表示SAP S/4 應用模塊,其定義見3.4;

4.11.2.2  SEQ為流水號,該流水號必須與對應的程序流水號相同;

4.11.2.3  OT表示其它字符或數字等,當AA和SEQ都無法唯一區別時,可以使用該選項;

4.11.3  當EXCEL輸出方式模板文件為EXCEL時,其表格名稱必須按文件名稱重命名;

5  程序結構

良好的程序結構便於閱讀和維護,能大大提高軟件開發人員的工作效率。在ABAP代碼編寫過程中,可根據程序類型不同而順序包含5.2中的部分結構。

5.1  程序事件

5.1.1  INITIALIZATION

5.1.2  AT SELECTION-SCREEN OUTPUT

5.1.3  AT SELECTION SCREEN ON VALUE-REQUEST

5.1.4  AT SELECTION SCREEN ON HELP-REQUEST

5.1.5  AT SELECTION SCREEN ON <parameter>

5.1.6  AT SELECTION-SCREEN

5.1.7  START-OF-SELECTION

5.1.8  GET <node>

5.1.9  END-OF-SELECTION

5.1.10  TOP-OF-PAGE

5.1.11  TOP-OF-PAGE DURING LINE-SELECTION

5.1.12  END-OF-PAGE

5.1.13  AT LINE-SELECTION

5.1.14  AT USER-COMMAND

5.1.15  FORM

5.1.16  ENDFORM

5.2  代碼結構

5.2.1  程序頭部

程序頭部是記錄程序開發過程中的一些控制信息,便於對程序的功能了解和后期維護,樣式如下:

************************************************************************

*  程序名:XXXXX

*  程序名稱:XXXXX

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

*  創建日期       程序員    SAP版本    程序類型

*  YYYYMMDD       XXXXXX    R4.7       RP/F...

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

*  描述:

*    XXXX

*=================================================

*  修改日期   版本    修改人      修改描述

*             1.1

************************************************************************

5.2.2  程序名稱部分

程序名稱部分記錄程序名稱及其它屬性,樣式如下:

REPORT  XXXXX MESSAGE-ID XX.

5.2.3  全局定義部分

    全局定義部分包含表、信息類型、全局變量的聲明,樣式如下:

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

*                             GLOBLE-DEFINATION                        *

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

tables:...

 

infotypes: ...

 

include zrpcm001.

 

data:...

5.2.4  程序取數邏輯部分

    程序取數邏輯部分包含屏幕樣式、程序初始化、人機交互、取數邏輯等,樣式如下:

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

*                             SELECTION-SCREEN                         *

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

 

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

*                             INITIALIZATION                           *

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

 

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

*                            AT SELECTION-SCREEN                       *

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

 

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

*                            START-OF-SELECTION                        *

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

START-OF-SELECTION.

 

取數語句

 

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

*                             END-OF-SELECTION                         *

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

END-OF-SELECTION.

5.2.5  結果輸出部分

    結果輸出部分包含模板下載、結果填充等,樣式如下:

PERFORM templetdownload USING 模板名.

 

輸出語句

 

PERFORM displayexcel."顯示EXCEL

5.2.6  子程序部分

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

*                            SUBROUTINES(子程序FORM)                  *

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

 

5.3  程序注釋

5.3.1  良好的程序注釋便於程序的理解,達到“程序文檔化”的狀態。注釋主要用於程序頭說明、變量說明、修改備注、包含文件引用說明、FORM程序說明以及其它說明。

5.3.2  程序注釋分為行外注釋和行內注釋。行外注釋就是注釋單獨成行,行首使用星號“*”標識,行內注釋就是注釋與變量、方法、對象等在同一行,並且放在其后,注釋字符前使用英文的雙引號“"”標識;

5.3.3  程序頭部說明采用行外注釋方式,主要包含程序名、程序名稱、創建信息、程序用途以及修改原因和情況;

5.3.4  變量說明一般采用行內注釋方式;

5.3.5  修改備注、包含文件引用說明采用行外注釋方式;

5.3.6  FORM程序說明采用行外注釋方式,主要包含FORM名稱、功能說明以及參數說明等;

5.3.7  其它說明是指在IF、LOOP、CASE、WHILE等結構的開始和結束處加上注釋,便於分解程序運行邏輯;

5.4  其它

5.4.1  在程序編寫過程中注意代碼段間行寬,在合適處換行來提高代碼可讀性;

5.4.2  為了保證程序在不同SAP版本間的兼容性,每行ABAP代碼不能超過72個字符;

5.4.3  在使用DO語句時,盡量使用DO x TIMES,避免出現死循環;

5.4.4  兩個結構體ty_a、ty_b進行賦值,使用ty_b=ty_a,而不使用MOVE-CORRESPONDING ty_a TO ty_b;

5.4.5  兩個內表itab1、itab2結構相同,需要賦值,使用itab1[]=itab2[],而不使用循環操作賦值。

6  測試方法

6.1  測試案例編制

6.1.1  測試案例就是設計一個業務運行情況,軟件程序在這種情況下,必須能夠正常的運行並且達到程序設計的預期執行結果;

6.1.2  測試案例編制方法有等價划分法、邊界值分析法、錯誤推斷法、因果圖法、判定表驅動法、正交試驗法、功能圖法等;

6.1.3  測試案例由用例編號、用例目的、操作步驟、輸入數據或調用數據、期望結果等組成,格式如下:

用例編號

用例目的

操作步驟

輸入數據/調用數據

期望結果

001

測試多個公司時顯示順序是否先按公司排序

輸入多個公司代碼操作

輸入兩個以上公司代碼

先按公司排序

 

6.2  測試場景的定義

6.2.1  測試場景就是對用戶需求內容的不同情況的定義。在場景設計過程中要盡量考慮全面,特別是一些很少發生的業務邏輯,這樣才能達到程序與需求間匹配性的全面診斷;

6.2.2  測試場景由用例編號、用例目的、場景編號、場景名稱、場景目的、菜單路徑/事務代碼、所用字段、字段數據、預期結果、實際結果等組成,其格式如下:

用例編號

用例目的

場景代碼

場景名稱

場景目的

菜單路徑/事務代碼

所用字段

字段數據

預期結果

實際結果

001

 

001.01

 

 

 

 

 

 

 

 

6.3  測試數據生成

     按測試場景要求操作相關業務,以獲得測試過程中需要的各種業務數據;

6.4  測試結果的反饋

6.4.1  測試結果填寫在場景測試的實際結果欄;

6.4.2  如果實際結果與預期結果一樣使用綠色字體進行說明,否則使用紅色字體進行說明。在程序員調整完相應的邏輯后,又再次進入程序測試;

7  請求管理

7.1  請求的生成

7.1.1  客戶的測試數據,如果不傳生產系統,那么盡量使用本地對象,不要產生傳輸請求;

7.1.2  請求生成過程中,如果不同傳輸內容需同時傳到生產系統,那么盡量使用同一傳輸請求;

7.1.2  傳輸請求描述盡量能准確表現請求的用途,在其末尾加上生成請求的年月日時間;

7.2  請求的釋放

7.2.1  確認請求任務下的所有子請求已完成,所有包含的對象已激活;

7.2.2  對請求進行檢查,確認無錯誤報告,同時需注意報警信息;

7.2.3  為方便信息跟蹤和請求的協調管理,需在文檔欄填寫帶釋放人信息的備注;

7.3   請求的上傳

7.3.1  在傳輸請求前,需要明白傳輸的內容以及影響范圍;

7.3.2  傳輸完成后需在生產系統上進行檢查和驗證。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM