IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDK Discussion :

[BI 4.0.7] Métadonnées et structure des rapports [JAVA]


Sujet :

SDK

  1. #1
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut [BI 4.0.7] Métadonnées et structure des rapports
    Bonjour,

    Je souhaite savoir comment je peux :

    - Récupérer les métadonnées d'un rapport (nom, auteur, date de création, date de dernière modification, ...) --> Tout ça je sais le récupérer avec l'InfoStore en requetant sur la table CI_INFOOBJECT, mais s'il y a d'autres moyens je suis curieux.
    - Récupérer, pour chacun des rapports identifiés précédemment, leurs structure : variables et objets. --> J'ai essayé la méthode ReportEngine.openDocument() mais celle-ci met entre 20mn et 1h à charger un document et j'en ai une cinquantaine à traiter...

    Tout ça dans le but d'alimenter, quotidiennement, une base de donnée afin de monter une petite solution web de versioning pour nos rapports.

    HELP MEEE

  2. #2
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Hello,

    Tu as l'API Restful en 4.1 aussi (et 4.0 peut être ?)
    Par exemple pour les propriétés du doc tu appelles l'url GET http://<serverName>:6405/biprws/raylight/vx/documents/{documentId}/properties
    Pour avoir la structure tu appelles GET http://<serverName>:6405/biprws/raylight/vx/documents/{documentId}/reports/{reportId}/elements

    A voir si tu y trouves ce que tu veux, l'API est un peu limitée en fonctionnalités mais ça s'améliore au fil du temps.

    Doc
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  3. #3
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Hello doc,

    D'accord j'ai bien compris qu'avec BI 4.+ on ne peut plus autant manipuler nos documents BO via le SDK qu'avant mais toujours possible via le web service RESTful.

    Je n'ai je crois jamais utilisé de web service avant, si j'ai bien compris, il suffit de lancer une requête Http GET vers ces URL, en renseignant les variables et récupérer le résultat dans une String ou un tableau ?

    Également, aurais-tu un lien vers une doc RESTfUL ? Un exemple de mise en pratique ?

    EDIT : Quelle est la différence entre un rapport et un document ? Dans les URL que tu me proposes je dois renseigner DocumentID et ReportID ? Lorsque je fais clic droit>Propriétés sur un rapport (depuis Mes Documents par ex), je récupère le DocumentID ou le ReportID ?
    EDIT2: Je n'arrives pas à faire fonctionner les URL, je récupère toujours un XML error 404 Sa passe jusque là : http://{servername}:6405/biprws/ où je récupère un XML valide, me disant qu'il à récupéré un objet InfoStore, mais j'arrives pas à aller plus loin pour l'instant

  4. #4
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    J'ai cherché tes URL dans Google et y a une petite variable que j'avais pas remarquée (qui causait ces error 404)

    http://{servername}:6405/biprws/raylight/vx/documents/{documentID}/reports/{reportID}/elements est à remplacer par un ID de version, par défaut j'ai mis v1, j'ai plus l'error 404 mais
    No session found in HTTP header X-SAP-LogonToken

    Bon, après j'essaye de taper ça directement dans ma barre d'URL, mais j'avoue ne pas savoir ou se trouve le token de session et comment le passer en GET...

    J'ai vu sur un de tes post qu'il fallait récupérer un LogonToken avant d'effectuer la moindre requete au web service
    J'ai essayé ça http://{servername}:6405/biprws/logon/long?userName={user}&password={motdepasse}&auth=secLDAP mais ça ne me retourne pas de XML avec le logontoken... :/

  5. #5
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    J'ai passé la journée à comprendre comment construire une requête Http en Java et comment utiliser Restful seulement je n'arrive toujours pas à récupérer le session token dont j'ai besoins pour manipuler les documents avec Restful.

    Voici mon code
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    String url = "http://{servername}:6405/biprws/logon/long";
    		String requestBody = "<attrs xmlns=\"http://www.sap.com/rws/bip\">"
    						+"<attr name=\"userName\" type=\"string\">{login}</>"
    						+"<attr name=\"password\" type=\"string\">{password}</>"
    						+"<attr name=\"auth\" type=\"string\" possibilities=\"secEnterprise,secLDAP,secWinAD,secSAPR3\">secLDAP</attr>"
    						+"</attrs>";
     
     
    		HttpClient client = HttpClientBuilder.create().build();
    		HttpPost test = new HttpPost(url);
    		test.setHeader("Content-Type", "application/xml");
    		test.setHeader("Accept", "application/xml");
    		HttpEntity entity = new StringEntity(requestBody, ContentType.APPLICATION_XML);
    		test.setEntity(entity);
    		System.out.println("requestBody :\n"+requestBody);
    		System.out.println("entity :\n"+entity.toString());
    		System.out.println("request :\n"+test.toString());
    		try {
    			HttpResponse reponse = client.execute(test);
    			System.out.println("reponse :\n"+reponse.toString());
    		} catch (ClientProtocolException e) {
    			System.out.println("1er catch");
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.println("2e catch");
    			System.err.println(e.getMessage());
    		}

    Mais j'obtiens :
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpResponseProxy{HTTP/1.1 500 Erreur Interne de Servlet [Server: Apache-Coyote/1.1, Date: Fri, 17 Feb 2017 15:45:16 GMT, Content-Type: application/xml, Content-Length: 112, Connection: close] ResponseEntityProxy{[Content-Type: application/xml,Content-Length: 112,Chunked: false]}}
    D'après la doc : An unclassified error occurred. See the response body for
    more information.

  6. #6
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    La doc est là (grrr ils ont encore changé leur site ) : https://websmp105.sap-ag.de/~sapidb/...stws_dg_en.pdf

    Le document ID est le n° que tu retrouves en effet dans les propriétés. Un rapport dans le jargon botien est un onglet !

    En effet il faut récupérer un token de session, puis le transmettre à chaque appel suivant.
    mais Sorry je n'ai pas essayé les appels en java, je peux pas t'aider là-dessus
    tu devrais trouver des exemples sur le net et plus précisément sur scn, ex: https://archive.sap.com/documents/docs/DOC-35068

    bon courage, et n'hésites pas à nous faire des retours sur le sdk !
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  7. #7
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Merci beaucoup doc pour ces précisions, le manque de documentation et de retours utilisateurs ne me facilite pas la tâche mais je n'abandonne pas. J'essaye de tenir à jour mes post en me disant que cela servira sûrement à un autre francophone en galère, peut-être que j'en viendrais à rédiger un article par la suite sur la manière de mettre en oeuvre ce SDK en Java.

    A l'heure actuelle je n'arrives toujours pas à récupérer mon token de session mais je vais creuser un peu la doc que que m'as indiquée !

    EDIT : L'archive vers laquelle tu m'as dirigée contient un code fonctionnel, qu'il faut néanmoins adapter aux nouvelles librairies apaches mais rien de bien compliqué.
    J'ai pas encore pu décortiquer le fonctionnement mais le principe est simple : plutôt que d'ajouter un XML en dur lors de l'envoi d'une requête Http POST vers l'URL "/biprws/logon/long", il faut plutôt envoyer un GET, récupérer le XML formaté par BO qui convient pour se connecter, le découper pour y ajouter nos informations de connection et le renvoyer en POST. Cette fois-ci l'url nous renvoit le token de session.

  8. #8
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Hello,

    Hélas en effet il y a peu de partages sur le SDK, et en français c'est pire
    Ta proposition de faire un article (même petit) est donc la bienvenue

    Tu peux passer direct par une requête POST pour récupérer le logon si tu as le body correctement constitué. C'est ce que l'on voit dans certains exemples.
    Le GET permet de récupérer un "modèle" de body à remplir, mais il ne bouge pas.

    Bon courage
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  9. #9
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    J’essayais en vain avec un body récupéré sur le web mais ça ne passait pas, après ça vient peut-être aussi de la façon dont je construisais ma requête http, sa vient même sûrement de là, j'étudierais ça . En tout cas l'exemple donné en URL plus haut fonctionne, je récupère bien mon token de session. Maintenant je cherche à utiliser Restful seulement la doc que tu m'a donné plus (archive SAP) nécessite de s'authentifier pour avoir accès au document... Je vais demander à Google aussi

    EDIT: J'ai récupéré une documentation à propos de Resftul : ICI

    EDIT2: Bon ça y'est, je sais utiliser Restful. Je galère un peu car j'apprend à la fois à construire une requête Http, manipuler du XML et interagir avec Restful. Le problème c'est que je souhaite récupérer la structure de mes documents en référentiel, le moule, celui que l'utilisateur va planifier pour ensuite récupérer son instance (exécutée avec ses paramètres) dans l'Historique du document. Je ne veux pas récupérer les données récupérées par le rapport mais uniquement la structure, le nom des colonnes et les X autres éléments potentiels présent dans le document.

    MA QUESTION EST : Quel est le ReportID d'un document en référentiel ? J'ai bien testé 0 mais ça fonctionne pas

    Sur cette URL : /biprws/raylight/v1/documents/{documentId}/reports/{reportID}/elements

  10. #10
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Hello,

    La doc Restful que tu donnes en lien est incomplète
    Il manque les API pour webi et semantic layer.
    Tu n'as pas de compte SAP ??? Si tu as BI4 c'est que tu as un compte SAP ... cherches bien

    Le reportId est un id interne de l'onglet du document. Il faut appeler l'url GET /biprws/raylight/v1/documents/{documentId}/reports
    et tu récupère un xml comme :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <reports>
    <report>
    <id>1</id>
    <name>Cross Tab View</name>
    <reference>1.RS</reference>
    <showDataChanges>false</showDataChanges>
    </report>
    <report>
    <id>2</id>
    <name>Simple charting view</name>
    <reference>2.RS</reference>
    <showDataChanges>false</showDataChanges>
    </report>
    </reports>
    Tu prends alors les balises id.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  11. #11
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Hello Doc,

    Je dois avoir un compte SAP si tu le dis, m'enfin moi j'connais que les identifiants avec lesquels je me connecte à BI4 et qu'on m'a fournis j'vais tenter de me log sur le site de SAP pour voir.

    Avec une doc complète je devrais m'en sortir comme je veux avec Restful.

    J'ai un peu avancé et je cherches toujours à récupérer la structure de mes documents, les onglets, les tableaux, les cellules, le code de chaque cellule, ...
    Avec ce que j'avais sous la main, j'ai pas trouvé comment récupérer ça via Restful, j'ai essayé /biprws/raylight/v1/documents/{documentId}/reports/{reportId}/elements mais les informations retournée dans le XML ne me suffisent pas, je veux vraiment le détail, avec ou sans les données requêtes.
    Pour le moment j'essaye d'utiliser OpenDocument (le web service) mais je n'arrives pas à l'utiliser pour le moment, je ne sais même pas si ce service est installé sur mon serveur BO
    j'ai essayé ça, tu sauras peut-être m'aider :/BOE/OpenDocument/opendoc/openDocument.jsp?iDocID="+reportId+"&token="+encodedSess mais je récupers un 500 internal error "Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête."

    EDIT: Bon j'ai réussi a faire fonctionner OpenDocument mais c'est clairement pas ce que je souhaite. En fait c'est pratique lorsqu'on veut envoyer un lien vers un rapport à quelqu'un mais pas dans une appli... Et j'ai check, j'ai pas réussi a me log sur le site de SAP, il me faut c'te doc Restful j'suis presque sûr que c'est avec ça que je vais pouvoir avancer.

    EDIT2: Comment j'utilise ça ? http://<baseURI>/infostore/<reportID>/rpt/data.svc On est d'accord que le parametre à renseigner c'est un reportId, qui correspond aux onglets d'un document... Qu'on ne me demande pas de renseigner !

    Le but de mon app est d'analyser la structure de tous les éléments d'un référentiel et de relever les différence avec une précédente analyse, afin de réaliser une solution de versionning personnalisé.

  12. #12
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    J'ai trouvé comment obtenir mes noms de colonnes :

    D'abord, on récupers l'ID des dataproviders du rapport :
    GET <baseURL>/biprws/raylight/v1/documents/<documentId>/dataproviders

    On récupert ce qu'il y a entre les balises ID : <id>DP0</id>

    Et ensuite :
    GET <baseURL>/biprws/raylight/v1/documents/<documentId>/dataproviders/<DataproviderID>/flows/0

    nous renvois les colonnes et la première ligne de données, il suffit d'extraire du XML les balises <COLUMN>

    Je cherche toujours un lien pour dll la doc de l'api Restful. J'ai créé un compte sur SAP mais impossible de me log sur leur serveur pour récupérer la doc

  13. #13
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    C'est claire que ça fait carrément monologue mais : La réponse donnée avant est fausse, ce que j'avais indiqué permet de récupérer les REQUETES (Eh oui "dataprovider", j'aurais dû comprendre ) et donc les objets qui la/les composes.

    Pour récupérer le contenu réel du document, il faut utiliser /biprws/raylight/v1/documents/{documentId}/pages

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recuperer la structure des tables
    Par mick84m dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/04/2005, 10h46
  2. Aide pour diagramme de structure des données
    Par DeezerD dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 04/12/2004, 19h10
  3. Structure des bases
    Par Cordereve dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/08/2004, 15h25
  4. structure des bases de données Palm
    Par nomdutilisateur dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/01/2004, 17h47
  5. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo