物料批次特性值

 

MARA-MATNR = INOB-OBJEK

INOB-CUOBJ = KSSK-CLINT

KSSK-OBJEK = AUSP-OBJEK

 

物料特性可以从MM03分类  批次特性MSC3N中查看

 

类的T-CODE: CL03

特性T-CODE: CT04

特性可以通过下面的BAPI来进行批量维护:

BAPI_CHARACT_CREATE
BAPI_CHARACT_CHANGE
BAPI_CHARACT_DELETE
BAPI_CHARACT_GETDETAIL

特性分配给物料之后 ,如果要维护物料的特性值,会用到下面的BAPI函数

BAPI_OBJCL_GETDETAIL
BAPI_OBJCL_CHANGE

先用BAPI_OBJCL_GETDETAIL取得到物料的类下面的所有特性值,然后修改特性值,最后用BAPI_OBJCL_CHANGE写回去。

CALL FUNCTION ‘BAPI_OBJCL_GETDETAIL’
  EXPORTING
    objectkey              = 物料号
    objecttable            = ‘MARA’
    classnum               = 类别
    classtype              = 类别种类
  tables
    allocvaluesnum         = 数值型特性值
    allocvalueschar        = 字符型特性值
    allocvaluescurr        = 货币型特性值
    return                 = 返回值
          .

对于QM的批次特性来说,质检对每个批次检验结果回写到批次特性值中。同样可以用下面的。

BAPI_OBJCL_GETDETAIL
BAPI_OBJCL_CHANGE

但是调用BAPI_OBJCL_GETDETAIL的时候参数需要用另外的function取得:

CALL FUNCTION ‘VB_BATCH_2_CLASS_OBJECT’
  EXPORTING
    i_matnr       = 物料号
    i_charg       = 批次号
    I_WERKS       = 工厂
  IMPORTING
    E_OBJEK       = 对应objectkey
    E_OBTAB       = 对应objecttable
    E_KLART       = 对应classtype
    E_CLASS       = 对应classnum
          .

批次特性的T-CODE: MSC3N

 

 

 charact = ‘ZZYS’.“颜色
    perform  get_charg_type
    using it_mseg-matnr  it_mseg-charg it_mseg-werks  charact
    changing it_mseg-z_color.

form  get_charg_type
  using  matnr type matnr
         charg type charg_d
         werks type  werks_d
        charact type char30
  changing rtnstr type char30.

  data:r_e_objek type objnum,
       r_e_obtab type tabelle,
       r_e_klart type klassenart,
       r_e_class type klasse_d.

  data: allocvaluesnum type standard table of bapi1003_alloc_values_num with header line,
        allocvalueschar type standard table of bapi1003_alloc_values_char with header line,
        allocvaluescurr type standard table of bapi1003_alloc_values_curr with header line,
       return type standard table of bapiret2.
  call function ‘VB_BATCH_2_CLASS_OBJECT’
    exporting
      i_matnr       =  matnr
      i_charg       =  charg
      i_werks       = werks
    importing
      e_objek       = r_e_objek
      e_obtab       = r_e_obtab
      e_klart       = r_e_klart
      e_class       = r_e_class.

    call function ‘BAPI_OBJCL_GETDETAIL’
      exporting
        objectkey              = r_e_objek
        objecttable            = r_e_obtab
        classnum               = r_e_class
        classtype              = r_e_klart
*       KEYDATE                = SY-DATUM
*       UNVALUATED_CHARS       = ’ ’
*       LANGUAGE               = SY-LANGU
*     IMPORTING
*       STATUS                 =
*       STANDARDCLASS          =
      tables
        allocvaluesnum         =  allocvaluesnum
        allocvalueschar        = allocvalueschar
        allocvaluescurr        =  allocvaluescurr
        return                 =  return
              .

    loop at _allocvalueschar.
      if  allocvalueschar-charact = charact.
        rtnstr = allocvalueschar-value_char.
      endif.
    endloop.
    loop at _allocvaluesnum.
      if  allocvaluesnum-charact = charact.
        data:ps type p decimals 4.
        move allocvaluesnum-value_from to ps.
        move ps to rtnstr.
      endif.
    endloop.
endform.

 

### 关于SAP系统中批次特性更新的方法 在SAP系统中,批次特性的更新可以通过多种方式实现,具体取决于业务需求和技术环境。以下是几种常见的方法及其技术细节: #### 1. 使用自定义程序 (ABAP Code) 通过编写ABAP代码可以灵活地完成批次特性的更新操作。例如,在引用中的示例展示了如何基于条件筛选数据并更新特定字段[^2]。此代码片段的核心功能是从表 `ZTCAL` 中读取符合条件的数据,并根据物料类型 (`MTYPE`) 设置不同的标志位。 ```abap IF CK1 = 'X'. SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB FROM ZTCAL WHERE WERKS IN S_WERKS AND MATNR IN S_MATNR AND CHARG IN S_CHARG AND ERDAT IN S_ERDAT AND MTYPE = 'E'. ELSE. SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB FROM ZTCAL WHERE WERKS IN S_WERKS AND MATNR IN S_MATNR AND CHARG IN S_CHARG AND ERDAT IN S_ERDAT. ENDIF. LOOP AT ITAB. SELECT SINGLE MAKTX INTO ITAB-MAKTX FROM MAKT WHERE MATNR = ITAB-MATNR AND SPRAS = '1'. IF ITAB-MTYPE = 'E'. ITAB-LIGHT = '@5C@'. ELSE. ITAB-LIGHT = '@5B@'. ENDIF. LS_STYLE_ROW-FIELDNAME = 'CHECK'. LS_STYLE_ROW-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. APPEND LS_STYLE_ROW TO ITAB-STYLE. MODIFY ITAB. ENDLOOP. ``` 该脚本实现了以下目标: - 根据工厂 (`WERKS`)、物料编号 (`MATNR`) 和批号 (`CHARG`) 进行过滤。 - 动态设置某些字段(如 `LIGHT`),以便反映不同类型的物料状态。 - 将样式应用到表格显示中以增强用户体验。 #### 2. 利用 Dependency 自动计算 对于依赖其他特性的动态计算场景,推荐使用 **Dependency** 工具来减少手动配置的工作量。例如,当需要计算有效成分含量时,可以直接利用公式 `有效成分含量 * (1 - 含水量)` 来得出最终结果[^1]。这种方法的优势在于无需额外维护多个版本的批次属性模板,从而降低了复杂度和错误率。 #### 3. 基于标准事务码的操作流程 除了编程手段外,还可以借助 SAP 提供的标准工具完成批量修改任务。以下是几个常用的事务码及相关说明: | **事务码** | **描述** | |-------------|--------------------------------------------------------------------------| | QA32 | 查看/更改现有批次记录的信息 | | MM02 | 修改物料主数据 | | MB1A/MG04 | 创建新批次或将已有批次分配给指定订单 | 假设要调整某一批次的有效期日期或者质量检验状态,则可通过执行这些交易逐步完善所需参数。 --- ### 注意事项 无论采用哪种策略都需要考虑以下几个方面: - 数据一致性:确保源端输入准确无误; - 性能优化:针对大规模处理建议引入索引机制提高查询效率; - 安全权限管理:仅允许授权人员访问敏感区域以免造成不必要的风险; ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值