Несколько слов о соединении вида 027 - Has a prebooking for

В этой заметке я хочу накидать несколько слов о соединении вида 027 - Has a prebooking for, и поделиться своим опытом работы с ним, и исследования его же.

В функциональности SAP LSO при предварительной регистрации работника (объект P) на тип курса (объект D) формируется соединение 027 - "Has a prebooking for" между этими объектами. Таким образом, в системе регистрируется информация о предварительно зарегистрированном на тип курса работнике.

Предварительную регистрацию на тип курса можно выполнить посредством транзакций LSO_PSV1 или PV02

Рисунок 1.

В результате предварительной регистрации сформируется соединение 027 - "Has a prebooking for" в инфо-типе 1001 - "Relationships"

Рисунок 2.

Затем вы создаете курс (объект E), и регистрируете на него работника, который был предварительно зарегистрирован на тип курсов, относящийся к создаваемому курсу

Рисунок 3.

А дальше начинается самое интересное. Довелось мне поработать с не очень "свежей", по уровню последних обновлений системой, в которой, при регистрации работника на курс, соединение 027 удаляется сразу после успешного сохранения регистрации. Соединение 025 - "Is participated in by" между объектами P и E по-прежнему создавалось по факту регистрации работника на курс.

Сначала я допустил, что это есть нормальное поведение системы. Но потом нашел такую же по древности, как и система, в которой я столкнулся с такой ситуацией, SAP Note # 1670696 - Prebooking record gets deleted и устои мои пошатнулись

Рисунок 4.

Вот соответствующий этой ноте кусок кода

Рисунок 5.

Давайте расшифруем, что делает данное "новшество", преподнесенное вендором аж в 2012 году.

Соединение вида 027 между объектами D и P удаляется только при условии, что этого же работника регистрируют на курс, дата начала которого находится позже сформированной записи о предварительной регистрации.

  • Дата предварительной регистрации 01.05.2017 (соединение 027 между объектами P и D создано с даты 01.05.2017)

  • Курс создан с даты 28.05.2017

  • Регистрируем работника на курс. Как результат, соединение 027 удалено, создано соединение 025

Теперь рассмотрим второй случай, когда соединение 027 не удаляется при последующей регистрации на курс

  • Дата предварительной регистрации 30.05.2017 (соединение 027 между объектами P и D создано с даты 30.05.2017)

  • Курс создан с даты 28.05.2017

  • Регистрируем работника. Как результат, соединение 027 не удалено + создано соединение 025

Более сказать по обозначенному выше вопросу мне нечего.