Page 1 sur 2

[RESOLU] Xpages : communiquer avec un ERP (SAP)

MessagePublié: 23 Nov 2012 à 08:00
par lebanner
Bonjour a tous,

Je viens de développer un nouvel Intranet pour l'entreprise où je boss, il a été développé entièrement en Lotus 8 (xpages).

Afin de répondre aux besoins des utilisateurs et de la direction, j'aurai besoin, depuis une xpage, d'aller récupérer des informations dans notre ERP (SAP).
En client lourd, c'est très facile de le faire mais en client Web, je ne sais pas comment m'y prendre.

Est ce que quelqu'un aurait-il des conseils ? un bouquet à me conseiller ? des exemples de codes ? des sources ? des pistes ?
J'ai regardé un peu dans le forum mais je n'ai pas trouvé d'infos intéressantes !!

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 23 Nov 2012 à 08:38
par pivo
Si tu sais le faire depuis un agent en client lourd, tu n'as qu'à appeler ton agent (p. ex. en Ajax) depuis ta xpage et traiter le retour à ta convenance.

Ce n'est qu'une idée, car j'ai déjà migré des bases en xpages et je réutilisais les agents existants de cette manière.

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 26 Nov 2012 à 11:40
par lebanner
pivo a écrit:Si tu sais le faire depuis un agent en client lourd, tu n'as qu'à appeler ton agent (p. ex. en Ajax) depuis ta xpage et traiter le retour à ta convenance.

Ce n'est qu'une idée, car j'ai déjà migré des bases en xpages et je réutilisais les agents existants de cette manière.


bonjour,

Merci pour ta réponse !!

Est ce que tu aurais un exemple d'appel en Ajax d'un agent LS stp ?

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 26 Nov 2012 à 11:52
par Michael DELIQUE
salut

un exemple

