Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SMOD/CMOD - Расширения => Тема начата: Паганель от Май 15, 2009, 10:23:15 pm
-
Нашел интересную вещь на http://www.abapedia.org/wiki/ExtensionIN (http://www.abapedia.org/wiki/ExtensionIN)
Заметка из 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 (имя структуры).
-
Как вариант, если полей нужно передать много, то можно использовать специальный класс CL_ABAP_CONTAINER_UTILITIES, для работы с контейнером значений полей: http://sapforum.biz/index.php/topic,2865.0.html, так сказать пришла зима пришлось быстро ваять что-то для удобства, когда полей оказалось больше чем 4 и их суммарная длинна было больше чем 240 символов.