美文网首页
《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