ABAP 更改MSC2N中批次的特证值

该篇博客详细介绍了如何在SAP系统中进行批次物料的管理,包括调用函数'CONVERSION_EXIT_MATN1_INPUT'进行物料号转换,使用'VB_BATCH_2_CLASS_OBJECT'获取批次分类对象,设置分类值和分配,并通过'BAPI_BATCH_SAVE_REPLICA'保存更改。内容涉及SAP批次分类、特征值设定及事务处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

DATA:lv_matnr            TYPE matnr.
DATA:lv_material         TYPE bapibatchkey-material,
     lv_batch            TYPE bapibatchkey-batch,
     lv_plant            TYPE bapibatchkey-plant,
     lv_batchattributes  TYPE bapibatchatt,
     lv_batchattributesx TYPE bapibatchattx.
DATA:lt_return              TYPE TABLE OF bapiret2,
     ls_return              TYPE bapiret2,
     lt_classvaluationschar TYPE TABLE OF bapi3060_valuation_char,
     ls_classvaluationschar TYPE bapi3060_valuation_char,
     lt_classvaluationsnum  TYPE TABLE OF bapi3060_valuation_num,
     ls_classvaluationsnum  TYPE bapi3060_valuation_num,
     lt_classallocations    TYPE TABLE OF bapi3060_allocation,
     ls_classallocations    TYPE bapi3060_allocation.

DATA: lv_obtab TYPE tabelle,
      lv_klart TYPE klassenart,
      lv_class TYPE klasse_d,
      lv_objek TYPE cuobn.
TYPES:BEGIN OF ty_ycharg,
        ycharg TYPE c LENGTH 30,
      END OF ty_ycharg .
DATA:lt_ycharg TYPE TABLE OF ty_ycharg,
     ls_ycharg TYPE ty_ycharg.

DATA:lv_objectkey          TYPE objnum,
     ls_batchcontrolfields TYPE bapibatchctrl
     .

lv_matnr     = '100010020002002'.
lv_batch     = '2109130003'.
lv_plant     = '1100'.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  EXPORTING
    input  = lv_matnr
  IMPORTING
    output = lv_matnr.
lv_material  = lv_matnr.
lv_objectkey = lv_matnr && lv_batch."物料+批次


"获取批次分类值
CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
  EXPORTING
    i_matnr = lv_matnr
    i_charg = lv_batch
    i_werks = lv_plant
  IMPORTING
    e_objek = lv_objek
    e_obtab = lv_obtab
    e_klart = lv_klart
    e_class = lv_class.

"分类值
ls_classallocations-class_type     = lv_klart.
ls_classallocations-classtype      = lv_klart.
ls_classallocations-objectkey      = lv_objectkey.
ls_classallocations-objecttable    = lv_obtab.
ls_classallocations-classnum       = lv_class.
ls_classallocations-standardclass  = 'X'.
APPEND ls_classallocations TO lt_classallocations .

"分类特征值
ls_classvaluationschar-class_type  = lv_klart.
ls_classvaluationschar-objectkey   = lv_objectkey.
ls_classvaluationschar-objecttable = lv_obtab.
ls_classvaluationschar-charact     = 'Z_SQZ'.
ls_classvaluationschar-value_char  = 'HANK1_TEST1'.  "特征值
APPEND ls_classvaluationschar TO lt_classvaluationschar .


CALL FUNCTION 'BAPI_BATCH_SAVE_REPLICA'
  EXPORTING
    material            = lv_material
    batch               = lv_batch
    plant               = lv_plant
  TABLES
    return              = lt_return
    classallocations    = lt_classallocations
    classvaluationschar = lt_classvaluationschar
    classvaluationsnum  = lt_classvaluationsnum.
LOOP AT lt_return INTO ls_return WHERE type = 'A' OR type = 'E'.

ENDLOOP.
IF sy-subrc EQ 0.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
  COMMIT WORK AND WAIT.
ENDIF.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值