Chyba jestem zmęczony, nie potrafię wygooglać pomysłu na rozwiązanie poniższego problemu:
Lecę loopem po tabeli wewnętrznej.
Jeśli rekord spełnia dwa warunki - wykonuję jakieś działanie.
Warunek pierwszy: pole gmina ma mieć jakąś wartość.
Warunek kolejny: zawartość pola opst1 ma być różna niż trzy ciągi tekstowe (są to stringi o różnych długościach).
LOOP AT gt_pos_line INTO gs_pos_line WHERE gmina = wa_gmina-gmina AND opst1 not in ( 'txt1' , 'txt2' , 'txt3' ) .
"coś się dzieje na danych
endloop.
Próbowałem podawać txt1 2 i 3 jako treść, jako zmienne, całość jako tabelę wewnętrzną - cały czas mam błąd składni.
Jak to poprawnie ugryźć?
Loop at z 2 warunkami
-
- Posty: 69
- Rejestracja: czw lis 04, 2010 10:49 pm
- Has thanked: 1 time
- Been thanked: 71 times
- Kontakt:
Re: Loop at z 2 warunkami
Po IN trzeba użyć zmiennej typu RANGE - konstrukcja analogiczna jak SELECT-OPTIONS.
Pozdrawiam,
Krzysiek
Krzysiek
Re: Loop at z 2 warunkami
Chyba coś mi nie pykło...
Teraz chcę zrobić loop po tabeli wewnętrznej, a w przypadku gdy będzie wpis, którego status jest różny od mojego range, chcę zwiększyć lv_gmina_il o 1.
Niestety nadal zwiększa się licznik dla rekordów, w których są statusy (opst1) z zakresu ujętego w range.
Kod: Zaznacz cały
"deklarujemy zakres danych RANGE żeby wrzucić go w warunek
DATA: s_stats TYPE RANGE OF T529U-TEXT1,
s_stats_wa LIKE LINE OF s_stats.
"wrzucam sobie 3 statusy, które mają być pominięte:
s_stats_wa-sign = 'I'.
s_stats_wa-option = 'EQ'.
s_stats_wa-low = 'Rencista'.
APPEND s_stats_wa TO s_stats.
s_stats_wa-sign = 'I'.
s_stats_wa-option = 'EQ'.
s_stats_wa-low = 'Osoby zewnętrzne'.
APPEND s_stats_wa TO s_stats.
s_stats_wa-sign = 'I'.
s_stats_wa-option = 'EQ'.
s_stats_wa-low = 'Emeryt'.
APPEND s_stats_wa TO s_stats.
Kod: Zaznacz cały
LOOP AT gt_pos_line INTO gs_pos_line WHERE gmina = wa_gmina-gmina AND opst1 not in s_stats .
lv_gmina_il = lv_gmina_il + 1.
ENDLOOP.
-
- Posty: 69
- Rejestracja: czw lis 04, 2010 10:49 pm
- Has thanked: 1 time
- Been thanked: 71 times
- Kontakt:
Re: Loop at z 2 warunkami
U mnie działa bez problemu, zmieniłem tylko miejsce negacji warunku
Wynika działania:
Kod: Zaznacz cały
DATA: itab TYPE TABLE OF text20,
line TYPE text20.
itab = VALUE #( ( 'Rencista' )
( 'Out of range 1' )
( 'Osoby zewnętrzne' )
( 'Out of range 2' )
( 'Emeryt' ) ).
"deklarujemy zakres danych RANGE żeby wrzucić go w warunek
DATA: s_stats TYPE RANGE OF text20,
s_stats_wa LIKE LINE OF s_stats.
"wrzucam sobie 3 statusy, które mają być pominięte:
s_stats_wa-sign = 'E'.
s_stats_wa-option = 'EQ'.
s_stats_wa-low = 'Rencista'.
APPEND s_stats_wa TO s_stats.
s_stats_wa-sign = 'E'.
s_stats_wa-option = 'EQ'.
s_stats_wa-low = 'Osoby zewnętrzne'.
APPEND s_stats_wa TO s_stats.
s_stats_wa-sign = 'E'.
s_stats_wa-option = 'EQ'.
s_stats_wa-low = 'Emeryt'.
APPEND s_stats_wa TO s_stats.
LOOP AT itab INTO line.
WRITE: / line.
ENDLOOP.
ULINE.
LOOP AT itab INTO line WHERE table_line IN s_stats.
WRITE: / line.
ENDLOOP.
Pozdrawiam,
Krzysiek
Krzysiek
-
- Posty: 135
- Rejestracja: śr sie 24, 2022 11:50 am
- Has thanked: 60 times
- Been thanked: 86 times
- Kontakt:
Re: Loop at z 2 warunkami
Kod: Zaznacz cały
AND opst1 not in ( 'txt1' , 'txt2' , 'txt3' )
SAP ABAP Certified Developer