Проблема с BAPI_BATCH_CHANGE

Автор Паганель, Січень 20, 2010, 01:49:48 ПП

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

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

Паганель

Делаю такой вызов:

DATA: lt_batchattributes1 TYPE STANDARD TABLE OF bapibatchatt.
 
DATA: ls_batchattributes LIKE LINE OF lt_batchattributes1.

DATA: lt_batchattributesx TYPE STANDARD TABLE OF bapibatchattx.
DATA: ls_batchattributesx LIKE LINE OF lt_batchattributesx.

DATA: w_bapibatchatt TYPE bapibatchatt.
DATA: lt_bapiret TYPE STANDARD TABLE OF bapiret2. " WITH HEADER LINE.

ls_batchattributes-prod_date = wa_xmkpf-budat.
       APPEND ls_batchattributes TO lt_batchattributes1.

       ls_batchattributesx-prod_date = 'X'.
       APPEND ls_batchattributesx TO lt_batchattributesx.

       CALL FUNCTION 'BAPI_BATCH_CHANGE'
         EXPORTING
           material          = wa_xmseg-matnr
           batch             = wa_xmseg-charg
           plant             = wa_xmseg-werks
           batchattributes   =  lt_batchattributes1
           batchattributesx  = lt_batchattributesx
         IMPORTING
           batchattributes   = w_bapibatchatt.



При вызове падает в дамп:

Цитата
In the function module interface, you can specify only                
fields of a specific type and length under "BATCHATTRIBUTES".        
Although the currently specified field                                
"LT_BATCHATTRIBUTES1" is the correct type, its length is incorrect.  

Как может быть длина не такой? В чем то траблы? Лыжи не едут?

Паганель

Спасибо, тут друг-разработчик подсказал, там надо передавать структуру, а я табличку (блин пример выдрал а он то не рабочий)

Паганель

#2
В итоге мы получаем следующий код (простенький)

DATA: lt_batchattributes1 TYPE STANDARD TABLE OF bapibatchatt.  
DATA: ls_batchattributes LIKE LINE OF lt_batchattributes1.

DATA: lt_batchattributesx TYPE STANDARD TABLE OF bapibatchattx.
DATA: ls_batchattributesx LIKE LINE OF lt_batchattributesx.

DATA: w_bapibatchatt TYPE bapibatchatt.
DATA: lt_bapiret TYPE STANDARD TABLE OF bapiret2. " WITH HEADER LINE.

        ls_batchattributes-prod_date = wa_xmkpf-budat.       
        ls_batchattributesx-prod_date = 'X'.

       CALL FUNCTION 'BAPI_BATCH_CHANGE'
         EXPORTING
           material          = wa_xmseg-matnr
           batch             = wa_xmseg-charg
           plant             = wa_xmseg-werks
           batchattributes   =  ls_batchattributes1  " <<<< = структура, а не табличка
           batchattributesx  = ls_batchattributesx   " <<<< = структура, а не табличка
         IMPORTING
           batchattributes   = w_bapibatchatt.                

Паганель

Дополнительно возникает вопрос концептуального характера,
в данную бапишку, дополнительно передается таблица для возвртата сообщения и ошибок

     TABLES
          return            = lt_bapiret.


Судя по коду в самой бапи, она должна быть WITH HEADER LINE (см. код бапи).

Так вот вопрос: как обойти ограничение построителя классов (se18, я делаю внедрение)

Класс ZCL_IM_MB_DOCUMENT_BADI,Метод IF_EX_MB_DOCUMENT_BADI~MB_DOCUMENT_BEFORE_UPDATE
Tables with headers are no longer supported in the OO context.


Dmitriy

Нужно попробовать внутри своего внедрения выполнить такое объявление таблицы сообщений:
DATA: lt_bapiret TYPE TABLE OF bapiret2.
И как можно быстрее забыть про конструкцию DATA: ... LIKE ... OCCURS n WITH HEADER LINE, это прошлый век. В теме про оптимизацию много написано про рабочую область (оптимизация циклов по вн. таблицам).


SMF spam blocked by CleanTalk