Текущее время: Чт, апр 18 2024, 21:46

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: BAPI_MATERIAL_SAVEDATA обновление Z-полей
СообщениеДобавлено: Ср, фев 12 2020, 15:20 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 12 2020, 14:54
Сообщения: 8
Возможно кто-то сталкивался с такой проблемой и может помочь: пишу массовую загрузку для z-полей в таблице MARA. Структуры BAPI_TE_MARA и BAPI_TE_MARAX расширены, в OMSR поля также добавлены, группы выбора назначены. Проблема заключается в следующем: BAPI отрабатывает без ошибок, но обновляются лишь некоторые записи в таблице. В определенных записях основные поля изменяются корректно, но z-поля остаются пустыми, в остальных записях с этим проблем не наблюдается. Ничего похожего на мою ситуацию нагуглить не смог, если есть хоть какие-то идеи о причинах происходящего - буду рад услышать. Спасибо.

Примечание: BAPI вызывается отдельно для каждой записи в цикле. Во все позиции передаются одинаковые данные
Code:
    ls_bapi_head-material = lv_matnr.

    DATA: lv_error TYPE abap_bool.
    CALL METHOD fill_mara_zfields
      IMPORTING
        ex_error      = lv_error
      CHANGING
        ls_bapi_mara  = ls_bapi_mara
        ls_bapi_marax = ls_bapi_marax
        ls_mara       = ls_mara
        ls_marax      = ls_marax.
    IF lv_error = abap_true.
      RETURN.
    ENDIF.

    ls_ext-structure  = 'BAPI_TE_MARA'.
    ls_ext-valuepart1 = ls_mara(240).
    ls_ext-valuepart2 = ls_mara+240.

    ls_ext_x-structure = 'BAPI_TE_MARAX'.
    ls_ext_x-valuepart1 = ls_marax.

    append ls_ext to lt_ext.
    append ls_ext_x to lt_ext_x.

    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        headdata       = ls_bapi_head
        clientdata     = ls_bapi_mara
        clientdatax    = ls_bapi_marax
      IMPORTING
        RETURN         = ls_bapi_return
      TABLES
        returnmessages = it_messages
        EXTENSIONIN    = lt_ext
        EXTENSIONINX   = lt_ext_x.

    IF ls_bapi_return-type <> 'S'.
      gs_log-status_flag = '@5C@'. "ICON_LED_RED
      gs_log-message = ls_bapi_return-message.
      APPEND gs_log TO gt_log.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
      gs_log-status_flag = '@5B@'. "ICON_LED_GREEN
      gs_log-message = 'записан'.
      APPEND gs_log TO gt_log.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.
    ENDIF.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей
СообщениеДобавлено: Ср, фев 12 2020, 15:47 
Специалист
Специалист

Зарегистрирован:
Вт, дек 06 2005, 13:24
Сообщения: 167
В fill_mara_zfields как заполняется ls_mara?
ls_mara должна быть типом BAPI_TE_MARA, первым полем у которой номер материала.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей
СообщениеДобавлено: Ср, фев 12 2020, 15:59 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 12 2020, 14:54
Сообщения: 8
Daw написал(а):
В fill_mara_zfields как заполняется ls_mara?
ls_mara должна быть типом BAPI_TE_MARA, первым полем у которой номер материала.


Если Вас интересует типизация, то с ней все в порядке
Code:
fill_mara_zfields
        EXPORTING
          ex_error TYPE abap_bool
        CHANGING
          ls_bapi_mara TYPE bapi_mara
          ls_bapi_marax TYPE bapi_marax
          ls_mara TYPE bapi_te_mara
          ls_marax TYPE bapi_te_marax.


Заполняются все поля структуры, в том числе и номер материала (тип N, длина 18). Для всех материалов содержимое структуры одинаковое (для чистоты эксперимента). В некоторые записи все загружается нормально, z-поля заполнены, а в некоторых происходит изменение только основных полей, z-поля по прежнему остаются пустыми.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей
СообщениеДобавлено: Ср, фев 12 2020, 17:14 
Специалист
Специалист

Зарегистрирован:
Вт, дек 06 2005, 13:24
Сообщения: 167
Если выборочно заполняет, то это вопрос не к реализации.
С ней все в порядке.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей
СообщениеДобавлено: Ср, фев 12 2020, 23:34 
Ассистент
Ассистент

Зарегистрирован:
Пн, авг 13 2012, 10:16
Сообщения: 28
Проблема с конкретными материалами, при повторном запуске по незаполненным материалам заполняет?

Как вариант попробуйте альтернативную BAPI - BAPI_MATERIAL_SAVEREPLICA, там можно по одному материалу или массово по многим менять.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей  Тема решена
СообщениеДобавлено: Чт, фев 13 2020, 08:52 
Начинающий
Начинающий

Зарегистрирован:
Ср, фев 12 2020, 14:54
Сообщения: 8
Спасибо всем отписавшимся, но как оказалось, я, в виду малого опыта, повоевал с ветряными мельницами. Материалы, в которые не осуществлялась запись, попросту оказались заблокированы (в ММ02 редактирование этих полей было запрещено у конкретных материалов), поэтому и не проходила запись через bapi.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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