Получить список сообщений из Service Provider класса (EWM)

После вызова Service Provider возникает вопрос о возврате сообщений в вызывающую программу.

Псевдокод

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

Но сообщения туда не попадают, даже если присутствовали какие-либо ошибки.

Рассмотрим несколько вариантов для получения списка сообщений на примере класса  /scwm/cl_sp_prd_inb для работы со входящими поставками.

  • Не самый короткий 🙂

На самом деле все сообщения хранятся в message_box классе.

Этот класс напрямую не вытащить из /scwm/cl_sp_prd_inb, нет подходящего акцессора.

У /scwm/cl_sp_prd_inb есть атрибут  mo_sp_core (тип /scdl/cl_sp_prd_inb), который инициализируется в конструкторе. У  mo_sp_core в атрибутах есть  mo_message_box, который нам нужен.

Наследуемся от /scwm/cl_sp_prd_inb и реализуем метод  get_messages, в котором через mo_sp_core вытаскиваем сообщения

Пример использования (псевдокод):

  • Напрямую использовать SP класс

Можно использовать service provider – /scdl/cl_sp_prd_inb, как указано здесь Service_Provider_Call_Example

Тогда мы самостоятельно передаем message_box в конструктор SP класса,

и наследование нам не понадобится.