SAP Jobsuche bei DV-Treff
hk2305
  • hk2305
  • SAP Forum - User Thema Starter
vor 15 Jahre

Hallo zusammen,

eine kurze Frage. Ist es möglich, etwas was per STRG+V in die Zwischenablage kopiert wurde über einen Pushbutton in ein Textfeld einzufügen ?

Nur über GuiXT ohne den Input Assistenten.

Falls das funktionieren sollte, wäre ein Beispielhafter Code prima.

Vielen Dank für die Bemühungen

Förderer

ScriptMan
vor 15 Jahre

Hallo hk2305,

normalerweise nimmt man dazu entweder den Befehl "CopyText" oder auf Umwegen auch "ApplyGuiScript". Ob die folgende Methode auch ohne InputAssistant funktioniert, wäre noch zu klären.

Man kann dabei eine x-beliebige Mehrfachselektion innerhalb einer Transaktion verwenden. Der Button "Upload aus der Zwischenablage" wird ohne Probleme von GuiXT aufgezeichnet. Eine Skriptaufzeichnung funktioniert aber auf keinen Fall ohne InputAssistant. Mein Beispiel bezieht sich auf  TA  = REISBP.

Der angesprochene Pushbutton könnte demnach folgenden Process starten:

// SAP Easy Access
Screen SAPLSMTR_NAVIGATION.0100
   Enter "/nreisbp"
 
// Infosystem: Objekte nach Geschäftspartner
Screen RFREISBPOBJREL.1000
  Enter "=%005"
 
// Mehrfachselektion für Name1/Nachname
Screen SAPLALDB.3000
  Enter "/24"
 
// Mehrfachselektion für Name1/Nachname
Screen SAPLALDB.3000
  Enter "/8"
 
// Infosystem: Objekte nach Geschäftspartner
Screen RFREISBPOBJREL.1000
  set V[Zwischenablage] "&F[Name1/Nachname]"
  message "&V[Zwischenablage]" Title="Zwischenablage"
  Enter "/3"

Freundliche Grüße

ScriptMan


Grüße auch an alle GuiXT-Anhänger in Chemnitz

beatcode
vor 14 Jahre

Hallo zusammen

Ich habe seit 1h das Scripting entdeckt. Ist ja genial. Hätte 2 Fragen

1. wie kann ich an folgender Stelle den Text aus der Zwischenablage einfügen?

          session.findById("wnd[0]/usr/ctxtRMMW1-MATNR").Text = Hier text aus der Zwischenablage

 2. Wie kann ich eine Variabel zuweisen?

         session.findById("wnd[0]/usr/ctxtRMMW1-MATNR").Text = Variabel

Gruss Beat

beatcode
vor 14 Jahre

Die Variabeln können ja wie sonst in .vbs eingesetzt werden, hat beim erstenmal irgendwie nicht funktioniert. Jetzt wird der Wert aus der Zwischenablage bei der Matnr eingesetzt
' holt den Wert aus der Zwischenablage und fügt diesen in die Variabel Wert ein welcher im Script bei MatNr eingesetzt werden kann.
' Beispiel mit der vkp2


'******************* clipboard ********************

Dim WshShell,objArgs,Wert,cliptxt
Set WshShell = CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments

If(objArgs.Count=0) Then
  LoadClipboard
  WScript.quit
End If

Wert = objArgs(0)

'************** SAP Script Recorder ***************

  If Not IsObject(application) Then
    Set SapGuiAuto  = GetObject("SAPGUI")
    Set application = SapGuiAuto.GetScriptingEngine
  End If

  If Not IsObject(connection) Then
    Set connection = application.Children(0)
  End If

  If Not IsObject(session) Then
    Set session    = connection.Children(0)
  End If

  If IsObject(WScript) Then
    WScript.ConnectObject session,     "on"
    WScript.ConnectObject application, "on"
  End If

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "vkp2"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtS_MATNR-LOW").text = Wert   ' <--- Hier die Variabel Wert einsetzten (Artikelnummer)
session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").setFocus


'******************* Sub clipboard ********************

  Sub LoadClipboard

'**** Text aus dem Clipboard holen ****
WshShell.Run "mshta.exe vbscript:(CreateObject(""WScript.Shell"")." _ 
& "Run("""""""& WScript.ScriptFullName &""""" """"""" & chr(38) & "document.parentwindow." _ 
& "clipboardData.GetData(""text"")"& chr(38) & """""""""))(Window.close)"

  End Sub

ScriptMan
vor 13 Jahre

Hallo zusammen,

in obigen Beispielen wurde eine Zwischenablage innerhalb eines VB-Skriptes behandelt. Wie es tatsächlich mittels GuiXT gelöst werden kann, ist unter dem folgenden Link zu erfahren:

http://www.synactive.com/examples/examples.html

Das Beispiel zum Thema heißt : Importing Excel data into an SAP data entry transaction

Freundliche Grüße

ScriptMan

 

 

TyloHH
vor 11 Jahre
Zitat von: beat78 

Die Variabeln können ja wie sonst in.vbseingesetzt werden, hat beim erstenmal irgendwienicht funktioniert. Jetztwird der Wert aus der Zwischenablage bei der Matnr eingesetzt

' holt den Wert aus der Zwischenablage und fügt diesen in die Variabel Wert ein welcher im Script bei MatNr eingesetzt werden kann.

' Beispiel mit der vkp2

'******************* clipboard ********************

DimWshShell,objArgs,Wert,cliptxt

SetWshShell=CreateObject("WScript.Shell")

SetobjArgs=WScript.Arguments

If(objArgs.Count=0)Then

LoadClipboard

WScript.quit

EndIf

Wert=objArgs(0)

'************** SAP Script Recorder ***************

IfNotIsObject(application)Then

SetSapGuiAuto=GetObject("SAPGUI")

Setapplication=SapGuiAuto.GetScriptingEngine

EndIf

IfNotIsObject(connection)Then

Setconnection=application.Children(0)

EndIf

IfNotIsObject(session)Then

Setsession=connection.Children(0)

EndIf

IfIsObject(WScript)Then

WScript.ConnectObjectsession,"on"

WScript.ConnectObjectapplication,"on"

EndIf

session.findById("wnd[0]").maximize

session.findById("wnd[0]/tbar[0]/okcd").text="vkp2"

session.findById("wnd[0]").sendVKey0

session.findById("wnd[0]/usr/ctxtS_MATNR-LOW").text=Wert' <--- Hier die Variabel Wert einsetzten (Artikelnummer)

session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").setFocus

'******************* Sub clipboard ********************

SubLoadClipboard

'**** Text aus dem Clipboard holen ****

WshShell.Run"mshta.exevbscript:(CreateObject(""WScript.Shell"")."_

&"Run("""""""&WScript.ScriptFullName&""""""""""""&chr(38)&"document.parentwindow."_

&"clipboardData.GetData(""text"")"&chr(38)&"""""""""))(Window.close)"

EndSub

Sorry ich muss das Thema nochmal ausgraben, weil ich die Suchfunktion benutzt habe.

Mit dem obigen Code erhalte ich in SAP die Fehlermeldung: Objekt erfoderlich - WScript

Was mache ich falsch?

ScriptMan
vor 11 Jahre
Hallo TyloHH,

ich vermute, dass du das Skript aus SAP heraus startest. Versuche u.U. einen Start aus dem Windows Explorer durch einen Doppelklick auf die VBS-Datei.

Viel Spaß beim Testen!

Freundliche Grüße

ScriptMan

TyloHH
vor 11 Jahre
Hallo ScriptMan

Danke, ja aus dem Explorer funktioniert es.

Wie kann ich dem Script aber klar machen, welches SAP Fenster (Modus) er verwenden soll?

Anscheinend wird das Script immer auf das erste Fenster angewendet. Ich habe ein zweites Script, welches in einer andere Transaktion ausgeführt werden, ohne das erste Fenster zu beenden.

Schön wäre, wenn ich einfach per Drag&Drop das jeweilige in das entsprechende Fenster schieben könnte.

Kann ich im Script definieren in welchem Modus (Session?) dsa Script ausgeführt werden soll?

Gruß