|
La commande View vous permet d’afficher des données sous format tabulaire. Dans cet article nous décrivons comment vous pouvez permettre à un utilisateur de saisir des données dans des cellules de table et comment ajouter un bouton “Sauvegarder” qui permette de sauvegarder les données modifiées à l’aide d’un InputScript.
Deux méthodes existent pour afficher des données sous format tabulaire html:
Dans notre exemple nous utilisons la fonctionnalité avec le fichier gabarit HTML et pas l’interface connectHTML. Ce choix n’a aucune importance pour le reste de l’article. L’approche avec le fichier gabarit est plus simple en ce qui concerne le JavaScript utilisé mais l’approche connectHTML est plus flexible en ce qui concerne la présentation finale du tableau. Tous les fichiers scriptes et le fichier HTML pour l’exemple sont contenus dans ce fichier zip. Décomprimez le fichier dans un répertoire de scriptes votre choix pour vos propres tests. L’application aura l’aspect suivant:
Etape 1: Ajouter un nouveau bouton poussoir
Le bouton poussoir lance l’InputScript “afficher_contacts.txt” qui positionne un repère V[display_contacts] et revient.
Etape 2: Lire les numéros de téléphone Le BAPI BAPI_CUSTOMER_GETCONTACTLIST est invoqué dans le scripte GuiXT et lit les informations du contact avec les numéros de téléphone. Nous devons ajouter des zéros devant le numéro de client vu que le BAPI ne convertit pas le format externe (sans zéros devant le numéro) dans le format interne.
Etape 3: Remplir les variables scriptes dans le fichier gabarit Le fichier modèle HTML attend des variables indexées, c’est à dire cont_1, cont_2,… pour construire les lignes de la table.
Les variables cont_1, cont_2,… sont alors une copie des lignes retournées par le BAPI, avec la structure BAPICONTACT_ADDRESSDATA:
GuiXT permet d’adresser les composantes symboliquement, c’est à dire V{cont_1](BAPICONTACT_ADDRESSDATA-TEL1NUMBR) pour le numéro de téléphone. Nous pouvons utiliser cette notation pour le fichier gabarit HTML:
Nous ajoutons un titre, les désignations des colonnes et deux boutons: un dans le coin en haut à droite pour fermer l’affichage et un bouton “Sauvegarder” en bas qui va mettre les numéros de téléphone à jour:
Le le petit bouton “Fermer” est défini comme suit:
Lorsque l’on appuie sur le bouton la fonction JavaScript “close_contacts()” est lancée:
… qui invoque l’InputScript “fermer_contacts.txt”:
La commande “Return” relance l’exécution du scripte GuiXT pour cet écran et, vu que la variable repère V[display_contacts] n’a plus de valeur, la page HTML va être supprimée de l’écran. Le scripte “Sauvegarder” est un peu plus compliqué. Le bouton “Sauvegarder” va invoquer une fonction JavaScript “save_contacts()” qui va form
Une alternative serait de ne transmettre que les numéros de téléphone modifiés avec un numéro de ligne. Dans le cas où il serait possible à l’utilisateur de modifier plus d’une colonne du tableau, nous nous serions décidé un string pour chaque colonne. L’InputScript “sauver_contacts.txt” doit alors mettre à jour les numéros de téléphone modifiés dans le système SAP. Nous pourrions le faire avec un appel de module de fonction mais semblerait qu’aucun BAPI approprié n’existe et que nous serions obligé de développer une fonction appropriée nous même pour cette tâche. Dans notre exemple d’implémentation nous n’utilisons pas d’appel de fonction mais utilisons la transaction standard du système SAP pour mettre à jour les numéros de téléphone. L’analyse de la structure du numéro de téléphone est un peu compliquée mais le reste s’exécute facilement:
|