Purpose Use the standard SAP GUI text edit control to display and enter
text
The GuiXT Textbox command can be used for displaying and entering text.
In some cases it makes sense to use the SAP GUI edit control
instead, since it offers additional functions: search and replace,
file drag&drop, protecting a part of the text against changes.
Solution Use a
Control statement with progID=
"sapgui.texteditctrl".
Call up the methods of the text edit control with
CallVB or
CallJS
.
Example We display the
material sales text; the text language can be selected by the user:
GuiXT
Title "Text Comparison"
// Clear the screen
del (0,0) (100,100)
See below for the complete GuiXT Script.
The VB.NET coding is as follows:
VB.NET
Public Class textedit
Private guixt As New guinet.guixt
Public Sub init(tc As TEXTEDITLib.ITextEditCtrl)
' no status bar
tc.StatusBarVisible = False
End Sub
Public Sub settext(tc As TEXTEDITLib.ITextEditCtrl, _
textname As String)
tc.Text = guixt.GetText(textname)
End Sub
End Class
In your VB.NET project you need the correct reference to the edit control
:
This allows you to display all properties and methods in
Visual Studio via context sensitive help:
You may also have a look at the SAP system which defines an ABAP OO
wrapper around the text edit control:
GuiXT
Offset (4,10)
// material number
InputField (2,3) "Material" (2,15) size=18 _
name="matnr" techName="MARA-MATNR" -upperCase
// language selection
Set text[languages] "=Select a language;E=English;F=French;D=German;I=Italian"
// text control
Control (4,2) (17,70.2) _
progID="sapgui.texteditctrl" _
initFlag="editcontrol.init" _
name="editcontrol"
// initialize textcontrol
if V[editcontrol.init]
CallVB utilities.textedit.init "&V[editcontrol]"
endif
// default language code
if not V[langu]
Set V[langu] "&V[_language]"
endif
DropDownList (18.2,2.6) "languages" width=20 _
refer="V[langu]" -noSort process="return.txt"
// read sales long text
if not V[matnr=&V[prev_matnr]]
// convert material number
Call /GUIXT/EXT2INT _
in.DOMNAME="MATNR" _
in.EXTVALUE="&V[matnr]" _
out.INTVALUE="intmatnr"
// Read texts
Call "BAPI_MATERIAL_GET_ALL" _
in.MATERIAL="&V[intmatnr]" _
in.SALESORG="1000" _
in.DISTR_CHAN="10" _
table.MATERIALLONGTEXT="txt"
endif
// matnr or language changed?
If not V[matnr=&V[prev_matnr]] or not V[langu=&V[prev_langu]]
clear text[mytext]
Set V[k] 1
label nextline
CopyText fromText="txt" toString="s" line="&V[k]"
if Q[ok]
Set V[TDOBJECT] "&V[s](BAPI_MLTX_GA-APPLOBJECT)"
Set V[TDID] "&V[s](BAPI_MLTX_GA-text_ID)"
Set V[TDSPRAS] "&V[s](BAPI_MLTX_GA-LANGU)"
Set V[TDFORMAT] "&V[s](BAPI_MLTX_GA-FORMAT_COL)"
Set V[TDLINE] "&V[s](BAPI_MLTX_GA-text_LINE)"
if V[TDOBJECT=MVKE] and V[TDID=0001] and V[TDSPRAS=&V[langu]]
if V[TDFORMAT=*] or V[TDFORMAT=/]
CopyText fromString="TDLINE" toText="mytext" -appendLine
else
CopyText fromString="TDLINE" toText="mytext" -append
endif
endif
Set V[k] &V[k] + 1
goto nextline
endif
// set text into text edit control
CallVB utilities.textedit.settext "&V[editcontrol]" "mytext"
endif
// save entered values
Set V[prev_matnr] "&V[matnr]"
Set V[prev_langu] "&V[langu]"