
So we can define model as a ABAP class ZODATA_MODEL_CLASS inherited from super class IWBEP/CL_MGW_ABS_MODEL.
method DEFINE.
"Declarations
Data :
lo_entity_type TYPE REF TO /iwbep/if_mgw_odata_entity_typ,
lo_property TYPE REF TO /iwbep/if_mgw_odata_property,
lo_association TYPE REF TO /iwbep/if_mgw_odata_assoc,
lo_ref_constraint type ref to /iwbep/if_mgw_odata_ref_constr,
lo_assoc_set type ref to /iwbep/if_mgw_odata_assoc_set,
lo_nav_property type ref to /iwbep/if_mgw_odata_nav_prop.
"Define Sales Order Entity
lo_entity_type = model->create_entity_type('SalesOrder').
"Define Properties
lo_property = lo_entity_type->create_property( iv_property_name = 'Id'
iv_abap_fieldname = 'SO_ID').
lo_property->set_is_key( ). "Mark property as entity key
lo_property->set_conversion_exit( 'ALPHA' ). "Specify Conversion Exit
lo_property = lo_entity_type->create_property( iv_property_name = 'BuyerId'
iv_abap_fieldname = 'BUYER_ID').
lo_property = lo_entity_type->create_property( iv_property_name = 'GrossAmount'
iv_abap_fieldname = 'GROSS_AMOUNT').
"Bind Structure
lo_entity_type->bind_structure('ZODATA_MODEL_CLASS=>TS_SALES_ORDER').
"Create Entity Set
lo_entity_type->create_entity_set('SalesOrderCollection').
"Define Sales Order Item Entity
lo_entity_type = model->create_entity_type('SalesOrderItem').
"Define Properties
lo_property = lo_entity_type->create_property( iv_property_name = 'SalesOrderId'
iv_abap_fieldname = 'SO_ID').
lo_property->set_is_key( ). " Mark property as entity key
lo_property = lo_entity_type->create_property( iv_property_name = 'ItemPosition'
iv_abap_fieldname = 'ITEM_POS').
lo_property->set_is_key( ). " Mark property as entity key
lo_property = lo_entity_type->create_property( iv_property_name = 'ProductId'
iv_abap_fieldname = 'PRODUCT_ID').
"Bind Structure
lo_entity_type->bind_structure('ZODATA_MODEL_CLASS=>TS_SALES_ORDER_ITEM').
"Create Entity Set
lo_entity_type->create_entity_set('SalesOrderItemCollection').
"Define association
lo_association = model->create_association( iv_association_name = 'SalesOrderSalesOrderItem'
iv_left_type = 'SalesOrder'
iv_right_type = 'SalesOrderItem'
iv_right_card = 'N'
iv_left_card = '1' ).
"Referencial cardianlity
lo_ref_constraint = lo_association->create_ref_constraint( ).
lo_ref_constraint->add_property( iv_principal_property = 'Id' iv_dependent_property = 'SalesOrderId' ).
"Association Set
lo_assoc_set = model->create_association_set( iv_association_set_name = 'SalesOrderSalesOrderItemAssocSet'
iv_left_entity_set_name = 'SalesOrderCollection'
iv_right_entity_set_name = 'SalesOrderItemCollection'
iv_association_name = 'SalesOrderSalesOrderItem' ).
"Navigation Property
lo_entity_type = model->get_entity_type( iv_entity_name = 'SalesOrder' ).
lo_nav_property = lo_entity_type->create_navigation_property( iv_property_name = 'SalesOrderItemCollection'
iv_association_name = 'SalesOrderSalesOrderItem' ).
endmethod.
METHOD /iwbep/if_mgw_appl_srv_runtime~get_entity.
CASE iv_entity_name.
WHEN 'SalesOrder'.
*-------------------------------------------------------------------
* Local data definitions
*-------------------------------------------------------------------
DATA :
ls_inputdata TYPE zodata_model_class=>ts_sales_order,
ls_outputdata TYPE bapi_epm_so_header,
li_return TYPE bapiret2_t.
*-------------------------------------------------------------------
* Process Gateway Request + parameters (if any)
*-------------------------------------------------------------------
* Read converted keys for entity using follwing method
* -> This method invokes conversion exit respective to key fields implicitly and converts key values to desired format
CALL METHOD io_tech_request_context->get_converted_keys
IMPORTING
es_key_values = ls_inputdata.
DATA(lv_so_id) = CONV bapi_epm_so_id( ls_inputdata-so_id ).
*-------------------------------------------------------------------
* Perform backend functionality using RFC / Z Function Module / BAPI / Method /...
*-------------------------------------------------------------------
* Read Sales Order data based on SoId
CALL FUNCTION 'BAPI_EPM_SO_GET_DETAIL'
EXPORTING
so_id = lv_so_id
IMPORTING
headerdata = ls_outputdata
TABLES
return = li_return.
*--------------- End of backend functionality ---------------------------------*
*-------------------------------------------------------------------
* Error / Message Handling
*-------------------------------------------------------------------
IF line_exists( li_return[ type = 'E' ] ).
* Raise Exception on error
ELSE.
* On Success - Send back Entity data
ls_inputdata-buyer_id = ls_outputdata-buyer_id.
ls_inputdata-gross_amount = ls_outputdata-gross_amount.
copy_data_to_ref(
EXPORTING
is_data = ls_inputdata
CHANGING
cr_data = er_entity ).
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
5 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |