Aufruf statischer privater Attribute

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

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

Aufruf statischer privater Attribute

Beitrag von Hotzenplotz (ForumUser / 19 / 6 / 2 ) »
Hallo Leidensgenossen,
Habe zwei statische Klassen mit statischen privaten Attributen erstellt. Ein privates statisches Attribut habe ich nach fetch/ array mit Wert versorgt. Nun versuche ich aus der zweiten Klasse heraus eine public Method der ersten Klasse aufzurufen, um den Wert des vorherig versorgten privaten Attributes von Klasse 1 auszulesen. Das will mir leider nicht so recht gelingen.
Ich rufe also eine private Methode von Klasse 2 auf, in der wiederum ein Methodenaufruf aus Klasse 1 gerufen wird. Klappt leider nicht. Habe da diese zwei Varianten, welche jedoch beide nicht funktionieren:

lv_atttribut = lcl_klasse1=>export_kostenst( ex_kostenst )
Fehlermeldung:
Innerhalb einer statischen Methode ist ohne Zusatzangabe nur ein
Zugriff auf statische Attribute möglich.


CALL METHOD lcl_klasse1=>export_kostenst EXPORTING ex_kostenst.
Fehlermeldung:
Nach "EXPORTING" wurde "parameter = ..." erwartet.

Lasst den Räuber wissen, wenn er hier noch mehr an Info stecken soll.

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


Re: Aufruf statischer privater Attribute

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Beim zweiten Aufruf fehlt definitiv die Quell-Variable:

Code: Alles auswählen.

CALL METHOD lcl_klasse1=>export_kostenst EXPORTING ex_kostenst = lv_atttribut.
Zum generellen Problem kann ich nichts sagen, weil deine Code-Fragmente zuwenig "Inhalt" haben. Wo bzw. wie ist lv_atttribut definiert?

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Hotzenplotz

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: Aufruf statischer privater Attribute

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Hotzenplotz,
der erste Fehler deutet an, dass Du lv_attribut nicht als statisches Attribut angelegt hast.

Es sollte mittels

Code: Alles auswählen.

CLASS-DATA:
  lv_attribut TYPE ....
und nicht

Code: Alles auswählen.

DATA:
  lv_attribut TYPE ...
definiert werden.

MfG
Thomas R.

Folgende Benutzer bedankten sich beim Autor Thomas R. für den Beitrag:
Hotzenplotz



Re: Aufruf statischer privater Attribute

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Für den geschilderten Fall halte ich das FRIENDS Konzept für nicht zielführend, weil man ohne Not die Kapselung durchlöchert, die der OP ja nicht aus Jux aufgebaut hat.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Aufruf statischer privater Attribute

Beitrag von Hotzenplotz (ForumUser / 19 / 6 / 2 ) »
Vielen Dank für die Rückmeldungen, glaube hier auch schon von "der toten Hose" den richtigen Wink bekommen zu haben:

Beim zweiten Aufruf fehlt definitiv die Quell-Variable:

Code: Alles auswählen
CALL METHOD lcl_klasse1=>export_kostenst EXPORTING ex_kostenst = lv_atttribut.

Kann aktuell leider an dieser Aufgabe nicht weiterarbeiten, mein Chef hat mir am Montag früh schon wieder eine andere "ganz wichtige Aufgabe" um die Ohren gehauen. Hoffe im Anschluss daran mich dem beschriebem wieder widmen zu können. Werde auf jeden Fall die Lösung hier bekannt geben.
Danke, erst einmal an alle. Bis in Kürze!

Re: Aufruf statischer privater Attribute

Beitrag von Hotzenplotz (ForumUser / 19 / 6 / 2 ) »
Hallo zusammen!
Ich habe mich wieder dem Thema angenommen und glaube auch die Lösung gefunden zu haben. Ausgangssituation ist:

Code: Alles auswählen.

CLASS lcl_benutzerinfo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: select_userinfo.
    CLASS-METHODS: export_kostenst RETURNING value(re_kostenst) TYPE xubname.

  PRIVATE SECTION.
    CLASS-DATA: lv_benutzer TYPE xubname,
                lv_kostenst TYPE xukostl.

ENDCLASS.

*----------------------------------------------------------------------*
*       CLASS lcl_benutzerinfo IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_benutzerinfo IMPLEMENTATION.
  METHOD select_userinfo.
    lv_benutzer = sy-uname.
    SELECT SINGLE kostl FROM user_addr INTO lv_kostenst WHERE
      bname = lv_benutzer.
  ENDMETHOD. 

  METHOD export_kostenst.
    re_kostenst = lv_kostenst.
  ENDMETHOD.

ENDCLASS.
Dann wollte ich von einer zweiten Klasse aus auf das vorherig deklariert und zugewiesene priv. Attribut lv_kostenst zugreifen:

Code: Alles auswählen.

CLASS lcl_scanner DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: get_kostenst.

  PRIVATE SECTION.
    CLASS-DATA: lv_kostenst TYPE xukostl.

ENDCLASS.                    "lcl_scanner DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_scanner IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_scanner IMPLEMENTATION.
  METHOD get_kostenst.
    lv_kostenst = lcl_benutzerinfo=>export_kostenst( ).
  ENDMETHOD.                    "get_kostenstelle
ENDCLASS.
Mein Fehler lag darin, dass ich die Statische Methode export_kostenst nicht mit einem Returning Parameter deklariert hatte.

Re: Aufruf statischer privater Attribute

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
a-dead-trousers hat geschrieben:Beim zweiten Aufruf fehlt definitiv die Quell-Variable:

Code: Alles auswählen.

CALL METHOD lcl_klasse1=>export_kostenst EXPORTING ex_kostenst = lv_atttribut.
Zum generellen Problem kann ich nichts sagen, weil deine Code-Fragmente zuwenig "Inhalt" haben. Wo bzw. wie ist lv_atttribut definiert?

7.40 und immer noch CALL METHOD ? Really ?
"Code lügt nicht ^^"

Re: Aufruf statischer privater Attribute

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
Hotzenplotz hat geschrieben:Hallo zusammen!
Ich habe mich wieder dem Thema angenommen und glaube auch die Lösung gefunden zu haben. Ausgangssituation ist:

Code: Alles auswählen.

CLASS lcl_benutzerinfo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: select_userinfo.
    CLASS-METHODS: export_kostenst RETURNING value(re_kostenst) TYPE xubname.

  PRIVATE SECTION.
    CLASS-DATA: lv_benutzer TYPE xubname,
                lv_kostenst TYPE xukostl.

ENDCLASS.

*----------------------------------------------------------------------*
*       CLASS lcl_benutzerinfo IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_benutzerinfo IMPLEMENTATION.
  METHOD select_userinfo.
    lv_benutzer = sy-uname.
    SELECT SINGLE kostl FROM user_addr INTO lv_kostenst WHERE
      bname = lv_benutzer.
  ENDMETHOD. 

  METHOD export_kostenst.
    re_kostenst = lv_kostenst.
  ENDMETHOD.

ENDCLASS.
Dann wollte ich von einer zweiten Klasse aus auf das vorherig deklariert und zugewiesene priv. Attribut lv_kostenst zugreifen:

Code: Alles auswählen.

CLASS lcl_scanner DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: get_kostenst.

  PRIVATE SECTION.
    CLASS-DATA: lv_kostenst TYPE xukostl.

ENDCLASS.                    "lcl_scanner DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_scanner IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_scanner IMPLEMENTATION.
  METHOD get_kostenst.
    lv_kostenst = lcl_benutzerinfo=>export_kostenst( ).
  ENDMETHOD.                    "get_kostenstelle
ENDCLASS.
Mein Fehler lag darin, dass ich die Statische Methode export_kostenst nicht mit einem Returning Parameter deklariert hatte.

Also bis auf das gruselige lv_ ....

Als Tipp, verwende anstatt export_kostenst besser ein "get_kostenstelle". Denn es ist ein klassicher Getter und selbst nicht ABAP Programmierer verstehen das .

Wozu hier noch LV_Benutzer ? sy-uname kannst Du gleich angeben.
lv_benutzer = sy-uname.
SELECT SINGLE kostl FROM user_addr INTO lv_kostenst WHERE
bname = lv_benutzer.

Logischer wäre allerdings ein Importparameter mit DEFAULT sy-uname. Dann hätte man tatsächlich wiederverwendbares Coding, das alle Programme benutzen können, die diese Info zu einem und nicht nur dem ausführenden Benutzer wollen.
"Code lügt nicht ^^"

Seite 1 von 1

Vergleichbare Themen

21
Antw.
9237
Views
Redefinierte Methode - Attribute
von tseng » 28.10.2015 13:32 • Verfasst in ABAP® für Anfänger
5
Antw.
4656
Views
Doppelte Attribute finden
von isensatus » 23.08.2018 10:56 • Verfasst in ABAP® für Anfänger
0
Antw.
1603
Views
SRM eigene Attribute aus Org-Struktur entfernen
von jspranz » 20.02.2007 12:52 • Verfasst in Sonstige Module
0
Antw.
1378
Views
Datei Attribute am Frontend lesen
von PI2301 » 27.10.2009 13:35 • Verfasst in ABAP® für Anfänger
0
Antw.
3663
Views

Ü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

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 3 / 1485
Regex in where
vor 13 Stunden von tar 6 / 157

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

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 3 / 1485
Regex in where
vor 13 Stunden von tar 6 / 157

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821