
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.