批次特性获取:
DATA:WK_OBTAB TYPE TABELLE,
WK_KLART TYPE KLASSENART,
WK_CLASS TYPE KLASSE_D,
WK_OBJEK TYPE OBJNUM.
CALL FUNCTION BAPI_OBJCL_GETDETAIL_KEY
获取特性
CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
EXPORTING
I_MATNR = ITAB_MSEG-MATNR
I_CHARG = ITAB_MSEG-CHARG
I_WERKS = 'WG01'
IMPORTING
E_OBJEK = WK_OBJEK
E_OBTAB = WK_OBTAB
E_KLART = WK_KLART
E_CLASS = WK_CLASS.
CLEAR MCH1.
SELECT SINGLE *
FROM MCH1
WHERE MATNR = ITAB_MSEG-MATNR
AND CHARG = ITAB_MSEG-CHARG.
* SELECT SINGLE CLINT
* INTO CLINT
* FROM KSSK
* WHERE OBJEK = MCH1-CUOBJ_BM
* AND KLART = '023'.
*
* SELECT SINGLE CLASS
* INTO CLASS
* FROM KLAH
* WHERE CLINT = CLINT.
*
取特性值并填充
segment zchar
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL_KEY'
EXPORTING
CLOBJECTKEY = MCH1-CUOBJ_BM
CLASSNUM = WK_CLASS
TABLES
ALLOCVALUESNUM = ALLOCVALUESNUM
ALLOCVALUESCHAR = ALLOCVALUESCHAR
ALLOCVALUESCURR = ALLOCVALUESCURR
RETURN = RETURN.
LOOP AT ALLOCVALUESCHAR.
ZCHAR-ATNAM = ALLOCVALUESCHAR-CHARACT.
ZCHAR-ATWRT = ALLOCVALUESCHAR-VALUE_NEUTRAL.
CLEAR INT_EDIDD.
INT_EDIDD-SDATA = ZCHAR.
INT_EDIDD-SEGNAM = 'ZCHAR'.
APPEND INT_EDIDD.
ENDLOOP.
LOOP AT ALLOCVALUESNUM.
WK_MENGE = ALLOCVALUESNUM-VALUE_FROM.
ZCHAR-ATNAM = ALLOCVALUESNUM-CHARACT.
ZCHAR-ATWRT = WK_MENGE.
CONDENSE ZCHAR-ATWRT.
CLEAR INT_EDIDD.
INT_EDIDD-SDATA = ZCHAR.
INT_EDIDD-SEGNAM = 'ZCHAR'.
APPEND INT_EDIDD.
ENDLOOP.
÷
批次特性修改
SELECT SINGLE *
FROM MCHA
WHERE MATNR = GOODSMVT_ITEM-MATERIAL
AND WERKS = GOODSMVT_ITEM-PLANT
AND CHARG = GOODSMVT_ITEM-BATCH.
IF SY-SUBRC <> 0.
CALL FUNCTION 'BAPI_BATCH_CREATE'
EXPORTING
MATERIAL = GOODSMVT_ITEM-MATERIAL
BATCH = GOODSMVT_ITEM-BATCH
PLANT = GOODSMVT_ITEM-PLANT
TABLES
RETURN = RETURN.
LOOP AT RETURN WHERE TYPE = 'E' OR TYPE = 'A'.
EXIT.
ENDLOOP.
IF SY-SUBRC <> 0.
FLAG = '0'.
COMMIT WORK AND WAIT.
ELSE.
FLAG = '1'.
ENDIF.
MESSAGE = RETURN-MESSAGE.
ENDIF.
CHECK FLAG = '0'.
IF NOT CHAR[] IS INITIAL.
CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
EXPORTING
I_MATNR = GOODSMVT_ITEM-MATERIAL
I_CHARG = GOODSMVT_ITEM-BATCH
I_WERKS = 'WG01'
IMPORTING
E_OBJEK = WK_OBJEK
E_OBTAB = WK_OBTAB
E_KLART = WK_KLART
E_CLASS = WK_CLASS.
BAPIBATCHCTRL-CLASS_NUM = WK_CLASS.
BATCHATTRIBUTES-AVAILABLE = SY-DATUM.
BATCHATTRIBUTESX-AVAILABLE = 'X'.
REFRESH: CLASSALLOCATIONS,RETURN.
CLASSALLOCATIONS-OBJECTKEY = WK_OBJEK.
CLASSALLOCATIONS-OBJECTTABLE = WK_OBTAB.
CLASSALLOCATIONS-CLASS_TYPE = '023'.
CLASSALLOCATIONS-CLASSNUM = WK_CLASS.
CLASSALLOCATIONS-CLASSTYPE = '023'.
APPEND CLASSALLOCATIONS.
LOOP AT CHAR.
CHAR1-OBJECTKEY = WK_OBJEK.
CHAR1-CHARACT = CHAR-ATNAM.
CHAR1-VALUE_CHAR = CHAR-ATWRT.
CHAR1-CLASS_TYPE = '023'.
CHAR1-OBJECTTABLE = WK_OBTAB.
APPEND CHAR1.
ENDLOOP.
CALL FUNCTION 'BAPI_BATCH_SAVE_REPLICA'
EXPORTING
MATERIAL = GOODSMVT_ITEM-MATERIAL
BATCH = GOODSMVT_ITEM-BATCH
PLANT = GOODSMVT_ITEM-PLANT
BATCHATTRIBUTES = BATCHATTRIBUTES
BATCHATTRIBUTESX = BATCHATTRIBUTESX
BATCHCONTROLFIELDS = BAPIBATCHCTRL
TABLES
RETURN = RETURN
CLASSALLOCATIONS = CLASSALLOCATIONS
CLASSVALUATIONSCHAR = CHAR1.
批次特性获取
最新推荐文章于 2024-01-10 14:52:31 发布
这段代码主要展示了如何在SAP系统中获取和修改批次特性。首先通过调用BAPI_OBJCL_GETDETAIL_KEY和VB_BATCH_2_CLASS_OBJECT获取批次的特性信息,然后填充到相应的数据结构中。接着,如果需要修改特性值,首先创建批次,然后使用BAPI_BATCH_SAVE_REPLICA保存更改,确保所有步骤都成功完成。
摘要由CSDN通过智能技术生成