事务代码
SE11:创建数据库表
SE38:创建报表程序
SE93:创建事务代码
SMW0:上传文件模板
i:是数值数据类型 c:是文本数据类型 f:是小数数据类型 d:是日期数据类型 t:是时间数据类型 string:是字符串数据类型 n:是数值文本数据类型
DATA语句
DATA LH TYPE C . “代码说明:DATA是创建变量的语句,LH是变量名,TYPE接数据类型 C是文本数据类型"
DATA ZX LIKE LH. “代码说明:DATA是创建变量的语句,ZX是变量名,LIKE接数据变量 LH是已经定义好的数据变量”
DATA LH TYPE i VALUE 123. “代码说明:DATA是创建变量的语句,LH是变量名,TYPE接数据类型 i:数值数据类型 ,VALUE:设置初始值”
DATA LH TYPE n LENGTH 4. “代码说明:DATA是创建变量的语句,LH是变量名,TYPE接数据类型 n:数值文本数据类型 , LENGTH:设置长度”
DATA LH TYPE p DECIMALS 3. "代码说明:DATA是创建变量的语句,LH是变量名, TYPE接数据类型 p:小数数据类型,DECIMALS:设置小数位数”
ABAP 基本语法
1.ABAP程序使用句号“.”表示一个语句的结束,如:WRITE gv_val.
2.代码的注释方法分为下列两种。
a)符号 “*” 为行注释。 如:*This line is cmment
b)符号 “ “ ” 为右注释。 如: WRITE gv_val. "Part ofline is comment.
3.字符串使用引号 ‘ ‘ 显示。 如:gv_val = 'Enioy ABAP'
G:是全局 L:是局部 V:是字段 S:是结构 T:是内表。
数字运算符:
加法:lv_LH3 = lv_LH1 + lv_LH2 .
减法:lv_LH3 = lv_LH1 - lv_LH2 .
乘法:lv_LH3 = lv_LH1 * lv_LH2 .
除法:lv_LH3 = lv_LH1 / lv_LH2 .
ABS函数:
ABS函数:返回绝对值
lv_zx1 = '-100'.
lv_zx = abs( lv_zx1 ).
FLTP_CHAR_CONVERSION函数:将浮点型转换成字符型
lv_f = '1.9'.
CALL FUNCTION 'FLTP_CHAR_CONVERSION'
EXPORTING
decim = 3
input = lv_f
IMPORTING
flstr = lv_str.
系统日期/时间:
sy-datum:系统日期
sy-uzeit:系统时间
WRITE: / sy-datum, sy-uzeit.
学习日期:2023年11月15日
查找指定字符串:
FIND:查找字符串中指定的字符,查找成功SY-SUBRC返回值为0
DATA: lv_string TYPE string VALUE 'ABAP'.
FIND 'P' IN lv_string.
WRITE: / sy-subrc.
替换指定字符串:
REPLACE:替换字符串中指定的字符(替换功能只替换一次)
REPLACE 'ABAP' IN lv_string WITH 'ABCD'.
WRITE:lv_string.
转换字符串大小写字母:
TRANSLATE:转换字符串的大小写字母
TRANSLATE lv_string TO LOWER CASE. 转换为小写
WRITE: / lv_string.
TRANSLATE lv_string TO UPPER CASE. 转换为大写
WRITE: / lv_string.
拼接字符串:
CONCATENATE:拼接字符串
CONCATENATE 'ABAP-' lv_string INTO lv_string. 方法一
WRITE: / lv_string.
lv_string = lv_string && '-ABAP'. 方法二
WRITE: / lv_string.
拆分字符串:
SPLIT:拆分字符串
DATA: lv_string1 TYPE string,
lv_string2 TYPE string,
lv_string3 TYPE string.
SPLIT lv_string AT '-' INTO lv_string1 lv_string2 lv_string3.
WRITE: / lv_string1, lv_string2, lv_string3.
学习日期:2023年11月16日
撇符号(`):
grave:(`)撇符号,能够识别字符串中包含的所有空格
DATA: lv_lh TYPE c LENGTH 20 VALUE 'LUOLH',
lv_lh1 TYPE c LENGTH 20,
lv_lh2 TYPE c LENGTH 20.
lv_lh1 = 'ABC ' && lv_lh. "ABCLUOLH
lv_lh2 = `ABC ` && lv_lh. "ABC LUOLH
WRITE: / lv_lh1, / , lv_lh2.
自定义数据类型:
TYPES ty_lh TYPE c LENGTH 10. “代码说明:TYPES是定义数据类型的语句,ty_lh 是数据类型名,TYPE接数据类型 C是文本数据类型,LENGTH后面接长度值"
DATA lv_lh3 TYPE ty_lh.
lv_lh3 = 'ASDFGHJKL;'.
WRITE: / lv_lh3.
定义结构类型:
TYPES: BEGIN OF ty_luo,
lh1 TYPE c LENGTH 5,
lh2 TYPE c LENGTH 5,
lh3 TYPE ty_lh,
END OF ty_luo.
“代码说明:TYPES是定义数据类型的语句,BEGIN OF是结构类型的开始,ty_luo 是结构类型名 ”
DATA ls_lh TYPE ty_luo.
ls_lh-lh1 = 'HELLO'.
ls_lh-lh2 = 'WORLD'.
ls_lh-lh3 = '!'.
WRITE: / ls_lh-lh1, ls_lh-lh2, ls_lh-lh3.
学习日期:2023年11月17日
嵌套结构体类型:
INCLUDE:嵌套结构体类型
TYPES BEGIN OF ty_luolh.
* INCLUDE TYPE ty_luo.
INCLUDE STRUCTURE ls_lh.
TYPES: lh4 TYPE i,
END OF ty_luolh.
类型用途:
数据库表:永久存数据的表
数据元素:用于创建变量
结构体:用于创建结构
表类型:用于创建内表
用数据库表创建结构和内表:
DATA: ls_sflight TYPE sflight.(结构)
DATA: lt_sflight TYPE STANDARD TABLE OF sflight.(有TABLE OF 就是内表,没有TABLE OF 就是结构)
静态变量:
静态变量在子程序块(FORM,FUNCTION)中将持续保存直到程序结束。
DO 3 TIMES.
PERFORM call_function.
ENDDO.
FORM call_function .
DATA: lv_LLH TYPE i.
STATICS: lv_YZX TYPE i.
lv_LLH = lv_llh + 1.
lv_YZX = lv_YZX + 1.
WRITE: / lv_LLH, lv_YZX.
ENDFORM.
SELECT语法:查询
DATA: lt_scarr TYPE STANDARD TABLE OF scarr,
ls_scarr TYPE scarr.
SELECT * FROM scarr INTO TABLE lt_scarr. “代码说明:SELECT是查询(数据库表)语句、后面接字段,* 代表所有字段, from(从)后面接数据库表名,into(到)table后面接内表 ”
LOOP AT lt_scarr INTO ls_scarr.
WRITE:/ ls_scarr-carrid,ls_scarr-carrname.
ENDLOOP.
查询一条数据:SINGLE语法
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF ls_sflight
FROM sflight.
WRITE: / ls_sflight-carrid, ls_sflight-connid.
AS(别名)小名
INTO(到)语法
查询多条数据放入内表:into(到)table后面接内表
查询单条数据放入结构:into(到)后面接结构
查询个别字段放入变量:into(到)后面接变量
FROM(从)语法,后面接数据库表
JOIN语句:关联查询
TYPES:BEGIN OF t_str,
carrid TYPE sflight-carrid,
carrname TYPE scarr-carrname,
END OF t_str.
DATA: gs_str TYPE t_str.
SELECT SINGLE a~carrid b~carrname
INTO CORRESPONDING FIELDS OF gs_str
FROM sflight AS a
INNER JOIN scarr AS b
ON a~carrid EQ b~carrid
WHERE a~carrid = 'AA'.
代码说明:SELECT语法后面接字段,SINGLE代表查询一条数据,INTO(到)后面接(结构)变量,FROM(从)后面接数据库表,AS后面接小名,INNER JOIN关联2张数据库表,ON后面接关联条件,WHERE后面接筛选条件。
WRITE:gs_str-carrid,gs_str-carrname.
JOIN语句包括INNER JOIN和OUTER JOIN,其中INNER JOIN可以简写为JOIN,OUTER JOIN可以简单分为LEFT JOIN和RIGHT JOIN
INNER JOIN:关联两张数据库表时取两张表同时都包含的数据;
OUTER JOIN:关联两张数据库表时取主表的所有数据;
UP TO n ROWS:限制查询n条数据
EQ := NE :<>
LT : < LE : <=
GT : > GE : >=
BETWEEN 1 AND 10 ,取1到10的数据
LIKE 'ABC%',取ABC开头的数据
IN (‘北京’,‘上海’),取等于北京或者上海的数据
WHERE (gs_where) , 动态条件
FOR ALL ENTRIES IN (内表),关联数据库表和内表取值
INSERT语法:插入
插入一条数据:INSERT + 数据库表 + FROM + 结构
插入多条数据:INSERT + 数据库表 + FROM TABLE + 内表
UPDATE语法:修改
修改一条数据:UPDATE + 数据库表 + FROM + 结构
修改多条数据:UPDATE + 数据库表 + FROM TABLE + 内表
修改指定字段:UPDATE + 数据库表 + SET + 字段 + WHERE + 条件
MODIFY语法:插入+修改
更新一条数据:MODIFY + 数据库表 + FROM + 结构
更新多条数据:MODIFY + 数据库表 + FROM TABLE + 内表
DELETE语法:删除
删除一条数据:DELETE + 数据库表 + FROM + 结构
删除多条数据:DELETE + 数据库表 + FROM TABLE + 内表
按条件删除:DELETE FROM + 数据库表 + WHERE + 条件
NATIVE SQL
可以实现复杂的SQL语句
DATA: gv_carrid LIKE sflight-carrid VALUE 'AA',
gv_connid LIKE sflight-connid.
EXEC SQL.
SELECT A.CONNID
INTO :GV_CONNID
FROM SFLIGHT A
WHERE A.MANDT = :SY-MANDT
AND A.CARRID = :GV_CARRID
ENDEXEC.
WRITE gv_connid.
子程序
PERFORM call_function. “调用call_function子程序”
FORM call_function . “实现call_function 子程序”
DATA: lv_LLH TYPE i.
STATICS: lv_YZX TYPE i.
lv_LLH = lv_llh + 1.
lv_YZX = lv_YZX + 1.
WRITE: / lv_LLH, lv_YZX.
ENDFORM.
子程序参数:USING(传入参数),CHANGING(传入,传出参数)
调用子程序:
DATA: lv_lh TYPE c LENGTH 20.
lv_lh = 'CALL_FUNCTION'.
PERFORM (lv_lh) IN PROGRAM ztest_5 IF FOUND.
PERFORM call_function(ztest_5) IF FOUND .
变量是通过数据类型创建的
结构变量是通过结构数据类型创建的
内表变量是通过表类型创建的或者结构类型创建
变量用于存储数据的
数据类型用于定义
批导
模板上传
步骤一:
步骤二:
步骤三:
步骤四: