ABAP OO - Loop mit Assigning

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »
Hallo Zusammen,

ich bin leider noch ein komplettes Nackerbatzel was ABAP OO angeht.

Ich habe ein Objekt mit der SE24 angelegt und in ein Programm eingebaut:

Code: Alles auswählen.

DATA: lcl_vbap      TYPE REF TO zcl_sd_vbap,
          lt_unterpos_vbap TYPE TABLE OF REF TO zcl_sd_vbap.

 LOOP AT lt_vbap_class ASSIGNING <ls_vbap>.
            create OBJECT lcl_vbap EXPORTING is_vbap = <ls_vbap>.
            APPEND lcl_vbap to lt_unterpos_vbap.
              endloop.
das Funktioniert soweit.
Die Itab ist mit einem Objekt befüllt.

Nun möchte ich über die ITAB loopen und eine Methode für jedes Objekt in der Itab ausführen..
das schaffe ich leider nicht :(

Code: Alles auswählen.

LOOP at lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap>.
 if <ls_unterpos>->get_global_position = 'X'.
   delete lt_unterpos_vbap INDEX sy-tabix.
   ENDIF.
ENDLOOP.
Was mache ich da falsch / wie mache ich das richtig?

Besten Dank im Voraus & Beste Grüße;

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


Re: ABAP OO - Loop mit Assigning

Beitrag von Andaria (ForumUser / 18 / 1 / 6 ) »
Moin,

dir fehlen auf jeden Fall die Klammern nach get_global_position, daher wird die Anweisung nicht als Methodenaufruf erkannt.

Code: Alles auswählen.

LOOP at lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap>.
 if <ls_unterpos>->get_global_position( ) = 'X'.
   delete lt_unterpos_vbap INDEX sy-tabix.
   ENDIF.
ENDLOOP.

Re: ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »
das war schon mal ein guter hinweis :D

einen Fehler habe ich noch entdeckt...
jetzt sieht es so aus:
LOOP at lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap>.
if <ls_unterpos_vbap>-table_line->get_global_position( ) = 'X'.
delete lt_unterpos_vbap INDEX sy-tabix.
ENDIF.
ENDLOOP.
funktioniert leider immer noch nicht :(
Folgende Fehlermeldung:
Fehlerhafter logischer Ausdruck: Statt "<LS_UNTERPOS_VBAP>-TABLE_LINE->G
ET_GLOBAL_POSITION(" wurde ein Feld, eine Funktion oder "(" erwartet.

Re: ABAP OO - Loop mit Assigning

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Welchen TYP hat <ls_unterpos_vbap> ?
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: ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »

Code: Alles auswählen.

FIELD-SYMBOLS: <ls_unterpos_vbap> LIKE LINE OF lt_unterpos_vbap.

Re: ABAP OO - Loop mit Assigning

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Dann müsste das so funktionieren:

Code: Alles auswählen.

if <ls_unterpos_vbap>->get_global_position( ) = 'X'.
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: ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »
leider nicht :(

sehr ärgerlich wenn die ersten gehversuche mit der ABAP Objektorientierung schon so kläglich scheitern... :(

EDIT: PS: Selbe fehlermeldung wie vorher.

Re: ABAP OO - Loop mit Assigning

Beitrag von Andaria (ForumUser / 18 / 1 / 6 ) »
Wichtig ist, dass ein Leerzeichen zwischen den zwei Klammern ist.
Wie ist deine Methode denn definiert?

Re: ABAP OO - Loop mit Assigning

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Wie lautet die Fehlermeldung genau?

Hat GET_GLOBAL_POSITION einen Rückgabeparameter in der Schnittstelle definiert?

Achtung: Beim DELETE innerhalb des LOOPs solltest du das INDEX weglassen.
Deine Abfrage mit sy-tabix ist in dieser Situation sogar gefährlich. Wenn innerhalb von GET_GLOBAL_POSITION auch ein LOOP passiert, wird sy-tabix auf diesen Wert gesetzt und passt nicht mehr mit dem außerhalb zusammen.

lg ADT
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: ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »
Leerzeichen sind drinnen.

Code: Alles auswählen.

public section.
methods CHECK_GLOBAL_POS
    returning
      value(V_GLOBAL) type CHAR1 .


METHOD check_global_pos.

    DATA: t_pstyv TYPE ty_pstyv.

    FIELD-SYMBOLS: <s_pstyv> LIKE LINE OF t_pstyv.

    IF t_pstyv IS INITIAL.
      t_pstyv = me->get_global_postypes( ).
    ENDIF.

    LOOP AT t_pstyv ASSIGNING  <s_pstyv>.
      IF s_vbap-pstyv = <s_pstyv>-pstyv.
        v_global = 'X'.
        EXIT.
      ENDIF.
    ENDLOOP.

  ENDMETHOD.                    "CHECK_GLOBAL_POS
EDIT:
Achtung: Beim DELETE innerhalb des LOOPs solltest du das INDEX weglassen.
Deine Abfrage mit sy-tabix ist in dieser Situation sogar gefährlich. Wenn innerhalb von GET_GLOBAL_POSITION auch ein LOOP passiert, wird sy-tabix auf diesen Wert gesetzt und passt nicht mehr mit dem außerhalb zusammen.
Ist mir bewusst. Ich habs nur mal für einen Raschein test drinnen und löse es dann ordendlich :)

Die Fehlermeldung lautet:
Fehlerhafter logischer Ausdruck: Statt "<LS_UNTERPOS_VBAP>->GET_GLOBAL_P
OSITION(" wurde ein Feld, eine Funktion oder "(" erwartet.

Re: ABAP OO - Loop mit Assigning

Beitrag von Andaria (ForumUser / 18 / 1 / 6 ) »
Blöde Frage, aber deine Methode heißt laut Definition CHECK_global_pos, du versuchst aber GET_global_position aufzurufen. Könnte das schon das Problem sein?
Zuletzt geändert von Andaria am 11.05.2016 13:10, insgesamt 1-mal geändert.

Folgende Benutzer bedankten sich beim Autor Andaria für den Beitrag:
Weltenschmerz


Re: ABAP OO - Loop mit Assigning

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
CHECK_GLOBAL_POS != GET_GLOBAL_POS
:x

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

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: ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »
Blöde Frage, aber deine Methode heißt laut Definition CHECK_global_pos, du versuchst aber GET_global_pos aufzurufen. Könnte das schon das Problem sein?
NEEEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIIIIINNNNNNNNNNNNNNNNNNNNNN!
Tut mir wirklich leid... das war es..
Vielen Dank für eure Mithilfe - ich hätts wohl trotz der offensichtlichkeit nicht ohne euch geschafft ^^

Re: ABAP OO - Loop mit Assigning

Beitrag von Weltenschmerz (ForumUser / 27 / 6 / 0 ) »
Sry für den Doppelpost aber es hat sich noch ein Problem ergeben dass zu Thema passt und ich habe angst dass es sonst übersehen wird:
kann ich mit einer Methode mit Returning auch ein WHERE im loop bedienen?

etwa so:

Code: Alles auswählen.

LOOP AT lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap> WHERE lt_unterpos_vbap->get_vbeln = <ls_ct_data>-vbeln.
Folgende Fehlermeldung schreibt er:
Es existiert keine Komponente mit Namen "LT_UNTERPOS_VBAP".

wie würde der Syntax da laufen?

Re: ABAP OO - Loop mit Assigning

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Am ehesten so:

Code: Alles auswählen.

LOOP AT lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap> WHERE table_line->get_vbeln( ) = <ls_ct_data>-vbeln.
Weiß aber jetzt nicht mit Sicherheit ob bzw. ab welchem Release das syntaktisch unterstützt wird.
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

Vergleichbare Themen

2
Antw.
12860
Views
LOOP AT INTO und ASSIGNING (gelöst)
von beterman » 17.10.2011 15:56 • Verfasst in ABAP® für Anfänger
6
Antw.
360
Views
LOOP AT .. ASSIGNING ... CHECK?!?
von whaslbeck » 09.02.2022 11:41 • Verfasst in ABAP® Core
8
Antw.
940
Views
LOOP AT...ASSIGNING FIELDS-SYMBOL
von PeterPaletti » 29.03.2022 12:25 • Verfasst in ABAP® für Anfänger
1
Antw.
721
Views
1
Antw.
3356
Views
ABAP LOOP
von Chrisba » 06.06.2007 14:53 • Verfasst in ABAP® für Anfänger

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.