ФМ для зміни ТМ в одиниці обладнання

Автор Olga, Березень 12, 2026, 02:29:55 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Olga

Необхідно в одиниці обладнання поміняти технічне місце . Програма працює помилки не видає  але значення поля не змінюється !
 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' .

В чому помилка ?
 

Uukrul

А що там в параметрі ret[] повертається після виклику модуля? А то EQUIPMENT це не поле це структура і присвоєння повинно бути таким як: EQUIPMENT-EQUIPMENT = EQUNR. " Номер одиниці обл. і по друге подивіться що б значення EQUNR було вирівнено ведучими нулями тобто 000000000000000001 а не просто 1. Ну і далі можливо ще DATA_SPECIFICX-EQUIPMENT треба теж поставили = 'X', але це не впевнений.

Для конвертації одиниці обладнання з 1 у 0000000000000001 можна використати модуль CONVERSION_EXIT_ALPHA_INPUT

Olga

equipment описано як поле

data : equipment like bapi_itob_parms-equipment,
        EQUNR TYPE  EQUNR .
Поставила DATA_SPECIFICX-EQUIPMENT = 'X'

Не  помогло .

Uukrul

Цитата: Olga від Березень 13, 2026, 09:33:11 ДПequipment описано як поле

data : equipment like bapi_itob_parms-equipment,
        EQUNR TYPE  EQUNR .
Поставила DATA_SPECIFICX-EQUIPMENT = 'X'

Не  помогло .
Таки модуль змінився, бо в S/4 там структура передається. А код ЕО передали з ведучими нулями, так?

Olga

Ведучі 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
*"----------------------------------------------------------------------

Uukrul

Ну тоді залишається тільки одне. Йти у дебагер та дивитись що воно і як робить. З хорошого модуль не великий.

PS: А ні ще є пропозиція, може давайте вас на S/4 мігруємо, бо SAP ERP 4.6С ой як далеко вже знаходиться.

Olga

Може комусь буде потрібно. Для зміни технічного місця (ТМ) в одиниці обладнання (ОО) необхідно спочатку зробити демонтаж ТМ ФМ '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' .

SMF spam blocked by CleanTalk