gelöst SELECT in UserExit liefert subr-c 4


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

Moderatoren: Jan, Steff

gelöst SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 11.04.2017, 07:56

Hallo,

ich möchte im FI-Beleg den Positionstext, je nach Vertriebsweg der zugehörigen Faktura, vorbelegen.
Dazu habe ich eine Substitutionsregel angelegt und einen UserExit erstellt. Dieser wird auch gezogen und funktioniert in der Logik auch.
Allerdings liefert der SELECT mir kein Ergebnis. Wenn ich den Vertriebsweg manuell im Debugger mitgebe, funktioniert der Exit.
Wo steckt der Fehler? Ist die Tabelle VBRK nicht global verfügbar?

Code: Alles auswählen
*---------------------------------------------------------------------*
*       FORM U901
*---------------------------------------------------------------------*
*       Populate Item Text (BSEG-SGTXT)
*---------------------------------------------------------------------*
FORM U901.

  DATA: l_vtweg TYPE vtweg,
        lv_vbeln TYPE vbrk-vbeln.

  IF BSEG-SGTXT IS INITIAL.
    SELECT SINGLE vtweg FROM vbrk
    INTO l_vtweg
    WHERE vbeln = lv_vbeln.

    IF sy-subrc = 0.
      IF l_vtweg = '30' OR l_vtweg = '40'.
        BSEG-SGTXT = 'Test'.
      ENDIF.
    ENDIF.

  ENDIF.
ENDFORM.
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Sponsor

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

Re: SELECT in UserExit liefert subr-c 4

Beitragvon black_adept » 11.04.2017, 08:26

Weil du keinen Beleg in lv_vbeln mitgibst
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2710
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 388 mal
Ich bin: Freiberufler/in

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 11.04.2017, 08:45

black_adept hat geschrieben:Weil du keinen Beleg in lv_vbeln mitgibst

Oh stimmt. Danke!

Habe nun folgende Zeile vor dem Select eingefügt. Es funktioniert aber leider trotzdem noch nicht

Code: Alles auswählen
 

  lv_vbeln = bseg-vbeln.

  IF BSEG-SGTXT IS INITIAL.
    SELECT SINGLE vtweg FROM vbrk
    INTO l_vtweg
    WHERE vbeln = lv_vbeln.
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon black_adept » 11.04.2017, 09:52

Hmm - ich glaube den Problem sitzt tiefer.

Wenn ich mir meine Substitution auf der Belegzeile so anschaue stelle ich fest, dass ich für Substitutionen auf Belegzeile die Userexitroutine mit Übergabeparameter definiert habe, in den ich den geänderten Wert reinstelle
Code: Alles auswählen
FORM u901 CHANGING b_result.
  b_result = hier kommt dann die Berechnung
ENDFORM.
 
Die BSEG direkt zu ändern sollte man eigentlich auch nicht machen - die Userexitschnittstelle ist ja nicht ohne Grund da sondern um das Coding hier vom Rest der Verarbeitung abzugrenzen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2710
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 388 mal
Ich bin: Freiberufler/in

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 11.04.2017, 12:31

black_adept hat geschrieben:Hmm - ich glaube den Problem sitzt tiefer.

Wenn ich mir meine Substitution auf der Belegzeile so anschaue stelle ich fest, dass ich für Substitutionen auf Belegzeile die Userexitroutine mit Übergabeparameter definiert habe, in den ich den geänderten Wert reinstelle
Code: Alles auswählen
FORM u901 CHANGING b_result.
  b_result = hier kommt dann die Berechnung
ENDFORM.
 
Die BSEG direkt zu ändern sollte man eigentlich auch nicht machen - die Userexitschnittstelle ist ja nicht ohne Grund da sondern um das Coding hier vom Rest der Verarbeitung abzugrenzen.


Ich habe als Exit Type "C_EXIT_PARAM_FIELD" gewählt. Ist das überhaupt richtig?

Wäre es bezüglich der direkten Änderung von BSEG besser ein MOVE..TO.. zu verwenden?

Sobald ich im Debugger an der Stelle des Selects SELECT SINGLE vtweg FROM vbrk angekommen bin, gibt es schon den subr-c 4. Das ist es, was mich stutzig macht..
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon wreichelt » 11.04.2017, 13:41

Hallo,

schau mal ob das Dir weiter hilft:

http://sapmandoo.over-blog.de/article-w ... 93040.html

Gruß Wolfgang
wreichelt
Expert
 
Beiträge: 523
Registriert: 17.07.2005, 09:46
Wohnort: Hessen
Dank erhalten: 87 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 12.04.2017, 12:24

wreichelt hat geschrieben:Hallo,

schau mal ob das Dir weiter hilft:

http://sapmandoo.over-blog.de/article-w ... 93040.html

Gruß Wolfgang


Hallo Wolfgang,

leider nicht :-( Ich trete auf der Stelle.
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon black_adept » 12.04.2017, 15:05

DAUAbap hat geschrieben:Ich habe als Exit Type "C_EXIT_PARAM_FIELD" gewählt. Ist das überhaupt richtig?

Wäre es bezüglich der direkten Änderung von BSEG besser ein MOVE..TO.. zu verwenden?

Sobald ich im Debugger an der Stelle des Selects SELECT SINGLE vtweg FROM vbrk angekommen bin, gibt es schon den subr-c 4. Das ist es, was mich stutzig macht..

  • Ja - "C_EXIT_PARAM_FIELD' ist ok
  • Nein - gar nicht an der BSEG rumfummeln sondern den Rückgabewert verändern. Darum hast du ja C_EXIT_PARAM_FIELD gesetzt
  • Wenn du einen SY-Subrc von 4 erhältst dann ist deine Selektion falsch. Mach doch mal parallel eine SE16 auf und kopiere die Daten die dein Selekt da machen soll in die SelMaske und schau, ob du hier überhaupt etwas selektiert bekommst. Tipp: Falscher Mandant oder Felder wurden nicht sauber übertragen und beim Select wird mit "leer" selektiert
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Für diese Nachricht hat black_adept einen Dank bekommen :
DAUAbap
black_adept
Top Expert
 
Beiträge: 2710
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 388 mal
Ich bin: Freiberufler/in

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 13.04.2017, 07:16

Jetzt muss ich leider nochmal fragen. Was meinst du genau damit? Hast du ein kleines Beispiel?
black_adept hat geschrieben:Nein - gar nicht an der BSEG rumfummeln sondern den Rückgabewert verändern. Darum hast du ja C_EXIT_PARAM_FIELD gesetzt


Ich habe im Netz nach Beispielen gesucht und mein Coding danach orientiert. Aber leider wird in den Beispielen die BSEG immer direkt verändert.
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon Unit605 » 13.04.2017, 08:03

black_adept hat geschrieben:.......
Wenn du einen SY-Subrc von 4 erhältst dann ist deine Selektion falsch. Mach doch mal parallel eine SE16 auf und kopiere die Daten die dein Selekt da machen soll in die SelMaske und schau, ob du hier überhaupt etwas selektiert bekommst. Tipp: Falscher Mandant oder Felder wurden nicht sauber übertragen und beim Select wird mit "leer" selektiert [/list]


Oder immer gern genommen: Führende Nullen bzw. fehlende führende Nullen.
Unit605
Expert
 
Beiträge: 975
Registriert: 05.02.2009, 21:29
Dank erhalten: 92 mal
Ich bin: Freiberufler/in

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 13.04.2017, 08:26

black_adept hat geschrieben:
  • Wenn du einen SY-Subrc von 4 erhältst dann ist deine Selektion falsch. Mach doch mal parallel eine SE16 auf und kopiere die Daten die dein Selekt da machen soll in die SelMaske und schau, ob du hier überhaupt etwas selektiert bekommst. Tipp: Falscher Mandant oder Felder wurden nicht sauber übertragen und beim Select wird mit "leer" selektiert

Jetzt weiß ich, wo der Fehler liegt!
Die Substitution wird bei Anlage der Faktura durchgeführt. D.h. zu der Belegnummer, mit der ich den Select durchführe, gibt es noch keine Daten.. Hm, was kann ich nun tun?
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon black_adept » 13.04.2017, 09:11

Aha - so langsam rückst du also mit den wesentlichen Informationen raus.

In diesem Fall solltest du keine Substitution machen sondern die SMOD-Erweiterung SDVFX002 ( = Userexit Debitorenzeile bei Übergabe an das Rechnungswesen ) verwenden. Da ist in den Übergabeparametern die VBRK drin ( auch wenn die zu dem Zeitpunkt noch nicht auf der DB ist ) und gerade der von dir zu ändernde Langtext ist in der Struktur XACCIT mit den änderbaren Feldern drin.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2710
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 388 mal
Ich bin: Freiberufler/in

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 13.04.2017, 10:32

black_adept hat geschrieben:Aha - so langsam rückst du also mit den wesentlichen Informationen raus.

In diesem Fall solltest du keine Substitution machen sondern die SMOD-Erweiterung SDVFX002 ( = Userexit Debitorenzeile bei Übergabe an das Rechnungswesen ) verwenden. Da ist in den Übergabeparametern die VBRK drin ( auch wenn die zu dem Zeitpunkt noch nicht auf der DB ist ) und gerade der von dir zu ändernde Langtext ist in der Struktur XACCIT mit den änderbaren Feldern drin.


Sorry, nun weiß ich, dass dies eine relevante Information war :D

Jetzt komme ich meinem Ziel deutlich näher!
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges

Re: SELECT in UserExit liefert subr-c 4

Beitragvon DAUAbap » 13.04.2017, 11:02

Läuft!!
Coding ist auch deutlich einfacher geworden :D :

Code: Alles auswählen
    IF XACCIT-vtweg = '30' OR XACCIT-vtweg = '40'.
      XACCIT-SGTXT = 'Test'.
    ENDIF.
DAUAbap
ForumUser
 
Beiträge: 15
Registriert: 11.04.2017, 07:15
Dank erhalten: 0 mal
Ich bin: sonstiges


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

  Aktuelle Beiträge   
Inkonsistente Konfigurationen Sperren
vor 15 Stunden von carlie 0 Antw.
Float Werte im Excel sind nicht identisch.
vor 17 Stunden von ewx 1 Antw.
Dokumentation überschreiben?
vor 6 Stunden von ewx 5 Antw.
Transaktion (KS02) speichert nicht in bestimmten Reiter
vor 10 Stunden von Wann 3 Antw.
gelöst Zentrale Adressverwaltung
Gestern von ewx 1 Antw.

  Ähnliche Beiträge beta
read table liefert sy-subrc = 4
05.04.2011, 12:54 von c oco 5 Antw.
gelöst BAPI_USER_CHANGE liefert kein Passwort
18.01.2017, 11:16 von Dyrdek 6 Antw.
Webservice liefert keine Daten mehr zurück
08.06.2012, 15:07 von donossi 0 Antw.
OPEN DATASET liefert Datei mit "komischen" Werten
19.07.2005, 08:34 von babap 8 Antw.
ALV liefert einige "leere" Datensätze
16.07.2008, 08:14 von mip 12 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!