...using/importing value(xxx) type c[(n)]???

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

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

...using/importing value(xxx) type c[(n)]???

Beitrag von Gast ( / / 0 / 3 ) »
Wieso kann man bei der Typangabe von USING VALUE und dergleichen keine Größenangabe machen wie man es von DATA her kennt?

Code: Alles auswählen.

DATA foobar(10) TYPE c. " <- 10 chars
Beispiel:

Code: Alles auswählen.

* FORM foobar USING VALUE(xxx) TYPE c(10). oder
* FORM foobar USING VALUE(xxx(10)) TYPE c. oder
* ...
* ENDFORM.
*
* Ich moechte 10 chars uebergeben koennen.
Es ist irgendwie nur über den Umweg Typendefinitionen möglich, aber den möchte ich nicht immer gehen, sondern direkt wie oben (falsch) beschrieben.

Beispiel:

Code: Alles auswählen.

TYPES c10(10) TYPE c.

FORM foobar USING VALUE(xxx) TYPE c10.
* ...
ENDFORM.
Ist dies irgendwie in direkter Form möglich?



Vielen Dank im Voraus!

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


Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
:?: Wieso ist es nicht möglich?
:!: Weil die Sprache es eben nicht zuläßt.

:?: ... Ist dies irgendwie in direkter Form möglich?
:!: Nein!
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Danke für die Antwort. 8[

So ein Scheiss, muss ich halt mit leben. :\

Aber: Wie machst du das, wenn du nen numerischen char (Typ: n) mit 30 Zeichen übergeben willst?

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Anonymous hat geschrieben: Aber: Wie machst du das, wenn du nen numerischen char (Typ: n) mit 30 Zeichen übergeben willst?
Wie du schon selber beschrieben hast. Type-Definition. Aber das ist doch i.A. grad mal eine einzige Zeile am Anfang des Programms. Was ist denn daran schlecht?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Naja, stell dir mal vor, du hast mehrere solcher Forms, die jeweils andere Datentypen mit anderer Größe nutzen. So jetzt musst du für jeden doofen anders großen Datentypen ein Type-Definition anlegen, wie dumm ist denn das. 8[ ABAP ist sowieso eine etwas schlecht strukturierte Scriptsprache in meinen Augen, auch wenn sie einen betriebswirtschaftlichen Hintergrund hat. Aber schliesslich muss ich die Grütze lernen, da geht nichst vorbei. ;D Andere Sprachen sind da schon besser strukturiert.

Beitrag von Olaf P. (ForumUser / 61 / 0 / 0 ) »
Anonymous hat geschrieben:Naja, stell dir mal vor, du hast mehrere solcher Forms, die jeweils andere Datentypen mit anderer Größe nutzen. So jetzt musst du für jeden doofen anders großen Datentypen ein Type-Definition anlegen, wie dumm ist denn das.
Man kann sich vieles vorstellen, allerdings kommt dieser Fall in der Praxis äußerst selten vor. Zu 99% bezieht man sich bei Form-Parametern (natürlich auch DATA-Definitionen) auf DDIC-Datentypen.

Das erinnert mich irgendwie daran, wie Leute mal Aussagen getroffen haben wie: "Was es gibt keine FOR-Schleife? Damit kann man ja nicht arbeiten."

Aus meiner Sicht sollte man nicht versuchen Lösungen so zu realisieren, wie man sie in einer anderen Sprache realisieren würde, sondern mal sollte schauen, wie sie in ABAP realisiert werden würde.

Ich könnte mich auch ärgern, weil es in anderen Sprachen keine internen Tabellen wie in ABAP gibt, aber das mache ich nicht, sondern löse das Problem so wie es in der jeweiligen Sprache sinnvoll ist.

Gruß, Olaf

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Gast,

es ist zwar richtig, dass man in der Typvereinbarung von Funktionen und Forms keine Längen für C und N angegeben kann, aber es gibt dafür u.a. die direkten, generischen Typangaben, die nämlich genau C und N heißen und entsprechend x-beliebig lange Zeichenketten (im Rahmen der Maximallängen) zulassen:

Code: Alles auswählen.

FORM tu_was USING p1 TYPE C "Zeichenkette 1 - 65535
                      p2 TYPE N "numer. Zeichenkette 1 - 65535
                      p3 TYPE CLIKE. "alle Arten von Zeichenketten, inkl. String, N, D und T
ENDFORM.
Der Strukturbaum generischer Parameter

Code: Alles auswählen.

                                           +---I,INT2,INT1 
                   +-----------NUMERIC-----+---P 
                   |                       +---F 
                   | 
                   |                       +---X 
      +---SIMPLE---+-----------XSEQUENCE---+---XSTRING 
      |            | 
      |            +---CLIKE-+-CSEQUENCE---+---STRING 
ANY---+                      |             +---C 
      |                      | 
      |                      |             +---N 
      |                      +-------------+---D 
      |                                    +---T 
      |                                    +---STRUC(C,N,D,T) 
      | 
      +---TABLE 
Zu finden ist das unter 'Typisierung von Formalparametern' in der SAP-Hilfe
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Gast,
um Mißverständnissen vorzubeugen - bitte betrachte mein vorheriges Posting als Anregung wie man sich aus meiner Erfahrung am günstigen in ABAP einarbeiten kann.

Mit dem Forum hat man auch eine sehr gute Basis um gerade die Frage zu klären "Wie würden man diese Problemstellung in ABAP lösen".

Viele Grüße
Olaf

Beitrag von Gast ( / / 0 / 3 ) »
Und was spricht im o.g. Fall gegen eine Typisierung mit LIKE foobar (vorausgesetzt, foobar ist eine globale Variable) oder eben mit TYPE char10, wenn wirklich kein anderes Datenelement besser passt?

Beitrag von Gast ( / / 0 / 3 ) »
ereglam hat geschrieben:Hallo Gast,

es ist zwar richtig, dass man in der Typvereinbarung von Funktionen und Forms keine Längen für C und N angegeben kann, aber es gibt dafür u.a. die direkten, generischen Typangaben, die nämlich genau C und N heißen und entsprechend x-beliebig lange Zeichenketten (im Rahmen der Maximallängen) zulassen: ...
Danke, ereglam. Das heisst also, dass man die Längen bei p, c, n und x garnicht angeben muss und das Form nur eine teilweise Typisierung übernimmt. Bei der Übergabe wird daher erst vollständig typisiert und die Länge automatisch mit übernommen, richtig?

Na, dann ist ABAP vll doch nicht sooo doof. ;) Habe gedacht man müsste explizit eine Größe angeben um über eine Typeneinheit hinausgehen zu können.

Bin halt noch NoOb in dem Gebit von ABAP. Aber wie das so ist, man lernt und lernt dazu. :)

