SELECT in UserExit liefert subr-c 4

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
14 Beiträge • Seite 1 von 1
14 Beiträge Seite 1 von 1

SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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. 

gesponsert
Stellenangebot: SAP-Entwickler (m/w/d)

Dein Unternehmen ist auf der Suche nach neuen Kolleg:innen? Gerne weitersagen:Stellenanzeigen auf ABAPforum.com schalten

.


Re: SELECT in UserExit liefert subr-c 4

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Weil du keinen Beleg in lv_vbeln mitgibst
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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.

Re: SELECT in UserExit liefert subr-c 4

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
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

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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..

Re: SELECT in UserExit liefert subr-c 4

Beitrag von wreichelt (Top Expert / 1048 / 30 / 192 ) »
Hallo,

schau mal ob das Dir weiter hilft:

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

Gruß Wolfgang

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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.

Re: SELECT in UserExit liefert subr-c 4

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
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

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DAUAbap

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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.

Re: SELECT in UserExit liefert subr-c 4

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
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.

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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?

Re: SELECT in UserExit liefert subr-c 4

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
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

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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!

Re: SELECT in UserExit liefert subr-c 4

Beitrag von DAUAbap (ForumUser / 15 / 5 / 0 ) »
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.

Seite 1 von 1

Vergleichbare Themen

5
Antw.
19083
Views
read table liefert sy-subrc = 4
von c oco » 04.04.2011 17:09 • Verfasst in ABAP® für Anfänger
4
Antw.
2260
Views
7
Antw.
4325
Views
BAPI_SALESORDER_CREATEFROMDAT2 liefert keine VBELN
von Julian_Feige » 27.01.2017 09:47 • Verfasst in Sales and Distribution
6
Antw.
3851
Views
BAPI_USER_CHANGE liefert kein Passwort
von Dyrdek » 18.01.2017 08:58 • Verfasst in ABAP® für Anfänger
2
Antw.
865
Views
BAPI_HU_PI_READ liefert veraltete Daten
von RaCDigger » 20.01.2021 10:06 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 2065
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 3895