Szukaj…


Literały

ABAP oferuje trzy różne operatory do deklarowania zmiennych łańcuchowych lub znakowych

Symbolika Rodzaj wewnętrzny Długość Nazwa
„...” do 1-255 znaków literały pola tekstowego
`...` Ciąg c 0–255 znaków literały ciągów tekstowych
| ... | Ciąg c 0–255 znaków literały szablonów

Należy pamiętać, że zakres długości dotyczy tylko wartości zakodowanych na stałe. CString wewnętrzne CString mają dowolną długość, podczas gdy zmienne typu C zawsze mają stałą długość.

Szablony ciągów

Szablony ciągów to wygodny sposób mieszania literałów z wartościami ze zmiennych:

WRITE |Hello, { lv_name }, nice to meet you!|.

Może także formatować takie rzeczy jak daty. Aby użyć formatu daty zalogowanego użytkownika:

WRITE |The order was completed on { lv_date DATE = USER } and can not be changed|.

Obsługiwane są wywołania i wyrażenia metod funkcjonalnych:

WRITE |Your token is { to_upper( lv_token ) }|.
WRITE |Version is: { cond #( when lv_date < sy-datum then 'out of date' else 'up to date' ) }|.

Uwaga! Bezpośrednie wdrożenie wyników tymczasowych (takich jak wywołania metod) w szablonach ciągów może prowadzić do poważnych problemów z wydajnością (więcej na ten temat tutaj ). Chociaż używanie go w rzadko wykonywanych instrukcjach jest w porządku, powoduje, że twój program gwałtownie zwalnia w pętlach.

Łańcuchy łączące

Zmienne łańcuchowe i znakowe można łączyć za pomocą polecenia ABAP CONCATENATE . Wymagana jest dodatkowa zmienna do przechowywania wyników.

Przykład:

CONCATENATE var1 var2 var3 INTO result.
"result now contains the values of var1, var2 & var3 stringed together without spaces

Stenografia

Nowsze wersje ABAP oferują bardzo krótki wariant konkatenacji przy użyciu && (operator łańcuchowy).

DATA(lw_result) = `Sum: ` && lw_sum.

Uwaga! Warto zauważyć, że stosowanie tymczasowych wyników w połączeniu z operatorem Łańcuch wewnątrz pętli może prowadzić do ogromnych problemów z wydajnością z powodu rosnącej liczby instrukcji kopiowania (więcej na ten temat tutaj ).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow