Lo que haremos en esta ocasión en hacer la consulta al service layer para usarlo en un Select2 vía AJAX y PHP primera mente usaremos la siguiente petición de tipo GET URL
https://localhost:50000/b1s/v1/Users?$select=InternalKey,UserCode,Group,UserName&$filter=Group eq 'ug_Regular' and substringof('Julio',UserName) or substringof('Julio',UserCode)&$orderby=InternalKey
Como ven usamos la función substringof que seria el equivalente en SQL al like ‘%%’
Quedando mas o menos asi

Ahora transformamos la petición a una función de PHP en la que recibimos la cookie y el filtro para buscar los usuarios
/* =============================================
MOSTRAR
============================================= */
static public function ctrMostrar($cookie, $filtro) {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "50000",
CURLOPT_URL => "https://localhost:50000/b1s/v1/Users?%24select=InternalKey%2CUserCode%2CGroup%2CUserName&%24filter=Group%20eq%20'ug_Regular'%20%20and%20substringof('$filtro'%2CUserName)%20%20or%20substringof('$filtro'%2CUserCode)&%24orderby=InternalKey",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_COOKIE => $cookie,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: */*",
"User-Agent: Thunder Client (https://www.thunderclient.com)"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
return "cURL Error #:" . $err;
} else {
return json_decode($response);
}
$response = json_decode($response);
return $response;
}
Ahora en el archivo de consulta se usaría de la siguiente forma, hacemos el Login, consultamos, hacemos el Logout, y formamos la cadena JSON de la siguiente forma
$busqueda = $_POST["searchTerm"];
$conexionSAP = ServiceLayer::login();
$cookie = "B1SESSION=" . $conexionSAP->SessionId . "; ROUTEID=.node1";
$usuariosSAP = ControladorUsuariosSAP::ctrMostrar($cookie, $busqueda);
$usuariosSAPLista = $usuariosSAP->value;
$usuariosSAP = ServiceLayer::logout($cookie);
$jsonVariable = ' { "results": [';
foreach ($usuariosSAPLista as $keyUsuarios1 => $valueUsuarios1) {
$jsonVariable .= ' {
"id": "' . $valueUsuarios1->UserCode . '",
"text": "' . utf8_encode($valueUsuarios1->UserCode . " - " . $valueUsuarios1->UserName) . '"
},';
}
$jsonVariable = substr($jsonVariable, 0, -1);
$jsonVariable .= ' ]
}';
echo ($jsonVariable);
Y listo ya esto obtenemos los datos requeridos
1 pingback