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

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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
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 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Как вариант, если полей нужно передать много, то можно использовать специальный класс  CL_ABAP_CONTAINER_UTILITIES, для работы с контейнером значений полей: You are not allowed to view links. Register or Login, так сказать пришла зима пришлось быстро ваять что-то для удобства, когда полей оказалось больше чем 4 и их суммарная длинна было больше чем 240 символов.