ABAP编码规范

  • 格式:doc
  • 大小:188.00 KB
  • 文档页数:20

ABAP编码规约更改履历目录1.目的2.前提条件3.以后编码规约1.目的本文档是规定使用ABAP语言R/3Add・On开发编码的标准化。

其目的是使程序标准一致。

2.前提条件本文档是针对使用R/3リリース4.70(Enterprise)のABAP语言的程序(Report、Dynpro、功能模块、Class、SAPscript、SmartForms)3.Source Header用以下的书写格式书写。

(英数字是半角)************************************************************************ ** Program ID : ZZTEMP01** Program Detail : xxxxxxxxxxxx** Author : xxxxxxxxxxxx(NTT DATA ITEC)** Creation Date : yyyy.mm.dd**** Modifications :** No. Date Author** Description** xxxx-xxxxx yyyy.mm.dd xxxxxxxxxxxx** xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx **** xxxx-xxxxx yyyy.mm.dd xxxxxxxxxxxx** xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ************************************************************************ REPORT ZZTEMP01 MESSAGE-ID 00NO STANDARD PAGE HEADINGLINE-SIZE 170LINE-COUNT 58(2).4.定义部分4-1.表定义定义表名。

在DYNPRO、SAPscript的使用。

******************************* TABLES******************************TABLES:T001, "会社コードTKA02, "管理領域割当CEPC. "利益センタマスタデータテーブル4-2.数据定义在变量类型后写下划线‘-’。

字段名称,考虑到该词的名称,使用的用途。

内表使用无表头内部表,最佳使用类型选择(STANDARD, SORTED, HASHED)******************************* DATA******************************* データ1TYPES:BEGIN OF T_DATA1,BUKRS TYPE T001-BUKRS, "会社コードKOKRS TYPE TKA02-KOKRS, "管理領域END OF T_DATA1.DATA:I_DATA1 TYPE STANDARD TABLE OF T_DATA1,WA_DATA1 TYPE T_DATA1.* データ2TYPES:BEGIN OF T_DATA2,INCLUDE TYPE T_DATA1, "データ1PRCTR TYPE CEPC-PRCTR, "利益センタEND OF T_DATA2.DATA:I_DATA2 TYPE STANDARD TABLE OF T_DATA2,WA_DATA2 TYPE T_DATA2.* 利益センタTYPES:T_PRCTR TYPE RANGE OF CEPC-PRCTR.DATA:R_PRCTR TYPE T_PRCTR.* テーブル作業領域DATA:WA_T001 TYPE T001, "会社コードWA_TKA02 TYPE TKA02. "管理領域DATA:V_BUKRS TYPE T001-BUKRS, "会社コードV_TEXT(30) TYPE C.DATA:CNT_DATA TYPE I. "データ件数DATA:FLG_ERR TYPE C. "エラーフラグCONSTANTS:C_ERR TYPE C VALUE 'X'. "エラーFIELD-SYMBOLS:<F_ANY> TYPE ANY. "フィールドシンボルDATA:GCL_CLASS TYPE REF TO CL_GUI_FRONTEND_SERVICES. "クラスの参照変数5.选择画面参数在变量类型后写下划线‘-’。

******************************* PARAMETERS & SELECT-OPTIONS******************************SELECTION-SCREEN:BEGIN OF BLOCK BL01 WITH FRAME TITLE TEXT-S01.PARAMETERS:P_BUKRS TYPE TKA02-BUKRS "会社コードOBLIGATORY VALUE CHECK MEMORY ID BUK.SELECT-OPTIONS:S_PRCTR FOR CEPC-PRCTR. "利益センタSELECTION-SCREEN:END OF BLOCK BL01.6.事件每个事件按下列顺序说明,提供以下意见。

******************************* INITIALIZATION******************************INITIALIZATION.******************************* AT SELECTTION-SCREEN******************************AT SELECTION-SCREEN.******************************* START-OF-SELECTION******************************START-OF-SELECTION.******************************* END-OF-SELECTION******************************END-OF-SELECTION.******************************* AT USER-COMMAND******************************AT USER-COMMAND.******************************* TOP-OF-PAGE******************************TOP-OF-PAGE.******************************* END-OF-PAGE******************************END-OF-PAGE.7.子程序在变量类型后写下划线‘-’。

输入参数使用USING 、输出参数使用CHANGING 。

TABLES参数在原则上被禁止使用,如果作为参数传递一个内部表,使用USING、CHANGING描述。

FORM 名考虑处理内容、使用目的。

在FORM内仅使用变量、局部变量。

*&---------------------------------------------------------------------**& Form F_EDIT_CURR*&---------------------------------------------------------------------** 金額の文字列編集*----------------------------------------------------------------------** -->AI_CURR 金額* -->AI_CUKY 通貨コード* <--AO_CHAR 文字列*----------------------------------------------------------------------*FORM F_EDIT_CURR USING VALUE(AI_CURR)VALUE(AI_CUKY)CHANGING VALUE(AO_CHAR).WRITE AI_CURR TO AO_CHAR CURRENCY AI_CUKY.SHIFT AO_CHAR RIGHT CIRCULAR.CONDENSE AO_CHAR NO-GAPS.ENDFORM. " F_EDIT_CURR※为每个操作创建一个子程序,便于遵循的逻辑,易于维护编码使结构化程序。

事件下使用PERFORM 命令、不要直接写逻辑。

8.文字符号如果你写文字的源文本,创建文本和使用符号。

9.逻辑表达式逻辑表达式要与下面的符号使用的公式。

嵌套不能超过3个IF P_BUKRS <> SPACEAND S_PRCTR[] IS INITIAL.MESSAGE E398 WITH TEXT-M01.ENDIF.10.数据处理计数器的计算使用ADD、SUBTRCT。

取得内部表的件数使用DESCRIBE。

分配单一项目用=(MOVE-CORRESPONDING 可能不使用)。

11.打开 SQL11-1.读取数据库SELECT 句子避免了更好的性能循环。

(ENDSELECT 语句尽可能不要多使用。

CLIENT SPECIFIED 禁止使用。

)SELECT 语句取得检索字段名称、*在除取全部项目之外不要使用。

INTO 语句用在取得数据、INTO CORRESPONDING 的使用尽可能避开、取得定义构造、内部表里的数据。

排序的时候不用ORDER BY 语句、取得数据后用内表的排序代替。

根据需要使用 JOIN 、考虑性能改进。

* 会社コードの取得(単一行の取得)SELECT SINGLE BUKRS SPRASINTO CORRESPONDING FIELDS OF WA_T001FROM T001WHERE BUKRS = P_BUKRS.* 利益センタの取得SELECT DISTINCT CEPC~PRCTR CEPCT~KTEXTINTO CORRESPONDING FIELDS OF TABLE I_CEPCFROM CEPC INNER JOIN CEPCTON CEPC~PRCTR = CEPCT~PRCTRAND CEPC~KOKRS = CEPCT~KOKRSWHERE CEPC~KOKRS = TKA02-KOKRSAND CEPC~DATBI >= SY-DATUMAND CEPC~DATAB <= SY-DATUMAND CEPCT~SPRAS = T001-SPRAS.11-2.更新数据库标准数据库的更新使用批输入和BAPI。