SAP Jobsuche bei DV-Treff
commander-bln
vor 7 Jahre
Hallo

Ich versuche momentan aus Excell heraus dem QM Modul, einige Felder aus

zu füllen, und ein generiertes txt File (access memo) in den Langtext einzufügen, bzw. den langtext auszulesen.

mit dem Script Recorder bekommen ich es nicht wirklich hin

die letzte Zeile die er aufnimmt, verstehe ich nicht und passieren tut auch nicht das gwünschte.

mein fehler liegt im bereich ---> zusatz langtext

eor = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row

For Zeile = 2 To eor

BF = Cells(Zeile, 1)

session.findById("wnd[0]/usr/ctxtRIWO00-QMNUM").Text = BF 'BF eintragen

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

'Gerätenr. löschen

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7901/subUSER0001:SAPLXQQM:0300/txtVIQMEL-EQFNR").Text = Cells(Zeile, 4)

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10").Select 'Tab Positionen

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/btnF24").press

For i = 0 To 99

'On Error Resume Next

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/ctxtVIQMFE-OTEIL[2," & Trim(i) & "]").SetFocus

' On Error GoTo 0

If session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/ctxtVIQMFE-OTEIL[2," & Trim(i) & "]").Text = "" Then

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/ctxtVIQMFE-OTEIL[2," & Trim(i) & "]").Text = Cells(Zeile, 2)

Exit For

End If

Next i

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/btnDETAIL").press

session.findById("wnd[1]/usr/txtVIQMFE-FETXT").Text = Cells(Zeile, 9)

session.findById("wnd[1]/usr/ctxtVIQMFE-BAUTL").Text = Cells(Zeile, 5)

session.findById("wnd[1]/usr/ctxtVIQMFE-FECOD").Text = Cells(Zeile, 3)

session.findById("wnd[1]/usr/subUSER0002:SAPLXQQM:0400/ctxtVIQMFE-ZZEINORT").Text = Cells(Zeile, 6)

session.findById("wnd[1]/usr/subUSER0002:SAPLXQQM:0400/txtVIQMFE-ZZERGAEN").Text = Cells(Zeile, 7)

session.findById("wnd[1]/usr/subUSER0002:SAPLXQQM:0400/txtVIQMFE-ZZARBPL").Text = Cells(Zeile, 8)

session.findById("wnd[1]/usr/subUSER0002:SAPLXQQM:0400/ctxtVIQMFE-ZZPRDATE").Text = Cells(Zeile, 10)

session.findById("wnd[1]/usr/subUSER0002:SAPLXQQM:0400/txtVIQMFE-ZZSERIAL").Text = Cells(Zeile, 11)

'zusatz Langtext

langtext = Cells(Zeile, 15)

session.findById("wnd[1]/usr/btnQMICON-LTFEHLER").press

session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").SetFocus

' session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").setdocument 1, langtext

' session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").setDocument 1, "jkagha ögha öghölh hgö"

' session.findById("wnd[1]/usr/btnQMICON-LTFEHLER").text = langtext

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

'zusatz Langtext

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

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

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

If session.findById("wnd[0]/sbar").Text = "Meldung " & Cells(Zeile, 1) & " gesichert" Then Cells(Zeile, 12) = "ok" Else Cells(Zeile, 12) = "error"

Next Zeile

Förderer

ScriptMan
vor 7 Jahre
Hallo commander-bln,

mein Workaround in diesem Fall war und ist:

1. Abspeichern des Langtextes in einer Datei

2. Über den Skriptrecorder eine Aufzeichnung zum Upload aus einer Datei erstellen

3. Fertig

Grüße,

ScriptMan

commander-bln
vor 7 Jahre
Hallo Script Man.

Pos.1 become ich hin.

aber zu Pos2. kriege ich einfach den Script Recorder nicht dazu

einen Upload aufzuzeichnen.

Bei uns taucht ja , wenn man in den Langtext wechselnt, der Word Editor als Plugin auf.Normales crtl+C und Crtl+V funktioniert

nehme ich diesen Vorgang auf bekommen ich wieder die zeile

session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").setDocument 1,"gjlg dieser Tel ist aber eine DIN4 seite an text (vielleicht BIN File)

vielleicht ahst du noch einen Tipp für mich

MFG commander-bln

