Update characteristic value ABAP Sample
作者:互联网
This code will update characteristic value in SAP.
First, it checks if the characteristic is already exists or if has to be created.
Second, it updates the characteristic value.
Update characteristic value SAP Signature
The following code sample is a class’s method with these parameters:
- Importing :
- IV_OBJECTKEY TYPE OBJNUM
- IV_KLART TYPE KLASSENART
- IV_ATNAM TYPE ATNAM
- IV_VALUE_NEW TYPE ATWRT
- Exporting :
- ET_RETURN TYPE BAPIRETTAB
Update characteristic value ABAP Sample
The following part is the Sample ABAP Method will help you update SAP Customer Characteristic in SAP.
The steps required to perform Characteristic update for customer are:
- Get Class Type and Object Table for this Characteristic.
- Get the Class Num of Characteristic
- Check if this Characteristic exist : Update or Creation ?
- Fill the new Characteristic value
- Update Characteristic Value in Sap
- If no error occurs, commit work to Update Characteristic Value in Sap
METHOD set_classification.
" Signature of this method
" Importing :
" IV_OBJECTKEY TYPE OBJNUM
" IV_KLART TYPE KLASSENART
" IV_ATNAM TYPE ATNAM
" IV_VALUE_NEW TYPE ATWRT
" Exporting :
" ET_RETURN TYPE BAPIRETTAB
DATA: lv_objectkey TYPE objnum, ,
lv_objecttable TYPE tabelle,
lv_classnum TYPE klasse_d,
lv_classtype TYPE klassenart.
DATA: lt_allocvaluesnum TYPE TABLE OF bapi1003_alloc_values_num,
lt_allocvalueschar TYPE TABLE OF bapi1003_alloc_values_char,
ls_allocvalueschar LIKE LINE OF lt_allocvalueschar,
lt_allocvaluescurr TYPE TABLE OF bapi1003_alloc_values_curr,
lt_return TYPE TABLE OF bapiret2.
DATA: lv_status TYPE clstatus,
lv_standardclass TYPE stdclass.
DATA: lt_allocvaluescharnew TYPE TABLE OF bapi1003_alloc_values_char,
ls_allocvaluescharnew LIKE LINE OF lt_allocvaluescharnew.
DATA: lt_allocvaluesnumnew TYPE TABLE OF bapi1003_alloc_values_num,
lt_allocvaluescurrnew TYPE TABLE OF bapi1003_alloc_values_curr.
lv_objectkey = iv_objectkey.
" Get Class Type and Object Table for this Characteristic
SELECT SINGLE klart obtab FROM tcla
INTO (lv_classtype , lv_objecttable)
WHERE klart = iv_klart.
IF sy-subrc NE 0 .
RETURN.
ENDIF.
" Get the Class Num of Characteristic
SELECT SINGLE class FROM klah
INTO lv_classnum
WHERE klart = iv_klart.
IF sy-subrc NE 0 .
RETURN.
ENDIF.
" Check if this Characteristic exist : Update or Creation ?
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey = lv_objectkey
objecttable = lv_objecttable
classnum = lv_classnum
classtype = lv_classtype
IMPORTING
status = lv_status
standardclass = lv_standardclass
TABLES
allocvaluesnum = lt_allocvaluesnum
allocvalueschar = lt_allocvalueschar
allocvaluescurr = lt_allocvaluescurr
return = lt_return.
APPEND LINES OF lt_return TO et_return. REFRESH lt_return.
SORT lt_allocvalueschar BY charact.
" fill the new Characteristic value
READ TABLE lt_allocvalueschar TRANSPORTING NO FIELDS
WITH KEY charact = iv_atnam.
IF sy-subrc = 0 .
ls_allocvaluescharnew-charact = iv_atnam.
"ls_allocvaluescharnew-value_char = iv_value_new.
CLEAR ls_allocvaluescharnew-inherited .
CLEAR ls_allocvaluescharnew-instance .
ls_allocvaluescharnew-value_neutral = iv_value_new.
CLEAR ls_allocvaluescharnew-charact_descr .
APPEND ls_allocvaluescharnew TO lt_allocvaluescharnew.
ENDIF.
LOOP AT lt_allocvalueschar INTO ls_allocvalueschar.
IF ls_allocvalueschar-charact = iv_atnam.
ls_allocvaluescharnew-charact = iv_atnam.
"ls_allocvaluescharnew-value_char = iv_value_new.
CLEAR ls_allocvaluescharnew-inherited .
CLEAR ls_allocvaluescharnew-instance .
ls_allocvaluescharnew-value_neutral = iv_value_new.
CLEAR ls_allocvaluescharnew-charact_descr .
ELSE.
MOVE-CORRESPONDING ls_allocvalueschar TO ls_allocvaluescharnew.
ENDIF.
APPEND ls_allocvaluescharnew TO lt_allocvaluescharnew.
ENDLOOP.
" Update Characteristic Value in Sap
CALL FUNCTION 'BAPI_OBJCL_CHANGE'
EXPORTING
objectkey = lv_objectkey
objecttable = lv_objecttable
classnum = lv_classnum
classtype = lv_classtype
TABLES
allocvaluesnumnew = lt_allocvaluesnumnew
allocvaluescharnew = lt_allocvaluescharnew
allocvaluescurrnew = lt_allocvaluescurrnew
return = lt_return.
APPEND LINES OF lt_return TO et_return. REFRESH lt_return.
" If no error occurs, commit work to Update Characteristic Value in Sap
READ TABLE et_return TRANSPORTING NO FIELDS
WITH KEY type = 'E'.
IF sy-subrc NE 0 .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
ENDMETHOD. "set_classification
标签:lv,characteristic,lt,value,Sample,ABAP,allocvaluescharnew,ls,TYPE 来源: https://www.cnblogs.com/chrisrockdl/p/14079205.html