美文网首页
《ABAP学习笔记1-Andy》

《ABAP学习笔记1-Andy》

作者: Andy计算机专业 | 来源:发表于2019-04-16 10:20 被阅读0次
    目录:
    一、事务代码
    二、快捷键
    三、关键字
    四、命名规则
    五、语法规则
    六、犯错纠正记录
    

    一、事务代码(常用的TCODE)

    二、快捷键

    Ctrl + D 复制粘贴本行
    Tab & Shift tab 增加和删除缩进
    Ctrl+Shift+L/X 删除整行
    Ctrl + U/L 转换为大写/小写
    Ctrl + / 直接定位到T-CODE的输入框
    Alt+Tab 快捷切换窗口 WIN+TAB显示窗口列表
    Tab自动补全 Ctrl+O跳转到响应的行
    Ctri+Shift+< 解注释(自定义的)
    Alt+Shift 垂直选择lt

    三、关键字

    ABAP关键字---走马观花看下即可

    四、命名规则

    4.1 数据表定义

    gs=global structure *全局(表)结构
    gt=global table
    ls=local structure
    lw=local work area *本地工作空间(只存一条数据)
    lt=local table

    五、语法规则

    5.1 输入输出
    write: / '输出1','输出2'.
    
    5.2 逻辑判断<> 非
    5.3 流程控制
    1. IF 指令
      语法:
            IF  <Condition1>.
              <Statement 1 >
            ELSEIF  <Condition2>.
              <Statement 2>
            …..
            ELSE.
              <else Statement >
            ENDIF.
    
    2. CASE 指令
    语法:
           CASE  <变量f>.
             WHEN <Value1>.
                <Statement1>
             ….
             WHEN OTHERS.
                <others Statement>
           ENDCASE.
    
    1.DO循环
      语法:
           DO  [n TIMES]  [VARYING  <f>  FROM  <start>  TO  <end>.
              <loop block>
           ENDDO.
    2.WHILE循环
      语法:
           WHILE  <Condition>.
              <Statement Block>
           ENDWHILE
    3.CONTINUE关键字
    4.CHECK <Condition>
      CHECK 之后条件成立才继续往下执行循环
        Example: CHECK  SY-INDEX  BETWEEN  2  AND  4
    5.EXIT关键字
    6. 无限循环(配合EXIT使用)
      DO.
        <Statement Block>
      ENDDO.
    
    
    5.4 定义内表结构和创建表
    *定义表结构
    data: begin of ls_resb,
          matnr type mara-matnr, " MARA.物料编号"
          menge type mseg-menge, " MSEG.数量"
          end of ls_resb.
    
    *创建表(像某结构的表)
    data: lt_resb like table of ls_resb.
    
    *定义多个内表
    data: wa_mara like table of mara,
          wa_resb like table of resb,
          wa_mard like table of mard,
          wa_mseg like table of mseg,
          wa_makt like table of makt.
    
    5.5 SQL
    *TABLES指令 用于声明程序中所使用的tables
       语法: TABLES  :  table.
    
    #start增删查改--------------------------------------------------------------#
    *APEND LINE
    语法:  APPEND  [<wa>]  TO  <itab>
    
    * insert
    
    
    *DELETE  LINES 删除Internal  Table 行
      语法: DELETE  <itab>  INDEX  <idx>
      加上删除条件:
            DELETE  <itab> [FROM <n1> TO <n2>]  [WHERE <condition>]
    
    *SELECT指令
    语法:
      SELECT  <result>  FROM  <source>  [INTO <target>] [WHERE <condition>]
        [ GROUP  BY  <fields>]  [ORDER  BY  <sort order>]
    
    *MODIFY更新行
    语法:
             MODIFY  <itab>  [FROM <wa>] [INDEX <idx>] [TRANSPORTING <f1>…<f2>]
                       [WHERE <condition>] 
             TRANSPORTING  <f1> ..<f2> : 指定更新的字段名称
             示例:
                     LINE-COL1 = 4.
                     LINE-COL2 = 100.
                     MODIFY  ITAB  FROM  LINE.
                     将目前位置行以LINE的内容更新
    #end增删查改---------------------------------------------------------------#
    
    #start排序'求和'附加'汇总'读取'寻找------------------------------------------#
    *INTERNAL TABLE SORTING 
    语法: SORT  <itab>  [<order>]  [BY <f1>] ….
            [<order>] : 可分成递减(DESCENDING)和递增(ASCENDING), 空白表 ASCENDING
    
    *计算数值字段总和 
    语法: SUM
             计算得总和存在work area 中, 但只能存在 LOOP 指令中
             示例:
                      LOOP  AT  ITAB  INTO  LINE.
                        SUM.
                      ENDLOOP.
                      WRITE: /  LINE-COL1,LINE-COL2.
                      LINE-COL1 和 LINE-COL2 存数值总和
    
    *加入另一Internal Table的行(附加) 
     语法:APPEND  LINES  OF  <itab1>  [FROM <n1>] [TO <n2>]  TO  <itab2>
    
    *Collect  Line 
    在加入新行时将有相同standard key(非数值字段)的数值字段汇总
       语法: COLLECT  [<wa>  INTO]  <itab>
    
    *INTERNAL TABLE元素数据的读取
    语法:
             LOOP  AT  <itab>  [INTO <wa>] [FROM <n1> TO <n2>] [WHERE <condition>]
                <loop  expression>
             ENDLOOP.
    
    *读取INTERNAL TABLE指定位置的行
     语法: READ  TABLE  <itab>  [INTO <wa>]  INDEX  <idx>
    
    *根据字段内容寻找 
    示例: ITAB-COL1 = ‘ABC’.
          READ  TABLE  ITAB  INTO  LINE.
        找出ITAB 中 COL1 字段内容是 ABC 的行, 找到的值放入 LINE 中
        若找到 SY-SUBRC传回0, 找不到则传回4
    #end排序'求和'附加'汇总'读取'寻找--------------------------------------------#
    
    5.6 模块化
    5.6.1 子程序
    *调用子程序
    PERFORM <subroutine_name>.
    *创建子程序
    FORM <subroutine_name>.
      <statements> 
    ENDFORM.
    
    5.6.1 子程序

    六、犯错纠正记录

    6.1 没有标题行
    修改loop at lt_mara.loop at lt_mara into ls_mara.

    相关文章

      网友评论

          本文标题:《ABAP学习笔记1-Andy》

          本文链接:https://www.haomeiwen.com/subject/jlpywqtx.html