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.
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.
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.
funktioniert leider immer noch nichtLOOP 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.
Code: Alles auswählen.
FIELD-SYMBOLS: <ls_unterpos_vbap> LIKE LINE OF lt_unterpos_vbap.
Code: Alles auswählen.
if <ls_unterpos_vbap>->get_global_position( ) = 'X'.
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
Ist mir bewusst. Ich habs nur mal für einen Raschein test drinnen und löse es dann ordendlichAchtung: 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.
Folgende Benutzer bedankten sich beim Autor Andaria für den Beitrag:
Weltenschmerz
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Weltenschmerz
NEEEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIIIIINNNNNNNNNNNNNNNNNNNNNN!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?
Code: Alles auswählen.
LOOP AT lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap> WHERE lt_unterpos_vbap->get_vbeln = <ls_ct_data>-vbeln.
Code: Alles auswählen.
LOOP AT lt_unterpos_vbap ASSIGNING <ls_unterpos_vbap> WHERE table_line->get_vbeln( ) = <ls_ct_data>-vbeln.