class ZCL_ZTEST_ODATA_MPC_EXT definition
public
inheriting from ZCL_ZTEST_ODATA_MPC
create public .
public section.
types:
BEGIN OF TS_DEEP_ENTITY,
FIELD1 TYPE STRING,
FIELD2 TYPE STRING,
FIELD3 TYPE STRING,
ItemSet TYPE STANDARD TABLE OF TS_ITEM WITH DEFAULT KEY, "var name should be same as of navigation property name
NAVRESULT TYPE STANDARD TABLE OF TS_RESULT WITH DEFAULT KEY, "var name should be same as of navigation property name
END OF TS_DEEP_ENTITY .
methods DEFINE
redefinition .
DATA:
lo_annotation TYPE REF TO /iwbep/if_mgw_odata_annotation,
lo_entity_type TYPE REF TO /iwbep/if_mgw_odata_entity_typ,
lo_complex_type TYPE REF TO /iwbep/if_mgw_odata_cmplx_type,
lo_property TYPE REF TO /iwbep/if_mgw_odata_property,
lo_entity_set TYPE REF TO /iwbep/if_mgw_odata_entity_set.
super->define( ).
lo_entity_type = model->get_entity_type( iv_entity_name = 'Header' ).
lo_entity_type->bind_structure( iv_structure_name = 'ZCL_ZTEST_ODATA_MPC_EXT=>TS_DEEP_ENTITY' ).
method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_DEEP_ENTITY.
DATA: IR_DEEP_ENTITY TYPE ZCL_ZTEST_ODATA_MPC_EXT=>TS_DEEP_ENTITY.
CASE iv_entity_set_name.
*-------------------------------------------------------------------------*
* When EntitySet 'HeaderSet' is been invoked via service Url
*-------------------------------------------------------------------------*
WHEN 'HeaderSet'.
CALL METHOD me->custome_create_deep_entity
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_EXPAND = IO_EXPAND
IO_TECH_REQUEST_CONTEXT = io_tech_request_context
IO_DATA_PROVIDER = io_data_provider
IMPORTING
ER_DEEP_ENTITY = IR_DEEP_ENTITY
.
copy_data_to_ref(
EXPORTING
is_data = IR_DEEP_ENTITY
CHANGING
cr_data = er_deep_entity
).
ENDCASE.
endmethod.
'PARAMETER LIST:
IV_ENTITY_NAME Importing Type STRING
IV_ENTITY_SET_NAME Importing Type STRING
IV_SOURCE_NAME Importing Type STRING
IT_KEY_TAB Importing Type /IWBEP/T_MGW_NAME_VALUE_PAIR
IT_NAVIGATION_PATH Importing Type /IWBEP/T_MGW_NAVIGATION_PATH
IO_EXPAND Importing Type Ref To /IWBEP/IF_MGW_ODATA_EXPAND
IO_TECH_REQUEST_CONTEXT Importing Type Ref To /IWBEP/IF_MGW_REQ_ENTITY_C
IO_DATA_PROVIDER Importing Type Ref To /IWBEP/IF_MGW_ENTRY_PROVIDER
ER_DEEP_ENTITY Exporting Type ZCL_ZTEST_ODATA_MPC_EXT=>TS_DEEP_ENTITY
/IWBEP/CX_MGW_BUSI_EXCEPTION
/IWBEP/CX_MGW_TECH_EXCEPTION
method CUSTOME_CREATE_DEEP_ENTITY.
Types:
begin of TYP_HEADER,
FLD_1 type C length 4,
FLD_2 type C length 4,
FLD_3 type C length 10,
end of TYP_HEADER .
Types:
begin of TYP_ITEM,
IFLD_1 type C length 4,
IFLD_2 type C length 4,
IFLD_3 type C length 10,
end of TYP_ITEM .
Types:
begin of TYP_RESULT,
MSG_1 type STRING,
MSG_2 type STRING,
end of TYP_RESULT .
DATA: IR_DEEP_ENTITY TYPE ZCL_ZTEST_ODATA_MPC_EXT=>TS_DEEP_ENTITY,
IT_RFC_HEADER TYPE STANDARD TABLE OF TYP_HEADER,
WA_RFC_HEADER TYPE TYP_HEADER,
IT_RFC_ITEM TYPE TABLE OF TYP_ITEM,
WA_RFC_ITEM TYPE TYP_ITEM,
IT_RFC_RESULT TYPE STANDARD TABLE OF TYP_RESULT,
WA_RFC_RESULT TYPE TYP_RESULT,
WA_RESULTSET TYPE ZCL_ZTEST_ODATA_MPC_EXT=>TS_RESULT,
WA_ITEM TYPE ZCL_ZTEST_ODATA_MPC_EXT=>TS_ITEM.
FIELD-SYMBOLS: <WA_ITEM> TYPE ZCL_ZTEST_ODATA_MPC_EXT=>TS_ITEM.
FIELD-SYMBOLS: <WA_RESULT> TYPE ZCL_ZTEST_ODATA_MPC_EXT=>TS_RESULT.
*Transform INPUT REQUEST FROM ODATA-SERVICE into the internal structure
io_data_provider->read_entry_data(
IMPORTING
es_data = IR_DEEP_ENTITY ).
* extract Header details from Entity 'Header'
WA_RFC_HEADER-FLD_1 = IR_DEEP_ENTITY-FIELD1.
WA_RFC_HEADER-FLD_2 = IR_DEEP_ENTITY-FIELD2.
WA_RFC_HEADER-FLD_3 = IR_DEEP_ENTITY-FIELD3.
APPEND WA_RFC_HEADER TO IT_RFC_HEADER.
Clear WA_RFC_HEADER.
* extract Item details from Entity 'Item' (tabulabr input fields)
LOOP AT IR_DEEP_ENTITY-ItemSet ASSIGNING <WA_ITEM>.
WA_RFC_ITEM-IFLD_1 = <WA_ITEM>-IFLD1.
WA_RFC_ITEM-IFLD_2 = <WA_ITEM>-IFLD2.
WA_RFC_ITEM-IFLD_3 = <WA_ITEM>-IFLD3.
APPEND WA_RFC_ITEM TO IT_RFC_ITEM.
CLEAR WA_RFC_ITEM.
ENDLOOP.
* Calling SAP R3's RFC via RFCDestination
Call FUNCTION 'ZTEST_RFC_FIORI' DESTINATION '<RfcDestinationName of BackendSystem>'
TABLES
TBL_HEADER = IT_RFC_HEADER
TBL_ITEM = IT_RFC_ITEM
TBL_RESULT = IT_RFC_RESULT.
*EXPORTING OUTPUT TO oData EntitySet 'ResultSet'
LOOP AT IT_RFC_RESULT INTO WA_RFC_RESULT.
"Return output into Entity 'RESULT' via 'NavigationProperty=NAVRESULT'
WA_RESULTSET-MSG1 = WA_RFC_RESULT-MSG_1.
WA_RESULTSET-MSG2 = WA_RFC_RESULT-MSG_2.
APPEND WA_RESULTSET TO ER_DEEP_ENTITY-NAVRESULT.
CLEAR WA_RESULTSET.
ENDLOOP.
COMMIT WORK.
endmethod.
<?xml version="1.0" encoding="UTF-8"?>
<atom:entry
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<atom:content type="application/xml">
<m:properties>
<d:Field1>hvl1</d:Field1>
<d:Field2>hvl2</d:Field2>
<d:Field3>hvl3</d:Field3>
</m:properties>
</atom:content>
<atom:link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ItemSet"
type="application/atom+xml;type=feed"
title="ZTEST_ODATA_SRV.HEADER_ITEM">
<m:inline>
<atom:feed>
<atom:entry>
<atom:content type="application/xml">
<m:properties>
<!--<d:Row>1</d:Row>-->
<d:IFLD1>rv11</d:IFLD1>
<d:IFLD2>rv12</d:IFLD2>
<d:IFLD3>rv13</d:IFLD3>
</m:properties>
</atom:content>
</atom:entry>
<atom:entry>
<atom:content type="application/xml">
<m:properties>
<!--<d:Row>2</d:Row>-->
<d:IFLD1>rv21</d:IFLD1>
<d:IFLD2>rv22</d:IFLD2>
<d:IFLD3>rv23</d:IFLD3>
</m:properties>
</atom:content>
</atom:entry>
</atom:feed>
</m:inline>
</atom:link>
<atom:link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/NAVRESULT"
type="application/atom+xml;type=feed"
title="ZTEST_ODATA_SRV.HEADER_RESULT">
<m:inline>
<atom:feed>
<atom:entry>
<atom:content type="application/xml">
<m:properties>
<!--<d:Row>1</d:Row>-->
<d:MSG1></d:MSG1>
<d:MSG2></d:MSG2>
</m:properties>
</atom:content>
</atom:entry>
</atom:feed>
</m:inline>
</atom:link>
</atom:entry>
{
"Field1": "hvl1",
"Field2": "hvl2",
"Field3": "hvl3",
"ItemSet": [
{
"IFLD1": "rv11",
"IFLD2": "rv12",
"IFLD3": "rv13"
},
{
"IFLD1": "rv21",
"IFLD2": "rv22",
"IFLD3": "rv23"
}
],
"NAVRESULT": [
{
"MSG1": "",
"MSG2": ""
}
]
}
URL: /sap/opu/odata/sap/ZTEST_ODATA_SRV/HeaderSet
Method: POST
In above Request-XML payload, below details been used:
[1] For Request (input of Two Entity 'Header' and 'Item')
Associations: "ZTEST_ODATA_SRV.HEADER_ITEM"
Navigation: "http://schemas.microsoft.com/ado/2007/08/dataservices/related/ItemSet"
[2] For Response (output in Enity 'Result')
Associations: "ZTEST_ODATA_SRV.HEADER_ITEM"
Navigation: "http://schemas.microsoft.com/ado/2007/08/dataservices/related/NAVRESULT"
<?xml version="1.0" encoding="utf-8"?>
<entry xml:base="http://fiori:8000/sap/opu/odata/sap/ZTEST_ODATA_SRV/"
xmlns="http://www.w3.org/2005/Atom"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
<id>http://fiori:8000/sap/opu/odata/sap/ZTEST_ODATA_SRV/HeaderSet('')</id>
<title type="text">HeaderSet('')</title>
<updated>2018-03-29T11:04:19Z</updated>
<category term="ZTEST_ODATA_SRV.Header" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="HeaderSet('')" rel="self" title="Header"/>
<link href="HeaderSet('')/ItemSet" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ItemSet" type="application/atom+xml;type=feed" title="ItemSet">
<m:inline/>
</link>
<link href="HeaderSet('')/NAVRESULT" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/NAVRESULT" type="application/atom+xml;type=feed" title="NAVRESULT">
<m:inline>
<feed xml:base="http://fiori:8000/sap/opu/odata/sap/ZTEST_ODATA_SRV/">
<id>http://fiori:8000/sap/opu/odata/sap/ZTEST_ODATA_SRV/HeaderSet('')/NAVRESULT</id>
<title type="text">ResultSet</title>
<updated>2018-03-29T11:04:19Z</updated>
<author>
<name/>
</author>
<link href="HeaderSet('')/NAVRESULT" rel="self" title="ResultSet"/>
<entry>
<id>http://fiori:8000/sap/opu/odata/sap/ZTEST_ODATA_SRV/ResultSet('hvl1')</id>
<title type="text">ResultSet('hvl1')</title>
<updated>2018-03-29T11:04:19Z</updated>
<category term="ZTEST_ODATA_SRV.Result" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="ResultSet('hvl1')" rel="self" title="Result"/>
<content type="application/xml">
<m:properties>
<d:MSG1>hvl1</d:MSG1>
<d:MSG2>Data Receievd</d:MSG2>
</m:properties>
</content>
</entry>
</feed>
</m:inline>
</link>
<content type="application/xml">
<m:properties>
<d:Field1/>
<d:Field2/>
<d:Field3/>
</m:properties>
</content>
</entry>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
11 | |
7 | |
5 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |