SAP Jobsuche bei DV-Treff
Patrick S.
vor 8 Jahre
Hallo zusammen,

ich habe mich die letzten Tage in das Thema eCATT eingearbeitet.

Mein Ziel ist hierbei nicht das Testen sondern die vereinfachung von manuellem Pflegeaufwand.

So kommt es bei mir z.B. regelmäßig zu Änderungen von Vertriebsbeauftragten die einem Debitoren zugeordnet sind. Hier muss dann die entsprechende Partnerrolle im Kundenstammsatz und im Kopf des Kundenauftrag geändert werden. Dies hätte ich gerne per eCATT automatisiert.

Nun ist es allerdings so, dass beim Testen des entsprechenden Testskripts für die Änderung des Kundenstammsatz (VD02) die zu ändernde Partnerolle 'VE' unter Umständen in unterschiedlichen Zeilen steht. Das Testskript versucht allerdings immer die selbe Zeile der Partnerrollentabelle zu ändern.

Gibt es hier eine Möglichkeit dem Testkript mitzugeben, welche Zeile geändert werden soll bzw. eine Art If-Bedingung zu hinterlegen, die alle Zeilen prüft? Bisher habe ich lediglich innerhalb des Testskripts mit TCD (Record) ein Skript erstellt und die entsprechenden Werte parametrisiert.

Für Tipps und Anregungen wäre ich sehr dankbar.

Viele Grüße

Patrick

waltersen
vor 8 Jahre
Hallo,

ja es geht. Wir haben vergleichbares umgesetzt.

Mann muss per inline ABAP eine Tabelle aufbauen, die die gleichen Daten benutzt wie Dein Skript.

Dann durchsuchst Du die Tabelle nach dem konkreten Satz und merkst Dir die Position.

Beispiel: Die interne Tabelle hat sieben Sätze. Der dritte Satz ist es, wir merken uns also die 3 in einer Variablen, z.B. V_ROW.

Im Skript gibt es irgendwo ein Datum, das darstellt auf welche Zeile geklickt wurde. Dieses Datum wird dann mit V_ROW gefüllt. Ich meine mich zu erinnern, dass die erste Zeile im Skript immer 0 als Zähler hatte, dann müsste die Zeilenvariable um 1 reduziert werden.

Gruß

Patrick S.
vor 8 Jahre
Hi waltersen,

danke für die Info! Leider zaubert deine Antwort mehr Fragezeichen in mein Gesicht als Antworten. Das liegt aber wohl eher daran, dass ich mich noch etwas tiefer in die Materie einarbeiten muss. ;-)

Ich bleib dran und werde hier posten wenn es Erfolge gibt.

VG

Patrick

waltersen
vor 8 Jahre
Hallo,

Du brauchst Inline Abap:

Vorher sind zu definieren:

v_it_meineinterneTabelle (kann beliebig benannt werden, muss aber Parametertyp V haben)

v_rc ist die Variable, die aussagt, ob überhaupt was gefunden wurde

v_len ist für die Anzahl der Sätze in der internen Tabelle

v_var ist eine Hilfsvariable

ABAP.

SELECT * FROM SAP-Tabelle

INTO TABLE v_it_meineinterneTabelle

WHERE Bedingung

AND Bedingung 2

ORDER BY Sortierkriterium ASCENDING.

v_rc = sy-subrc.

ENDABAP.

LOG v_it_meineinterneTabelle.

Jetzt hast Du eine im Script eine interne Tabelle, die den gleichen Inhalt hat wie das Dynpro, welches aufgezeichnet wurde.

Nun müssen wir nur noch die passende Zeile finden

IF ( v_rc = 0 ).

GETLEN ( v_it_meineinterneTabelle , v_len ).

DO v_len.

v_var = v_it_meineinteerneTabelle[&lpc]-Attribut. 'Attribut ist ein Feld , das ich vergleichen möchte

e_export1=. 'Exportparameter, falls gebraucht, haben mit der Zeile nichts zu tun

e_export2=.

EXIT ( v_var = i_import ). 'Falls v_var = dem Importparameter, dann aussteigen

e_select = &lpc. 'e_select ist die Zeilennummer auf die geklickt werden muss

ENDDO.

ENDIF.

IF ( e_select = '').

e_select = 0000.

ENDIF.

Im Skript steht irgendwo die Zeilennummer, auf die geklickt wurde. Diese Zahl muss dann durch e_select ersetzt werden.