SAP-ABAP程序开发规范

浪尽此生 提交于 2020-02-13 10:31:09

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  传输完成后需在生产系统上进行检查和验证。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!