gelöst Perform in anderes Programm


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Perform in anderes Programm

Beitragvon Adrian » 27.03.2013, 16:58

Hi @ all

Code: Alles auswählen
FORM TAGESABSCHLUSS_TRACKINGNUMBER USING ZSPEDT UPS_TRACKINGNR.

  PERFORM TRACKINGNR.

ENDFORM.                    "TAGESABSCHLUSS_TRACKINGNUMBER


diese Form rufe ich aus einem anderen Programm mit Code auf.

Code: Alles auswählen
PERFORM TAGESABSCHLUSS_TRACKINGNUMBER(ZUPS) CHANGING UPS_ZZSPEDT_PACK TMP_TRACKINGNR.


er übergibbt auch alle Werte super aber aus der FORM Trackingnr bekomme ich keine Werte mehr zurück.
In den Form gehen die Werte schon nur ich bekomme keine raus.

Hoffe ihr habts verstanden.

Grüße Adrian
Adrian
Specialist
 
Beiträge: 126
Registriert: 09.08.2012, 14:58
Dank erhalten: 0 mal
Ich bin: sonstiges

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Perform in anderes Programm

Beitragvon bliss » 27.03.2013, 18:07

Ich verstehe zwar deinen Text und das (ZUPS) in Klammern nicht, aber vielleicht reicht es ja schon, wenn ich dich auf das Schlüsselwort IN PROGRAM verweise, denn darum geht es ja deinem Betreff nach. Und warum benutzt du einmal CHANGING und einmal USING? Du solltest dich entscheiden! Vote for Change! Ja ich denke das ist das Problem. Wenn du USING benutzt, kannst du gar nichts verändern.
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Für diese Nachricht hat bliss einen Dank bekommen :
Adrian
bliss
ForumUser
 
Beiträge: 66
Registriert: 10.04.2012, 15:31
Dank erhalten: 6 mal
Ich bin: Entwickler/in

Re: Perform in anderes Programm

Beitragvon a-dead-trousers » 27.03.2013, 21:24

bliss hat geschrieben:Wenn du USING benutzt, kannst du gar nichts verändern.

Leider ist das nicht ganz richtig. In ABAP kann man sowohl die Using als auch die Changing Parameter innerhalb der Form-Routine beliebig verändern. Es ist sogar möglich beim Aufruf nur Changing anzugeben während in der Form-Routine nur Using Parameter vorkommen. Wichtig ist nämlich nur die Reihenfolge der Parameter für die Übergabe nicht jedoch ihre Deklaration als Using oder Changing. Genaueres zu dem Thema findet sich auch in der Hilfe.
Man sollte aber denoch aus Gründen der besseren Lesbarkeit versuchen nur Changing Parameter zu verändern und sowohl beim Aufruf als auch bei der Deklaration die gleichen Schlüsselwörter zu verwenden.
btw. das (ZUPS) ist gleich dem IN PROGRAM Befehlszusatz nur eben die alte Variante (nicht OO-konform)

@Adrian:
Versuch wirklich auf beiden Seiten das CHANGING zu verwenden.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Adrian
a-dead-trousers
Top Expert
 
Beiträge: 2518
Registriert: 07.02.2011, 13:40
Dank erhalten: 555 mal
Ich bin: Entwickler/in

Re: Perform in anderes Programm

Beitragvon Adrian » 28.03.2013, 08:01

hab es auf USING geändert weil ich im Augerufenen Programm nur die Werte will die Variablen in die ich die Werte schreibe sind schon deklariert.
Funktioniert immer noch nicht.

Grüße Adrian.
Adrian
Specialist
 
Beiträge: 126
Registriert: 09.08.2012, 14:58
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: Perform in anderes Programm

Beitragvon a-dead-trousers » 28.03.2013, 09:14

moment, was genau hast du vor?

Irgendwie musst du ja die Daten die du in der aufgerufenen Form berechnet hast, wieder in dein rufendes Programm zurück transferieren.
Dazu brauchst du einen CHANGING Parameter.

Oder planst du in etwa sowas:
- Rufe Form-Routine und füge Daten für das Program ein
- Rufe Programm mit SUBMIT auf

Das geht nicht, weil SUBMIT eine komplett neue Ausführungsebene (Stack) initiert und man auf die Daten der vorherigen nicht zugreifen kann.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Adrian
a-dead-trousers
Top Expert
 
Beiträge: 2518
Registriert: 07.02.2011, 13:40
Dank erhalten: 555 mal
Ich bin: Entwickler/in

Re: Perform in anderes Programm

Beitragvon c oco » 28.03.2013, 09:23

Hi,

Code: Alles auswählen
      PERFORM TAGESABSCHLUSS_TRACKINGNUMBER IN PROGRAM XY USING UPS_ZZSPEDT_PACK TMP_TRACKINGNR.


In welchem Programm ist die Unterroutine? Du musst das auf jeden Fall mitgeben damit du drauf zugreifen kannst.

Gruß
coco

Für diese Nachricht hat c oco einen Dank bekommen :
Adrian
c oco
Specialist
 
Beiträge: 301
Registriert: 09.12.2005, 12:42
Wohnort: Leonberg
Dank erhalten: 12 mal

Re: Perform in anderes Programm

Beitragvon a-dead-trousers » 28.03.2013, 09:30

c oco hat geschrieben:In welchem Programm ist die Unterroutine?

In ZUPS.
Wie ich schon mal angemerkt hab
Code: Alles auswählen
PERFORM TAGESABSCHLUSS_TRACKINGNUMBER(ZUPS) ...
ist gleich wie
Code: Alles auswählen
PERFORM TAGESABSCHLUSS_TRACKINGNUMBER IN PROGRAM ZUPS ...
nur eben nicht in ABAP-OO erlaubt.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Adrian
a-dead-trousers
Top Expert
 
Beiträge: 2518
Registriert: 07.02.2011, 13:40
Dank erhalten: 555 mal
Ich bin: Entwickler/in

Re: Perform in anderes Programm

Beitragvon Adrian » 28.03.2013, 09:35

in die FORM springt er auch rein nimmt die Werte mit aber wenn ich in die FORM TRackingnr reinspringe nimmt er die Werte nicht mit und gibt sie auch nicht zurück.


Code: Alles auswählen
FORM TAGESABSCHLUSS_TRACKINGNUMBER CHANGING ZSPEDT UPS_TRACKINGNR.

  PERFORM TRACKINGNR.

ENDFORM.                    "TAGESABSCHLUSS_TRACKINGNUMBER


Wenn er aus der Form Trackingnr rauskommt haben die Felder ZSPEDT UPS_TRACKINGNR wieder die gleichen Werte wie beim reinspringen.

Grüße Adrian
Adrian
Specialist
 
Beiträge: 126
Registriert: 09.08.2012, 14:58
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: Perform in anderes Programm

Beitragvon a-dead-trousers » 28.03.2013, 09:45

hi!

Lass mich raten:
ZSPEDT und UPS_TRACKINGNR sind im Programm ZUPS global definiert.

Wenn du TAGESABSCHLUSS_TRACKINGNUMBER aufrufst und als Parameter dieselben Namen vergibst wie die globalen Felder "überblenden" diese die globalen Felder. Normalerweise bekommst du außerdem eine Warnung der Syntax-Prüfung.

Richtig wäre es auf diese Weise:
Code: Alles auswählen
FORM TAGESABSCHLUSS_TRACKINGNUMBER CHANGING par1 par2.
  ZSPEDT = par1.
  UPS_TRACKINGNR = par2.

  PERFORM TRACKINGNR.

ENDFORM.                    "TAGESABSCHLUSS_TRACKINGNUMBER

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Adrian
a-dead-trousers
Top Expert
 
Beiträge: 2518
Registriert: 07.02.2011, 13:40
Dank erhalten: 555 mal
Ich bin: Entwickler/in

Re: Perform in anderes Programm

Beitragvon a-dead-trousers » 28.03.2013, 09:47

Oder so:
Code: Alles auswählen
FORM TAGESABSCHLUSS_TRACKINGNUMBER CHANGING par1 par2.

      PERFORM TRACKINGNR CHANGING par1 par2.

ENDFORM.                    "TAGESABSCHLUSS_TRACKINGNUMBER
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Adrian
a-dead-trousers
Top Expert
 
Beiträge: 2518
Registriert: 07.02.2011, 13:40
Dank erhalten: 555 mal
Ich bin: Entwickler/in

Re: Perform in anderes Programm

Beitragvon c oco » 28.03.2013, 09:50

In ZUPS.
Wie ich schon mal angemerkt hab
Code: Alles auswählen
PERFORM TAGESABSCHLUSS_TRACKINGNUMBER(ZUPS) ...ist gleich wie
Code: Alles auswählen
PERFORM TAGESABSCHLUSS_TRACKINGNUMBER IN PROGRAM ZUPS ...nur eben nicht in ABAP-OO erlaubt.

Danke :-).

aber wenn ich in die FORM TRackingnr reinspringe nimmt er die Werte nicht mit und gibt sie auch nicht zurück.


ok ich war zu langsam. Schließe mich ADT an.

Gruß
coco

Für diese Nachricht hat c oco einen Dank bekommen :
Adrian
c oco
Specialist
 
Beiträge: 301
Registriert: 09.12.2005, 12:42
Wohnort: Leonberg
Dank erhalten: 12 mal

Re: Perform in anderes Programm

Beitragvon Adrian » 28.03.2013, 10:19

Ok Danke alle hat geklappt.

Grüße Adrian
Adrian
Specialist
 
Beiträge: 126
Registriert: 09.08.2012, 14:58
Dank erhalten: 0 mal
Ich bin: sonstiges


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Script in Favoriten
Gestern von bs112 0 Antw.
Daten aus SAP in Excel einfügen
Gestern von bs112 0 Antw.
Scripted calculation view
Gestern von SAP_ENTWICKLER 0 Antw.
Was ist beim Anlegen von sichten zu Beachten
vor 2 Tagen von JohnLocklay 0 Antw.
Tabellenzugehörigkeiten einer Struktur
vor 2 Tagen von black_adept 8 Antw.

  Ähnliche Beiträge beta
Perform
16.09.2004, 08:18 von spot 8 Antw.
PERFORM in LOOP
05.09.2012, 13:57 von Murdock 7 Antw.
Perform Synchronized
17.12.2013, 12:58 von Somani 8 Antw.
gelöst Perform Problem in SapScript
06.01.2016, 08:29 von a-dead-trousers 7 Antw.
[gelöst] SAPScript PERFORM Problem
05.10.2006, 11:16 von codierknecht 5 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!
cron