ABAP开发关键字总结

关健字是语句的第一个词,它决定整个语句的意义,有四种不同类型的关健字 . 

1.说明性关健字 

    TYPES,DATA,TABLES,这些关健字说明定义数据类型或者说明程序可以访问的数据对象 

    TYPES:    用来定义数据结构类型 。 

    DATA:        用来定义数据结构对象 。 

    TABLES: 用来声明Table Work Area 的数据  。 

    -- TYPES与DATA的区别是,TYPES是用来自定义某种类型的,需要DATA语句实例化后才可以使用 

    -- DATA是用来声明基本数据类型对象(实体变量),对于用DATA直接定义的结构体对象(不参照其它结构类型),其同时也是一个结构类型 。 

    TYPE:  用来指定数据型态或宣告自定数据型态 。 

    LIKE:    LIKE 用在已有值的数据项 。 

    -- TYPE后面跟随的只能是某种类(型),而LIKE后面可以跟实例对象 ; 

    -- 参照结构体对象生成内表时只能用LIKE,不能用TYPE,因为结构体对象不是类型,只是一种实例对象 ; 

    -- 参照结构类型生成内表时可以用LIKE也可以用TYPE.其中通过LIKE定义的内表直接拥有参照结构类型的元素结构; 

    -- 定义的内表只能间接拥有被参照结构类型的元素结构,结构类型不能作为内表的工作区,只有结构体对象才可以; 

    CONSTANTS :用来声明常数 

    STATICS   :用来在当前程序中声明静态变量 ,程序结束后自动释放内存 ; 

    TYPES: begin of name_type , 

                 name(20) type  c , 

                 sex(2)        type  c , 

                 age            type     i , 

                 end of name_type . 

    -- 定义了个name_type 结构体类型 。                 

    DATA: name type name_type . 

    -- 定义了个name对象,其类型为name_type . 

    data: begin of name_type , 

                name(20)    type c , 

                sex(2)        type c , 

                age                type i , 

                end fo name_type . 

    -- 定义了个name_type结构体对象。       

     

2.事件关健字 

    这些关健字在ABAP中定义处理块,处理块是当特定事件发生时进行处理的语句组 

    -- 多用于report 

    INITIALIZATION : 在选择屏幕显示前,对变量进行初始化赋值 

    AT SELECTION-SCREEN : 对选择屏幕的数据输入进行检查 

    START-OF-SELECTION  : 选择屏幕处理完后,数据的处理 

    TOP-OF-PAGE                    : 列表显示启动新页,页头的输出 

    END-OF-PAGE                    : 一页结束时,页尾的处理 

    AT LINE-SELECTION      : 用户双击选中某行触发该事件 

    AT PF                             : 设置自定义的菜单 

    AT USER-COMMAND            : 当用户功能健时,触发该事件

3.控制关健字 

    条件分支 

    data flag type c value 'a' . 

    if flag = 'a' . 

        write:/'A'. 

    elseif flag = 'b'. 

      write: / 'B' . 

    else . 

      write: /'error' . 

    endif . 

    -- 每个判断语句之后都要加句号(.) 。 

    CASE 条件分支 

    DATA:     

        TEXT1   VALUE 'X', 

        TEXT2   VALUE 'Y', 

        TEXT3   VALUE 'Z', 

        STRING  VALUE 'A'. 

    CASE STRING. 

       WHEN TEXT1. 

            WRITE: / 'String is', TEXT1. 

        WHEN TEXT2. 

            WRITE: / 'String is', TEXT2. 

        WHEN TEXT3. 

            WRITE: / 'String is', TEXT3. 

        WHEN OTHERS. 

            WRITE: / 'String is not', TEXT1, TEXT2, TEXT3. 

    ENDCASE.    

    --计次循环 

    DO 2 TIMES . 

        WRITE: / 'X' . 

    ENDDO . 

    DO VARYING I FROM 1 TO 10 

        S = S + I . 

    ENDDO . 

    -- 无穷循环 

    DO . 

        XXXX 

    ENDDO . 

    -- 条件循环 

    WHILE I<= 10 . 

        S = S + I . 

        I = I + 1. 

    ENDWHILE . 

    -- 使用循环要避免死循环    。        

    -- 在语句块中至少应包含一个 EXIT、 STOP 或 REJECT 语句,以便系统能够退出循环。 

    循环控制 

    1) CONTINUE : 跳至循环的下一次 。(无条件终止一次循环) 

             DO   3  TIMES. 

              IF  SY-INDEX = 2. 

                 CONTINUE. 

              WRITE / SY-INDEX. 

          ENDDO. 

          执行结果:  

                       1 

                       3  

   2) CHECK : 满足check条件之后才继续往下执行循环(有条件终止循环) 

   DO  5  TIMES. 

                  CHECK  SY-INDEX  BETWEEN  2  AND  4. 

                  WRITE  /  SY-INDEX. 

              ENDDO. 

          执行结果: 

                      2 

                      3 

                      4 

   3) EXIT :  跳离循环 (完全终止循环) 

                    DO  10  TIMES. 

                IF  SY-INDEX = 4. 

                  EXIT. 

                ENDIF 

               WRITE / SY-INDEX. 

           ENDDO. 

           执行结果: 

                        1 

                        2 

                        3                                                 

