SAPфорум.RU https://www.sapboard.ru/forum/ |
|
BAPI_MATERIAL_SAVEDATA обновление Z-полей https://www.sapboard.ru/forum/viewtopic.php?f=13&t=98440 |
Страница 1 из 1 |
Автор: | verbmaks [ Ср, фев 12 2020, 15:20 ] |
Заголовок сообщения: | BAPI_MATERIAL_SAVEDATA обновление Z-полей |
Возможно кто-то сталкивался с такой проблемой и может помочь: пишу массовую загрузку для 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. |
Автор: | Daw [ Ср, фев 12 2020, 15:47 ] |
Заголовок сообщения: | Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей |
В fill_mara_zfields как заполняется ls_mara? ls_mara должна быть типом BAPI_TE_MARA, первым полем у которой номер материала. |
Автор: | verbmaks [ Ср, фев 12 2020, 15:59 ] |
Заголовок сообщения: | Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей |
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-поля по прежнему остаются пустыми. |
Автор: | Daw [ Ср, фев 12 2020, 17:14 ] |
Заголовок сообщения: | Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей |
Если выборочно заполняет, то это вопрос не к реализации. С ней все в порядке. |
Автор: | jastfake [ Ср, фев 12 2020, 23:34 ] |
Заголовок сообщения: | Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей |
Проблема с конкретными материалами, при повторном запуске по незаполненным материалам заполняет? Как вариант попробуйте альтернативную BAPI - BAPI_MATERIAL_SAVEREPLICA, там можно по одному материалу или массово по многим менять. |
Автор: | verbmaks [ Чт, фев 13 2020, 08:52 ] |
Заголовок сообщения: | Re: BAPI_MATERIAL_SAVEDATA обновление Z-полей |
Спасибо всем отписавшимся, но как оказалось, я, в виду малого опыта, повоевал с ветряными мельницами. Материалы, в которые не осуществлялась запись, попросту оказались заблокированы (в ММ02 редактирование этих полей было запрещено у конкретных материалов), поэтому и не проходила запись через bapi. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |