Wenn du den findest, sag mir bitte Bescheid! Den hätte ich auch schon sehr oft gebraucht.TakerOne hat geschrieben:Ich suche nun eine Baustein, dem ich den String übergebe und der mir die WAHRE Länge zurückliefert.
Danach kann ich dann abhängig von der Länge entscheiden, ob ein weiterer Tabulator notwendig ist oder nicht.
Ich glaube, du irrst dich. Leider kann ich dir aktuell nicht das Gegenteil beweisen...a-dead-trousers hat geschrieben:Für SAP sehe ich da schwarz, dass sich irgendwer die Mühe einer Font-Analyse angetan hat.
Code: Alles auswählen.
REPORT zdz_test_arial.
TABLES:
zarial_laufw,
beispiel.
DATA:
lv_ein TYPE char40,
lv_lge(4) TYPE p DECIMALS 3,
lv_org TYPE i,
lv_neu TYPE zklein,
lv_zaehl TYPE i,
lv_zaehl2 TYPE i,
lv_einz TYPE zklein,
lv_einz2 TYPE zklein.
SELECT-OPTIONS:
so_ein FOR beispiel-btext.
LOOP AT so_ein.
lv_ein = so_ein-low.
lv_zaehl = 0.
lv_zaehl2 = 1.
lv_lge = 0.
DO 40 TIMES.
lv_einz = lv_ein+lv_zaehl(1).
lv_einz2 = lv_ein+lv_zaehl2(1).
SELECT SINGLE * FROM zarial_laufw
WHERE
wert = lv_einz.
* Spaces am Ende sind kleiner als im Text
IF lv_einz = space AND
lv_einz2 = space.
lv_lge = lv_lge + '0.1'.
ELSE.
IF sy-subrc = 0.
lv_lge = lv_lge + zarial_laufw-weite.
ELSE.
lv_lge = lv_lge + '0.6'.
ENDIF.
ENDIF.
lv_zaehl = lv_zaehl + 1.
lv_zaehl2 = lv_zaehl2 + 1.
IF lv_zaehl2 > 39.
lv_zaehl2 = 39.
ENDIF.
ENDDO.
CONDENSE lv_ein.
lv_org = STRLEN( lv_ein ).
WRITE: /001 lv_ein,
042 lv_lge,
055 lv_org.
ENDLOOP.