В общем в sap marketplace среди нот нашёл следующий код, который корректно отработал и добавил новое допустимое значение признака на уровне класса. Выкладываю сюда, кому будет нужно разберётся:
REPORT z_demo_bapi_class_change.
PARAMETER: classnum LIKE bapi_class_key-classnum, classtyp LIKE bapi_class_key-classtype.
DATA: *Getdetail gd_clabasic LIKE bapi1003_basic, gd_cladoc LIKE bapi1003_docu, gd_claadd LIKE bapi1003_add, gd_clastand LIKE bapi1003_stand,
gd_cladescr LIKE TABLE OF bapi1003_catch_r, gd_clalongtexts LIKE TABLE OF bapi1003_longtext_r, gd_clacha LIKE TABLE OF bapi1003_charact_r, gd_clachaval LIKE TABLE OF bapi1003_char_val_r,
*Class change cc_clabasicnew LIKE bapi1003_basic_new, cc_cladocnew LIKE bapi1003_docu_new, cc_claaddnew LIKE bapi1003_add_new, cc_clastandnew LIKE bapi1003_stand_new,
ls_gd_clacha LIKE LINE OF gd_clacha, ls_gd_clachaval LIKE LINE OF gd_clachaval,
return LIKE TABLE OF bapiret2, ls_return LIKE LINE OF return, cc_cladescr LIKE TABLE OF bapi1003_catch, cc_clalongtexts LIKE TABLE OF bapi1003_longtext, cc_clacha LIKE TABLE OF bapi1003_charact, cc_chaover LIKE TABLE OF bapi1003_charact_overwr, cc_chavalover LIKE TABLE OF bapi1003_charact_value_ovr, cc_chavaltextover LIKE TABLE OF bapi1003_charvaltext, cc_cladescrnew LIKE TABLE OF bapi1003_catch_new, cc_clalongtextsnew LIKE TABLE OF bapi1003_longtext, cc_clachanew LIKE TABLE OF bapi1003_charact_new, cc_chaovernew LIKE TABLE OF bapi1003_charact_overwr_new, cc_chavalovernew LIKE TABLE OF bapi1003_charact_value_ovr_new, cc_chavaltextovernew LIKE TABLE OF bapi1003_charvaltext_new, ls_cc_clacha LIKE LINE OF cc_clacha, ls_cc_chaover LIKE LINE OF cc_chaover, ls_cc_chavalover LIKE LINE OF cc_chavalover.
CHECK ( classnum IS NOT INITIAL ). CHECK ( classtyp IS NOT INITIAL ).
CALL FUNCTION 'BAPI_CLASS_GETDETAIL' EXPORTING classtype = classtyp classnum = classnum IMPORTING classbasicdata = gd_clabasic classdocument = gd_cladoc classadditional = gd_claadd classstandard = gd_clastand TABLES classdescriptions = gd_cladescr classlongtexts = gd_clalongtexts classcharacteristics = gd_clacha classcharvalues = gd_clachaval.
cc_clabasicnew = gd_clabasic. cc_cladocnew = gd_cladoc. cc_claaddnew = gd_claadd. cc_clastandnew = gd_clastand. cc_cladescr = gd_cladescr. cc_clalongtexts = gd_clalongtexts.
LOOP AT gd_clacha INTO ls_gd_clacha. MOVE-CORRESPONDING ls_gd_clacha TO ls_cc_clacha. APPEND ls_gd_clacha TO cc_clacha.
MOVE-CORRESPONDING ls_gd_clacha TO ls_cc_chaover. APPEND ls_cc_chaover TO cc_chaover. ENDLOOP.
LOOP AT gd_clachaval INTO ls_gd_clachaval. MOVE-CORRESPONDING ls_gd_clachaval TO ls_cc_chavalover. APPEND ls_cc_chavalover TO cc_chavalover. ENDLOOP.
cc_cladescrnew = cc_cladescr. cc_clalongtextsnew = cc_clalongtexts. cc_clachanew = cc_clacha. cc_chaovernew = cc_chaover. cc_chavalovernew = cc_chavalover. cc_chavaltextovernew = cc_chavaltextover.
"Set a break-point here, if you want to change data.
CALL FUNCTION 'BAPI_CLASS_CHANGE' EXPORTING classnum = classnum classtype = classtyp classbasicdata = gd_clabasic classbasicdatanew = cc_clabasicnew classdocument = gd_cladoc classdocumentnew = cc_cladocnew classadditional = gd_claadd classadditionalnew = cc_claaddnew classstandard = gd_clastand classstandardnew = cc_clastandnew TABLES return = return classdescriptions = cc_cladescr classlongtexts = cc_clalongtexts classcharacteristics = cc_clacha characteristicoverwrite = cc_chaover charactvalueoverwrit = cc_chavalover characteristicvaluetextovr = cc_chavaltextover classdescriptionsnew = cc_cladescrnew classlongtextsnew = cc_clalongtextsnew classcharacteristicsnew = cc_clachanew characteristicoverwritenew = cc_chaovernew charactvalueoverwritnew = cc_chavalovernew characteristicvaluetextovrnew = cc_chavaltextovernew.
LOOP AT return INTO ls_return. MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number. ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
|
|