学习ABAP开发笔记

事务代码

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 .

变量是通过数据类型创建的

结构变量是通过结构数据类型创建的

内表变量是通过表类型创建的或者结构类型创建

变量用于存储数据的

数据类型用于定义

批导

模板上传

步骤一:

步骤二:

步骤三:

步骤四:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值