SAP - ABAPプログラム開発仕様
レンジ1
SAP S / 4システムプログラムの開発プロセスは、プログラム構造、検査及び管理の要求の方法を命名、用語を定義し、この標準を指定します。
この規格は、SAP S / 4 ABAP言語開発システムのプログラムに適用されます。
2つの引用規格
本文書の適用のために、次の書類が必要不可欠です。日付参照の場合、この文書に適用版のみ日付。日付のない参照については、(追補を含む)の最新版は、この文書に適用されます。
GB / T 1.1から2000「標準化ガイドパート1:構造と標準ルールの作成」
3つの用語と定義
3.1 SAP
データ処理、SAPドイツのシステムアプリケーションおよび製品からSAPは、それは会社の英語名です。
3.2 SAPのS / 4
SAP S / 4は、統合エンタープライズ・リソース・プランニング・システム(エンタープライズ・リソース・プランニングは、と呼ばれる:ERP)、オープンクライアント/サーバアーキテクチャに基づいており、カバーを備えソフトウェア、調達、在庫、生産を含む企業の財務管理、物流管理(、売上高、設備、プロジェクト、品質及びその他のモジュール)および人的資源管理および他の側面。データベース、アプリケーションサーバ、プレゼンテーション層:SAPドイツの会社のSAPによる研究イノベーションS / 4ソフトウェア、Rがリアルタイム(実時間)を意味し、3はS / 4システムを表す3層アーキテクチャです。
3.3 ABAP
ABAPは、高度なビジネス・アプリケーション・プログラミング言語(アドバンストビジネスアプリケーションプログラミング)、SAP S / 4システムアプリケーションが書かれたABAP / 4を使用することです。
3.4 AA
:AAは、以下のようにモジュールがあるSAP S / 4のアプリケーションモジュールを表します
AAモジュール |
モジュール名 |
BE |
財務会計 |
CO |
管理会計 |
SD |
販売流通 |
んん |
資材管理 |
PM |
プラントメンテナンス |
HR |
人事 |
PS |
プロジェクト管理 |
BW |
データウェアハウス |
紀元前 |
システム関連 |
OT |
他の |
3.5 PT
PTは、次のようにプログラムタイプは、タイプがあることを示しています。
PTタイプ |
名前 |
RP |
印刷レポートのプリントアウトレポート |
EX |
強化ユーザー出口の機能強化 |
FM |
機能モジュールの機能 |
QR |
クエリのクエリ |
SF |
スマートは、迅速な報告形式フォーム |
WITH |
バッチインプットバッチインプット |
3.6 DT
DTは、次のようにそのタイプが、データ・オブジェクトのタイプを示します。
DTタイプ |
名前 |
TB |
透明なテーブル |
VW |
ビュー |
OF |
データ要素 |
ST |
構造表 |
TT |
テーブルタイプ |
CI |
カテゴリ |
TG |
タイプグループ |
DM |
ドメイン |
HP |
ヘルプ |
LO |
ロックオブジェクト |
3.7記号説明
シンボルタイプ |
名前 |
[XX] |
XXは、必要な部分であります |
{XX} |
XXは、条件式の必要な部分であります |
<XX> |
XXはオプションパーツです |
4つの命名規則
4.1プログラム名の規則
Y [プログラム]の形式でプログラム4.1.1クローニングプログラムシステム標準プロシージャ名{_}。
4.1.1.1 Yは、システムのプログラムは、標準的な手順からクローニングされていることを示します。
4.1.1.2クローニング手順が関数である、それは「_」含まれている必要があります。
4.1.1.3 PROGRAMプログラム名は、プログラムの最大の長さの文字の長さは、余分な文字が背景にある省略することができるならば、クローン化されるために、標準的なシステムを示しています。
4.1.2 Z {_} <AA> <PT> <SEQ> {FSQ}フォーマットライトによって新たに開発されたプログラム名。
4.1.2.1 AAは3.4で定義されたSAP S / 4のアプリケーション・モジュールを表します。
4.1.2.2 PTは、3.5で定義されているプログラムの種類、ことを示しています。
4.1.2.3 SEQ IDが000から999の範囲内に、水を表します。
4.1.2.4 FSQはF00-F99の範囲内で、ファイルのシリアル番号を含む表します。
機能のために作成4.1.2.5プログラム、それが「_」含まれている必要があります。
4.1.2.6用に作成されたプログラムは、プログラムを含む場合、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 传输完成后需在生产系统上进行检查和验证。