当前位置:首页 » 《关注互联网》 » 正文

ABAP开发知识点整理_戰皇Hermes的博客

14 人参与  2022年01月20日 10:35  分类 : 《关注互联网》  评论

点击全文阅读


ABAP随笔

  • 绪论
    • ABAP工作区的主要T-CODE(4)
  • 第1章 包与变更传输系统(CTS)
  • 第2章 数据类型
    • ABAP命名规则(23)
    • 基本数据类型(30)
    • 系统变量sy-datum(系统)和sy-datlo(本地)的区别(37)
    • String相关命令(39)
      • ①FIND
      • ②REPLACE
      • ③TRANSLATE
      • ④SHIFT
      • ⑤CONDENSE
      • ⑥OVERLAY
      • ⑦CONCATENATE
      • ⑧SPLIT
    • 单引号“ ’ ”与grave“ ` ”的区别(39)
    • 数据字典类型与ABAP基本数据类型
    • 给变量赋值(52)
    • OPEN SQL 命令语句(62)
    • 读取数据的命令(62)
      • 取一条数据(63)
      • Several Line(63)
      • AS(别名)(64)

绪论

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章 数据类型

ABAP命名规则(23)

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

基本数据类型(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

给变量赋值(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

OPEN SQL 命令语句(62)

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

读取数据的命令(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)查询的数据

取一条数据(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.

Several Line(63)

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

AS(别名)(64)

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

点击全文阅读


本文链接:http://zhangshiyu.com/post/33587.html

语句  数据  赋值  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1