Текущее время: Чт, мар 28 2024, 17:01

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Вс, сен 14 2008, 14:57 
Ассистент
Ассистент

Зарегистрирован:
Сб, фев 09 2008, 11:51
Сообщения: 25
Всем доброго времени суток.
У меня возникла проблема в проведении ретракции данных из BW в R/3. Стандартным способом это сделано путем BAPI_REQUISITION_CREATE она создает заявки в R/3 и сразу оговорюсь что форма заявки расширена при помощи user-exit и тут возникает проблема как мне расширить структуру BAPI для передачи дополнительных полей. Существует ли для этого user-exit?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Вс, сен 14 2008, 15:34 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Nelson написал(а):
Всем доброго времени суток.
У меня возникла проблема в проведении ретракции данных из BW в R/3. Стандартным способом это сделано путем BAPI_REQUISITION_CREATE она создает заявки в R/3 и сразу оговорюсь что форма заявки расширена при помощи user-exit и тут возникает проблема как мне расширить структуру BAPI для передачи дополнительных полей. Существует ли для этого user-exit?
Если пользовательские поля добавлены через customer include CI_EBANDB, то можно поробовать передавать их в таблице EXTENSIONIN этой BAPI. EXTENSIONIN-STRUCTURE = "BAPI_TE_REQUISITION_ITEM", а EXTENSIONIN+30 = структура типа BAPI_TE_REQUISITION_ITEM.
Ещё что-то похожее есть через стурктуру BAPI_TE_REQUISITION_ACCOUNT (если поля добавлены в EBKN через CI_COBL).

Есть ещё BAPI_PR_CREATE.
Из документации по EXTENSIONIN
Цитата:
Reference Structure for BAPI Parameters EXTENSIONIN/EXTENSIONOUT

Description
Tthis table parameter can be used to populate customers' own fields that have been added to the database tables EBAN and EBKN.

These extension parameters serve as containers in which all customer enhancements are passed on. The extension parameters are based on the structure BAPIPAREX.

The data is passed on in a table. The format of the individual data records of this table is determined by the structure BAPIPAREX. This contains several data record fields (VALUEPART1, VALUEPART2, ...) plus a field for the name of an auxiliary structure (STRUCTURE).

Validation of the data can be carried out via the Business AddIn (BAdI) definition ME_BAPI_PR_CUST. The INBOUND( ) method is available for this purpose.

Value range
The auxiliary structure can have the following instances:

BAPI_TE_MEREQITEM for the enhancement of the database table EBAN (via MEREQ_ITEM)
BAPI_TE_MEREQITEMX for the enhancement of the database table EBAN (via MEREQ_ITEMX)
BAPI_TE_MEREQACCOUNT for the enhancement of the database table EBKN
BAPI_TE_MEREQACCOUNTX for the enhancement of the database table EBKN
To allow transfer of the data from the structure BAPI_TE_MEREQ, it is necessary to populate the associated X data structure. The data is transferred only if an X has been set for the relevant data field in the X data structure. In the process, The X information simulates manual entry via the online transaction.

Default
Note that only fields of the data type CHAR and similar data types may be used in the BAPI table ExtensionIn.

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 18 2008, 13:50 
Ассистент
Ассистент

Зарегистрирован:
Сб, фев 09 2008, 11:51
Сообщения: 25
Привет, Alex80!
Спасибо за ответ. Но правда мне никогда не приходилось настраивать BADI. Не подскажете как это можно будет проделать с учетом того, что для расширения используется структура CI_EBANDB.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 18 2008, 14:03 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, фев 17 2006, 07:38
Сообщения: 99
Объявляешь и заполняешь стректуру содержащую поля из расширения:
Code:
  DATA:
        extensionin TYPE TABLE OF bapiparex WITH HEADER LINE,
        e_item TYPE bapi_te_requisition_item.

        e_item-preq_item = ebanc-preq_item.
        e_item-field1 = 'aaaaa'.
        e_item-field2 = 'bbbbb'.
        extensionin-structure = 'BAPI_TE_REQUISITION_ITEM'.
        extensionin-valuepart1 = e_item.
        APPEND extensionin.

Потом вызов:

Code:
  CALL FUNCTION 'BAPI_REQUISITION_CREATE'
        ...
      TABLES
        ...
        extensionin                          = extensionin[].

И всё ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 09 2008, 08:17 
Ассистент
Ассистент

