[ABAP] Eindeutige ID (GUID / UUID) generieren

DATA: l_uuid_x16 TYPE sysuuid_x16.
DATA: l_uuid_c22 TYPE sysuuid_c22.
DATA: l_uuid_c26 TYPE sysuuid_c26.
DATA: l_uuid_c32 TYPE sysuuid_c32.

TRY.
    " verschiedene GUIDs / UUIDs erzeugen
    l_uuid_x16 = cl_system_uuid=>create_uuid_x16_static( ).
    l_uuid_c22 = cl_system_uuid=>create_uuid_c22_static( ).
    l_uuid_c26 = cl_system_uuid=>create_uuid_c26_static( ).
    l_uuid_c32 = cl_system_uuid=>create_uuid_c32_static( ).

  CATCH cx_uuid_error INTO DATA(e_text).
    MESSAGE e_text->get_text( ) TYPE 'I'.
ENDTRY.

WRITE: / | uuid_x16: { l_uuid_x16 } |.
WRITE: / | uuid_c22: { l_uuid_c22 } |.
WRITE: / | uuid_c26: { l_uuid_c26 } |.
WRITE: / | uuid_c32: { l_uuid_c32 } |.

[ABAP] Laufzeitmessung von ABAP-Code

Variante 1

DATA(o_timer) = cl_abap_runtime=>create_hr_timer( ).
DATA(usec_start) = o_timer->get_runtime( ).

...

DATA(usec_end) = o_timer->get_runtime( ).
DATA(usec) = CONV decfloat16( usec_end - usec_start ).
DATA(sec) = usec / 1000000.

Variante 2

DATA: usec_start TYPE i.
DATA: usec_end TYPE i.
DATA: usec TYPE i.

GET RUN TIME FIELD usec_start. " Startzeitpunkt

...

GET RUN TIME FIELD usec_end. " Endzeitpunkt

usec = ( usec_end - usec_start ).

WRITE: / | { usec }µs |.

[ABAP] ExcelOle – Seitenformat einstellen

DATA: o_excel TYPE ole2_object.
DATA: o_sheet TYPE ole2_object.
DATA: o_page TYPE ole2_object.

...

* Page-Property holen
GET PROPERTY OF o_sheet 'PageSetup' = o_page.
SET PROPERTY OF o_page 'Orientation' = 2.     " xlLandscape
SET PROPERTY OF o_page 'PrintGridlines' = 1.  " Gitterlinien drucken
SET PROPERTY OF o_page 'LeftMargin' = '5.00'. " Seitenränder
SET PROPERTY OF o_page 'RightMargin' = '2.00'.
SET PROPERTY OF o_page 'TopMargin' = '2.00'.
SET PROPERTY OF o_page 'BottomMargin'= '2.00'.

* Objekt wieder freigeben
FREE OBJECT: o_page.
FREE OBJECT: o_sheet.

[ABAP] ExcelOle – Zelle formatieren

DATA: o_excel TYPE ole2_object.
DATA: o_cell TYPE ole2_object.
DATA: o_font TYPE ole2_object.

...

* Zelle ermitteln
CALL METHOD OF o_excel 'Cells' = o_cell
   EXPORTING
	 #1 = 2   " Zeile
	 #2 = 2.  " Spalte

* Font der Zelle holen
GET PROPERTY OF o_cell 'Font' = o_font.
SET PROPERTY OF o_font 'Name' = 'Courier New'. " Schriftart
SET PROPERTY OF o_font 'Bold' = 0. " Schriftstil: 0 - normal, 1 - fett
SET PROPERTY OF o_font 'Italic' = 1. " Schriftstil: 0 - normal, 1 - Italic
SET PROPERTY OF o_font 'ColorIndex' = 5. " Farbindex: 1=Schwarz, 2=weiss, 3=rot, 4=grün, 5=blau, 6=gelb
SET PROPERTY OF o_font 'Size' = 16. " Schriftgröße [px]
SET PROPERTY OF o_font 'Underline' = 2. " xlUnderlineStyleSingle

* Objekte wieder freigeben
FREE OBJECT: o_font.
FREE OBJECT: o_cell.

[ABAP] ExcelOle – Range (Bereich) definieren

DATA: o_excel TYPE ole2_object.
DATA: o_range TYPE ole2_object.
DATA: o_font TYPE ole2_object.
DATA: o_interior TYPE ole2_object.

...

* Range (Bereich) definieren
CALL METHOD OF o_excel 'Range' = o_range
  EXPORTING
	#1 = 'A2'
	#2 = 'B2'.

* Range Schrift setzen
GET PROPERTY OF o_range 'Font' = o_font.
SET PROPERTY OF o_font 'Bold' = 1.
SET PROPERTY OF o_font 'ColorIndex' = 4.
SET PROPERTY OF o_font 'Size' = 12.

CALL METHOD OF o_range 'Select' .
CALL METHOD OF o_range 'BorderAround'
  EXPORTING
	#1 = 1  " Stil
	#2 = 2. " Dicke (1..4)

* Zellhintergrund setzen
CALL METHOD OF o_range 'Interior' = o_interior.
SET PROPERTY OF o_interior 'ColorIndex' = 6. " gelb
SET PROPERTY OF o_interior 'Pattern' = 1.

* Objekte wieder freigeben
FREE OBJECT: o_interior.
FREE OBJECT: o_font.
FREE OBJECT: o_range.