Code : Tout sélectionner
function userNameRole(server, pathfile){
    if (server === undefined || server === null || server === "") {
        server = "";
    }
   
   
    if (pathfile === undefined || pathfile === null || pathfile === "") { //si la valeur est vide récupere le chemin de la base en cours
        pathfile = (document.location.href).toLowerCase();
        pathfile = pathfile.substring(pathfile.indexOf('/', pathfile.indexOf('://') + 3) + 1, pathfile.lastIndexOf('/'));
    }
    if (pathfile === "") {
        alert("pathFile is empty");
        return "";
    }
    var urlRequeste = server + "/" + pathfile + "/agtUserNameRole?OpenAgent", XHRequest = null;
   
    if (window.XMLHttpRequest) { // Firefox et autres
        XHRequest = new XMLHttpRequest();
        if (XHRequest.overrideMimeType) {
            XHRequest.overrideMimeType('text/xml');
        }
    }
    else
        if (window.ActiveXObject) { // Internet Explorer
            try {
                XHRequest = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                XHRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else { //non supporté par le navigateur
            alert("Ajax Error :\n XMLHttpRequest non supporté par le navigateur");
            return "";
        }
   
    XHRequest.open("Get", urlRequeste, false);
    XHRequest.send(null);
   
    if (XHRequest.status === 200) { //return XHRequest.responseText.substring(XHRequest.responseText.indexOf("<Data>")+6,XHRequest.responseText.indexOf("</Data>")).split(':');
        return XHRequest.responseText.split(':');
       
    }
    else {
        alert("Ajax Error :\n" + XHRequest.statusText + "\n" + XHRequest.status + "\n" + urlRequeste);
        return "";
    }
}

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 04 Déc 2012 à 12:26
par lebanner
Bonjour a tous,

J'ai un petit script AJAX qui me permet de me connecter à notre ERP et de récupérer des infos :
Code : Tout sélectionner
var url = "http://monserveur:8080/sap/bc/bsp/sap/module/page.htm";

  try
  { req = new XMLHttpRequest(); }
  catch(e)
  { alert("Pas d'ajax disponible!!"); }
  if (req)
  {
    req.open("GET", url, false);
    req.onreadystatechange = fonctionSAP;
    req.send(null);
  }

function fonctionSAP()
  { if (req.readyState==4)
    alert (readyState)
      alert(req.responseText.substr(4));
  }


Quand je lance le script via l'ardoise javascript dans FireFox, voici le message qui apparaît :
302 Moved temporarily

Est ce que quelqu'un aurait-il une idée svp ?

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 04 Déc 2012 à 14:25
par pivo
Bonjour, et merci Michael pour ta réponse, j'étais en vacances 1 semaine :)

Pour ce qui est de lebanner, 1 piste : si la page qui fait l'appel ajax n'est pas dans le même domaine que l'URL que tu veux appeler, tu n'as pas fini d'avoir des ennuis, vu que c'est une faille de sécurité non autorisée par les navigateurs.

Donc si tu appelles l'url = "http://monserveur:8080/sap/bc/bsp/sap/module/page.htm" depuis "http://monserveur:8080/mapage.xsp", pas de problème. Sinon à mon avis ton problème vient de là.

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 05 Déc 2012 à 12:18
par lebanner
pivo a écrit:Bonjour, et merci Michael pour ta réponse, j'étais en vacances 1 semaine :)

Pour ce qui est de lebanner, 1 piste : si la page qui fait l'appel ajax n'est pas dans le même domaine que l'URL que tu veux appeler, tu n'as pas fini d'avoir des ennuis, vu que c'est une faille de sécurité non autorisée par les navigateurs.

Donc si tu appelles l'url = "http://monserveur:8080/sap/bc/bsp/sap/module/page.htm" depuis "http://monserveur:8080/mapage.xsp", pas de problème. Sinon à mon avis ton problème vient de là.


Bonjour,

Merci de ta réponse !!

Depuis mon Xpage, j'appel l'URL.
Exemple : depuis mon Xpage "http://SERVEURDOMINO:8080/mapage.xsp" j'appel l'URL "http://SERVEURSAP:8080/sap/bc/bsp/sap/module/page.htm".
Le serveur Domino et le serveur SAP ne sont pas sur le même site et ne sont pas sur le même domaine !!!

Comment je peux faire pour résoudre mon problème ? Est ce qu'il y a un moyen simple de faire ce que je souhaite svp ?

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 05 Déc 2012 à 12:22
par Michael DELIQUE
re,

ya pas une option ajax pour autorisé les requete sur un domaine différent ? ou alors c'est le navigateur qui les bloquent... je sais plus

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 05 Déc 2012 à 12:25
par lebanner
Michael DELIQUE a écrit:re,

ya pas une option ajax pour autorisé les requete sur un domaine différent ? ou alors c'est le navigateur qui les bloquent... je sais plus


Dans les exceptions du proxy du navigateur, j'ai autorisé le domaine où se trouve le serveur SAP. Mais je ne pense pas que ça suffit !!!

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 07 Déc 2012 à 10:16
par lebanner
Bonjour a tous,

Je suis toujours avec le même problème !!
est ce que quelqu'un aurait-il une solution svp ? une piste ?

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 07 Déc 2012 à 11:30
par Michael DELIQUE
re,

ton appel ajax peut lancer un agent lotus script qui lui va communiquer avec SAP ?

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 10 Déc 2012 à 19:30
par lebanner
Michael DELIQUE a écrit:re,

ton appel ajax peut lancer un agent lotus script qui lui va communiquer avec SAP ?

Bonjour A tous,

C'est ce que je vais tenter de faire mais j'ai des doutes quand même sur le fait que ça marche.

Si quelqu'un à d'autres idées, je suis preneur !!

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 11 Déc 2012 à 11:04
par lebanner
Bonjour a tous,

Bon je viens de tenter de lancer un agent LS qui se connecte à SAP via un appel AJAX.

Voici mon code AJAX :
Code : Tout sélectionner
    var urlRequeste = "http://serveurdomino/nomdelabase.nsf/testAgentLS.xsp/monagent?OpenAgent", XHRequest = null;
   
    if (window.XMLHttpRequest) { // Firefox et autres
        XHRequest = new XMLHttpRequest();
        if (XHRequest.overrideMimeType) {
            XHRequest.overrideMimeType('text/xml');
        }
    }
    else
        if (window.ActiveXObject) { // Internet Explorer
            try {
                XHRequest = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                XHRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        else { //non supporté par le navigateur
            alert("Ajax Error :\n XMLHttpRequest non supporté par le navigateur");
        }
   
    XHRequest.open("GET", urlRequeste, false);
    XHRequest.send(null);
   
    if (XHRequest.readyState == 4) {
        //alert("OK connexion OK !!!") ;
       alert(XHRequest.responseText);
    }


Voici mon agent LS qui se connecte à SAP via une bibliothèque de script :
Code : Tout sélectionner
Sub Initialize
   
   ' Déclaration des différentes variables
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim doc1 As NotesDocument
   Dim doc As NotesDocument
   Dim session As New NotesSession
   Dim newDoc As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim continue As Variant
   Dim Z_NOTES_EXTRACTION_ARTICLES_D As RFCfunction
   
   'Déclaration des tables SAP
   Dim t_makt As RFCtable

   ' Initialisation
   Set db = session.CurrentDatabase
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
   Print "Connexion à SAP - Merci de patienter."
   If AssertConnection() = True Then
      Print "Connexion à SAP OK !!"
      Set Z_NOTES_EXTRACTION_ARTICLES_D = New RFCFunction (objServer, "Z_NOTES_EXTRACTION_ARTICLES_D")
      Z_NOTES_EXTRACTION_ARTICLES_D.Exports("MATNR").Value = "moncode"      
      Z_NOTES_EXTRACTION_ARTICLES_D.Exports("WERKS").Value = "%"
      Z_NOTES_EXTRACTION_ARTICLES_D.Exports("VKORG").Value = "%"
      Z_NOTES_EXTRACTION_ARTICLES_D.Exports("VTWEG").Value = "%"
      Z_NOTES_EXTRACTION_ARTICLES_D.Exports("UNPAR").Value = "0"
      If Z_NOTES_EXTRACTION_ARTICLES_D.Call = True Then
         Set t_makt = Z_NOTES_EXTRACTION_ARTICLES_D.Tables("T_MAKT")
         NewRow1 = t_makt.Rows.Count   
         recupinfo = t_makt.Rows(NewRow1).MAKTX
      End if
   Else
      Print "Connexion à SAP impossible!!"
   End If
   
End Sub


Quand je lance le tout via FireFox, il ne se passe rien, il m'affiche une popup avec le code source de ma Xpage.
Comment je peux voir que la connexion a SAP à bien eu lieu ?
Comment je peux récupérer mon info ?

Merci d'avance
Cordialement

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 11 Déc 2012 à 11:48
par abertisch
Salut,

Si tu commences à faire de l'ajax avec domino il faut prendre l'habitude de faire les print ci-dessous avant d'afficher tes valeurs :

Code : Tout sélectionner
   Print |Status: 200 OK|
   Print |Content-Type: text/javascript; charset=UTF-8|
   Print |Cache-Control: private|

Re: Xpages : communiquer avec un ERP (SAP)

MessagePublié: 11 Déc 2012 à 11:56
par lebanner
abertisch a écrit:Salut,

Si tu commences à faire de l'ajax avec domino il faut prendre l'habitude de faire les print ci-dessous avant d'afficher tes valeurs :

Code : Tout sélectionner
   Print |Status: 200 OK|
   Print |Content-Type: text/javascript; charset=UTF-8|
   Print |Cache-Control: private|


Bonjour,

Oui très bien mais je met les print ou? pourquoi ?

Je ne comprend pas bien le principe ?
Est ce que vous avez quelque part un morceau de code exemple afin de bien comprendre le principe ?
J'ai regardé sur le net et je ne trouve pas grand chose à ce sujet !!

merci d'avance
Cordialement