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

Customer Classification

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

原文地址:https://www.cnblogs.com/chrisrockdl/p/14079205.html