Beitrag von Olaf P. (ForumUser / 61 / 0 / 0 ) »
Hallo Gast,
es ist trotzdem sinnvoll immer (sofern möglich) mit vollständigen Typangaben zu arbeiten. In diesem Fall kann das System bereits bei der Entwicklung prüfen, ob die Typen/Längen von Übergabe- und Formparameter zueinander passen.

Eine generische Angabe findet man eher bei Tools oder sehr allgemeinen Routinen, die dann unterschiedliche Längen etc. auch handeln.

Gruß, Olaf

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ich benutze CSEQUENCE gerne, wenn ich allgemeingültig Texte bearbeiten möchte.

Ansonsten stimme ich Olaf P., dass man allein schon aus Dokumentationsgründen immer möglichst präzise typisiert. Dadurch weiß ein Anwender der Routine dann recht genau, was erwartet wird.
Und wenn man mal TYPE ANY benutzt, weil man nicht wissen kann, was der Aufrufer liefert, ist das immer noch dokumentativ.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1898
Views
Methodenparameter Importing TYPE Textelement
von snooze2 » 19.01.2006 14:22 • Verfasst in ABAP Objects®
26
Antw.
13201
Views
EXPORTING = IMPORTING?
von ewx » 14.12.2015 11:06 • Verfasst in ABAP Objects®
5
Antw.
2861
Views
I_TAB als IMPORTING Parameter
von abap-strizi » 19.12.2005 11:18 • Verfasst in ABAP Objects®
5
Antw.
2060
Views
Programmverständnis II - importing- exporting
von Jan_M. » 20.05.2004 14:59 • Verfasst in ABAP® für Anfänger
2
Antw.
187
Views
IMPORTING und EXPORTING bei Schnittstellen-Methoden
von mrsecret2307 » 26.04.2023 21:56 • 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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140