ABAP语法完整版.docx

上传人:b****2 文档编号:92119 上传时间:2023-04-28 格式:DOCX 页数:51 大小:36.50KB
下载 相关 举报
ABAP语法完整版.docx_第1页
第1页 / 共51页
ABAP语法完整版.docx_第2页
第2页 / 共51页
ABAP语法完整版.docx_第3页
第3页 / 共51页
ABAP语法完整版.docx_第4页
第4页 / 共51页
ABAP语法完整版.docx_第5页
第5页 / 共51页
ABAP语法完整版.docx_第6页
第6页 / 共51页
ABAP语法完整版.docx_第7页
第7页 / 共51页
ABAP语法完整版.docx_第8页
第8页 / 共51页
ABAP语法完整版.docx_第9页
第9页 / 共51页
ABAP语法完整版.docx_第10页
第10页 / 共51页
ABAP语法完整版.docx_第11页
第11页 / 共51页
ABAP语法完整版.docx_第12页
第12页 / 共51页
ABAP语法完整版.docx_第13页
第13页 / 共51页
ABAP语法完整版.docx_第14页
第14页 / 共51页
ABAP语法完整版.docx_第15页
第15页 / 共51页
ABAP语法完整版.docx_第16页
第16页 / 共51页
ABAP语法完整版.docx_第17页
第17页 / 共51页
ABAP语法完整版.docx_第18页
第18页 / 共51页
ABAP语法完整版.docx_第19页
第19页 / 共51页
ABAP语法完整版.docx_第20页
第20页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ABAP语法完整版.docx

《ABAP语法完整版.docx》由会员分享,可在线阅读,更多相关《ABAP语法完整版.docx(51页珍藏版)》请在冰点文库上搜索。

ABAP语法完整版.docx

ABAP语法完整版

ABAP语法完整版

SAPABAP/4基础知识学习  

数据类型

C:

字符串

D:

日期型格式为YYYYMMDD 例:

'1999/12/03'

F:

浮点数长度为8

I:

整数

N:

数值组成的字符串如:

011,'302'

P:

PACKED数用于小数点数值 如:

12.00542

T:

时间格式为:

HHMMSS如:

'14:

03:

00'

X:

16进制数如:

'1A03'

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

变量声明

DATA[][][decimals]

    变量名称

    变量类型及长度

    初值

    小数位数

    

exp:

  DATA:

COUNTER TYPEPDECIMALS3.

         NAME(10)TYPECVALUE'DELTA'.

         S_DATE  TYPEDVALUE'19991203'.

exp:

  DATA:

BEGINOFPERSON,

           NAME(10)TYPEC,

           AGE     TYPEI,

           WEIGHT  TYPEDECIMALS2,

         ENDOFPERSON.

另外,有关DATA声明的指令还有:

CONSTANTS(声明常数)、STATICS(临时变量声明).

exp:

CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.

STATICS关键字

声明的变量仅在目前的程序中使用,结束后会自动释放

语法:

 

       STATICS[][][]

系统专用变量说明

  系统内部专门创建了SYST这个STRUCTURE,里面的栏位存放系统变量,常用的系统变量有:

  SY-SUBRC:

 系统执行某指令后,表示执行成功与否的变量,'0'表示成功

  SY-UNAME:

 当前使用者登入SAP的USERNAME;

  SY-DATUM:

 当前系统日期;

  SY-UZEIT:

 当前系统时间;

  SY-TCODE:

 当前执行程序的Transactioncode

  SY-INDEX:

 当前LOOP循环过的次数

  SY-TABIX:

 当前处理的是internaltable的第几笔

  SY-TMAXL:

 Internaltable的总笔数

  SY-SROWS:

 屏幕总行数;

  SY-SCOLS:

 屏幕总列数;

  SY-MANDT:

 CLIENTNUMBER

  SY-VLINE:

 画竖线

  SY-ULINE:

 画横线

  

