Ich habe ein kleines Problem. Ich weiß, dass der Steploop schon veraltet ist, allerdings will man ja auch nicht alle Programme umstellen.
Ich muss eine Transaktion via BI aufrufen, da es hierbei um eine Preisfindung (sehr umfangreich) geht, welche über einen ITS im Web zur Verfügung gestellt werden soll. Somit will ich (aus dem Web kommend) eine Transaktion mit den nötigen Parametern füllen, damit sie mir einen Preis zurückgibt. Soweit, so gut... Hört sich eigentlich ganz einfach an. Allerdings ist auf einem Dynpro ein Tabstrip mit etwa 6 Subscreens. In jedem Subscreen ist ein Steploop. In diesem muss ich die zweite Zeile via BI füllen, allerdings finde ich keine Möglichkeit, diese Zeile anzusprechen... Im normalen Loop wäre das Ganze kein Problem, aber wie kann ich einem Steploop von vorn herein sagen, wo er was machen soll? Die Felder (RCTMS-MWERT), egal in welcher Zeile ich bin. Habe schon versucht, das Ganze über den Recorder aufzuzeichen. Der zeichnet folgendes auf: RCTMS-MWERT(02), was nicht funktioniert...
Hat irgendjemand eine Idee? Falls ihr weitere Infos braucht, kann ich auch Screenshots schicken, um alles ein wenig anschaulicher zu machen!?
Sorry, wollte sagen, dass die Felder (RCMTS-MWERT) immer den gleichen Namen haben, egal in welcher Zeile man ist...
Hatte auch schon mal probiert, das über die Systemvariable sy-stepl zu lösen, leider funktioniert auch das nicht. Die beinhaltet zwar beim Loop im Programm den aktuellen Zeilenzähler des Steploop, allersings konnte ich auch darüber den Cursor nicht richtig positionieren...
beim Erstellen einer BI-Mappe mit StepLoop/TableControl ist das schon richtig, dass man dem Feldnamen die Zeilennummer mitgeben muss, in der der Eintrag vorzunehmen ist.
Hierbei muss jedoch beachtet werden, dass man immer von außen die Werte einträgt und somit keine echte Kenntnis des aktuellen Zustandes des Dynpros hat, was die jeweilige StepLoop/TableControl-Liste angeht. Deshalb muss man nach Möglichkeit eine Funktion ausführen, die einem den gewiünschten Eintrag in die (sichtebare) Zeile 1 bringt, um dann mit TAB-FELD(1) den Wert zu setzen. (siehe dazu z.B. VA01/VA02: Funktion Positionieren).
Alternativ kann man beim Aufzeichnen das SAPGui-Fenster in Standardgröße schalten und hoffen, dass man mit Blättern und Berechnen der StepLoop/TableControl-Tabelle den richtigen Eintrag erwischt.
PS:
Man hat auch keinen Zugang zu Daten aus dem aufgerufenen Programm!
PPS:
Programme können sich durch Abfragen von SY-BINPT bei Batch-Input anders verhalten, als im 'Normalbetrieb'...
PPPS:
Batch-Input funktioniert bei ALV und sonstigen Controls nicht!!
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Positionieren wäre eine Möglichkeit, die ich aber leider ausschließen muss, da es sich um ein Standard-Programm handelt... Deshalb wird es wohl nicht, da noch eine Positionierung einzubauen.
Allerings habe ich nicht verstanden, was mit der "Standardgröße" gemeint ist. Wie macht man das und welche Vorteile habe ich?
Bei meinem Problem habe ich jedenfalls ein Steploop, bei welchem die erste Zeile vom Programm gefüllt wird. In der zweiten Zeile, Spalte zwei muss ich etwas eingeben. Das wäre in meinem Fall obligatorisch immer eine '100'.
Ich fasse nochmal kurz zusammen: Es handelt sich um einStandardprogramm, in dem keine Modifikationen gemacht werdenkönnen.
Dort gibt es einen Step-Loop, von dem ich via Batch-Input daszweite Feld der zweiten Zeile ansprechen müsste. Es gibtKEINEN User-Command, um den Cursor zu positionieren.
Habe ich also irgendeine Möglichkeit, den Cursor via BIin dieses Feld zu positionieren und dort einen Eintragvorzunehmen!?
wenn Du Dir mit der Zeile 2 sicher bist, dann kannst Du dasFeld problemlos im Batch-Input mit "TAB-FELD(2)" ansprechen.
Sobald Du blättern musst, wird es komplizierter, weil Dudann den Blätter-Algorithmus in Deinem Batch-Input-Programmnachbilden musst.
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
könntest du mir deine E-Mail Adresse geben? Dann könnte ich dir mal Screenshots schicken... Da du die sicher nicht posten willst, poste ich einfach mal meine:
mailto:kramer.d@loh-services.de
Kannst dich ja mal melden.
Ich weiß im Übrigen auch, dass es normal so funktionieren würde, leider kommt erschwerend hinzu, dass sich das Steploop in einem Subscreen befindet und er greift einfach nicht drauf zu.