4.操作关健字

    WRITE

write 用来在屏幕上打印输出数据。

write : ‘ 输出内容 '’ .

write at [/] [<pos>] [<len>]

/ : 换行,下一列

pos:屏幕X坐标

len: 显示长度

 

write: 数据项 显示参数

   LEFT-JUSTIFIED              数据靠左显示 

   CENTERED                     数据靠中间显示 

   RIGHT-JUSTIFIED            数据靠右显示  

   UNDER <g>                    在数据项<g>的 X轴开始坐标显示 

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

   USING EDIT MASK <m>   使用内嵌字符显示, 如 11:20:30 

   USING NO EDIT MASK      不使用内嵌字符 

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

   NO-SIGN                         不显示正负号 

   DECIMALS <d>                显示 d 位小数字数 

   EXPONENT <e>                F(浮点数) exponent 的值 

   ROUND <r>                     四舍五入至小数位数下 r 位 

   CURRENCY <c>                币别显示 

   DD/MM/YY                      日期显示格式 

   MM/DD/YY 

   DD/MM/YYYY 

   MM/DD/YYYY 

   DDMMYY 

   MMDDYY 

   YYMMDD

sikp [n] : 空N行 

WRITE  <icon-name>  AS  ICON  :显示系统图标 

WRITE  <symbol-name>  AS  SYMBOL  :显示系统符号 

-- 选择 “Edit” 下的 “Insert Statement”, 选 “WRITE”   接下来选择要查的群组, 如 SYMBOL 或 ICON,  按下 “Display” 即可查看所有系统图标或符号 。 

WRITE  <资料项>  AS   CHECKBOX.  作为checkbox显示 

-- 以字符串数据内容的第一个字符为 CHECK BOX 的输出, 如果是空白, CHECK BOX 显示为空白,  相反则显示 X , 

 

MOVE

MOVE  <F1>  TO  <F2> :将F1的值保存到F2中,等同于F2 = F1 , 内表同样适用。 

MOVE  <F1>[+<O1>]  TO   <F2>[+<O2>]  :将字符串中指定字符保存到指定字符串中 。 

data: f1(10) type c value ‘ABCDEFGHIJ’ , 

        f2(10) type c value ‘ZZZZZZZZZ’ . 

MOVE F1+3(5) TO F2+3(5) . 

f2为:ZZZDEFGHZZ . 

MOVE –CORRESPONDING   <Strings1>  TO  <String2>.将 Strings1中的 field组件的数据复制至String2 中, 仅复制相同名称的组件 

DATA: BEGIN  OF  ADDRESS, 

                  FIRSTNAME(10)  VALUE  ‘LULU’, 

                  LASTNAME(10)  VALUE  ‘CHOU’, 

                  TEL(12)  VALUE  ‘4660570’, 

                  END  OF   ADDRESS. 

        DATA:BEGIN  OF   NAME, 

                 FIRSTNAME(10), 

                 LASTNAME(10), 

                 E_MAIL(30), 

                 END  OF   NAME. 

          MOVE-CORRESPONDING  ADDRESS  TO   NAME. 

          NAME-FIRSTNAME 变成 ‘LULU’, NAME-LASTNAME 变成 ‘CHOU’,  而 NAME-E_MAIL 则不变 

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值