资讯专栏INFORMATION COLUMN

ABAP开发知识点整理

LancerComet / 1341人阅读

摘要:前提是类型可以转换成类型的字段,否则会发生或者的错误。程序有激活时自动执行的特点。读取数据库表所有字段时使用。这种表在语言里称为内表。语句用于删除重复值。

绪论

ABAP工作区的主要 T-CODE (4)

T-CODE描述说明
SE09传输组织释放/创建/修改CTS(变更传输系统)的开发工具
SE11ABAP数据字典创建如数据表,视图,结构体等对象的开发工具
SE16数据库数据编辑器创建/修改/查询数据库表数据的开发工具
SE21包编辑器创建/修改/查询包的开发工具
SE24类编辑器创建/修改/查询类的开发工具
SE37函数编辑器创建/修改/查询函数的开发工具
SE38ABAP编辑器创建/修改/查询ABAP程序的开发工具
SE41菜单制作器给程序创建GUI状态
SE43维护局部菜单创建/修改/查询SAP菜单的开发工具
SE80对象导航器集合了所有与ABAP开发相关的工作区
SE91建立消息类和消息创建/修改/查询消息类的开发工具
SE93维护事务码创建/修改/查询事务码的开发工具
SM04用户监视监视用户的活动
SM12锁查看与维护锁定对象/表条目冻结说明

第1章 包与变更传输系统(CTS)

第2章 数据类型

2.1 概要

2.1.6 ABAP命名规则(23)

  • 全局变量G 局部变量L,字段V/D 结构体S 常量C 内表T 类O RANGE(范围)R 参照变量(数据对象)F 例:GV_CARRID

2.2 ABAP基本数据类型

基本数据类型(30)

初始长度可变长度初始值意义
数字型
I440整数(自然数)
F880浮点型
P81-160Packed number 整数=16-小数指定
字符型
C11~65535‘……’文本字段(alphanumeric characters)
D88‘00000000’日期字段(样式:YYYYMMDD)
N11~65535‘0……0’数字文本字段(数字型字符串)有前导0
T66‘000000’(样式:HHMMSS)
十六进制类型
X11~65535X’0……0’十六进制字段

系统变量sy-datum(系统)和sy-datlo(本地)的区别(37)

  • 系统基本信息自动会保存到SYST结构体中,用户本地profile信息TIMEZONE会保存到系统变量SY-ZONLO中。

String相关命令(39)

①FIND

  • ABAP字段中存在字段B时,SY-SUBRC返回值为0
gv_str = "ABAP".gv_chr = "B".FIND gv_chr IN gv_str.IF SY-SUBRC EQ 0.  WRITE "B found".ENDIF.

结果:B found

②REPLACE

将ABAP变换成BBAP

gv_str = "ABAP".gv_chr = "BBAP".REPLACE "ABAP" IN gv_str WITH gv_chr.WRITE / gv_str.

结果:BBAP

③TRANSLATE

  • 大小写字母转换LOWER CASE / UPPER CASE,ABAP→abap / abap→ABAP
gv_str = "ABAP".TRANSLATE gv_str TO LOWER CASE.WRITE / gv_str.

结果:abap

④SHIFT

  • ABAP依次向左移动
gv_str = "ABAP".SHIFT gv_str.WRITE / gv_str.

结果: BAP

⑤CONDENSE
  • 去空格并向左对齐,经常与NO-GAPS一起使用去掉空格
gv_str = "AB AP".CONDENSE gv_str NO-GAPS.WRITE / gv_str.

结果:ABAP

⑥OVERLAY

  • 填充Character的空格,但不覆盖原来字符
gv_str = " B P".gv_chr = "AAAA".OVERLAY gv_str WITH gv_chr.WRITE / gv_str.

结果:ABAP

⑦CONCATENATE

  • AB+AP连接成ABAP
gv_str = "AB".gv_chr = "AP".CONCATENATE gv_str gv_chr INTO gv_str.WRITE / gv_str.

结果:ABAP

⑧SPLIT

  • 以字符C为中心分为AB与AP
GS_STR = "ABCAP".SPLIT gv_str AT "C" INTO gv_str gv_chr.WRITE / gv_str gv_chr.

结果:AB AP

