Cet article présente comment réaliser une simple calculatrice un ABAP sous miniSAP. MiniSap est une version allégée de SAP qui permet de développer en ABAP (Langage propriétaire de SAP).

Une fois connecté à l’application miniSAP, saisissez “SE80″ dans la zone prévue à cet effet. Cette commande permet d’accéder au module qui permet de créer une application complète.

sap-abap-minisap-1

SE80

Dans la colonne de gauche, une zone de saisie apparaît, saisissez y le nom du programme que vous voulez créer. Ce nom de programme doit être précédé de “Z”. Exemple : ZCALCULATRICE. Vérifier avant que dans la liste déroulante au dessus de la zone de saisie, qu’il y ait “program” de sélectionné.

Une fenêtre s’affiche, avec un formulaire à remplir, saisissez le” titre” du programme et le type “executable program”. Cliquez ensuite sur “Save”. Une nouvelle fenêtre popup s’ouvre « Create Object Directory Entry ». Saisissez “$TMP” comme nom de package. Cliquez ensuite sur la “disquette orange”. Cliquez ensuite sur la baguette magique afin d’activer le programme vide pour l’instant.

Remarque : à chaque fois que vous faites quelque chose, enregistrez puis cliquez sur la baguette magique afin d’activer l’action effectuée.

Création de l’écran

Faites un clique droite sur le dossier ZCALCULATRICE et cliquez sur “Create” puis “Screen”. Une popup s’ouvre « Create Screen ». Saisissez le numéro d’écran que vous désirez lui donner. Par exemple “0100″. Une autre fenêtre s’ouvre, remplissez la zone de saisie “short description”. Puis activez l’écran. Cliquez ensuite sur le bouton “Layout” pour créer l’interface graphique de l’application.

johan-fermaud-sap-abap

Interface graphique

Je travaille actuellement, dans le cadre de mes études, sur un projet autour de Windows Phone 6.5 et Glassfish. Nous avons formé des équipes composées de 5 étudiants.

Le projet consiste à développer un réseaux social fonctionnant sur Windows Phone et hébergé sur la plate-forme Glassfish. Voici les fonctionnalités principales :

  • A propos du site Internet :
  1. Création d’un compte utilisateur.
  2. Gestion du profil.
  3. Gestion de groupes regroupant plusieurs contacts présents dans notre liste de contact du smart phone.
  • A propos de l’application mobile :
  1. Repérer les contacts, inscrits sur le site Internet, à proximité de notre position.
  2. L’application notifie la proximité des contacts en les situant sur une carte sous forme de points. Le repérage se fait grâce à la puce GPS présent dans les smart phones. L’affichage de la carte utilise l’API Google Map.

Plan d’action

Voici comment nous allons nous y prendre afin de réaliser cette application.

Tout d’abord, il faut définir l’architecture de l’application c’est à dire, définir les modules étant en interactions :

  • La base de données.
  • L’application qui tourne en tâche de fond sur le Windows Phone et qui notifie à l’utilisateur lorsqu’un ami est à proximité.
  • L’application web qui est hébergé sur la plate-forme Glassfish.
  • Les services web qui permet à l’application web de communiquer avec l’application sur le Windows Phone et vice et versa.

Ensuite, il faut définir les risques technologiques. Nous les verrons dans un prochain article.

Puis, il faut donc faire la conception de tous ces modules. La base de données est terminée et a été réalisée sous MySql.

Nous sommes en train de développer quelques prototypes :

  • Récupération de la latitude et de la longitude où l’utilisateur se trouve.
  • Géolocalisation par l’intermédiaire de l’API Google Maps.
  • Service web permettant la communication des 2 applications entre elles.
  • Application web permettant aux utilisateurs de s’inscrire ou de créer des groupes afin d’être alerté de leur proximité.

Une fois ces prototypes terminés, nous pourrons développer tous ces modules, sachant que la base sera faite, il ne nous restera donc plus qu’à bien étoffer chaque fonctionnalité et à les faire interagir entre elles.

Enfin, si nous avons le temps, nous essayerons de développer plus de fonctionnalités autour du réseaux social car cette première application (localiser les amis à proximité de l’utilisateur est une excellente idée et pourrait intéresser beaucoup de personnes). Donc si nous développons un réseau social digne de ce nom avec d’autres fonctionnalités toutes aussi originales, le portail web pourrait connaître un franc succès.

Afficher un itinéraire avec l’API Google Maps

Lorsqu’un contact est proche de notre position, l’application doit afficher une carte par l’intermédiaire de l’API Google Maps en plaçant sur la carte un point qui représente sa propre position et un autre qui représente la position du contact à proximité. La carte s’affiche dans une pictureBox (ici : pictureBox2) présente sur la Form de notre application Smart Device.

Voici une méthode qui permet de réaliser cette fonctionnalité :

