Kategorien
-
Neueste Beiträge
- [SAP Gateway] Daten versenden über einen eventbasierten Aufruf einer OData-Funktion
- [ABAP] SE80: Tricks für den ABAP-Editor
- [SAP] Kurz- und Langtexte in Objekten suchen
- [SAP] Buchungskreis, Werk, Bewertungskreis, Kostenrechnungskreis, Einkaufsorganisation, Lagerort
- [ABAP] SAP-Workdir ermitteln
- [ABAP] SELECT-OPTIONS: Möglichkeiten, um Variablen zu definieren
- Bluttest erkennt Demenz bis zu 15 Jahre vor Diagnose
- Herpesviren können Alzheimer-Risiko verdoppeln
- [SAP EWM] Dokumentation zu SAP Extended Warehouse Management (SAP EWM)
- [SAP] Disposition / MRP
Schlagwort: OData
[SAP Gateway] Implementierung einer OData-Services basierend auf CDS-Views (SADL + Annotationen)
[SAP Fiori] Implementierung einer einfachen SAP-Fiori-Anwendung mit Hilfe von SAP UI5 und OData (CRUD)
[SAP] Entwicklung SAP ABAP Programming Model
Evolutionsschritte
- Classic ABAP Application Programming (ABAP)
- ABAP Programming Model for SAP Fiori (OData, SEGW, CDS, BOPF, ABAP)
- ABAP RESTful Application Programming Model (Eclipse, ABAP, CDS, Frameworks)
https://blogs.sap.com/2019/02/08/evolution-of-the-abap-programming-model/
[SAP Gateway] Aktive OData-Services mit dem Catalog-Service anzeigen
Auf jedem ABAP-System mit aktivem Gateway ist ein OData-Service, der sog. “catalog service”, aktiv. Dieser listet alle aktivierten OData-Services für den User auf. In der Transaktion SICF
muss dieser aktiviert sein (Service-Pfad: /sap/opu/odata/IWFND/catalogservice
).
https://<host>:<port>/sap/opu/odata/IWFND/catalogservice;v=2/ServiceCollection
[SAPUI5] Transaktionale App (SAP Fiori Elements Application) und OData-Service erstellen
[SAP Gateway] OData Standard Spezifikationen des OASIS Konsortiums
[ABAP] SAP Gateway File-Download über DEFINE und GET_STREAM
SE80: DDIC-Typ anlegen “ZFILESTREAM”
Feldname Name im Gateway ABAP-Typ Bemerkung ------------------------------------------------------------------------------------------------------------------ FILEKEY FileKey beliebig eindeutige Referenz (Key) zur späteren Ermittelung der Datei im Backend MIME_TYPE MimeType CHAR100 Platzhalter für MimeType der Datei VALUE Value XSTRINGVAL Platzhalter für Binärdaten
SEGW: neuer Entitätstyp zum Lesen der Datei
- Name: “FileStream”, DDIC-Typ “ZFILESTREAM” importieren
Name Schlüssel EDM-Coretyp Bezeichner ABAP-Feldname ------------------------------------------------------------------- FileKey ja Edm.String FileId FILEKEY MimeType nein Edm.String Mimetyp MIME_TYPE Value nein Edm.Binary Media Ressource VALUE
- Haken bei Medium setzen
SE80: ZCL_…_MPC_EXT~DEFINE redefinieren
METHOD define. DATA: lo_entity TYPE REF TO /iwbep/if_mgw_odata_entity_typ. DATA: lo_property TYPE REF TO /iwbep/if_mgw_odata_property. * Aufruf Basisklasse super->define( ). * Entität "FileStream" holen lo_entity = model->get_entity_type( iv_entity_name = zcl_..._mpc=>gc_filestream ). IF lo_entity IS BOUND. * Feld für MimeType (==MIME_TYPE) als ContentType setzen lo_property = lo_entity->get_property( iv_property_name = 'MimeType' ). lo_property->set_as_content_type( ). ENDIF. ENDMETHOD.
SE80: /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM redefinieren
METHOD /iwbep/if_mgw_appl_srv_runtime~get_stream. DATA: lv_file TYPE zcl_..._mpc=>ts_filestream. DATA: lv_stream TYPE ty_s_media_resource. * Welche Entität? CASE io_tech_request_context->get_entity_type_name( ). WHEN zcl_..._mpc=>gc_filestream. * Schlüssel ("FILEKEY") ermitteln io_tech_request_context->get_converted_keys( IMPORTING es_key_values = lv_file ). * gewünschte Binärdaten anhand des Schlüssels aus SAP lesen DATA: it_bin_data TYPE STANDARD TABLE OF raw255. it_bin_data = ... * Dateinamen ermitteln DATA: lv_filename TYPE skwf_filnm. lv_filename = ... * Für die Umwandlung die Dateigröße der Binärdaten berechnen DATA(lv_size) = lines( it_bin_data ). DATA: lv_line LIKE LINE OF it_bin_data. DATA(lv_length) = 0. * für Unicode-Kompatibilität IN BYTE MODE DESCRIBE FIELD lv_line LENGTH lv_length IN BYTE MODE. lv_size = lv_size * lv_length. * Binärdaten in xstring für die Rückgabe konvertieren CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' EXPORTING input_length = lv_size IMPORTING buffer = lv_stream-value TABLES binary_tab = it_bin_data EXCEPTIONS failed = 1 OTHERS = 2. IF sy-subrc = 0. * MIME-Typen der Datei ermitteln und an das Frontend übergeben DATA: lv_mimetype TYPE skwf_mime. * aus Dateinamen den MIME-Typen ermitteln CALL FUNCTION 'SKWF_MIMETYPE_OF_FILE_GET' EXPORTING filename = lv_filename IMPORTING mimetype = lv_mimetype. lv_stream-mime_type = lv_mimetype. * HTTP-Header-Infos setzen (Dateiname usw.) DATA(lv_lheader) = VALUE ihttpnvp( name = 'Content-Disposition' value = |inline; filename="{ escape( val = lv_filename format = cl_abap_format=>e_url ) }";| ). " Datei im Tab inline (Plugin) öffnen * value = |outline; filename="{ escape( val = lv_filename format = cl_abap_format=>e_url ) }";| ). " Datei zum direkten Herunterladen / Öffnen anbieten set_header( is_header = lv_lheader ). * alle Daten zum Frontend schicken me->copy_data_to_ref( EXPORTING is_data = lv_stream CHANGING cr_data = er_stream ). ENDIF. WHEN OTHERS. * andere Entitäten standardmäßig behandeln super->/iwbep/if_mgw_appl_srv_runtime~get_stream( EXPORTING iv_entity_name = iv_entity_name iv_entity_set_name = iv_entity_set_name iv_source_name = iv_source_name it_key_tab = it_key_tab it_navigation_path = it_navigation_path io_tech_request_context = io_tech_request_context IMPORTING er_stream = er_stream es_response_context = es_response_context ). ENDCASE. ENDMETHOD.
Weiterführende Infos: SAP Fiori tricks: Get rid of $value in PDF display/downloads
[OData] File Upload / Download
[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/