Зарегистрирован:
Сб, фев 09 2008, 11:51
Сообщения: 25
vahtang написал(а):
Объявляешь и заполняешь стректуру содержащую поля из расширения:
Code:
  DATA:
        extensionin TYPE TABLE OF bapiparex WITH HEADER LINE,
        e_item TYPE bapi_te_requisition_item.

        e_item-preq_item = ebanc-preq_item.
        e_item-field1 = 'aaaaa'.
        e_item-field2 = 'bbbbb'.
        extensionin-structure = 'BAPI_TE_REQUISITION_ITEM'.
        extensionin-valuepart1 = e_item.
        APPEND extensionin.

Потом вызов:

Code:
  CALL FUNCTION 'BAPI_REQUISITION_CREATE'
        ...
      TABLES
        ...
        extensionin                          = extensionin[].

И всё ;)

Не мог долго выйти на связь по причине того, что разработочная система не работала.
А сейчас я обнаружил что указанные структуры: BAPI_TE_REQUISITION_ITEM и ebanc в BW системе отсутствуют и у меня возник соответственный вопрос как быть в данном случае создать пользовательские структуры для передачи параметров или есть другой более правильный вариант?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 09 2008, 10:44 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, фев 17 2006, 07:38
Сообщения: 99
Попробуйте через SE37 поискать в ФМ BAPI_REQUISITION_CREATE как обработывается параметр extensionin. Я нашёл такой код:
Code:
  PERFORM pr_extensionin TABLES extensionin
                                xebkn
                                xeban
                                return
                          USING lp_number_of_items
                                lp_number_of_account.

и далее в FORM pr_extensionin
Code:
  ...
  LOOP AT extensionin.
    CASE extensionin-structure.
*     accounting
      WHEN 'BAPI_TE_REQUISITION_ACCOUNT'.
        ...
*     items
      WHEN 'BAPI_TE_REQUISITION_ITEM'.
        ...

У вас должно быть что-то подобное, соответственно будет понятно как передавать данные.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Пн, фев 28 2011, 10:55 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
vahtang написал(а):
Объявляешь и заполняешь стректуру содержащую поля из расширения:
Code:
  DATA:
        extensionin TYPE TABLE OF bapiparex WITH HEADER LINE,
        e_item TYPE bapi_te_requisition_item.

        e_item-preq_item = ebanc-preq_item.
        e_item-field1 = 'aaaaa'.
        e_item-field2 = 'bbbbb'.
        extensionin-structure = 'BAPI_TE_REQUISITION_ITEM'.
        extensionin-valuepart1 = e_item.
        APPEND extensionin.

Потом вызов:

Code:
  CALL FUNCTION 'BAPI_REQUISITION_CREATE'
        ...
      TABLES
        ...
        extensionin                          = extensionin[].

И всё ;)


Делаю также:
Code:
  clear e_item.
  clear extension_str.
  e_item-preq_item = 1.
  e_item-zrsnum = '11'.
  e_item-zrspos = '22'.
  extension_str-structure = 'BAPI_TE_MEREQITEM'.
  extension_str-valuepart1 = e_item.
  APPEND extension_str to extensionin.


Ошибка : "EXTENSION_STR-VALUEPART1" and "E_ITEM" are not mutually convertible in a Unicode program.

Делаю по другому:
Code:
  clear e_item.
  clear extension_str.
  e_item-preq_item = 1.
  e_item-zrsnum = '11'.
  e_item-zrspos = '22'.
  extension_str-structure = 'BAPI_TE_MEREQITEM'.
  assign e_item to <X_VBAP> casting.
  assign extension_str-valuepart1 to <X_EXTN> casting.
  <X_EXTN> = <X_VBAP>.
  APPEND extension_str to extensionin.

Ошибки нет.
Заявка создается.
Но значения полей ZRSNUM и ZRSPOS в таблице EBAN отсутствуют.

Если использую BAPI_PR_CREATE, то в RETURN следующее:
Code:
S   BAPI   000   10000103 PurchaseRequisition создан(а,о). Внешняя ссылка:      000000   10000103   PurchaseRequisition         PRHEADER   1      
S   06   402   Заявка введена под номером 10000103.      000000   10000103            PRHEADER   1      
S   06   402   Заявка введена под номером 10000103.      000000   10000103            PRHEADER   1      
W   ME   887   Ошибка при копировании ExtensionIn-данных для расширения CI_EBANDB      000000   CI_EBANDB            PRITEM   1      
W   FICUSTOM   000   Позиция 00001 содержит финансовую позицию с фин. операцией, неравной 30.      000000   00001            PRACCOUNT   1      


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Пн, фев 28 2011, 11:21 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
csander написал(а):
Ошибка : "EXTENSION_STR-VALUEPART1" and "E_ITEM" are not mutually convertible in a Unicode program.