private Bitmap GetItineraire(string lat1, string long1, string lat2, string long2)
{
Bitmap myMap = null;

#region Construction des arguments de l’URL
StringBuilder args = new StringBuilder();
args.Append(« center= » + lat1 + « , » + long1);
args.Append(« &zoom=8″);  //Le zoom peut être modifié selon si l’on définie la « proximité » plus ou moins grande.
args.Append(« &size= » + 512 + « x » + 512);
args.Append(« &maptype=mobile »); // satellite, terrain, hybrid, mobile
args.Append(« &markers=color:blue|label:O| »+lat1+ », »+long1+ »”);
args.Append(« &markers=color:red|label:H| » + lat2 + « , » + long2 + «  »);
args.Append(« &sensor=false »);   // true if my app uses GPS sensor
args.Append(« &key= » + Properties.Resources.GoogleMapsApiKey);

#endregion
try
{
WebRequest myRequest = WebRequest.Create(Properties.Resources.GoogleMapsBaseUrlItineraire + args.ToString());
WebResponse myResponse = myRequest.GetResponse();
myMap = new Bitmap(myResponse.GetResponseStream());
myResponse.Close();
}
catch (WebException ex)
{
MessageBox.Show(ex.Message);
}

pictureBox2.Image = myMap;

return myMap;

}

Merci à Pierre Cauchois de chez Microsoft pour son blog qui nous aide énormément pour la réalisation de ce projet. Le squelette principal de ce code provient de son blog et a été modifié afin de réaliser la fonctionnalité désirée. Adresse du blog de Pierre Cauchois :

http://blogs.msdn.com/pierreca/

Calcul de la distance entre 2 positions géographiques (Latitude & Latitude)

Voici une méthode permettant de calculer la distance entre 2 coordonnées (Latitude & Longitude) placées sur la carte affichée sur l’application mobile comme vu précédemment :

public double GetDistance(double pLat1, double pLong1, double pLat2, double pLong2)
{
double DEGTORAD = Math.PI / 180.0;
double RADTODEG = 180.0 / Math.PI;
double theta = pLat1 – pLat2;
double d = Math.sin(pLat1 * DEGTORAD) * Math.sin(pLat2 * DEGTORAD) + Math.cos(pLat1 * DEGTORAD) * Math.cos(pLat2 * DEGTORAD) * Math.cos(theta * DEGTORAD);
d = Math.acos(d);
d *= RADTODEG;
d *= 60 * 1.1515;
d *= 1.609344;
return d;
}

Cette méthode se trouve dans le service web dans la partie JEE.

Merci à l’internaute qui a publié ce calcul sur la toile. La méthode a été modifiée afin de l’intégrer à notre projet.

Web Service

Afin de faire communiquer l’application sur le mobile avec le site Internet nous décidons d’utiliser les « Web Services » qui nous permet donc d’envoyer des données, de les traiter, d’en récupérer certaines provenant de la base de données et de les retourner à l’application sur le mobile.

Notre Web Service est implémenté dans l’application web hébergée sur Glassfish. L’application mobile envoie au Web Service ses propres coordonnées GPS (latitude & longitude) ainsi que son numéro de téléphone. Grâce à ces informations, le Web Service récupère la liste des contacts (contenue dans notre smart phone), puis vérifie la distance qui nous sépare des positions de nos contacts contenues dans la base de données MySql. Lorsque la position d’un ou plusieurs contacts est assez proche de la notre, le Web Service renvoie au mobile les coordonnées et le numéro de téléphone de ces contacts. L’application mobile peut alors affichée la carte avec le marquage des différentes positions des contacts proches.

Création du Web Service :

Faites un clique droit soit sur votre application web soit sur la partie EJB (si vous en utilisez pour faire la persistance des données avec votre base de données). Puis cliquez sur Web Service, saisissez le nom que vous souhaitez lui attribuer et choisissez le package dans lequel vous voulez qu’il apparaisse et enfin cliquez sur “Terminer”.

Votre Web Service est alors créé. Il ne reste donc plus qu’à implémenter les méthodes que vous désirez.

Implémentation du Web Service du côté JEE :

package <votre nom de package>;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService()
public class WebService1 {

}

// Constructeur du Web Service : WebService1

public WebService1() {

}

// Déclaration d’une méthode : ici la méthode classique permettant d’afficher “Hello World”.

// L’operationName est le nom qui sera utilisé pour accéder à cette méthode depuis votre application mobile par exemple.

@WebMethod(operationName = “hello”)
public String hello() {
return “Hello World”;
}

Communication avec le Web Service à partir de l’application mobile :

// Permet d’utiliser le Web Service : “NomDeLAppli.NomDeLaRéférenceWeb”

using AppliEPSI.WebReference1;

namespace AppliEPSI
{
public partial class Form1 : Form
{

//Service1 ws;
WebReference1.WebService1Service ws;

}

public Form1()
{
InitializeComponent();

ws = new WebReference1.WebService1Service(); // Instanciation du Web Service

}

private void Form1_Load(object sender, EventArgs e)
{

LabelMsg.Text = ws.hello(); // Appel de la méthode “hello” présente dans le Web Service et assignation du résultat (Hello World) dans le Label “LabelMsg” présent dans le Form1.

}

Voila, vous avez toutes les billes en main pour faire communiquer une application développée sur un mobile avec une application web par l’intermédiaire d’un Web Service.

Suivre

Get every new post delivered to your Inbox.