ScriptMan
vor 7 Jahre
Hallo commander-bln,

wir haben bei uns kein QM Modul und daher kann ich es nicht direkt ausprobieren. Wenn ich mich aber woanders im Langtext befinde, sehe ich im Menü Kommandos wie folgt:

Text Bearbeiten Springen Format Einbinden System Hilfe

Unter dem Kommando "Text" verbirgt sich bei mir die nächste Kommandoebene, aus der ich dann "Upload" auswähle.

Ist es bei deinem Word Plugin anders? Muss man vielleicht zuerst den Editor wechseln?

Grüße,

ScriptMan

commander-bln
vor 7 Jahre

Ich kann leider keine Hardcopy einfügen.

bei mir erscheint sofort der Editor , von WORD2007

dort könnte ich alles machen, markieren, einfügen.

Dazu müsste ich wohl aus dem Script heraus

die Tastenkompinationen senden.

Leider zeichnet das der Script recorder nichts auf !!

also kenne ich nicht die Vkeys

z.b. für

crtl+A (alles markieren)

crtl+V (einfügen aus Tastaturpuffer)

vielleicht kann ich so tricksen??

LG

commander-bln
vor 7 Jahre
sorry (man sieht den wald vor......)

ganz oben im Menü steht natürlich "text"

Da blendet sich bei uns immer die Info zeile drüber.

dort auch ein Upload, auf ein txt File kann ich zugreifen,

soweit so gut, kommt acuh im Langtext an. Fast Perfekt (in der Theorie)

hast du eventuell einen Codeschnipsel für den Upload

aus einer Txt datei??

LG Commander-Bln

ScriptMan
vor 7 Jahre
Wie gesagt, deinen eigenen Upload musst du selbst aufzeichnen. Mein Beispiel sieht wie folgt aus:

. . .

Set fso = CreateObject("Scripting.FileSystemObject")

For Zeile = 2 to eor

. . .

langtext = Cells(Zeile, 15)

session.findById("wnd[1]/usr/btnQMICON-LTFEHLER").press

session.findById("wnd[0]/usr/cntlSCMSW_CONTAINER_2102/shellcont/shell").SetFocus

set myfile =fso.opentextfile("c:\tmp\langtext.txt", 2, true,0)

myfile.writeline langtext

myfile.close

session.findById("wnd[0]/mbar/menu[0]/menu[3]").select

session.findById("wnd[1]/usr/radITCTK-TDASCII").select

session.findById("wnd[1]/usr/radITCTK-TDASCII").setFocus

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

session.findById("wnd[2]/usr/ctxtITCTK-TDFILENAME").text = "c:\tmp\langtext.txt"

session.findById("wnd[2]/usr/ctxtITCTK-TDCODEPAGE").text = "4110"

session.findById("wnd[2]/usr/ctxtITCTK-TDCODEPAGE").setFocus

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

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

commander-bln
vor 7 Jahre
danke dir

werde das nachher mal gleich ausprobieren.

Gestern hatte ich aber schon gemerkt, das ich problem mit den umlauten

ÜÄÖ bekomme, im Text File ist alle OK, aber nach dem Upload nicht mehr.

Hat das etwas mit der CodePage zu tun???

LG Commander-bln

ScriptMan
vor 7 Jahre
Guten Morgen,

schau dir diesen Link an:

https://wiki.scn.sap.com/wiki/display/ABAP/Character+encoding+conversion 

Demnach müsste man CODEPAGE = 1160 setzen.

Grüße,

ScriptMan

commander-bln
vor 7 Jahre
perfekt, beides hat funktioniert

dein Code schnipsel für upload und auch die Codepage function!!

Vielen lieben dank.

Gibt es noch einen Trick, wenn man will das SAP wartet bis der Befehl ausgeführt wurde.

manchmal habe ich hanger, wo ich denke das SAP zu lange benötigt zum öffen,

und der rest des Codes ins leere läuft.

LG Commander-bln

ScriptMan
vor 7 Jahre
Manchmal hilft schon eine feste Pause im Skript.

z.B.

wscript.sleep 1000 '1000 Millisekunden = 1 Sekunde

Wenn es aber eine dynamische Pause sein muss, muss man schon wissen, wo sie stattfinden soll.

Grüße,

ScriptMan