Rätsel in SAP-Funktionsbaustein

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
14 Beiträge • Seite 1 von 1
14 Beiträge Seite 1 von 1

Rätsel in SAP-Funktionsbaustein

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Das mag mir jemand erklären: Funktionsbaustein SCMS_URL_CONCATENATE

Code: Alles auswählen.

* Concatenate
  concatenate
    protocol '://'
    http_server
    tport '/'
    http_script '?'
    command
    forward
    parameter
    signature_uri
    into absolute_uri.
Ein Blick in die Schnittstelle verrät:

Code: Alles auswählen.

*"  EXPORTING
*"     VALUE(ABSOLUTE_URI) TYPE  C
In der Folge klappt die ganze Logik nicht, weil

Code: Alles auswählen.

  describe field absolute_uri length size_uri in character mode.
  len_uri = strlen( absolute_uri ).
  if len_uri = size_uri.
    message e041(cms) raising error_parameter.
*    Überlauf beim berechnen der URI
  endif.
Zu diesem Überlauf kommt es zwangsläufig, weil die Länge ja immer 1 ist.

Was habe ich übersehen???
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Rätsel in SAP-Funktionsbaustein

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Und was veranlasst Dich zu dieser Annahme?

Du musst schon konkretesieren, was Du mit "weil die Länge ja immer 1 ist.".

Die (meisten) einzelnen Felder haben eine Laenge von 200, der Inhalt ist variable.

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Wenn ich ein Feld TYPE C ohne Längenangabe deklariere, hat es per Default die Länge 2.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ralf.wenzel hat geschrieben:Wenn ich ein Feld TYPE C ohne Längenangabe deklariere, hat es per Default die Länge 2.
echt ? ich würde meinen das es nur 1 lang ist.
<:: XING-Gruppe Tricktresor::>

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hallo Ralf,

das "TYPE C" ist keine Datendeklaration sondern eine Typspezifikation in einer Schnittstelle.
Dafür gilt: http://help.sap.com/abapdocu_70/en/ABEN ... ENERIC.htm
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hallo Ralf,

wenn man in ABAP ein Feld mit Type C ohne Längenangabe definiert, dann hat es eine implizite Länge von einem Character (das ist die sogenannte Standardlänge). Ein Character belegt in einem SAP-Unicode-System 2 Bytes - sonst 1 Byte.
Manche "Built-In ABAP-Types" haben immer eine feste Länge.
Bei z.B. b, i, s --> Längen in Bytes
Bei z.B. d, t --> Längen in Charatcer, d.h. D hat Character-Länge 6 (SAP-Unicode 12 Bytes, sonst 6 Bytes)


wenn man in einer Routine (FORM, Funktionsbaustein, Methode) einen Schnittstellenparameter einfach nur mit Type C deklariert, dann ist das eine generische Deklaration, die nur einen Typ aber keine Länge spezifiziert. Ich persönlich preferiere in solchen Fällen - wenn möglich - den Typ CSEQUENCE (der verträgt auch Strings) oder NUMERIC.
(siehe Online-Doku Stichwort CSEQUENCE)

wenn man in einer Routine (FORM, Funktionsbaustein, Methode) einen Schnittstellenparameter mit einem speziellen Typ deklariert (z.B. TYPE SY-SUBRC) dann wird auch genau dieser Typ verlangt.

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Alles richtig. Aber das Feld HAT die Länge 1 -- darum wundert mich das Coding ja.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
jein!
Das Feld hat zur Design-Zeit eine unbestimmte Länge.
Wenn der Funktionsbaustein aufgerufen wird und das Feld ABSOLUTE_URI ist nicht versorgt, hat es eine Länge von 1 Zeichen (= 1 Byte; in Unicode 2 Byte).
Wenn das Feld ABSOLUTE_URI mit einer Variablen versorgt ist, hat es zur Laufzeit dieselbe Länge wie die übergebene Variable.

lg ADT
Zuletzt geändert von a-dead-trousers am 12.07.2012 16:16, insgesamt 1-mal geändert.
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.18
Basis: 7.50

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Der Funktionsbaustein SCMS_URL_CONCATENATE schreibt nicht vor, wie lang das Ergebnisfeld ABSOLUTE_URI sein soll oder darf. Es muss nur vom Typ C sein.
Es liegt in der Verantwortung des Aufrufers, ein entsprechend langes Feld vom Typ C als Importing Parameter anzugeben.

In deinem Fall wird offensichtlich ein Feld vom Typ C in der Länge 1 verwendet und deshalb kommts zum Fehler.

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
ralf.wenzel hat geschrieben:Wenn ich ein Feld TYPE C ohne Längenangabe deklariere, hat es per Default die Länge 2.

Ist gut moeglich, dass wenn DU ein Feld Type C ohne Laengenangabe deklarierst, per default die Laenge 2 hat.

In meinem System hat es per default die Laenge 1 und in dem von Dir genannten Baustein die Laenge 200.

Welches Release, welcher Land, Unicode ja oder nein?

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »

Code: Alles auswählen.

1	PROTOCOL	'C'	C	 200	 200
2	COMMAND	'C'	C	 200	 200
3	PARAMETER	'C'	C	 200	 200
4	SIGNATURE_URI	'C'	C	 200	 200
5	HTTP_SERVER	'C'	C	 200	 200
6	HTTP_PORT	'N'	N	 200	 200
7	HTTP_SPORT	'N'	N	 200	 200
8	HTTP_SCRIPT	'C'	C	 200	 200

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Ich kann doch im Debugger sehen dass durch den concatenate nur das "h" von "http" im Feld landet.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
ralf.wenzel hat geschrieben:Ich kann doch im Debugger sehen dass durch den concatenate nur das "h" von "http" im Feld landet.

Wie wird der Fuba genau aufgerufen, bzw. wie ist gv_absolute_uri im rufenden Programm definiert:

Code: Alles auswählen.

DATA:  gv_ABSOLUTE_URI TYPE c. "Keine Längenangabe => also genau ein Zeichen

CALL FUNCTION SCMS_URL_CONCATENATE
....
IMPORTING
  absolute_uri = gv_ABSOLUTE_URI 
...
Oder

Code: Alles auswählen.

DATA:  gv_ABSOLUTE_URI TYPE c LENTH 200. "genau 200 Zeichen

CALL FUNCTION SCMS_URL_CONCATENATE
....
IMPORTING
  absolute_uri = gv_ABSOLUTE_URI 
...
Das rufende Programm definiert die Länge nicht die TYPE Definition in der FuBa-Schnittstelle, diese sagt nur das die Variable C-Like sein muss, die Länge ist egal!
Gruß Hendrik

Re: Rätsel in SAP-Funktionsbaustein

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Ah, jetzt weiß ich, an welcher Stelle ich auf dem Schlauch stand. Danke!
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1383
Views
Rätsel: Characterzuweisungen
von Azreal » 17.03.2005 10:32 • Verfasst in ABAP® Core
0
Antw.
795
Views
ABAP Rätsel zum Üben
von sap_enthusiast » 30.06.2022 17:09 • Verfasst in SAP - Allgemeines
14
Antw.
2580
Views
F4IF_INT_TABLE_VALUE_REQUEST gibt Rätsel auf
von ralf.wenzel » 07.01.2019 10:28 • Verfasst in ABAP® Core
2
Antw.
2990
Views
EKBE-XBLNR - ein Feld voller Rätsel
von ralf.wenzel » 15.04.2013 09:42 • Verfasst in ABAP® Core
4
Antw.
2043
Views
Funktionsbaustein
von Asar » 23.10.2014 13:06 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2800
Daten an Tabelle binden
vor 10 Stunden von Lukas Sanders 2 / 876
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2800
Daten an Tabelle binden
vor 10 Stunden von Lukas Sanders 2 / 876
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2467
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9050