Автор Тема: Способ передачи в BAPI полей, отсутствующих в стандартных параметрах BAPI.  (Прочитано 13494 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Нашел интересную вещь на You are not allowed to view links. Register or Login
Цитировать
Заметка из ABAPEDIA.

Способ передачи в BAPI полей, отсутствующих в стандартных параметрах BAPI. Для этого в некоторых (новых) BAPI присутствуют табличные параметры ExtensionIN.
[править]
Пример заполнения для позиции заказа на закупку (Purchase Order).

1. Добавляем в структуру BAPI_TE_MEPOITEM нужные поля, например, через append-structure. Поля могйт быть и стандартными, которые тем не менее отсутствуют в соответствующих структурах параметров BAPI. Одноименные поля добавляем и в структуру BAPI_TE_MEPOITEMX, но в этой структуре тип поля должен быть CHAR(1), эта структура будет затем использоваться как маска.

2. В программе формирования закупочного заказа создаем параметр ExtensionIN следующим образом:
 DATA:
   wa_extensionin TYPE bapiparex,
   lt_extensionin TYPE TABLE OF bapiparex,
 
   wa_bapi_te_mepoitem TYPE bapi_te_mepoitem,
   wa_bapi_te_mepoitemx TYPE bapi_te_mepoitemx.
 
 wa_bapi_te_mepoitem-po_item = <номер позиции документа>.
 wa_bapi_te_mepoitem-zznewfield = <значение поля>.
 wa_extensionin-structure = 'BAPI_TE_MEPOITEM'.
 wa_extensionin+30 = wa_bapi_te_mepoitem.
 APPEND wa_extensionin TO lt_extensionin.
 
 wa_bapi_te_mepoitemx-po_item = <номер позиции документа>.
 wa_bapi_te_mepoitemx-zznewfield = 'X'.
 wa_extensionin-structure = 'BAPI_TE_MEPOITEMX'.
 wa_extensionin+30 = wa_bapi_te_mepoitemx.
 APPEND wa_extensionin TO lt_extensionin.

3. Вызываем BAPI (BAPI_PO_CREATE1 или BAPI_PO_CHANGE).

Внимание!! Оператор
 wa_extensionin+30 = wa_bapi_te_mepoitem.

может быть несовместим с системами с Unicode. В таких системах следует использовать технику преобразования типов через промежуточный FIELD-SYMBOL. Обратите также внимание, что 30 - это длина поля STRUCTURE (имя структуры).
« Последнее редактирование: Сентябрь 10, 2013, 10:56:28 am от Uukrul »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Как вариант, если полей нужно передать много, то можно использовать специальный класс  CL_ABAP_CONTAINER_UTILITIES, для работы с контейнером значений полей: You are not allowed to view links. Register or Login, так сказать пришла зима пришлось быстро ваять что-то для удобства, когда полей оказалось больше чем 4 и их суммарная длинна было больше чем 240 символов.

Sapforum.Biz