ABAP 中获取特性内部编号 ATINN 并写入 AUSP 的最佳实践


在 SAP ABAP 中,AUSP-ATINN 是特性内部编号(Internal Characteristic Number),它不是手工"给"的值,而是通过特性名称查出来的。常见获取方式如下:

1. 通过特性名称查询 ATINN

最标准的方式是查表 CABN(特性主表):

DATA: lv_atnam TYPE cabn-atnam VALUE '你的特性名',
      lv_atinn TYPE ausp-atinn.

SELECT SINGLE atinn FROM cabn INTO lv_atinn
  WHERE atnam = lv_atnam.

如果特性有多个类别/类类型,CABN 中同一 ATNAM 可能对应多条记录,需要结合 ATKLA(特性组)或 KLART 等条件精确筛选:

SELECT SINGLE atinn FROM cabn INTO lv_atinn
  WHERE atnam = lv_atnam
    AND atkla = lv_atkla.   "特性组

2. 通过函数模块获取

SAP 提供了一些 FM 可以按名称取 ATINN,例如:

  • CLAP_DDB_GET_ALLOCATION 等分类相关 FM
  • 更常用的是直接用 CABN 查询,简单可靠

3. 写入 AUSP 时的典型用法

AUSP 是特性值表,插入/更新时 ATINN 必须来自 CABN,不能随意赋值:

DATA: ls_ausp TYPE ausp.

ls_ausp-mandt = sy-mandt.
ls_ausp-objek = lv_objek.      "对象号,如物料/批次的对象号
ls_ausp-atinn = lv_atinn.      "从 CABN 查到的特性内部编号
ls_ausp-atwrt = lv_value.      "特性值
ls_ausp-atflv = ' '.           "值是否为空标志
INSERT ausp FROM ls_ausp.

注意事项

  1. ATINN 是系统内部编号,不同系统(开发/测试/生产)中同一特性的 ATINN 可能不同,绝对不能硬编码,必须按 ATNAM 动态查询。
  2. CABN 中 ATNAM 大小写敏感(一般大写),查询前可用 TRANSLATE ... TO UPPER CASE。
  3. 对象号 OBJEK 也不是随便给的,需要根据对象类型(物料、批次、设备等)通过 CLFM 相关逻辑或 OBJNR 规则生成,通常用 CLAP_DDB_... 系列 FM 或 CUOB_GET_NUMBER 获取。
  4. 如果只是读特性值,建议用 CLAF_CLASSIFICATION_DATA 或 CLFM 相关 API,而不是直接操作 AUSP。

如果你是想手工在 SE16 里给 AUSP-ATINN 赋值,那是不行的——它是内部编号,必须通过 CABN 关联获得。

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
下一篇:事务代码记录
评论列表

发表评论

评论内容
昵称:
验证码:
验证码
关联文章

ABAP 中获取特性内部编号 ATINN 并写入 AUSP 的最佳实践
SAP 物料特性读取全流程:从 CABN 到 CAWNT 的查询步骤
C#中的反射:获取类直接实现的接口并排除继承的上级接口
如何在 .NET Core ASP.NET中中指定端口号启动:最佳实践与动态配置
C#基础系列-过滤器与特性
在 Vue 3 中,嵌套数据源且需要过滤内部数据源
SAP ABAP 程序在 DEV 与 QAS 环境间的版本对比三大官方方法
ABAP 数据字典 DDIC 详解:从 Domain 到透明表、搜索帮助与锁对象
C# txt文本文件的读取与写入,
SQLServer数据库备份 [实践]
SAP ABAP 数据类型和常量基础
SAP S4Hana 物料编号区间配置 MMNR
SAP S/4HANA MM模块培训 28 - 采购订单分类审批:特性与审批类配置
CEFSharp致性JS脚本并获取返回数据
如何在 SQL Server 中按照修改时间排序获取最新更改的表和存储过程
跨账套获取数据
SAP S/4HANA MM模块培训 36 - 凭证编号分配:物料、会计与预留号码范围
ABAP Open SQL 语法整理:SELECT、JOIN、增删改与常见坑
SAP S/4HANA MM模块培训 43 - 制造商零件编号MPN:主数据、采购控制与AMPL
ABAP基础语法:变量、系统变量、数据类型与结构体变量详解