单引号“ ’ ”与grave“ ` ”的区别(39)

DATA gv_char(32) TYPE c.gv_char = "This is a".CONCATENATE gv_char "text   " INTO gv_char SEPARATED BY space.* 结果 => ""This is a text""CONCATENATE gv_char `text   ` INTO gv_char SEPARATED BY space.* 结果 => ""This is a text   ""
  • 若使用grave(`),则能够识别字符串中包含的所有空格。
  • SEPARATED BY space 加空格

数据字典类型与ABAP基本数据类型

  • 程序中经常使用的ABAP数据字典类型(52) 面试 很难
ABAP数据字典类型ABAP基本数据类型
ACCPN(6)
CHAR nC(n)
CLNTC(3)
CUKYC(5)
CURR n,mP((n+1)/2 DECIMAL m
DEC n,mP((n+1)/2 DECIMAL m
DATSD(8)
FLTPF(8)
INT1X(1)
INT2X(2)
INT4X(4)
LANGC(1)
NUMC nN(n)
PRECX(2)
QUAN n,mP((n+1)/2 DECIMAL m
RAW nX(n)
TIMST(6)
UNITC(n)
VARC nC(n)
LRAWX(n)
LCHRC(n)
STRINGSTRING

2.5 赋值

2.5.1 给变量赋值(52)

  • 定义变量时可以通过 VALUE 语句赋初始值,实际处理数据的程序中使用 MOVEWRITE TO 语句给变量赋值。
gv_char1 = gv_char.MOVE gv_char TO gv_char1.MOVE-CORRESPONDING gs_string TO gs_string1.WRITE gv_char TO gv_char1(I).
  • MOVE TO 语句与 gv_char1 = gv_char. 中的 Equal(=) 语句相同。赋值字符串字段值时可以使用 MOVE-CORRESPONDING 语句。这时 gs_stringgs_string1 的字段名可以不相同。
  • MOVE-CORRESPONDING 语句还经常用于不同结构体之间赋值,其特点是找到名字相同的字段名进行赋值。当字段名及顺序不同的结构体之间相互赋值时,如果用 MOVE 语句,则会按顺序进行赋值,因此要使用 MOVE-CORRESPONDING 语句。 MOVE 语句还可以用于类型转换(Type Conversions),即 gs_string 的数据类型会转换成 gs_string1 类型。
  • 在ABAP语言中除了类型 D(Date) 与类型 T(Time) 外都可以互相转换类型,一共有64种形态的类型可以相互转换。
  • WRITE 语句主要有两种用法。一种是输出报表(Output to a list),另一种是变量赋值(Output to a field or internal Table)。变量赋值时一般用 WRITE TO 语句,将数据对象 gv_char 的值转换成类型C后赋给 gv_char1 。前提是 gv_char 类型可以转换成C类型的字段,否则会发生 Syntax或者runtime error的错误。后面 (I) 里可以使用除了 UNDERNO-GAP 以外的所有编辑格式选项。关于 (I) 具体参数可以在 HELP 中查询。(摁F1)
  • 下面是关于 MOVE-CORRESPONDING 语句的代码,其中结构体 GS_RENGS_INFO 由不同字段构成。将结构体 GS_REN 赋值给结构体 GS_INFO 时,需要多次使用 MOVE 语句才能实现。但是如果使用 MOVE-CORRESPONDING 语句,则使用一次即可实现。
DATA: BEGIN OF gs_ren,  		name(20)	VALUE "Kim Sung Joon",  		country(10) VALUE "China",  		city(20)	VALUE "Beijing",  	  END OF gs_ren,  	  	  BEGIN OF gs_info,  		name(20),  		city(20),  		phone(10)	VALUE "1521001234",  	  END OF gs_info.MOVE-CORRESPONDING gs_ren TO gs_info.WRITE: / gs_info-name,		 gs_info-city,		 gs_info-phone.

结果:

Kim Sung Joon     Beijing     1521001234

第3章 OPEN SQL 与 NATIVE SQL

3.1 概要

3.1.4 OPEN SQL 与 NATIVE SQL

1. OPEN SQL

  • OPEN SQL 是由创建数据库数据的 ABAP 命令构成的,在不同的 DBMS(数据库管理系统)环境下其语法相同。 OPEN SQL 不能使用 DDL、DCL,只能使用类似于 SELECT 语句的 DML 语言。另外,还可以使用本地缓冲器,并且比 NATIVE SQL 的使用方法简单。ABAP 程序有激活时自动执行 Syntax Check 的特点。

2. NATIVE SQL

  • NATIVE SQL 语言可以直接连接到数据库使用 DML、DDL 语言。

3.1.6 OPEN SQL 概要

OPEN SQL 命令语句(62)

关键字功能
SELECT从数据库表中读取数据
INSERT往数据库表中追加数据
UPDATE修改数据库表的数据
MODIFY执行INSERT + UPDATE 功能
UPDATE:数据库表中已存在此数据时(以 key 值区分是否存在)
INSERT:数据库表中不存在此数据时(以 key 值区分是否存在)
DELETE删除数据库表数据

3.2 OPEN SQL ——读取数据

读取数据的命令(62)

语句功能
SELECT < result >SELECT 语句可以罗列数据库表字段,读取一件或多件数据
INTO < target >INTO 语句用来指定查询出来的数据存储地即变量,然后在程序中使用此变量
FROM < source >FROM 语句用来指定要查询的数据库表。可以写在 INTO 语句前后
WHERE < cond >可以限制要查询数据的条件
GROUP BY < fidleds >用于分组查询数据。例如,分组求合计时经常使用 GROUP BY语句
HAVING < cond >HAVING 是用于限制 GROUP BY 条件的语句。类似于 SELECT 的 WHERE 语句
ORDER BY < fidleds >用于排序(sort)查询的数据

3.2.1 SELECT 语句

  • SELECT 语句

2. 一条数据(63)

  • 从数据库中取得一条数据时使用 SINGLE 语句。使用此语句只会取得一条数据,因此要正确给出要查询数据的条件,即在 WHERE 条件里追加所有 key 值,当没有指出所有 key 值时,会返回多条中的任意一条,会导致读取的数据与预期结果不同。读取数据库表所有字段时使用 *。
  • 如果系统找到一个完全符合指定条件的行, SY-SUBRC 返回0,否则返回4。
SELECT SINGLE MATNR INTO LV_MATNR/GS_DATA-MATNR FROM WHERE VBELN = LV_VBELN/GS_DATA-VBELN.

3. Several Line(63)

  • 当取得多条数据时 SELECT 结果会保存到内部定义的表中。这种表在ABAP语言里称为内表(Internal Table)。 DISTINCT 语句用于删除重复值。
SELECT [DISTINCT] MATNR WHERE 

4. AS(别名)(64)

  • 利用 AS 语句可以给字段指定别名。
SELECT MATNR AS MATNR1

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121064.html

相关文章

  • SAP OData编程指南

    摘要:目前被广泛用于和的众多应用中,以及和一些正在开发的新一代云产品中。年月时,我和德国一位负责的同事就这个话题在半小时的电话会议里产生了争执。德国同事看了之后,同意了我的意见。和微信集成系列教程这个系列教程里,和微信的交互,使用了,使用了。 OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用。我的文章标题前加上SAP的前缀...

    X1nFLY 评论0 收藏0
  • SAP OData编程指南

    摘要:目前被广泛用于和的众多应用中,以及和一些正在开发的新一代云产品中。年月时,我和德国一位负责的同事就这个话题在半小时的电话会议里产生了争执。德国同事看了之后,同意了我的意见。和微信集成系列教程这个系列教程里,和微信的交互,使用了,使用了。 OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用。我的文章标题前加上SAP的前缀...

    wanghui 评论0 收藏0
  • #私藏项目实操分享# 使用 JavaScript 上传 PDF 和 Excel 等二进制文件到 AB

    摘要:这是年的第篇文章,也是汪子熙公众号总共第篇原创文章。使用通过格式发送和文件到服务器关于格式的详细说明,参考开发社区和的文档我在前文例子的基础上稍作修改在里使用两个类型为的标签,分别上传和文件用来测试的本地文件,大小为字节。 这是 Jerry 2021 年的第 71 篇文章,也是汪子熙公众号总共第 348 篇原创文章。 Jerry 之前发布过一篇文章 不使用任何框架,手写纯 Jav...

    peixn 评论0 收藏0
  • ABAP开发人员未来应该学些什么

    2007年1月我大学毕业进入SAP Chengdu从事开发工作,到今天已经整整11年了。 这张图在ABAP开发圈子里曾广为流传: showImg(https://segmentfault.com/img/remote/1460000013278194); 为了避免这种窘境发生在ABAPer身上,我们应该做点什么呢? 2017年刚开始的时候,我曾经在SAP community写过一篇文章: 作为一个...

    pakolagij 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<