ABAP 基础知识多主键码表

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, WM, 仓库管理, 开发, 数据工程, 销售分销
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

把对象的属性用编码表达是一个数据库定义的常见方式.

编码一般存放在特定的表中.一般情况下会有一个文本表,用来存储多语言的描述. 通过外键关系表达属性的限制. 比如销售订单的类型属性 AUART ,外键编码表

TVAK ,编码文本表TVAKT

另外一种稍显不灵活的限定方式是通过域值限定. 比如销售订单的订单类别 VBTYP 使用域VBTYPL限定编码.

上述对象只有一个关键字.

还有一种特殊的编码,存在依赖关键字. 比如库位 LGORT 库位描述或其它属性依赖于关键字工厂 WERKS .详见表T001L

**本文主要介绍对于多关键字的码表管理**

**

**

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

单主关键字码表管理

> 详见链接 无峰,公众号:ABAP开发技巧 [ SAP开发框架系列之 码表框架

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485048&idx=1&sn=76518aafb6203e7e88a21fa7775c6375&chksm=cf5ddb4ef82a5258b668deae7cb3eac48564369f66f851da68d6247f1db7767126065cf7e480&token=1475635365&lang=zh_CN#rd)

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

多关键字码表管理

因为多关键字码表应用场景不多. 所以拖到现在才着手解决这个问题

管理表ZTMD006RM

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

TABLENAME码表场景

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

FIELDNAME 字段名(码表类型)

SPRAS 语言代码

REF_FIELDS 读取描述的关联字段(允许多字段,通过逗号分割)

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

FIELDTEXT 资源库对象的简短描述

CODETABLE 字段的参考表

KEYFIELDNAME 编码字段名

LANFIELDNAME 语言码字段

TXTFIELDNAME 描述字段

SQL_CONDI 附加SQL条件

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

BUFFLE_ALL 缓存方式

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

配置示例

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

应用

码表主要应用在下面两个功能中

• SE16N中附加描述

• 动态报表关键字附加描述

_**01** _

**SE16N中附加描述**

配置ZTBC051后, 字段编码内容的描述会被显示. 这里就同时应用了单主键码表及多主键码表, 确保字段描述能被显示

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

再比如,配置VBAP的地点/库位的附带描述

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

显示VBAP时 ,工厂/库位字段后会补充描述, 其中库位描述依赖于工厂字段,通过多主键码表配置

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

_**02** _

**动态报表**

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query简介

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486429&idx=1&sn=8cbab08040255baa4c7495e6e106230d&chksm=cf5dd6ebf82a5ffdf6cd2cca5ef3b3a298dcb7e3aac2b4cae5073af9c6720bf57b5544c57a49&token=1475635365&lang=zh_CN#rd)

对于存在码表的字段(单主键或多主键),允许勾选附带描述

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

输出时会补充编码的描述字段及描述内容

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

核心逻辑

核心逻辑封装在类 ZCL_COMM_MABIAO 中

缓存读取ZTMD006RM的方法

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

读取多主键码表描述的方法

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

通用码表存储

ZTMD006RD

对于单主键的编码/描述, 可以集中通过ZTMD006RD保存编码,描述内容.

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

使用通用码表后, 需要特别处理搜索帮助及外键关系. 因为外键关系或搜索帮助分配依赖于字段的长度.

为表ZTMD006RD创建视图ZDDL_ZTMD006RD .

通用码表视图(编码截尾处理,以便实现特定码长的搜索帮助)显示常见编码长度字段

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

基于该视图创建一组搜索帮助,具体应用时根据编码字段长度分配对应的搜索帮助.

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

通用外键

基于ENTITY 视图ZDDL_ZTMD006RD 创建视图 ZDDL_ZTMD006RDN 获取字段的最大编码长度作为字段的编码长度

创建一组视图

分别存放特定编码长度的字段.

ZDDL_ZTMD006R1

ZDDL_ZTMD006R2

ZDDL_ZTMD006R3

ZDDL_ZTMD006R4

……

注意:这组视图不能用ENTIT视图( ENTITY事务没有ABAP的数据字典结构对象,无法作为外键)

应用这组视图作为外键表(对应字段的长度使用特定的视图)

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

设置通用码表外键后, 在ALV中(包括SE16N)会自动带出外键检查报错

ABAP 基础知识多主键码表 - 封面图
ABAP 基础知识多主键码表 - 封面图

总结

单主键码表/多主键码表完整了码表的设置.

整合了所有在系统中的码表(编码/描述)信息.

再通过通用的函数/类方法获取指定字段的编码的描述.

可以在应用中动态设置编码的描述内容获取(动态报表,SE16N配置).

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP基础知识多主键码表.md」整理生成,仅用于内部技术分享与学习交流。