[ABAP] Führende Nullen zu einer Materialnummer (MATNR), Vertriebsbeleg (VBELN) hinzufügen (zero-padding)

Variante 1 (FuBa)

DATA: lv_matnr TYPE char18 VALUE '1234567890'.

* Prüft Länge, Datentyp, fügt führende Nullen ein
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = lv_matnr
  IMPORTING
    output = lv_matnr.

WRITE: / |{ lv_matnr }|.

Variante 2 (UNPACK)

DATA: lv_c_matnr TYPE char10 VALUE '1234567890'. " 10-stellige MatNr
DATA: lv_matnr TYPE mara-matnr.                  " 18-stellige MatNr

UNPACK lv_c_matnr TO lv_matnr.

WRITE: / |{ lv_matnr }|.

Variante 3 (SHIFT/OVERLAY)

DATA: lv_c_matnr TYPE char18 VALUE '1234567890'. " 10-stellige MatNr als Input

SHIFT lv_c_matnr RIGHT DELETING TRAILING space.
* 18-stellig mit Nullen überlagern
OVERLAY lv_c_matnr WITH '000000000000000000'.

WRITE: / |{ lv_c_matnr }|.

Variante 4 (String-Template)

DATA: lv_matnr TYPE string VALUE '12345'

* 18-stellige Ausgabe mit führende Nullen
lv_matnr = |{ lv_matnr WIDTH = 18 ALPHA = IN }|.

WRITE: / |{ lv_matnr }|.

[ABAP] Führende Nullen von einer Materialnummer (MATNR), Vertriebsbeleg (VBELN) entfernen (remove preceeding zeros)

Variante 1 (FuBa)

DATA: lv_matnr_18 TYPE char18 VALUE '000000001234567890'.
DATA: lv_matnr_10 TYPE char10.

* Prüft Länge, Datentyp, entfernt führende Nullen
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = lv_matnr_18
  IMPORTING
    output = lv_matnr_10.

WRITE: / |{ lv_matnr_10 }|.

Variante 2 (SHIFT)

DATA: lv_matnr TYPE char18 VALUE '000000001234567890'.

* Führende Nullen nach links schieben
SHIFT lv_matnr LEFT DELETING LEADING '0'.

WRITE: / |{ lv_matnr }|.

Variante 3 (String-Template)

DATA: lv_matnr TYPE string VALUE '000000001234567890'.

* Führende Nullen aus dem String entfernen
lv_matnr = |{ lv_matnr ALPHA = OUT }|.

WRITE: / |{ lv_matnr }|.

[ABAP] SELECT-OPTIONS Auswahl vorbelegen

Beispiel 1

DATA: gv_num TYPE i.
 
SELECT-OPTIONS: p_num FOR gv_num.
 
INITIALIZATION.
 
* Zahlenwerte 3 und 9
  p_num[] = VALUE #( ( sign = 'I' option = 'EQ' low = 3 )
                     ( sign = 'I' option = 'EQ' low = 9 ) ).

Beispiel 2

DATA: gv_matnr TYPE mara-matnr.
DATA: gv_werks TYPE mard-werks.
  
SELECT-OPTIONS: so_matnr FOR gv_matnr.
SELECT-OPTIONS: so_werks FOR gv_werks.

INITIALIZATION.

* MATNR von / bis
  so_matnr[] = VALUE #( ( sign = 'I' option = 'BT' low = '000000001000000000' high = '000000002000000000' ) ).
  
* Werk 0001
  so_werks[] = VALUE #( ( sign = 'I' option = 'EQ' low = '0001' ) ).

Beispiel 3

DATA: gv_werks TYPE mard-werks.
  
SELECT-OPTIONS: so_werks FOR gv_werks.

INITIALIZATION.
  
* Ausschluss Werk 0001
  so_werks[] = VALUE #( ( sign = 'E' option = 'EQ' low = '0001' ) ).