[OData] Übersicht zu SAP-Options

Option                 | Beschreibung                                             | Link
-----------------------+----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------
?sap-language=DE       | Sprachstrings explizit für Sprache DE aus dem DDIC holen |
?sap-client=123        | Daten für Mandant 123 abfragen                           |
?sap-statistics=true   | Performance-Statistiken im Header mitliefern             | https://blogs.sap.com/2016/01/28/understanding-sap-performance-statistics-for-sap-netweaver-gateway-service/
?sap-ds-debug=true     | Debugmode mit eigenständiger HTML-Seite und Links        | https://blogs.sap.com/2013/07/18/nw-gateway-tips-tricks/
?sap-ds-debug=download | Debug-HTML als Download                                  | https://blogs.sap.com/2013/07/18/nw-gateway-tips-tricks/

[MS Access] Felder mit Fremdschlüsselbeziehungen im Klartext als Auswahlfeld (Combobox) darstellen

  • Tabelle -> Entwurfsansicht
  • Felddatentyp wählen, für den die Combobox zur Auswahl eingeblendet werden soll
  • unten im Fenster “Feldeigenschaften” -> Reiter “Nachschlagen”
  • Datensatzherkunft …
  • Tabelle(n) einblenden und gewünschte Anzeigespalten für die Combobox auswählen + als LETZTES die Schlüsselspalte!
  • Abfrage speichern unter …
  • Abfrage schließen
  • Datensatzherkunft: gespeicherte Abfrage eintragen
  • Gebundene Spalte: Nr. der Schlüsselspalte
  • Spaltenzahl: Anz. Anzeigespalten für die Combobox
  • Spaltenbreiten: 3cm;4cm;… (Breiten für die einzelnen Anzeigespalten für die Combobox)
  • Listenbreite: Gesamtbreite (Summe) der Spalten
  • Mehrere Werte zulassen: nein (wenn jemals auf “ja”, dann nur rückgängig machbar wenn komplette Spalte gelöscht)
  • Speichern

[ABAP] OpenSQL: Abhängigkeit (CASE)

Variante 1

SELECT matnr,
       CASE meins
          WHEN 'ST' THEN 'Stück'
          WHEN 'KG' THEN 'Kg'
          ELSE 'andere Einheit'
       END AS meins_desc,
       maktx
  INTO TABLE @DATA(it_mara)
  FROM marav.

cl_demo_output=>display( it_mara ).

Variante 2

SELECT matnr,
       CASE
          WHEN meins = 'ST' THEN 'Stück'
          WHEN meins = 'KG' THEN 'Kg'
          ELSE 'andere Einheit'
       END AS meins_desc,
       maktx
  INTO TABLE @DATA(it_mara)
  FROM marav.

cl_demo_output=>display( it_mara ).

[ABAP] Datenausgabe mit cl_demo_output

Demoprogramme

* DEMO_USAGE_OUTPUT_GET
* DEMO_USAGE_OUTPUT_STATIC
* DEMO_USAGE_OUTPUT_INSTANCE
* DEMO_USAGE_OUTPUT_STREAM

Text mit Abschnitten

* Abschnitt 1
cl_demo_output=>begin_section( '1. Überschrift' ).
cl_demo_output=>begin_section( '1.1 Überschrift' ).
* Text
cl_demo_output=>write_text( 'Text 1.1' ).
cl_demo_output=>write( 'Text 1.1 non proportional' ).
cl_demo_output=>end_section( ).
cl_demo_output=>end_section( ).
* Abschnitt 2
cl_demo_output=>begin_section( '2. Überschrift' ).
cl_demo_output=>begin_section( '2.1 Überschrift' ).
* Text
cl_demo_output=>write_text( 'Text 2.1' ).
cl_demo_output=>write( 'Text 2.1 non proportional' ).
cl_demo_output=>end_section( ).
cl_demo_output=>end_section( ).
* alles anzeigen
cl_demo_output=>display( ).

Überschrift

cl_demo_output=>next_section( 'Überschrift' ).

Variablen, Strukturen, Tabellen

TYPES: BEGIN OF ty_struct,
         f1 TYPE string,
         f2 TYPE i,
       END OF ty_struct.

TYPES: ty_it_tab TYPE STANDARD TABLE OF ty_struct WITH DEFAULT KEY.

