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

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

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

Messagepar lebanner » 23 Nov 2012 à 08:00

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
Dernière édition par lebanner le 08 Jan 2013 à 08:30, édité 1 fois.
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar pivo » 23 Nov 2012 à 08:38

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.
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 26 Nov 2012 à 11:40

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar Michael DELIQUE » 26 Nov 2012 à 11:52

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 "";
    }
}
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 04 Déc 2012 à 12:26

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar pivo » 04 Déc 2012 à 14:25

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à.
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 05 Déc 2012 à 12:18

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar Michael DELIQUE » 05 Déc 2012 à 12:22

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
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 05 Déc 2012 à 12:25

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 !!!
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 07 Déc 2012 à 10:16

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar Michael DELIQUE » 07 Déc 2012 à 11:30

re,

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

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 10 Déc 2012 à 19:30

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 11 Déc 2012 à 11:04

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar abertisch » 11 Déc 2012 à 11:48

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|
"Lotus, il n'y a qu'en rouleaux que ça fait pas mal au cul"
abertisch
Roi des posts
Roi des posts
 
Message(s) : 763
Inscrit(e) le : 25 Oct 2006 à 13:51
Localisation : Suisse

Re: Xpages : communiquer avec un ERP (SAP)

Messagepar lebanner » 11 Déc 2012 à 11:56

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
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Suivant

Retour vers Développement

cron