6.
CREATE_UPDATE_DELETE_GET_FUNCTIONIMPORT_ODATA
Scenario 2
READ SINGLE RECORDS
method ZFIORIPRACSET_GET_ENTITY.
DATA: ls_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_PRODUCTNAME type ZFIORIPRAC-PRODUCTNAME,
ls_headerdata TYPE ZFIORIPRAC.
DATA: lr_mr_api TYPE REF TO if_mr_api.
1
LOOP AT it_key_tab INTO ls_key_tab.
IF ls_key_tab-name EQ 'PRODUCTNAME'.
ls_PRODUCTNAME = ls_key_tab-value.
ENDIF.
ENDLOOP.
SELECT SINGLE PRODUCTNAME QUANTITY EXTENDEDPRICE SHIPPERNAME SHIPPERDATE STA
TUS FROM ZFIORIPRAC INTO CORRESPONDING FIELDS OF LS_HEADERDATA WHERE PRODUCTNA
ME = ls_PRODUCTNAME.
er_entity-PRODUCTNAME = ls_headerdata-PRODUCTNAME.
er_entity-QUANTITY = ls_headerdata-QUANTITY.
er_entity-EXTENDEDPRICE = ls_headerdata-EXTENDEDPRICE.
er_entity-SHIPPERNAME = ls_headerdata-SHIPPERNAME.
er_entity-SHIPPERDATE = ls_headerdata-SHIPPERDATE.
er_entity-STATUS = ls_headerdata-STATUS.
endmethod.
READ MULTIPLE RECORD
method ZFIORIPRACSET_GET_ENTITYSET.
data:it_ZFIORIPRAC type TABLE OF ZFIORIPRAC,
wa_ZFIORIPRAC type ZFIORIPRAC.
data:wa_ent like LINE OF ET_ENTITYSET.
select * from ZFIORIPRAC into TABLE it_ZFIORIPRAC .
loop at it_ZFIORIPRAC into wa_ZFIORIPRAC.
wa_ent-PRODUCTNAME = wa_ZFIORIPRAC-PRODUCTNAME.
wa_ent-QUANTITY = wa_ZFIORIPRAC-QUANTITY.
wa_ent-EXTENDEDPRICE = wa_ZFIORIPRAC-EXTENDEDPRICE.
wa_ent-SHIPPERNAME = wa_ZFIORIPRAC-SHIPPERNAME.
wa_ent-SHIPPERDATE = wa_ZFIORIPRAC-SHIPPERDATE.
wa_ent-STATUS = wa_ZFIORIPRAC-STATUS.
2
append wa_ent to ET_ENTITYSET.
ENDLOOP.
endmethod.
CREATE
method ZFIORIPRACSET_CREATE_ENTITY.
types:BEGIN OF it_PRODUCTNAME,
PRODUCTNAME type ZFIORIPRAC-PRODUCTNAME,
END OF it_PRODUCTNAME.
DATA:WA_PRODUCTNAME TYPE it_PRODUCTNAME,
WA_PRODUCTNAME2 TYPE it_PRODUCTNAME,
ZPROD TYPE STRING,
ZPROD2 TYPE STRING,
IT_ZPRODUCTDETAILS TYPE TABLE OF IT_PRODUCTNAME,
ZPRODUCT TYPE N LENGTH 3,
IT_PRODUCTNAME TYPE it_PRODUCTNAME,
lv_PRODUCTNAME type ZFIORIPRAC-PRODUCTNAME.
DATA: ls_headerdata TYPE ZFIORIPRAC ,
lt_item type TABLE OF ZFIORIPRAC,
lv_productid type ZFIORIPRAC-PRODUCTNAME,
ls_product LIKE er_entity.
3
io_data_provider->read_entry_data( IMPORTING es_data = ls_product ).
select single PRODUCTNAME from ZFIORIPRAC into lv_PRODUCTNAME WHERE PRODUCTNAM
E = ls_product-PRODUCTNAME.
if sy-subrc ne 0.
ls_headerdata-PRODUCTNAME = ls_product-PRODUCTNAME.
ls_headerdata-QUANTITY = ls_product-QUANTITY.
ls_headerdata-EXTENDEDPRICE = ls_product-EXTENDEDPRICE.
ls_headerdata-SHIPPERNAME = ls_product-SHIPPERNAME.
ls_headerdata-SHIPPERDATE = ls_product-SHIPPERDATE.
ls_headerdata-STATUS = ls_product-STATUS.
INSERT ZFIORIPRAC from ls_headerdata.
IF SY-SUBRC NE 0.
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
textid = /iwbep/cx_mgw_busi_exception=>business_error
message_container = mo_context->get_message_container( ).
ENDIF.
er_entity = ls_product.
endif.
endmethod.
A)Enter the below url and select GET and execute
4
B)Once the values come on right side and click on ‘Use as Request’ button
C)And you will be seeing the value on the left side
NOTE:
Please remove the URI from
/sap/opu/odata/sap/Z_PRAC_FIORI_SRV/ZFIORIPRACSet('MILK') and make it as
/sap/opu/odata/sap/Z_PRAC_FIORI_SRV/ZFIORIPRACSet
5
D)Now Select the POST and click on Execute button
E)you will be seeing the below status
6
DELETE
method ZFIORIPRACSET_DELETE_ENTITY.
DATA: ls_key_tab TYPE /iwbep/s_mgw_name_value_pair,
ls_PRODUCTNAME type ZFIORIPRAC-PRODUCTNAME,
lt_return TYPE STANDARD TABLE OF bapiret2,
ls_headerdata TYPE ZFIORIPRAC.
LOOP AT it_key_tab INTO ls_key_tab.
IF ls_key_tab-name EQ 'PRODUCTNAME'.
ls_PRODUCTNAME = ls_key_tab-value.
ENDIF.
ENDLOOP.
SELECT SINGLE * FROM ZFIORIPRAC INTO CORRESPONDING FIELDS OF LS_HEADERDATA
WHERE PRODUCTNAME = ls_PRODUCTNAME.
if sy-subrc ne 0.
mo_context->get_message_container( )->add_messages_from_bapi(
it_bapi_messages = lt_return
iv_determine_leading_msg = /iwbep/if_message_container=>gcs_leading_msg_
search_option-first ).
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
textid = /iwbep/cx_mgw_busi_exception=>business_error
message_container = mo_context->get_message_container( ).
else.
delete ZFIORIPRAC from ls_headerdata.
ENDIF.
endmethod.
7
1)Select the Get Method and execute
2)Select the DELETE method and execute
3)output as below
8
UPDATE
method ZFIORIPRACSET_UPDATE_ENTITY.
types:BEGIN OF it_PRODUCTNAME,
PRODUCTNAME type ZFIORIPRAC-PRODUCTNAME,
END OF it_PRODUCTNAME.
DATA:WA_PRODUCTNAME TYPE it_PRODUCTNAME,
WA_PRODUCTNAME2 TYPE it_PRODUCTNAME,
ZPROD TYPE STRING,
ZPROD2 TYPE STRING,
IT_ZPRODUCTDETAILS TYPE TABLE OF IT_PRODUCTNAME,
ZPRODUCT TYPE N LENGTH 3,
IT_PRODUCTNAME TYPE it_PRODUCTNAME,
lv_PRODUCTNAME type ZFIORIPRAC-PRODUCTNAME.
DATA: ls_headerdata TYPE ZFIORIPRAC ,
lt_item type TABLE OF ZFIORIPRAC,
lv_productid type ZFIORIPRAC-PRODUCTNAME,
ls_product LIKE er_entity.
io_data_provider->read_entry_data( IMPORTING es_data = ls_product ).
select single * from ZFIORIPRAC into CORRESPONDING FIELDS OF ls_headerdata
WHERE PRODUCTNAME = ls_product-PRODUCTNAME.
if sy-subrc eq 0.
ls_headerdata-PRODUCTNAME = ls_product-PRODUCTNAME.
ls_headerdata-QUANTITY = ls_product-QUANTITY.
ls_headerdata-EXTENDEDPRICE = ls_product-EXTENDEDPRICE.
ls_headerdata-SHIPPERNAME = ls_product-SHIPPERNAME.
ls_headerdata-SHIPPERDATE = ls_product-SHIPPERDATE.
9
ls_headerdata-STATUS = ls_product-STATUS.
update ZFIORIPRAC from ls_headerdata.
er_entity = ls_product.
else.
RAISE EXCEPTION TYPE /IWBEP/CX_MGW_BUSI_EXCEPTION
EXPORTING
TEXTID =
/IWBEP/CX_MGW_BUSI_EXCEPTION=>BUSINESS_ERROR_UNLIMITED
MESSAGE_UNLIMITED = 'Record Does Not Exist'.
ENDIF.
endmethod.
A)First as per the below screen shot get the data
B)click on Use as Request button
10
c)Remove the &format=json
D)Select the method PUT and change the data and click on execute
11
E)output as expected as below
FUNCTION IMPORT
)Expand Data Model->Create->Function Import
2) Enter the Name and Press Enter
12
3)Please find the below screen shot
4) Create a Function Import Parameter as per the below screen shot
Save and Generate it
5)Expand Runtime Artifacts-> ZCL_Z_PRAC_FIORI_DPC_EXT->RIghtClick->Go to ABAP Workbench
6)Click on Change and select the Method ‘/IWBEP/IF_MGW_APPL_SRV_RUNTIME~EXECUTE_ACTION’
click on Redefine Method button
13
7)
Past the Code
method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~EXECUTE_ACTION.
DATA:LDF_PRODUCTNAME TYPE ZFIORIPRAC-PRODUCTNAME,
LDF_QUANTITY TYPE ZFIORIPRAC-QUANTITY,
LDF_EXTENDEDPRICE TYPE ZFIORIPRAC-EXTENDEDPRICE,
LDF_SHIPPERNAME TYPE ZFIORIPRAC-SHIPPERNAME,
LDF_SHIPPERDATE TYPE ZFIORIPRAC-SHIPPERDATE,
LDF_STATUS TYPE ZFIORIPRAC-STATUS,
ZSTATUS TYPE ZFIORIPRAC-STATUS.
DATA: LS_PARAMETER TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR,
LS_ENTITY TYPE ZFIORIPRAC,
IT_ZFIORIPRAC TYPE TABLE OF ZFIORIPRAC,
LT_ENTITYSET TYPE TABLE OF ZFIORIPRAC.
IF IV_ACTION_NAME = 'ZACCOUNTINGCLERK'. " Check what action is being
requested
IF IT_PARAMETER IS NOT INITIAL.
CLEAR:LS_PARAMETER.
* Read Function import parameter value
READ TABLE IT_PARAMETER INTO LS_PARAMETER WITH KEY NAME = 'STATUS'.
IF SY-SUBRC = 0.
ZSTATUS = LS_PARAMETER-VALUE.
ENDIF.
.
IF ZSTATUS IS NOT INITIAL.
14
SELECT SINGLE PRODUCTNAME QUANTITY EXTENDEDPRICE SHIPPERNAME
SHIPPERDATE STATUS FROM ZFIORIPRAC INTO
( LDF_PRODUCTNAME, LDF_QUANTITY, LDF_EXTENDEDPRICE, LDF_SHIPPERNAME,
LDF_SHIPPERDATE, LDF_STATUS ) WHERE STATUS = ZSTATUS.
IF SY-SUBRC EQ 0.
LS_ENTITY-PRODUCTNAME = LDF_PRODUCTNAME.
LS_ENTITY-QUANTITY = LDF_PRODUCTNAME.
LS_ENTITY-EXTENDEDPRICE = LDF_EXTENDEDPRICE.
LS_ENTITY-SHIPPERNAME = LDF_SHIPPERNAME.
LS_ENTITY-SHIPPERDATE = LDF_SHIPPERDATE.
LS_ENTITY-STATUS = LDF_STATUS.
COPY_DATA_TO_REF( EXPORTING IS_DATA = LS_ENTITY
CHANGING CR_DATA = ER_DATA ).
ENDIF.
ENDIF.
ENDIF.
ENDIF.
endmethod.
Save and Activate
8) Before Execute the below url and please try to execute the tcode:
/IWFND/CACHE_CLEANUP
9)Past the url and Execute
/sap/opu/odata/sap/Z_PRAC_FIORI_SRV/ZACCOUNTINGCLERK?STATUS='A'
15
16
17