Czy w składni ABAP dostępny jest operator trójskładnikowy lub warunkowy? Nie znalazłem, więc zakładam, że odpowiedź brzmi "nie", ale czy istnieje alternatywa, której mogę użyć, aby wyjaśnić wspólne "nieme" oświadczenia, które rutynowo używam?Ternary operator (alternatywy)
Weźmy na przykład metodę, która rejestruje komunikat z opcjonalnymi parametrami komunikatu. Aby zdecydować między używaniem importowanego parametru lub wartość domyślną muszę sprawdzić wartość tak:
IF iv_class IS INITIAL.
lv_message_class = 'DEFAULT'.
ELSE.
lv_message_class = iv_class.
ENDIF.
IF iv_number IS INITIAL.
lv_message_number = '000'.
ELSE.
lv_message_number = iv_number.
ENDIF.
IF iv_type IS INITIAL.
lv_message_type = 'E'.
ELSE.
lv_message_type = iv_type.
ENDIF.
Operator trójargumentowy zmniejszyłoby każde z tych stwierdzeń pięć linii do jednej linii, jak widać na poniższym bloku kodu. Mogłoby to nawet uczynić użycie zmiennej tymczasowej zbędnym, gdy operator jest używany w linii.
lv_message_class = iv_class IS INITIAL ? 'DEFAULT' : iv_class.
lv_message_number = iv_number IS INITIAL ? '000' : iv_number .
lv_message_type = iv_type IS INITIAL ? 'E' : iv_type .
Czy istnieje sposób na przybliżenie tego stylu programowania w ABAP lub czy utknąłem z bałaganu?
Po przeniesieniu do wersji 7.4 mogę potwierdzić, że działa to doskonale, mimo że podświetlenie składni zaznacza części instrukcji w nieprawidłowej czerwieni. Na marginesie, nie ogranicza się to do deklarowania nowych zmiennych, każde przypisanie wartości może korzystać z instrukcji 'COND'. – Lilienthal