DATA(lv_struct) = VALUE ty_struct( f1 = 'Field1' f2 = 1 ).
DATA(it_tab) = VALUE ty_it_tab( ( f1 = 'T1' f2 = 1 )
                                ( f1 = 'T2' f2 = 2 )
                                ( f1 = 'T3' f2 = 3 ) ).

cl_demo_output=>write_data( value = -100         name = 'Zahl' ).
cl_demo_output=>write_data( value = 'ein String' name = 'Text' ).
cl_demo_output=>write_data( value = lv_struct    name = 'Struct' ).
cl_demo_output=>write_data( value = it_tab       name = 'Tab' ).
* alles anzeigen
cl_demo_output=>display( ).

Trennlinie

cl_demo_output=>write_text( 'Oben' ).
cl_demo_output=>line( ).
cl_demo_output=>write_text( 'Unten' ).
* alles anzeigen
cl_demo_output=>display( ).

HTML

* HTML hinzufügen
cl_demo_output=>write_html( '<b>Text bold</b>' ).
* HTML anzeigen
cl_demo_output=>display_html( '<i>Text italic</i>' ).

XML

DATA: lv_xml TYPE string.
...
cl_demo_output=>display_xml( lv_xml ).

JSON

DATA: lv_json TYPE xstring.
...
cl_demo_output=>display_json( lv_json ).

Plaintext ausgeben

cl_demo_output=>set_mode( cl_demo_output=>text_mode ).
cl_demo_output=>write_data( value = it_tab name = 'Tab' ).
cl_demo_output=>display( ).

oder

SELECT * FROM tnapr INTO TABLE @DATA(it_tnapr).
cl_demo_output=>new( 'TEXT' )->display( it_tnapr ).

HTML-Code generieren lassen

SELECT * FROM mara INTO TABLE @DATA(it_mara).
IF sy-subrc = 0.
  cl_demo_output=>write_data( it_mara ).
* HTML-Code vom Demo-Output holen
  DATA(lv_html) = cl_demo_output=>get( ).
* Daten im Inline-Browser im SAP-Fenster anzeigen
  cl_abap_browser=>show_html( EXPORTING
                                title        = 'Daten aus der Tabelle MARA'
                                html_string  = lv_html
                                container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.
ENDIF.

Links

[ABAP] Einkaufsbelege anzeigen

PARAMETERS: p_ebeln TYPE ebeln.

* ME23N / ME22N anzeigen
CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
  EXPORTING
    i_ebeln              = p_ebeln
*   i_preview            = abap_true " Druckvorschau anzeigen
*   i_edit               = abap_true " ME22N für Änderungen
  EXCEPTIONS
    not_found            = 1
    no_authority         = 2
    invalid_call         = 3
    preview_not_possible = 4
    OTHERS               = 5.

IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

[ABAP] BANF freigeben

PARAMETERS: p_banfn TYPE eban-banfn.

DATA(lv_updated) = VALUE char1( ).

* ME54N
CALL FUNCTION 'ME_RELEASE_REQUISITION'
  EXPORTING
    im_banfn     = p_banfn
  IMPORTING
    ex_updkz     = lv_updated
  EXCEPTIONS
    no_authority = 1
    OTHERS       = 2.

IF sy-subrc = 0.
  IF lv_updated = abap_true.
    WRITE: / 'Updated.'.
  ELSE.
    WRITE: / 'Not updated.'.
  ENDIF.
ELSE.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

[AMDP] Mit AMDP arbeiten

https://blogs.sap.com/2016/11/23/step-by-step-procedure-for-creation-execution-and-storing-of-abap-managed-database-procedures-in-hana/

  • Step-by-Step procedure for creation, execution and storing of ABAP Managed Database Procedures in HANA

http://www.sapyard.com/abap-on-sap-hana-part-ix-amdp-abap-managed-database-procedure/

  • ABAP Managed Database Procedure

https://blogs.sap.com/2021/10/26/abap-managed-database-procedure/

  • Tutorial zu AMDP

https://otremba.net/wiki/AMDP_(ABAP)

  • Übersicht zu AMDP

https://www.brandeis.de/blog/amdp-coding-guidelines

  • AMDP Coding Guidelines