Используйте cl_abap_container_utilities=>fill_container_c по аналогии с
How to use CL_ABAP_CONTAINER_UTILITIES
csander написал(а):
Ошибки нет.
Заявка создается.
Но значения полей ZRSNUM и ZRSPOS в таблице EBAN отсутствуют.

Если использую BAPI_PR_CREATE, то в RETURN следующее:
Code:
W   ME   887   Ошибка при копировании ExtensionIn-данных для расширения CI_EBANDB      000000   CI_EBANDB            PRITEM   1   

CI_EBANDB содержит поля типа P, F, I.
Нужно создать внедрение для BADI ME_BAPI_PR_CUST и в методе MAP2I_EXTENSIONIN переложить данные из IM_CONTAINER в CH_STRUC используя cl_abap_container_utilities=>read_container_c по аналогии с Transfer customer fields type P into Purchase Contract

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Пн, фев 28 2011, 16:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 07:27
Сообщения: 321
Откуда: Где-то на севере
Пол: Мужской
Alex80 написал:
CI_EBANDB содержит поля типа P, F, I.
Нужно создать внедрение для BADI ME_BAPI_PR_CUST и в методе MAP2I_EXTENSIONIN переложить данные из IM_CONTAINER в CH_STRUC используя cl_abap_container_utilities=>read_container_c по аналогии с Transfer customer fields type P into Purchase Contract


Когда подобная ситуация возникла с BAPI для изменения СПП-Элемента, то саповская нота вещала, что требуется создать свою include структуру с полями соответствующей длины и грубо вставить её в BAPI_TE_WBS_ELEMENT вместо CI_PRPS.
Правда тогда ещё был маленький ньюанс, BAPI при запуске не ругалась ошибкой, а насколько я помню валилась в дамп.

_________________
I have a dream


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Вт, мар 08 2011, 21:37 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
Подскажите пожалуйста что не так
имею:

Вызов бапи

Code:
   data T_EXTENSIONIN type BAPIPAREX OCCURS 0 WITH HEADER LINE.
   data ls_extensionin TYPE bapiparex.
   data e_item TYPE BAPI_TE_MEREQITEM.

     loop at P_GT_EBAN.
       CLEAR:  T_EXTENSIONIN.
       " доп поля
       CLEAR: e_item.
       MOVE P_GT_EBAN-BNFPO TO e_item-preq_item.
       MOVE 'X' TO e_item-ZZPPMCR.
       MOVE P_GT_EBAN-ZZPPMUP TO e_item-ZZPPMUP.
       MOVE P_GT_EBAN-ZZPPMUPDT TO e_item-ZZPPMUPDT.
       .........................
       ls_EXTENSIONIN-structure = 'BAPI_TE_MEREQITEM'.
       CALL METHOD cl_abap_container_utilities=>fill_container_c
         EXPORTING
           im_value     = e_item
         IMPORTING
           ex_container = ls_EXTENSIONIN+30.
       append ls_EXTENSIONIN to T_EXTENSIONIN.
     endloop.
       CALL FUNCTION 'BAPI_PR_CHANGE'
         EXPORTING
           NUMBER      = P_GT_EBAN_OTMDB-BANFN
         TABLES
           RETURN      = T_RETURN
           PRITEM      = T_PRITEM
           PRITEMX     = T_PRITEMX
           EXTENSIONIN = T_EXTENSIONIN.


расширение бади как описывали выше

Code:
method IF_EX_ME_BAPI_PR_CREATE_02~MAP2I_EXTENSIONIN.
  data ls_eban   TYPE BAPI_TE_MEREQITEM.
  CASE im_name.
    WHEN 'CI_EBANDB'.
      CALL METHOD cl_abap_container_utilities=>read_container_c
        EXPORTING
          im_container           = im_container
        IMPORTING
          ex_value               = ls_eban
        EXCEPTIONS
          illegal_parameter_type = 1
          OTHERS                 = 2.
      MOVE-CORRESPONDING ls_eban TO ch_struc.
  ENDCASE.
endmethod.


бади для бапи активировано, вызов успешно происходит
но все равно изменение заявки выдает:
Инстанцию 10002611 типа объекта PurchaseRequisition изменить не удалось.
Ошибка при копировании ExtensionIn-данных для расширения CI_EBANDB
В чем проблема?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Ср, мар 09 2011, 06:58 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
BAPI_TE_MEREQITEMX разве не надо заполнять?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Ср, мар 09 2011, 10:15 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
Besa написал:
BAPI_TE_MEREQITEMX разве не надо заполнять?


видимо не надо так как данной таблицы нету в параметрах вызова БАПИ

