Transaktion SEGW
- Neues Projekt: ZFLIGHT_ASSOC
- Entitätstyp:
- Carrier aus DDIC Struktur “SCARR”
- Carrid (Key)
- Carrname
- Url
- Flights aus DDIC Struktur “SPFLI”
- Carrid (Key)
- Connid (Key)
- Countryfr
- Cityfrom
- Airpfrom
- Entitätsmenge:
- Serviceklassen generieren
- Service registrieren
Serviceimplementierung: GetEntity(Read)
* URL/SERVICENAME/CarrierSet('AA')
METHOD carrierset_get_entity.
io_tech_request_context->get_converted_keys( IMPORTING es_key_values = er_entity ).
IF NOT er_entity-carrid IS INITIAL.
SELECT SINGLE * FROM scarr INTO CORRESPONDING FIELDS OF @er_entity WHERE carrid = @er_entity-carrid.
ENDIF.
ENDMETHOD.
* URL/SERVICENAME/FlightsSet(Carrid='AA',Connid='64')
METHOD flightsset_get_entity.
io_tech_request_context->get_converted_keys( IMPORTING es_key_values = er_entity ).
IF NOT er_entity-carrid IS INITIAL AND NOT er_entity-connid IS INITIAL..
SELECT SINGLE * FROM spfli INTO CORRESPONDING FIELDS OF @er_entity
WHERE carrid = @er_entity-carrid
AND connid = @er_entity-connid.
IF sy-subrc <> 0.
CLEAR: er_entity.
ENDIF.
ENDIF.
ENDMETHOD.
Serviceimplementierung: GetEntitySet(Query)
* URL/SERVICENAME/CarrierSet
METHOD carrierset_get_entityset.
SELECT * FROM scarr INTO CORRESPONDING FIELDS OF TABLE @et_entityset.
ENDMETHOD.
* URL/SERVICENAME/FlightsSet
METHOD flightsset_get_entityset.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE @et_entityset.
ENDMETHOD.
Assoziation anlegen
- Rechtsklick auf “Assoziationen” -> Anlegen
- Name: CarrierToFlights
- Principal-Entität: Name “Carrier”
- Untergeordnete Entität: Name “Flights”
- Kardinalität: Carrier 1 : Flights n
- Navigationsproperty anlegen: ToFlights
- Bezug: Carrid – Carrid
Code anpassen
* URL/SERVICENAME/CarrierSet('AA')/ToFlights?$format=json
METHOD flightsset_get_entityset.
* Typen und Konstanten sind in der MPC definiert
DATA: lv_flights TYPE zcl_zflight_assoc2_mpc=>ts_flights.
DATA(lv_source_entity_type_name) = io_tech_request_context->get_source_entity_type_name( ).
CASE lv_source_entity_type_name.
* Typen und Konstanten sind in der MPC definiert
WHEN zcl_zflight_assoc2_mpc=>gc_carrier.
io_tech_request_context->get_converted_source_keys( IMPORTING es_key_values = lv_flights ).
ENDCASE.
IF NOT lv_flights IS INITIAL.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE @et_entityset WHERE carrid = @lv_flights-carrid.
ELSE.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE @et_entityset.
ENDIF.
ENDMETHOD.
Weiterführende Infos: Link