Macro FIELD-GET 

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

La macro accepte toutes les tables internes et copie la valeur de la zone de contexte vers les composantes de la table interne. Si un enregistrement de table interne n’est pas suffisant, elle ajoute des enregistrements supplémentaires.

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.