SAP ABAP 系统里数据库表 dlv_systc 的用途?
ChatGPT 的回复:
在 SAP ABAP 系统中,数据库表 dlv_systc 是用于存储交货单系统条件检查的相关数据的。交货单是指在销售和分销过程中,将产品或服务从供应商转移到客户的文件。在交货单创建和处理过程中,系统需要进行一系列的条件检查,以确保交货单数据的正确性和完整性。
dlv_systc 表包含了用于交货单系统条件检查的各种规则和设置。它存储了与条件检查相关的信息,如检查的编号、检查的名称、检查的类型、检查的结果等。这些数据可以用于在交货单创建和处理过程中进行自动化的条件检查,并在需要时自动触发相关的操作和通知。
由于 dlv_systc 表存储了涉及到交货单创建和处理的重要信息,因此只有经过授权的用户才能对其进行更改和维护。开发人员可以使用 ABAP 语言访问和操作该表,以满足特定的业务需求。
这个回复不正确。笔者猜测 ChatGPT 将缩写 dlv 理解成了 SAP S/4HANA(SCM) 供应链管理模块里的交货单 - Delivery Note?
实际上,dlv_systc
这张表,描述信息 System Change Option for Software Components
,存储的是每个 ABAP software component 的可修改性(changeability)
:
这里的 DLVUNIT
,发布单元,指的就是一个个的 ABAP Software Component.
这张表里的内容如下:
ABAP 里的对象(比如 ABAP 类,ABAP Function Module,ABAP DDIC 对象) 都存储在 ABAP 开发包(package) 里。
双击这些 ABAP 开发包,就能查询到期所属的 Software Component 了:
就能看到其所属的 Software component 了:
这个表被 ABAP Function Module TR_GET_DLVUNIT_CHANGEABILITY 使用。
一个 ABAP Software Component 的可编辑性有下列 4 种情况,通过 Domain DLV_CHANGE
控制:
- F:可以被修改
- R:可以在满足限制条件下被修改
- E:不能被修改,可以被增强
- N:不能被修改,不能被增强
在 cl_r3standard_persistence 的 obj_is_enhanceable
方法里,有些 ABAP 系统核心的 Software Component 被硬编码成不可修改,以避免 ABAP 开发人员低质量的增强影响整个系统的运行,如下图所示: