SAP Jobsuche bei DV-Treff
Tobson1
  • Tobson1
  • SAP Forum - Neuling Thema Starter
vor 11 Jahre
Hallo Pro's,

bin neu hier und in der Entwicklungsumgebung von GuiXT.

Ich habe einen entsprechenden Sachverhalt bei dem ich nicht so richtig weiter komme und bevor ich noch mehr Haare verliere, wende ich mich hoffnungsvoll an euch.

Ich habe ein kleines Programm, zur Unterstützung unserer Mitarbeiter bei Bestellannahmen geschrieben, mit VBA in Excel.

Soweit, so gut.

Was möchte ich nun?

1.Ich möchte in der VA02 einen kleinen Button, sichtbar hinterlegen, auf den man klickt und sich sofort meine Exceldatei öffnet.

Ungefähr so:

Pushbutton (14,3) "Artikelauswahl anzeigen" ... Dateipfad

Funktioniert aber leider nicht. Könnte mir jemand mal ein Beispiel posten??

2.In meinem Excel Formular habe ich zwei Spalten.

Spalte A = Artikelnummer

Spalte B = Menge

Nun möchte ich per einmal Knopfdruck (Buttonname = "Ins SAP übertragen") im Excelformular,

alle "Artikelnummern" der Spalte A, in die VA02, in Spalte "Artikelnummer" übertragen und alle zugehörigen Mengen aus Spalte B "Menge" in Excel, in die VA02, Spalte "Mengen" übertragen!

Ist sowas möglich??

Falls ja, würde mir jemand eine Freude machen, wenn er mir nicht nur Programmierfetzen als Antwort liefert, sondern vielleicht sogar ein Codebeispiel.

Vielen Dank schonmal im Voraus für eure Hilfe 🙂

FrankEisermann
vor 10 Jahre
Das hier ist ein Beispiel, wie ich eine Exceldatei einbinde.

Sie liegt auf Laufwerk "P" und heißt "meld".

Folgende Parameter übernimmt er aus der Excel: sub doit (kurztext,technplatz,equi)

Die Namen habe ich im VBS ohne " ersetzt.

Er öffnet damit die Tabelle und übernimmt sie.

Am Ende der Excel habe ich ein "Ende" geschrieben, damit das Script da aufhört. Ich hoffe ich konnte helfen.

gruß

'**************************************************************

' allg. SAPScript-Parameter

'**************************************************************

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

'**************************************************************

' Parameter für XLS-Datei

'**************************************************************

Dim ExcelApp, ExcelWB, ExcelWS

set ExcelApp=createobject("Excel.Application")

ExcelApp.visible=true

set ExcelWB=ExcelApp.Workbooks.Open("p:\meld\meld.xls")

set ExcelWS=ExcelWB.Worksheets("Tabelle1")

'**************************************************************

' Aufruf der Transaktion iw21

'**************************************************************

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

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

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

'**************************************************************

' XLS-Datei einlesen

'**************************************************************

zeile=1

do while true

zelle1=ExcelApp.Cells(zeile,1).Value

zelle2=ExcelApp.Cells(zeile,2).Value

zelle3=ExcelApp.Cells(zeile,3).Value

if zelle1 <> "ENDE" Then

call doit (zelle1,zelle2,zelle3)

else

msgbox "Sie haben jetzt alle Meldungen angelegt!!!"

exit do

end if

zeile=zeile+1

loop

ExcelWB.Close

ExcelApp.Quit

'**************************************************************

' Trancation einlesen

'**************************************************************

sub doit (kurztext,technplatz,equi)

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 = "/niw21"

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

session.findById("wnd[0]/usr/ctxtRIWO00-QMART").text = "a2"

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

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").text = "ort" + vbCr + "zeit" + vbCr + "" + vbCr + ""

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").setSelectionIndexes 9,9

session.findById("wnd[0]/usr/subSCREEN_1:SAPLIQS0:1050/txtVIQMEL-QMTXT").text = kurztext

session.findById("wnd[0]/usr/subSCREEN_1:SAPLIQS0:1050/txtVIQMEL-QMTXT").caretPosition = 13

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-TPLNR").text = technplatz

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-EQUNR").text = equi

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-EQUNR").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-EQUNR").caretPosition = 8

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

session.findById("wnd[1]").sendVKey 0

session.findById("wnd[0]/tbar[0]/btn[11]").press

session.findById("wnd[0]/tbar[0]/btn[3]").press

end sub