Utilisez la macro FIELD-GET pour paramétrer la valeur des zones de contexte dans le module PAI d’une transaction. Les appels FIELD-GET ne sont pas mis dans la mémoire tampon, mais exécutés immédiatement. Étant donné que cette opération nécessite un ordre séparé de l’Internet Transaction Server (ITS) sur le réseau, l’utilisation de cette macro a des répercussions sur les performances. Par conséquent, vous ne devez l’utiliser que si vous devez recevoir des données de masse du contexte ITS. Dans le cas contraire, utilisez plutôt des zones R/3 classiques.
Utilisation
field-get Contextfield-Name (in,CHAR)
contextfield-index (in,NUM)
contextfield-value (out,ITAB)
contextfield-length (out,NUM)
Paramètres
Paramètre |
Désignation |
Contextfield-Name |
Désignation de la zone de contexte |
Contextfield-Index |
Index de la zone de contexte |
contextfield-value |
Valeur de la zone de contexte |
contextfield-length |
Longueur de la zone de contexte |
Si la zone de contexte n’existe pas, la macro affecte à la zone SY-SUBRC une valeur non nulle. Si l’exécution se déroule correctement, la macro lui attribue la valeur 0.
Exemple
La récupération de données dans une zone de texte HTML constitue l’une des utilisations classiques de cette fonction. Dans R/3, cette caractéristique HTML peut être traitée par un step loop, sauf si le bloc de texte contient une très grande quantité de données. Dans ce cas, il est possible que le step loop soit trop petit pour contenir toutes les données provenant du navigateur Web et que, par conséquent, le texte soit tronqué. Une autre solution consiste à utiliser la macro FIELD-GET dans le module PAI de la transaction.
Considérez le code HTML suivant :
<HTML>
<HEAD> Internet Transaction Server Macros – Textarea </HEAD>
<H1> Please enter some data into this text area </H1>
<FORM ACTION="`wgateUrl(~OkCode="SUBM")`" METHOD="POST">
<TEXTAREA NAME="Textpad" WRAP="PHYSICAL" ROWS="10" COLS="40"
</TEXTAREA>
</FORM>
</HTML>
La transaction pourrait ressembler à ceci :
Process Before Output:
…
Process After Input:
Module Fcode.
Module Fcode.
If Fcode = ‘SUBM’.
Perform Get_Textarea.
Endif.
Endmodule.
* ------------------------------------------------
Form Get_Textarea.
Data: Datalen Type I.
Data: Idx Type i.
Data: Longtext(500) Occurs 0 With Header Line.
Idx = 1.
Loop.
Field-Get ‘Textpad’ Idx Longtext1 Datalen.
If Sy-Subrc <> 0.
Exit.
Endif.
Append Lines Of LONGText1 To LongText.
Idx = Idx + 1.
Endloop.
EndForm.