// Receive company codes from SAP and generate drop-down list function DoAcceptOptions() { var f = document.getElementById(‘cc’); var optlist = f.options; var opt = document.getElementById(‘optionstring’); var s = new Array(); s = opt.value.split(“~~~”); for (var i = 0; i<s.length-1; i +=2) { optlist[optlist.length] = new Option(s[i+1], s[i]); }; }; // Send changed value to SAP screen function cc_select(f) { if (f && typeof(f.value) == 'string') { window.location = "SAP://Company Code:" + f.value + ";"; }; }

 

Scripte GuiXT

GuiXT efface le champ de saisie pour le code de société et affiche la page HTML à la place. Les coordonnées de la commande “View” contiennent des valeurs négatives et décimales pour que la partie View soit correctement placée dans l’écran SAP.

Etant donné que l’écran SAP peut venir avec une valeur par défaut pour le code de société (valeur propre à l’utilisateur ou une valeur saisie dans une transaction précédente), il faut ajuster la valeur actuelle du champ F[Société] dans le champ déroulant HTML.

Au premier affichage du champ déroulant, nous allons générer la liste des valeurs en utilisant un fichier séparé inclus (commande include).

Voilà le scripte GuiXT en entier:

del F[Société] -value
View (-0.5,63.4) (0.5,97.4) “ccdropdown.html” returnwindow=“hwnd_fb01_cc_dropdown” id=“fb01_ccdropdown”

if not V[ccdropdown_initialized]
   include “build_select_companycode.txt”
endif

Set HTML[select_cc] “&F[Société]“

Génération de la liste des valeurs

Il nous faut un module de fonction ABAP qui lit tous les codes de société avec leurs textes correspondants dans le système SAP. Ceci peut être un module de fonction spécifique que vous créez pour cette tâche ou alors, vous pouvez en utiliser un général comme par exemple la fonction SAP “RFC_READ_TABLE”.

Dans notre cas précis nous allons utiliser une fonction “Z_S10_SEARCHHELP” qui a été écrite par Synactive dans le système Synactive S10 (http://www.synactives10.com/s10forum). Elle lit la liste d’aide de valeurs dans le système SAP et peut facilement être utilisé dans les scriptes GuiXT.

Le scripte lit toutes les valeurs dans une variable texte et envoie ensuite les valeurs à la page HTML. Pour des raisons de performance on va concaténer à chaque fois 100 valeurs en un string unique et qui sera ensuite envoyé.

-> Il n’est pas possible d’envoyer dans un seul string toutes les valeurs d’une très grande liste à cause D’une capacité limitée de la longueur d’une commande GuiXT (4000 caractères). C’est pour cette raison que l’on utilise un groupage de 100 valeurs à la fois.

Voilà le scripte GuiXT “build_select_companycode.txt”:

// Indiquer: initialisé

Set V[ccdropdown_initialized] “X”

 

// lire les valeurs dans SAP

Call “Z_S10_SEARCHHELP” in.SEARCHHELP=“H_T001″ in.COLUMNS=“BUKRS(4),BUTXT(25) table.DATA=“data”

 

set V[i] 1

set V[k] 1

set V[cc_option] “”

set Text[options] “”

 

label cc_next

 

CopyText fromText=“data” toString=“line” line=&V[i]

if not Q[ok]

   goto cc_done

endif

 

Set V[cc_code] “&V[line](1-4)

Set V[cc_text] “&V[line](5-29)

Set V[cc_option] &V[cc_code]~~~&V[cc_code] &V[cc_text]~~~”

 

CopyText fromString=“cc_option” toText=“options” -append

 

Set V[i] &V[i] + 1

Set V[k] &V[k] + 1

 

// envoyer 100 valeurs

if V[k=100]

   CopyText fromText=“options” toString=“cc_option”

   set Text[options] “”

   Set HTML[text_optionstring] “&V[cc_option]“

   connectHTML click=“button_AcceptOptions” window=“&V[hwnd_fb01_cc_dropdown]“

   Set V[k] 1

endif

 

goto cc_next

 

label cc_done

 

// envoyer les valeurs restantes

CopyText fromText=“options” toString=“cc_option”

set Text[options] “”

Set HTML[text_optionstring] “&V[cc_option]“

 

connectHTML click=“button_AcceptOptions” window=“&V[hwnd_fb01_cc_dropdown]“

 

Champs de saisie déroulants dynamiques (1)