Текущее время: Пт, мар 29 2024, 05:04

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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