目录:
一、事务代码
二、快捷键
三、关键字
四、命名规则
五、语法规则
六、犯错纠正记录
一、事务代码(常用的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
三、关键字
四、命名规则
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.
网友评论