我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕

转载地址:http://blog.csdn.net/qq_37625033/article/details/65629622

1、ABAP(ABAP/4)的基本语法

基本数据类型属性

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕

 DECIMALS  可以在数据类型后制定小数位的个数。


1.1、规则和几点建议

    a. 我们常犯的低级错误~  语法切换(中英)时,忽略了符号的差异,计算机会把不同的符号解释成不同的意义!

    b. 不要用词典的释义来理解你在编程中遇到的单词,两者之间是有很多差异的,不建议这样的学习方法,是弯路!           c.  ABAP中是用 句号 "." 来表示一个语句的结束符号.

    d.  ABAP 中用 双引号( " )作为单行注释符号(有些书上又称它 “右注释符号”),  用 星号(*) 做为多行注释符号,

      字符串修饰符号,单引号( '  ' ).

2、变量的声明:

关键字”DATA“,  要注意的是,声明多个变量时,DATA关键字后面必须加上冒号”“,否则会出现语法错误。变量名最长30个字元,不能含有 "+" 、"-"、 "*" 、"/" 、"()"等字符。

语法:

DATA  <变量名>(长度)  TYPE <数据类型>  VALUE<默认值>

示例:(注意长度和默认值都可以不写,则系统会自行给个”默认值“。下面的几种声明都是语法正确的。)

DATA:  test(10)  TYPE  C  VALUE 'Hello SAP',

            test1(10)   TYPE  I ,

            test2  TYPE  P,

            test   TYPE  I   VALUE '10'.

如果你自己写默认值了,那么这个值就必须与前面声明的类型一致,长度也最好一致,否则会”截取“声明时的长度来处理运行结果。


2.1、系统保留字     ( 就是:系统自已 专用的名词。)

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕


2.2、 以参考的形式定义变量 , 关键字 "LIKE"

语法:(同样的,单个不用加冒号,多个(大于1)必须加冒号”:“)

DATA  <变量1>  LIKE <变量2>


2.3、变量的初始化   关键字 "CLEAR"

语法:(同样的,单个不用加冒号,多个(大于1)必须加冒号”:“)

CLEAR <变量名>


3、常量

 常量:一旦被定义就会长期保存,并且其值不可改变(修改)的变量。

关键字 "CONSTANS"  (和定义变量唯一的区别是用的关键字不同,语法雷同.)

语法:(单个不加冒号,多个(大于1)必须加冒号”:“)

   CONSTANTS  <变量名>(长度)   TYPE <数据类型>  VALUE(默认值)

例子:decimals 用于指定小数位,前面有讲。

 CONSTANTS  PI  TYPE  P  DECIMALS  5  VALUE '3.14159'.


4、STATICS  定义

我对这个关键字的理解是,定义一个临时的变量,当它所在的程序结束后,它就会被释放(清除)。

 语法:(单不加,否则必须加冒号)

STATICS <变量名>(长度) <数据类型>    <默认值>  <decimals这个随意,有木有都可以>


5、自定义变量类型

关键字 "TYPES"

语法: 单不加,否则必须加冒号

 TYPES <变量名> (长度)   <数据类型>  <可有可无的decimals>

栗子:(单不加,否则必须加冒号)

 TYPES:  NAME(10)  TYPE C,

                NUMBER  TYPE  I.

DATA:  PLAUER  TYPE  NAME  VALUE 'JERY TANG', "定义类型为NAME(ABAP中注释符号为英文中的双引号'" ') 

            NICKNAME  LIKE  PLAUER.


6、结构体的定义

结构体:也是一种数据类型,但不属于基本的数据类型。是一种临时创建的,有多个变量组成的临时对象。

关键字: DATA          Begin  of   ... End of

语法:

    DATA: BEGIN OF <结构体名字>

                   <字段1>

                   <字段2>

                      ......

               END OF<结构体名字>.

栗子:

    DATA BEGIN OF ADDRESS,

                      NAME(10)   TYPE  C,

                      NUMBER     TYE   P,

                END OF ADDRESS.

注意; 定义好后,就可以这样使用了,如: ADDRESS-NAME. (可以把这个看作一个定义好的变量)


6.1、结构体的赋值

a、ABAP中可以使用 "WRITE"语句来输出结果。

b、ABAP中可以对定义了具体字段名字的结构体直接赋值。

c、相同的结构可以直接用 等号 "="来数显数据的相互复制。

d 、相同结构体可以使用 "MOVE ......TO...."语句进行赋值,不同结构体可以使用 ”MOVE-CORRESSPONDING"将两个结构体之间相同的字段自动匹配并赋值。


举个栗子:

USERINF-SID  =  'A00001'.

USERINF-NAME = 'JERY'.

USERINF-TEL = '010-12345678'.

USER2 = USERINF.   

WRITE: USER2, USERINF-SID.

"输出结果为:   A00001     JERY         010-123456     A00001


栗子:

DATA: BEGIN OF USERDETALL,

                SID(10)  TYPE  C,    "编号

                NAME(20)  TYPE  C,  "姓名

                BIRDATE  TYPE D,  "出生日期

                ADD(50)  TYPE  C,    "地址

            END OF USERDETALL.

MOVE-CORRESSPONDING  USERINF TO USERDETALL.    

注意:相同字段之间进行数值传递(相互赋值),其他的不同类型字段的值将为空!

结构体的另外一种赋值方式:继承式赋值(学到继承再一起学习哈~)


7、WRITE语句的使用(在屏幕中定位输出

语法:("/" 这个斜杠在ABAP中用作换行符号)

      WRITE AT [/] <位置> (长度) <变量名>

位置:最长为三位数字的变量或者数字,表示在屏幕上 的位置。  另外,如果格式规范只包含直接量(PS:不是变量的值都是直接量),可以忽略关键字 AT。

 栗子:

REPORT Z7003.


WRITE :  ' First line' .

WRITE :  / 10 'First  line',

                   24  'Test  write' .

WRITE :  / (5) 'First line',

                   24  ' Test  write' .


结果样式如下:

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕


7.1、WRITE语句格式化输出  

         

 格式化选项                                   用途                                                                                              

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕


7.2、日期字段格式化

        选项                                    用途                                                               

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕


7.3 、符号图标的输出

语法:(当然关键字必须和名字的值类型一样,不然无法识别 ,报错。)

 WRITE <符号的名字> AS SYMBOL.

 WRITE <图标的名字>   ASICON.

栗子:

INCLUDE  <SYMBOL>.

INCLUDE  <ICON>.

WRITE: /  'Phone Symbol:' , SYM_PHONE  AS  SYMOL.

SKIP.

WRITE:  /  'Alarm lcon: ' , ICON_ALARM  AS  ICON.


输出的结果和样式:

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕



7.4、输出屏幕上的线空行

a、水平线

语法:

      ULINE AT [/] <起始位置> (长度)

等同于另一种写法:

       WRITE  AT [/]  <起始位置>(长度)SY-ULINE.


b、垂直线

语法:

           WRITEAT [/] <起始位置> SY-VLINE

等同于:

           WRITE AT [/] <起始位置> ' | '.


 c、空行 

语法: 

      SKIP [行数].

等同于:

      SKIP TOLINE<n>.



d、输出复选框

语法:

WRITE <F> AS CHECKBOX.


栗子:

DATA:  FLAG1  VALUE ' ' ,

            FLAG2  VALUE 'X' ,

            FLAG3(5)  VALUE 'Xenon'.


WRITE:  / 'Flag  1' ,FLAG1  AS CHECKBOX,

              / 'Flag   2' , FLAG2 AS CHECKBOX,

             /  'Flag   3' , FLAG3  AS CHECKBOX.


输出效果:

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕


7.5、颜色输出

语法: 

 FORMAT [COLOR {{{color (ON)} | OFF}|{ = col}}]  "使用颜色

                 [INTENSIFIED[{ON|OFF}|{= flag}]]         “背景颜色

                 [INVERSE   [{ON|OFF} | { =flag }]]         "字体颜色


栗子:

DATA  col TYPE I VALUE 0.

DO 8 TIMES.

       col  =  sy-index - 1.

       FORMAT  COLOR  = col.

   WRITE:  / col   COLOR OFF,

                    'INTENSIFIED ON'  INTENSIFIED ON,

                     'INTENSIFIED OFF' INTENSIFIED OFF,

                      'INVERSE ON'    INVERSE ON.

ENDDO.       


输出结果和样式效果:

我们一起学ABAP (02)~基础语法与数据类型,输出到屏幕