Первое, что нужно понять, это то, что протокол OData не предназначен для работы исключительно как классические вызовы функций. Однако он основан на модели сущности / отношения.
Таким образом, в вашем случае идентификатор является наилучшим для создания типа сущности с именем «Сотрудник» с соответствующими свойствами вашей структуры S_EMPLOYEE_DETAILS. С этим вы можете, например, реализовать метод GET_EMPLOYEE_ENTITY для извлечения одного экземпляра сотрудника через PERNR.
Следующее, что нужно сделать, это получить прямые отчеты этого сотрудника. Поскольку в вашем случае это отношение 1: N от Сотрудника к Сотруднику, вы можете создать свойство навигации под названием «DirectReports» с подходящим количеством элементов. Затем в вашем GET_EMPLOYEE_ENTITYSET вы можете вернуть экземпляры таблицы T_DIRECT_REPORTS (обратите внимание, что свойство навигации не пустое, и вы должны прочитать ключи родительского элемента!).
Получив эту работу, вы можете перейти к «передовому опыту» и реализовать метод GET_EXPANDED_ENTITY с заполнением предложений расширения, который, на мой взгляд, является предпочтительным способом, поскольку вам не нужно реализовывать два отдельных метода, и он рассматривается также быстрее (если произойдет много расширений).
Оба метода реализации могут быть вызваны через
GET EmployeeSet ('12345678')? $ Expand = DirectReports