может как то надо поиграться с параметрами БАПИ?
EXTENSIONIN LIKE BAPIPAREX
EXTENSIONOUT LIKE BAPIPAREX
может вызов ФМ не так организовал?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Ср, мар 09 2011, 10:38 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
В документации написано
Цитата:
To allow transfer of the data from the structure BAPI_TE_MEREQ, it is necessary to populate the associated X data structure. The data is transferred only if an X has been set for the relevant data field in the X data structure.


http://forums.sdn.sap.com/thread.jspa?threadID=746889&tstart=0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Ср, мар 09 2011, 10:51 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
Besa написал:
В документации написано
Цитата:
To allow transfer of the data from the structure BAPI_TE_MEREQ, it is necessary to populate the associated X data structure. The data is transferred only if an X has been set for the relevant data field in the X data structure.


http://forums.sdn.sap.com/thread.jspa?threadID=746889&tstart=0


ага спасибо понял ошибку
буду структурку BAPI_TE_MEREQX тоже заполнять в EXTANTIONIN
хотя бапи по созданию заявки нормально и без BAPI_TE_MEREQX проходила


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли возможность расширения BAPI?
СообщениеДобавлено: Пт, мар 11 2011, 08:56 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
Заполняю EXTENSIONIN след. образом :
Code:
...
DATA:
EX_VALUE TYPE ME_MAX_CONTAINER,
EXTENSIONIN   TYPE TABLE OF BAPIPAREX,
EXTENSION_STR LIKE LINE OF EXTENSIONIN,
E_ITEM        TYPE BAPI_TE_MEREQITEM,
E_ITEMX       TYPE BAPI_TE_MEREQITEMX
....
  CLEAR E_ITEM.
  CLEAR EX_VALUE.
  CLEAR EXTENSION_STR.
  E_ITEM-PREQ_ITEM = 1.
  E_ITEM-ZRSNUM = IS_RESBD_NEW-RSNUM.
  E_ITEM-ZRSPOS = IS_RESBD_NEW-RSPOS.
  E_ITEM-ZPLAN_NOM = 1.
  E_ITEM-ZZSTATYA = 'ddd'.
  EXTENSION_STR-STRUCTURE = 'BAPI_TE_MEREQITEM'.

  CALL METHOD CL_ABAP_CONTAINER_UTILITIES=>FILL_CONTAINER_C
   EXPORTING
    IM_VALUE               = E_ITEM
   IMPORTING
    EX_CONTAINER           = EX_VALUE
  EXCEPTIONS
    ILLEGAL_PARAMETER_TYPE = 1
    OTHERS                 = 2.
*  EXTENSION_STR-VALUEPART1 = EX_VALUE.
  EXTENSION_STR+30 = EX_VALUE.
  APPEND EXTENSION_STR TO EXTENSIONIN.

  CLEAR E_ITEMX.
  CLEAR EX_VALUE.
  CLEAR EXTENSION_STR.
  E_ITEMX-PREQ_ITEM = 1.
  E_ITEMX-ZRSNUM = 'X'.
  E_ITEMX-ZRSPOS = 'X'.
  E_ITEMX-ZPLAN_NOM = 'X'.
  E_ITEMX-ZZSTATYA = 'X'.
  EXTENSION_STR-STRUCTURE = 'BAPI_TE_MEREQITEMX'.
  CALL METHOD CL_ABAP_CONTAINER_UTILITIES=>FILL_CONTAINER_C
   EXPORTING
    IM_VALUE               = E_ITEMX
   IMPORTING
    EX_CONTAINER           = EX_VALUE
  EXCEPTIONS
    ILLEGAL_PARAMETER_TYPE = 1
    OTHERS                 = 2.
*  EXTENSION_STR-VALUEPART1 = EX_VALUE.
  EXTENSION_STR+30 = EX_VALUE.
  APPEND EXTENSION_STR TO EXTENSIONIN.

...

CALL FUNCTION 'BAPI_PR_CREATE'
         EXPORTING
           PRHEADER                     = GS_PRHEADER
           PRHEADERX                    = GS_PRHEADERX
           TESTRUN                      = ''
          TABLES
            RETURN                       = GT_MESSAGE
            PRITEM                       = GT_PRITEM[]
            PRITEMX                      = GT_PRITEMX[]
            PRITEMEXP                    = GT_PRITEMEXP[]
*            PRACCOUNT                    = GT_ACCOUNT[]
*            PRACCOUNTX                   = GT_ACCOUNTX[]
            EXTENSIONIN                  = EXTENSIONIN[].


Но поле ZZSTATYA не проходит, а остальные три поля проходят в таблицу. Подскажите, в чем может быть проблема?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB