基础介绍
- 数据库交互的中间件:数据字典
事务代码
数据库表相关操作(侧重操作结构,查看内容可以用
SE16N
):SE11
示例表:
MARD
MARA
:物料基本信息MAKT
:物料描述,和MARA
成N(不同语言来描述):1
的关系
- 专门用于查看数据库表内容(可进行高级筛选):
SE16N
数据字典对象
数据库表 Database Table
透明表(Transparent Table):在数据库中有对应的物理表,与数据库字段一对一
- 最常用的表
存储表(Pooled Table):用来存贮控制数据(例如:屏幕顺序,程序参数或临时数据)。
- 不常用
簇表(Cluster Table):与数据库字段多对一(多个簇表对应一个数据库表)
- 最常用簇表的表:BSEG(所有财务凭证行项表)
- 一般数据量大
- 不能使用
join
视图 View
- 数据库视图 Database View
- 项目视图 Projection View
- 维护视图 Maintenance View
- 帮助视图 Help View
数据类型 Data Type
- 数据元素 Data Element:描述一个字段的用途
- 结构 Structure:为若干个字段组合,在数据库不存在数据记录
- 表类型 Table Type
- 类型池 Type Group
- 域 Domain:描述一个字段类型和长度等信息(用于设置技术信息)
- 搜索帮助 Search Help(F4)
- 锁对象 Lock Object
Domain 和 DE 的区别:
DE
是 对于在多个字段,如果指向相同的涵义,可以通过参照数据元素定义类型、长度及文本保持统一,其实现方式是通过 Pre Defined 来设置,其主要是描述一个字段的用途。
Domain
是对 字段 的技术信息,比如类型、长度(DE 的 Pre Defined 也可以做到),初次以外还有 Value Range、Output 的 Sign(是否可以接收负号)、Output 的 Lower Case 等等技术信息。
数据字典预置类型
数据字典预置类型 | ABAP 类型 | 运行长度 | 说明 |
---|---|---|---|
ACCP | N(6) | 6 | 会计结算周期 |
CHAR | C(n) | 1 - 255 | 字符 |
CLNT | C(3) | 3 | 集团、数据区域代码 |
CUKY | C(5) | 5 | 货币代码 |
**CURR(n,m) | P((n+1)/2) Decimal m | 1-17 | 货币金额 |
DATS | D(8) | 8 | 日期 |
DEC n,m | P((n+1)/2) Decimal m | n(1-31)m(1-17) | 数值计算 |
FLTP | F(8) | 18 | 浮点数 |
INT1 | X(1) | 3 | 单字节整型数 |
INT2 | X(2) | 5 | 双字节整型数 |
INT4 | X(4) | 10 | 四字节整形数 |
LANG | C(1) | 内部一位,外部2位 | 语言代码 |
LCHR | C(n) | 256-最大值 | 长字符 |
LRAW | X(n) | 256-最大值 | 长字符串 |
NUMC n | N(n) | 1-255 | 数值文字 (不可作运算) |
PREC | X(2) | 16 | 精确度 |
QUAN n,m | P((n+1)/2) Decimal m | 1-17 | 数量 用于计算(与 UNIT 成对出现) |
RAW n | X(n) | 1-255 | 位字串 |
TIMS | T(6) | 6 | 时间 |
VARC n | C(n) | 255-最大值 | 长字符 |
STRING | String | 1-最大值 | 字符串 |
RAWSTRING | Xstring | 1-最大值 | 位字符串 |
UNIT | C(n) | 2-3 | 单位 |
(透明)表
基础表
SE11
- 选择的 radiobutton 为
Database table
下面的富选择框中 Delivery and Maintenance
- Delivery Class 选择
A
- Data Browser/Table View Editing 选择
Display/Maintenance Allowed
- Delivery Class 选择
Fields
- 数据库字段第一个永远都是:
MANDT
->client
字段(除了该表的主键外,它也作为主键) - 填写对应的字段信息
- PS: 注意想要修改
Data Type
,需要点击Built-in Type
,此方法是 Pre Definded,不推荐,建议使用 DE / Domain,所以此步骤略,等到激活后再去创建 DE,作为引用。
- 数据库字段第一个永远都是:
填写完成后点选
Technological Settings
- Data Class 设置为
APPLO
- Size Category 设置为
0
- Data Class 设置为
然后 激活
- 此时会提示 Warning(数据库表有一个相应的有一个增强的类型没有指定)
- 解决:Extras - Enhancement Category - Cannot be Enhanced 即可
注意:如果建表时字段存在 QUAN 类型,那么就必须 Reference Fields 我们的 UNIT(属性必须要关联其单位,QUAN 和 UNIT 必须成对出现)
Data Element
创建 Data Element(DE 代替):当多张表中存在相同字段,例如(student 下的 sid 和 course 下的 sid),此时就要使用 DE 来对这些不同表下的相同类型数据进行规定同样的格式/类型等。
官方描述:对于在多个字段,如果指向相同的涵义,可以通过参照数据元素定义类型、长度及文本保持统一。
- Data Type - Predefined Type - 设置
Data Type
和Length
- Field Label - 该标签页是对 根据字段标签长短不同 而 显示不同的文本
- PS:第二种快捷创建方式,在创建表结构填写 DE 时,可以直接输入自己想要创建的 DE(此 DE 不存在,所以会直接跳转到创建 DE 界面)。
创建 Domain
对于多个不同涵义的数据元素,有时共享相同的类型及长度,可以通过域的定义,减少数据量
- 创建 DE 后,我们是在 DE 下又进行了 预定义(Pre Defined)(也就是我们的第七步的操作),这一步我们是将预定义操作改为了创建 Domain 操作。
- 在创建 DE 界面时选择 Domain,输入非已存在名称后双击创建即可
- Domain 创建页面
PS: 注意不论是 Domain、DE、数据库表,都需要 激活 才能使用
关联 外键
查看外键:
数据表内容的维护
查看/维护数据库表主要有 3 个路径
SE11
-> contents 查看表内容,默认为单条修改SE16N
查看表内容,最好不在此事务代码下进行修改(如果是去让用户使用SE16N
来对表的数据进行维护时,那么用户有了SE16N
的事务代码权限,他可以修改其他的任意表,这是很危险的,所以不建议使用该方法,也就有了第三种方案,让用户去维护特定视图。SM30
(数据库表维护代码) 通过批量维护视图查看表内容,需要通过generator
生成
注意:如果我们已经创建了视图,然后又对表的结构进行了修改,那么需要删掉视图,并重新创建视图。
使用 DE 的原因(为什么不直接在创建表时使用 Pre Defined)?
在创建表时,如果我们使用的是 Pre Defined,而没有使用 DE,那么就会如上图所示,没有使用 DE 的 字段信息是无法携带过来的,后续相关操作也会很麻烦,所以这也是为什么使用 DE 的原因。
自定义事务
用户需求:输入指定 T-code,可以直接进入 maintain 界面。
SE93
:创建事务代码 的 事务代码- 可以将 T-code 设为 数据库名称即可
- 理解自定义事务:其实就是去配置:输入我们自定义的 T-code 后,让系统自动执行指定的操作达到指定的效果(手动配置当系统访问某界面,在某控件上输入某值)
如何获取 Name of screen field
视图
创建视图