CrossJoin Service Layer

Buenos dias gente querida, soy nuevo en el foro y en SAP.
Tengo un problema que necesito resolver para continuar con mi proyecto en SAP Business One v9.3.
Consumo los recursos a través de la API Service Layer y no logro traer la info de todos los empleados con RoleID -2. Leyendo la doc ví que el listado de clientes se encuentra en EmployeesInfo y los roles los tengo en EmployeeRolesSetup.
Probé con esto pero no funcionó:

GET /b1s/v1/$crossjoin(EmployeesInfo, EmployeeRolesSetup)?$expand=EmployeesInfo($select=EmployeeID,FirstName,
LastName)&$filter=EmployeesInfo/EmployeeRolesInfoLines/RoleID eq
EmployeeRolesSetup/TypeID

Me devuelve esto:

"error": {

    "code": -1000,

    "message": {

        "lang": "en-us",

        "value": "Internal server error."

    }

}

Por favor alguien que me dé una mano con esto. Gracias!

(no he usado el crossjoin desde SL)

Entiendo que no, si no consigues solución, como alternativa puedes armar el query sql, crear una vista calculada, exponerla al SL y consumirla.

Hola @disanramon
Te recomendamos pasar por la sección de Presentaciones.
Lo siguiente te puede ser útil sobre SAP 10.

Andres Ramirez Jaramillo :colombia:

Hola @disanramon.

Por favor, hay que atender las normas básicas del foro, una de ellas es pasar a la sección de #presentaciones.

Saludos. :mexico:

1 me gusta

Los crossjoin son soportados a partir de la version 10 de SAP.

1 me gusta

no te funciona porque esta mal realizada la operacion, para realizar cross join llamas al metodo GET b1s/v1/QueryService_PostQuery, pero la query la escribes en el body

1 me gusta

Hola @disanramon
Los crossjoin funcionan como los JOIN de SQL pero sobre oData, por lo cual debes relacionar las 3 entidades.

SELECT T0.“empID”, T0.“firstName”, T0.“lastName”
FROM OHEM T0, HEM6 T1, OHTY T2
WHERE T0.“empID” = T1.“empID” AND T1.“roleID” = T2.“typeID” AND T2.“typeID” = -2

El error esta en que te falta relacionar la entidad EmployeesInfo/EmployeeRolesInfoLines en el crossjoin. De la siguiente manera funciona bien.

/b1s/v1/$crossjoin(EmployeesInfo, EmployeesInfo/EmployeeRolesInfoLines, EmployeeRolesSetup)?
$expand=EmployeesInfo($select=EmployeeID,FirstName,LastName)
&$filter=EmployeesInfo/EmployeeID eq EmployeesInfo/EmployeeRolesInfoLines/EmployeeID and
EmployeesInfo/EmployeeRolesInfoLines/RoleID eq EmployeeRolesSetup/TypeID and EmployeeRolesSetup/TypeID eq -2

Andres Ramirez Jaramillo :colombia:

2 Me gusta

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.