Необхідно в одиниці обладнання поміняти технічне місце . Програма працює помилки не видає але значення поля не змінюється !
data ret like bapiret2 .
Data EQUNR TYPE EQUNR .
....
data_specificx-READ_FLOC = 'X'.
data_specific-READ_FLOC = 'EEE-240-D1-ED15'. " Технічне місце
EQUIPMENT = EQUNR. " Номер одиниці обл.
call function 'BAPI_EQUI_CHANGE'
exporting
EQUIPMENT = EQUIPMENT
data_general = data_general
data_generalx = data_generalx
data_specific = data_specific
data_specificx = data_specificx
importing
data_general_exp = data_general_exp
data_specific_exp = data_specific_exp
return = ret .
call function 'BAPI_TRANSACTION_COMMIT' .
В чому помилка ?
А що там в параметрі ret[] повертається після виклику модуля? А то EQUIPMENT це не поле це структура і присвоєння повинно бути таким як: EQUIPMENT-EQUIPMENT = EQUNR. " Номер одиниці обл. і по друге подивіться що б значення EQUNR було вирівнено ведучими нулями тобто 000000000000000001 а не просто 1. Ну і далі можливо ще DATA_SPECIFICX-EQUIPMENT треба теж поставили = 'X', але це не впевнений.
Для конвертації одиниці обладнання з 1 у 0000000000000001 можна використати модуль CONVERSION_EXIT_ALPHA_INPUT
equipment описано як поле
data : equipment like bapi_itob_parms-equipment,
EQUNR TYPE EQUNR .
Поставила DATA_SPECIFICX-EQUIPMENT = 'X'
Не помогло .
Цитата: Olga від Березень 13, 2026, 09:33:11 ДПequipment описано як поле
data : equipment like bapi_itob_parms-equipment,
EQUNR TYPE EQUNR .
Поставила DATA_SPECIFICX-EQUIPMENT = 'X'
Не помогло .
Таки модуль змінився, бо в S/4 там структура передається. А код ЕО передали з ведучими нулями, так?
Ведучі 0 є в ЕО
Це початок фуекції
function bapi_equi_change.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(EQUIPMENT) LIKE BAPI_ITOB_PARMS-EQUIPMENT
*" VALUE(DATA_GENERAL) LIKE BAPI_ITOB STRUCTURE BAPI_ITOB
*" VALUE(DATA_GENERALX) LIKE BAPI_ITOBX STRUCTURE BAPI_ITOBX
*" VALUE(DATA_SPECIFIC) LIKE BAPI_ITOB_EQ_ONLY STRUCTURE
*" BAPI_ITOB_EQ_ONLY
*" VALUE(DATA_SPECIFICX) LIKE BAPI_ITOB_EQ_ONLYX STRUCTURE
*" BAPI_ITOB_EQ_ONLYX
*" EXPORTING
*" VALUE(DATA_GENERAL_EXP) LIKE BAPI_ITOB STRUCTURE BAPI_ITOB
*" VALUE(DATA_SPECIFIC_EXP) LIKE BAPI_ITOB_EQ_ONLY STRUCTURE
*" BAPI_ITOB_EQ_ONLY
*" VALUE(RETURN) LIKE BAPIRET2 STRUCTURE BAPIRET2
*"----------------------------------------------------------------------
Ну тоді залишається тільки одне. Йти у дебагер та дивитись що воно і як робить. З хорошого модуль не великий.
PS: А ні ще є пропозиція, може давайте вас на S/4 мігруємо, бо SAP ERP 4.6С ой як далеко вже знаходиться.
Може комусь буде потрібно. Для зміни технічного місця (ТМ) в одиниці обладнання (ОО) необхідно спочатку зробити демонтаж ТМ ФМ 'BAPI_EQMT_DISMANTLEFL' а потім встановити ТМ в ОО ФМ BAPI_EQMT_INSTALLFL .
Приблизно може бути так .
data rett LIKE BAPIRETURN .
.........
* Демонтаж ТМ
clear pole30.
call function 'BAPI_EQMT_DISMANTLEFL'
exporting
EQUIPMENT = EQUNR
FUNCLOC = pole30
importing
return = rett .
call function 'BAPI_TRANSACTION_COMMIT' .
........
* Монтаж ТМ
pole30 = 'NV4444'.
call function 'BAPI_EQMT_INSTALLFL'
exporting
EQUIPMENT = EQUNR
FUNCLOC = pole30
POSEQUI = ' '
importing
return = rett .
call function 'BAPI_TRANSACTION_COMMIT' .