SAPфорум.RU
https://www.sapboard.ru/forum/

Проверить возможность изменения адреса контрагента при заблокированой записи контрагента
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=97460
Страница 1 из 1

Автор:  Kahaber [ Пт, мар 15 2019, 17:28 ]
Заголовок сообщения:  Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Зравствуйте, коллеги.
Суть вопроса такова:
имеется сервис типа API, который в САпе дергает внешняя система и передает данные для изменения адреса (город, улица, дом, квартира и др).
Адрес изменяется БАПихой BAPI_BUPA_ADDRESS_CHANGE.
В случае блокирования записи контрагента в сапе получаем сообщение - Деловой партнер 9900035777 в настоящее время блокирован ...
Может кто подскажет, как можно проверить возможность обновления адреса, обойдя блокировку.
Например, при обновлении, можно потом получить сообщение - E R5 555 Номер дома 99/99 999 не принадлежит ни одному из определенных фрагм. улиц.

Спасибо.

Автор:  Kengur [ Пт, мар 15 2019, 18:11 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Наверно надо писать номера сообщений полностью. Судя по тексту кто то уже заблокировал контрагента транзакционно.

Автор:  Saperx [ Сб, мар 16 2019, 13:35 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Мне кажется человеку не столько нужно обновить адрес, сколько проверить его на корректность, без необходимости вызова данной бапишки. Иначе заставлять ждать разблокировки партнера только чтобы потом вернуть ошибку что адрес изначально кривой - как-то неправильно.

Автор:  Kahaber [ Сб, мар 16 2019, 21:43 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Немного учточню. Отрабатывает API-сервис.
Тоесть приходят данные адреса из внешней системы для изменения адреса в SAP. Нам нужно оперативно отдать ответ Ok или Error.
Сейчас, если партнер/адрес блокирован, БАПИ выдает только одну ошибку о блокировке (других ошибок нет). Отдавать такую ошибку во внешнюю систему выглядит не очень корректно.
В идеале должно быть так:
если стоит блокировка, проверяем возможность изменения адреса( только как это сделать??? в этом и вопрос).
1. Если возможность без ошибки, то отдаем во внешнюю систему Ок, а данные откладываем для фонового задания, которое обновит адрес после разблокировки
2. Если возможность возвращает ошибку, то отдаем Error во внешнюю систему с конкретным ссобщением ошибки по адресу.

Думаю так будет понятней

Автор:  Kengur [ Пн, мар 18 2019, 09:19 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Нового создавайте без коммита в базу. Проверяйте ошибки из бади.

Автор:  superbizon [ Пн, мар 18 2019, 09:30 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

BAPI_ADDRESSORG_CHANGE или что-нибудь подобное пробовали?

Автор:  Kahaber [ Пн, мар 18 2019, 10:23 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Kengur написал(а):
Нового создавайте без коммита в базу. Проверяйте ошибки из бади.


Дело в том, что запись партнера на момент отработки сервиса уже создана в сап.
Данный сервис создает или изменяет адрес уже существующего партнера, который у нас будет заблокирован.

Тоесть по вашему предложению надо сначала создать нового партнера (так как текущий блокирован) и создать адрес на нем (или присвоить существующий и изменять). Но нового (не нужного) партнера для проверки комитить то прийдется

Автор:  sasha502 [ Пн, мар 18 2019, 17:43 ]
Заголовок сообщения:  Re: Проверить возможность изменения адреса контрагента при заблокированой записи контрагента

Можно посмотреть в сторону BADI проверки

Code:
  DATA lo_exit_object_addr_check TYPE REF TO cl_ex_bupa_addr_check.
  CALL METHOD cl_exithandler=>get_instance
    EXPORTING
      exit_name              = 'BUPA_ADDR_CHECK'
      null_instance_accepted = abap_true
    CHANGING
      instance               = lo_exit_object_addr_check
    EXCEPTIONS
      OTHERS                 = 1.


Code:
  lo_exit_object_addr_check->if_ex_bupa_addr_check~check(
    EXPORTING
      iv_activity                    = iv_activity
*                                       01   Создать
*                                       02   Изменить
*                                       03   Просмотреть
*                                       04   Модифицировать (прямой ввод: создать/изменить)
*                                       06   Удалить
      "....
      "По необходимости
    CHANGING
      et_return                      = et_return
  ).

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/