В общем если кому надо будет создать пакетник через BAPI на изменение основных данных ЕО, в том числе и z-овских полей вот рабочая реализация через BAPI_EQUI_CHANGEdata t_extensionin type bapiparex occurs 0 with header line.
data ls_extensionin type bapiparex.
data: e_item type itobapi_modify_eq
, ls_item type ci_equi
.
clear: t_extensionin.
" доп поля
clear: e_item.
ls_item-zzito_loc = wa-zzito_loc.
ls_extensionin-structure = 'CI_EQUI'.
call method cl_abap_container_utilities=>fill_container_c
exporting
im_value = ls_item
importing
ex_container = ls_extensionin+30.
t_extensionin = ls_extensionin.
append t_extensionin.
bapi_itob_parms-equipment = wa-equipment2.
if wa-objecttype is not initial.
bapi_itob-objecttype = wa-objecttype.
bapi_itobx-objecttype = 'X'.
else.
endif.
if wa-inventory is not initial.
bapi_itob-inventory = wa-inventory.
bapi_itobx-inventory = 'X'.
else.
endif.
if wa-manfacture is not initial.
bapi_itob-manfacture = wa-manfacture.
bapi_itobx-manfacture = 'X'.
else.
endif.
call function 'BAPI_EQUI_CHANGE'
exporting
equipment = bapi_itob_parms-equipment
data_general = bapi_itob
data_generalx = bapi_itobx
data_specific = zbapi_itob_eq_only
data_specificx = zbapi_itob_eq_onlyx
importing
data_general_exp = bapi_itob
* DATA_SPECIFIC_EXP =
* DATA_FLEET_EXP =
return = ps_return
tables
extensionin = t_extensionin[].
* EXTENSIONOUT =
if ps_return-type = space.
commit work and wait.
if sy-subrc = 0.
* perform status.
if wa-status2 = icon_checked or wa-status2 is initial.
wa-status2 = icon_checked.
endif.
else.
* Ошибка выполнения COMMIT WORK!!!
ps_return-type = 'E'.
wa-status2 = icon_failure.
endif.
else.
wa-status2 = icon_failure.
rollback work.
endif.
Далее идём в BADi и создаём там реализацию, т.е. Enhancement Implementation типа ZEI_EAMS_ITOB_BAPI_CUST_FIELDS с классом Z_PM_EO и в методе, как и рекомендовал Олег, EXTENSIONIN_EQUI_CHANGE пишем кодdata: ls_extensionin type bapiparex
, ls_item type ci_equi
.
loop at it_extensionin into ls_extensionin.
call method cl_abap_container_utilities=>read_container_c
exporting
im_container = ls_extensionin+30
importing
ex_value = ls_item.
endloop.
cs_object-zzito_loc = ls_item-zzito_loc.
Вроде бы работает и z-овские поля изменяются.