SAP BTP 平台 ABAP 编程环境如何维护自定义 Unit Of Measure 数据库表 T006

发布时间 2023-06-26 22:52:45作者: JerryWang_汪子熙

在 ABAP On-Premises 系统下,我们可以轻易在 SAPGUI 里对 Unit of Measure 数据库表即 T006 进行维护:
[图片]

ABAP 数据库表 T006 是 SAP 系统中的一个重要数据表,它用于存储与度量单位相关的信息。在 SAP 系统中,度量单位用于表示各种物料、服务和计量单位。这些信息对于物料管理、计划、制造、销售、采购等业务流程至关重要。T006 表用于存储所有度量单位和相关的描述、转换因子等信息。根据要求,以下是关于 T006 数据库表的详细解释,以帮助您更好地理解这个表的作用。

  1. 表的组成:T006 表包含多个字段,用于存储度量单位的不同属性。以下是一些主要字段的简要说明:

    • MANDT:客户端。这是一个3位数字,用于唯一标识 SAP 系统中的客户端。

    • MSEHI:度量单位的内部表示形式。这是一个 3 位字符,用于唯一标识度量单位。

    • MSEH3:度量单位的外部表示形式。这是一个3位字符,用于在系统中显示度量单位。

    • MSEHL:度量单位的描述。这是一个长度可达 20 个字符的文本,用于描述度量单位的用途和含义。

    • MSEH6:度量单位与基本单位的转换因子。这是一个浮点数,用于表示从度量单位到基本单位的转换因子。

    • MSEH5:度量单位与其他度量单位的转换因子。这是一个浮点数,用于表示从度量单位到其他度量单位的转换因子。

    • KNUMF:度量单位与其他度量单位的比例关系。这是一个浮点数,用于表示度量单位之间的比例关系。

  2. 数据维护:T006 表中的数据由 SAP 系统进行维护。当您在 SAP 系统中创建新的度量单位时,系统会自动将相关信息添加到 T006 表中。同样,当您更新或删除现有度量单位时,系统也会自动更新 T006 表中的数据。这确保了 T006 表始终保持最新的度量单位信息。

  3. 与其他表的关联:T006 表与其他 SAP 数据库表之间存在关联。例如,物料主数据表 MARA 中的基本计量单位字段 MEINS 引用了 T006 表中的度量单位。这确保了物料主数据表中的度量单位与 T006 表中的度量单位保持一致。此外,在采购、销售、制造等业务流程中,度量单位信息还与其他关键数据库表(如 EKPO、VBAP、AFPO 等)相关联。

但是在 SAP BTP ABAP 编程环境里,如何完成类似的任务呢?

许多 Business 应用程序在其业务流程中使用测量单位。

为了标准化这些流程,需要对单位和相关维度进行集中维护。

除此之外,还存在不同单位之间转换的业务需求。

我们提供通用标准化单位、尺寸和 ISO 代码的子集,用作预交付内容。此外,还需要在客户应用程序中定义客户拥有的单位和尺寸。

使用 API CL_UOM_MAINTENANCE 对单位进行增删改查。

创建新单位的一个例子:

CLASS zcl_uom_unit_create_test DEFINITION 
  PUBLIC 
  FINAL 
  CREATE PUBLIC . 
 
  PUBLIC SECTION. 
    INTERFACES if_oo_adt_classrun. 
  PROTECTED SECTION. 
  PRIVATE SECTION. 
ENDCLASS. 
 
CLASS zcl_uom_unit_create_test IMPLEMENTATION. 
  METHOD if_oo_adt_classrun~main. 
    DATA: lo_uom  TYPE REF TO cl_uom_maintenance, 
          ls_unit TYPE cl_uom_maintenance=>ty_uom_cre_ts. 
 
    cl_uom_maintenance=>get_instance( 
    RECEIVING 
      ro_uom = lo_uom ). 
 
    ls_unit-commercial = 'ZYX'. 
    ls_unit-technical  = 'ZYX'. 
    ls_unit-denominator = '1'. 
    ls_unit-numerator = '1'. 
    ls_unit-dec_disp = '3'. 
    ls_unit-long_text = 'Create Unit'. 
    TRY. 
        lo_uom->create( EXPORTING unit_dimid  = 'AAAADL' 
                                  unit_int    = 'ZYX' 
                                  unit_cre_ts = ls_unit 
                        IMPORTING error       = DATA(error) 
                         ). 
      CATCH cx_uom_error INTO DATA(lo_error). 
        out->write( | Exception raised | ). 
        out->write( lo_error->get_text( ) ). 
    ENDTRY. 
 
  ENDMETHOD. 
ENDCLASS.