TYPE关键字

 用来指定资料型态或声明自定资料型态

 Example:

       TYPES:

 BEGIN OF MYLIST,

                  NAME(10) TYPE C,

                  NUMBER  TYPE I,

               END OF MYLIST.

       DATA LIST TYPE MYLIST.

LIKE关键字

  跟TYPE关键字使用格式相同,如

  DATA TRANSCODE LIKE SY-TCODE.

  不同的是LIKE用在已有值的资料项,如系统变量,而TYPE关键字则是用在指定资料型态。

TABLES关键字

用来声明TableWorkArea的数据,对应至ABAP/4资料文件(DictionaryObject),由SQL指令加载所需数据

语法:

TABLES

Example:

TABLES:

SPFL.

SELECT*FROMSPFL.

WRITE:

SPFL-MANDT,SPFL-CARRID,SPFL-CONNECTION.

ENDSELECT.

从ABAP/4Dictionary的SPFL档载入MANDT,CARRID,CONNECTION三个字段至SPFL此TableWorkArea

  

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

输出

一.WRITE语句

ABAP/4用来在屏幕上输出资料的指令是WRITE指令,例如:

    WRITE:

'USERNAMEIS:

',SY-UNAME.

二.指定屏幕输出位置

指定输出位置的语句格式为:

     WRITE:

[AT][/][][()]资料项[]

其中:

/:

在下一行输出

:

指定输出的行号;

):

指定输出位数(长度)

:

指定显示格式参数,参数有:

         LEFT-JUSTIFIED 资料*左对齐

         CENTERED       资料*中间对齐

         RIGHT-JUSTIFIED资料*右对齐

         UNDER      正对在资料项的下面显示

         NO-GAP         紧接着显示,不留空格

         USINGEDITMASK:

使用内嵌子元显示,如12:

03:

20

         USINGNOEDITMASK:

不使用内嵌子元

         NO-ZER         数字前面0的部分不显示

         NO-SIGN:

       不显示正负号

         DECIMALS:

  显示位小数

         EXPOENT:

   F(浮点数)指数的值

         ROUND:

     四舍五入至小数点后

         CURRENCY:

  币别显示

         DD/MM/YY:

     日期显示格式

         MM/DD/YY:

      

         YY/MM/DD:

         YY/DD/MM

         MM/DD/YYYY:

         DD/MM/YYYY

         YYYY/MM/DD:

         YYYY/DD/MM:

例如1:

WRITE:

/10(6)'ABCDEFGHIJK'.

输出结果为:

       ABCDEF

例如2:

DATA:

XTYPEIVALUE'11:

20:

30',

            A(5) TYPECVALUE'AB CDE'.

     WRITE:

/XUSINGEDITMASK'__:

__:

__'.

     WRITE:

/XUSINGEDITMASK'$___,___'.

     WRITE:

/YNO-GAP.

输出结果为:

       11:

20:

30

       $112,030

       ABCDEF

例如3:

DATA:

LENTYPEIVALUE10,

      POSTYPEIVALUE11,

      TEXT(10)  VALUE'1234567890'

      WRITE'Thetext------------appearsinthetext.'.

      WRITEATPOS(LEN)TEXT.

WRITETO语句的基本形式

要将值(文字)或源字段内容写入目标字段,可以使用WRITETO语句:

语法

WRITETO[

DATA:

NUMBERTYPEFVALUE'4.3',

     TEXT(10),

     FLOATTYPEF,

     PACK TYPEPDECIMALS1.

WRITENUMBER.

WRITENUMBERTOTEXTEXPONENT2.

WRITE/TEXT.

WRITENUMBERTOFLOAT.

WRITE/FLOAT.

WRITENUMBERTOPACK.

WRITE/PACK.

MOVENUMBERTOPACK.

WRITE/PACK.

exp:

DATA:

NAME(10)  VALUE'SOURCE',

     SOURCE(10)VALUE'Antony',

     TARGET(10).

...

WRITE(NAME)TOTARGET.

WRITE:

TARGET.

exp:

DATA:

COUNTERTYPEI.

COMPUTECOUNTER=COUNTER+1.

COUNTER=COUNTER+1.

ADD1TOCOUNTER.

在此,三条运算语句进行相同算术运算

输出屏幕上的线和空行

用下列语法,可以在输出屏幕上生成水平线:

语法

ULINE[AT[/][][()]].

它等同于

WRITE[AT[/][][()]]SY-ULINE.

AT后的格式规范,与在在屏幕上定位WRITE输出(页28)中为WRITE语句说明的格式规范完全一样。

如果没有格式规范,系统则开始新的一行,并用水平线填充该行。

否则,只按指定输出水平线。

生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:

WRITE[AT[/][][()]]'-----...'.

垂直线

用下列语法,可以在输出屏幕上生成垂直线:

语法

WRITE[AT[/][]]SY-VLINE.

WRITE[AT[/][]]'|'.

空行

用下列语法,可以在输出屏幕上生成空行:

语法

SKIP[].

该语句从当前行开始,在输出屏幕上生成个空行。

如果没有指定的值,就输出一个空行。

要将输出定位在屏幕的指定行上,请使用:

语法

SKIPTOLINE.

该语句允许将输出位置向上或向下移动。

       

四.显示图示:

语法:

WRITE:

ASSYMBOL.

    WRITE:

 ASICON.

例如:

INCLUDE .

    INCLUDE .

WRITE:

/'Phonesymbol:

',SYM_PHONEASSYMBOL.

WRITE:

/'AlarmIcon:

',ICON_VOICE_OUTPUTASICON.

要查看系统所提供有那些符号及图示,可选择'EDIT'下的'InsertStatement',选择'Write',接下来选择要查看的群组,如SYMBOL或ICON,接下来按'Display'即可.

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

一.InternalTable的声明

ABAP/4中的InternalTable是一种DataStructure,类似于其他语言中的STRUTURE,它可以由几个不同类型的栏位(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔资料表示具有相同属性的多个事物.

Internaltable的定义有以下几种格式:

格式一.  DATA:

BEGINOF OCCURS ,

                   TYPE,

                 [ TYPE,

                   TYPE,

                   …                 ]

               ENDOF .

    语法:

          DATA   OCCURS  [WITH HEADER LINE]

          Example:

                  DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.

                  

格式二.  TYPES:

BEGINOF,

                     TYPE,

                   [ TYPE,

                     TYPE,

                   …                 ]

                ENDOF.

         TYPESTYPEOCCURS.

         

格式三.  DATA:

BEGINOF.

                 INCLUDESTRUCTURE.

         DATA:

ENDOF.

         DATA:

LIKEOCCURS.

exp:

         

TYPESVECTORTYPEIOCCURS10.

TYPES:

BEGINOFLINE,

        COLUMN1TYPEI,

        COLUMN2TYPEI,

        COLUMN3TYPEI,

      ENDOFLINE.

TYPESITABTYPELINEOCCURS10.

TYPES:

BEGINOFDEEPLINE,

         TABLE1TYPEVECTOR,

         TABLE2TYPEITAB,

      ENDOFDEEPLINE.

TYPESDEEPTABLETYPEDEEPLINEOCCURS10.

本示例创建与上例相同的内表数据类型(VECTOR和ITAB)。

然后创建数据类型DEEPLINE作为字段串,包含这些内表作为组件。

通过该字段串,数据类型DEEPTABLE被创建为内表。

因此该内表的元素本身就是内表。

exp:

TYPES:

BEGINOFLINE,

        COLUMN1TYPEI,

        COLUMN2TYPEI,

        COLUMN3TYPEI,

      ENDOFLINE.

TYPESITABTYPELINEOCCURS10.

DATATAB1TYPEITAB.

DATATAB2LIKETAB1WITHHEADERLINE.

同创建内表数据类型(页99)中所示,该示例创建数据类型ITAB作为内表。

通过使用DATA语句的TYPE参数引用ITAB,使数据对象TAB1与ITAB结构相同。

通过使用DATA语句的LIKE参数引用TAB1,使数据对象TAB2结构相同。

创建的TAB2带表头行。

因此,可以在程序中使用TAB2-COLUMN1、TAB2-COLUMN2和TAB2-COLUMN3等定位表格工作区域TAB2。

exp:

DATAFLIGHT_TABLIKESFLIGHTOCCURS10.

本示例创建数据对象FLIGHT_TAB,其结构与数据库表格SFLIGHT相同。

本示例介绍如何采用两种不同的步骤创建同一内表。

TYPESVECTOR_TYPETYPEIOCCURS10.

DATAVECTORTYPEVECTOR_TYPEWITHHEADERLINE.

在此创建一个内表数据类型VECTOR_TYPE,其行包含首先创建的基本类型I字段。

然后,通过引用VECTOR_TYPE创建数据对象VECTOR。

通过使用WITHHEADERLINE选项还创建表格工作区域VECTOR。

在这种情况下,表格工作区域包含一种类型I字段,可以通过名称VECTOR定位。

DATAVECTORTYPEIOCCURS10WITHHEADERLINE.

在这种情况下,通过直接在DATA语句中使用OCCURS选项创建完全一样的数据类型VECTOR。

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

1.TYPEStype.

2.TYPEStype(len).

3.TYPES:

BEGINOFstructype ...

         ENDOFstructype.

4.TYPESitabtype{TYPEtabkindOFlinetypeLIKEtabkindOFlineobj}

        [WITH[UNIQUE|NON-UNIQUE]keydef][INITIALSIZEn].

5.TYPESitabtypeTYPERANGEOFtype.

  TYPESitabtypeLIKERANGEOFf.

6.TYPESitabtype{TYPElinetype|LIKElineobj}OCCURSn.

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

         

APPENDLINE

格式:

APPENDTO

举例一:

(使用WORKAREA)

DATA:

BEGINOFLINE,

            COL1TYPEI,

            COL2TYPEI,

      ENDOFLINE.

DATAITABLIKELINEOCCURS10.

DO2TIMES.

  LINE-COL1=SY-INDEX.

  LINE-COL2=SY-INDEX**2.

  APPENDLINETOITAB.

ENDDO.

LOOPATITABINTOLINE.

    WRITE:

/LINE-COL1,LINE-COL2.

ENDLOOP.

举例二(不使用WORKAREA)

DATA:

BEGINOFITABOCCURS10,

            COL1TYPEI,

            COL2TYPEI,

      ENDOFITAB.

DO2TIMES.

  ITAB-COL1=SY-INDEX.

  ITAB-COL2=SY-INDEX**2.

  APPENDITAB.

ENDDO.

LOOPATITAB.

    WRITE:

/ITAB-COL1,ITAB-COL2.

ENDLOOP.

exp:

DATA:

BEGINOFITABOCCURS10,

       COL1TYPEC,

       COL2TYPEI,

     ENDOFITAB.

DO3TIMES.

 APPENDINITIALLINETOITAB.

 ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX**2.

 APPENDITAB.

ENDDO.

LOOPATITAB.

 WRITE:

/ITAB-COL1,ITAB-COL2.

ENDLOOP.

举例三.(加入另一个Internaltable的元素)

      格式:

APPENDLINESOF[FROM][TO]TO.

      将的元素加入至中,可选取自的范围.

      APPENDLINESOFITABTOJTAB.

COLLECTLINE

COLLECT指令也是将元素加入Internaltable中,与APPEND的区别是:

COLLECT指令在非数值栏位相同的情况下,将数值栏位汇总.

格式:

 COLLECT[INTO]

DATA:

BEGINOFITABOCCURS3,

            COL1(3) TYPEC,

            COL2    TYPEI,

      ENDOFITAB.

      ITAB-COL1='ABC'.   ITAB-COL2=10.

      COLLECT ITAB.

      ITAB-COL1='XYZ'.   ITAB-COL2=20.

      COLLECT ITAB.

      ITAB-COL1='ABC'.   ITAB-COL2=80.

      COLLECT ITAB.

此时,internaltable中放的是2笔数据,分别为:

      ITAB-COL1       ITAB-COL2

       'ABC'       

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2