BAPI_EQUI_CREATE - Создание единицы оборудования/Серийного номера

Автор Uukrul, Липень 02, 2008, 06:12:31 ПП

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

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

Uukrul

В общем-то довольно простая BAPI, позволяющая создать ЕО. В общем случае можно задать только тип единицы оборудования и запись будет создана.

REPORT yuuk_test_000.
DATA: data_general LIKE bapi_itob,
      data_specific LIKE bapi_itob_eq_only,
      data_install LIKE bapi_itob_eq_install,

      equipment LIKE bapi_itob_parms-equipment,
      data_general_exp LIKE bapi_itob,
      data_specific_exp LIKE bapi_itob_eq_only,

      lt_return LIKE bapiret2.

data_specific-equicatgry = 'M'.                  "Тип объекта

CALL FUNCTION 'BAPI_EQUI_CREATE'
     EXPORTING
          data_general      = data_general
          data_specific     = data_specific
          valid_date        = sy-datum
     IMPORTING
          equipment         = equipment
          data_general_exp  = data_general_exp
          data_specific_exp = data_specific_exp
          return            = lt_return.

IF lt_return-type = space. COMMIT WORK. ENDIF.

equipment - Номер созданной единицы оборудования. Остальные данные можно посмотреть в словаре, в принципе они соответствуют полям карточки ЕО, которую можно просмотреть через транзакцию IE03

themax

Доброго времени суток уважаемые ABAP-еры и в частности автор темы. Очень удобный вроде бы функциональный модуль. Как раз я хотел сделать пакетник ведения ЕО и вроде бы всё понятно по нему. ЕО я буду делать с помощью BAPI_EQUI_CREATE, а классификацию  с помощью BAPI_OBJCL_CREATE. И вроде бы все поля нашёл в этих двух ФМ, но не нашёл поля одного стандартного ракурса, который присваивается типу технического объекта, а конкретнее экрану  110-Гарантия. Стандартный экран вкладка присваиваемый типу ЕО. Не пойму как с ним быть? Может кто реализовывал подобное? может ещё какой ФМ нужен для этого? Буду весьма признателен за совет.

Uukrul

Ну с гарантией там немного мутно как-то. Если группа функций: BG00 - Обработка гарантии и там уже вагон каких-то функций по обработке гарантий, думаю если там посидеть подумать, то можно найти как с ними работать. Есть мысль что система сама их вызывает при присвоении экрана гарантий к ЕО. Короче, удочку выдал, если что накопаете интересное, напишите, если не сложно.

themax

Спасибо за подсказку! Попробывал сделать с помощью ФМ BG00_WARRANTY_LINK_UPDATE. Просто запустил простой код чтобы посмотреть изменит ли он данные о гарантии у уже существующей ЕО, но программка почему то падает в дамп. Почему это происходит мне не понятно, вот собственно сам код

data: it_itob  like BGMKOBJ OCCURS 0 WITH HEADER LINE.

it_itob-J_OBJNR = 'IE000000000010000007'.
it_itob-GAART = '2'.
it_itob-GWLDT = sy-datum.
it_itob-GWLEN = '20160915'.
it_itob-GAERB = 'X'.
it_itob-WAGET = 'X'.


CALL FUNCTION 'BG00_WARRANTY_LINK_UPDATE'
  EXPORTING
    N_BGMKOBJTAB       = it_itob
*   O_BGMKOBJTAB       =
          .


Я АБАПер не опытный, может в мелочах делаю что то не так. Наверное придётся делать с помощью SHDB.

Uukrul

Цитата: themax від Вересень 29, 2015, 01:37:56 ПП
Спасибо за подсказку! Попробывал сделать с помощью ФМ BG00_WARRANTY_LINK_UPDATE. Просто запустил простой код чтобы посмотреть изменит ли он данные о гарантии у уже существующей ЕО, но программка почему то падает в дамп.
Ну потому что это модуль обновления, его так вызвать нельзя. Его надо вызвать вот так:

CALL FUNCTION 'BG00_WARRANTY_LINK_UPDATE' IN UPDATE TASK
  EXPORTING
    n_bgmkobjtab       = <значение>
    O_BGMKOBJTAB       = <значение>.

COMMIT WORK AND WAIT.

Фактическое выполнение модуля будет в момент вызова COMMIT, а так как вызов выполняется с AND WAIT, то это синхронный коммит поэтому на этой строке система дождется выполнения обновления, т.е. после коммита, теоретически гарантия должна быть уже обновлена.

themax

Спасибо, буду знать! Но видимо всё же не тот ФМ модуль я выбрал из группы функций, которую Вы подсказали. Буду копать дальше.