Showing posts with label ODATA. Show all posts
Showing posts with label ODATA. Show all posts

Monday, March 2, 2020

OData related question in SAP ABAP.

OData related question  in SAP ABAP.


OData question below details.

1.What is OData? Explain the advantages of OData?
2.What is the transaction code for creating OData project?
3.Explain the folders in OData project?
4.Which OData version do you use?
5.What is Entity type and Entityset? What is the difference betweenthem?
6.Explain complex type?
7.Mention difference between Entity type and Complex type?
8.What is Function import? When should we opt for function import?
9.What is Association and Association set?
10.What is referential constraint? Is it mandatory to create referentialconstraints?
11.What is navigation property? What is its use?
12.What are the classes created by framework when runtime artifacts aregenerated?
13.What are MPC, MPC Extension class & DPC, DPC Extension class?
14.What is Metadata? How to download Metadata?
15.What is the default format for data in Http response body?
16.Can we query or retrieve metadata in JSON format?
17.What will happen if logic is implemented in Model provider class &Data provider class and regenerate the runtime objects?
18.What is with Mapping and without mapping for BAPI & RFC in OData?
19.What are CRUD methods?
20.What is the difference between GET_ENTITY & GET_ENTITYSET?
21.Mention different status codes you have came across in OData?
22.What are the status codes for Create, Update, Delete and Getoperations?
23.Will the data return to HTTP Response body, if ER_ENTITY ofUPDATE_ENTITY is populated with value?
24.How to make configuration for calling a service in a system?
25.List some query options in OData?
26.What are skip & top query?
27.What is the query for Function Import?
28.In which method do you implement logic for function import?
29.What are the parameters of EXECUTE_ACTION method?
30.How to pass the GUID value in the Query?

Monday, February 17, 2020

How to create ODATA Service with association in SAP ABAP.


How to create ODADA service with association in SAP ABAP.

ODATA service creation details.


Go to T-code:-  SEGW
Create new project.
Insert project name, description and package name.

 
The name of the Project: NGS_104_CAMP and the Description: Campaign Project.
After creating the project right click on data model and import DDIC structure.

 
We have uploaded two structures here which were created in se11.

First is zcampcc.

Second is zcustcc.


Repeat the same process for zcustcc.
By selecting the checkbox Create default entity set, it will automatically create the entity set.

As shown below after importing the structure entity sets zcampccset and zcustccset are created.

 
The fields in zcampcc are as shown below.

Here the field column shows the name of the components in structure and the name column indicates the name in odata.

 

The fields of zcustcc are as shown below.


After uploading the structure.

Check the project consistency and generate runtime time objects(red color ball like icon).

If It shows warnings neglect that.





Go to service maintains, select the server which you are working with:

Select the register service button.

Enter the name of the package and select next.

Your project has been registered.

 


Go to runtime an artifact which contains the data provider and model provider class.
Here ZCL_ZNGS_104_CAMP_DPC_EXT is the data provider class.

And ZCL_ZNGS_104_CAMP_MPC_EXT is the model provider class.

Right click on the data provider class and select go to Abap workbench.

 
Go to inherited methods and you will see every uploaded structure will have five in build methods in inherited methods which are: ZCAMPCCSET_CREATE_ENTITY, ZCAMPCCSET_DELETE_ENTITY, ZCAMPCCSET_GET_ENTITY, ZCAMPCCSET_GET_ENTITYSET, ZCAMPCCSET_UPDATE_ENTITY   and same would be for zcustcc.
Right click on ZCAMPCCSET_GET_ENTITYSET and click redefinition.
Now this method will be shown in redefinition folder.

 
Now copy paste the below code in each method:
Activate each method after copying the code.
·         Zcamp_get _entityset.
    METHOD ZCAMPCCSET_GET_ENTITYSET.
  
DATAIT_CAMP TYPE TABLE OF ZCAMPCC,
        WA_CAMP 
LIKE LINE OF IT_CAMP,
        WA_ENTITY 
LIKE LINE OF ET_ENTITYSET.
*Get data from ZCAMPAIGN_DEMO table
  
SELECT FROM ZCAMPCC INTO TABLE IT_CAMP.
*FILL ET_ENTITYSET
  
LOOP AT IT_CAMP INTO WA_CAMP.
    
MOVE-CORRESPONDING WA_CAMP TO WA_ENTITY.
    
APPEND WA_ENTITY TO ET_ENTITYSET.
  
ENDLOOP.
ENDMETHOD.
·         Zcamp_get_entity.
METHOD ZCAMPCCSET_GET_ENTITY.
  
DATALS_KEY_TAB LIKE LINE OF IT_KEY_TAB,"TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR,
        LV_ID 
TYPE ZCAMPCC-C_ID,
        WA_COMP 
TYPE ZCAMPCC.

*Get the key property values
  
READ TABLE IT_KEY_TAB WITH KEY NAME 'CId' INTO LS_KEY_TAB.
  LV_ID 
LS_KEY_TAB-VALUE.

*Get the single record from ZCAMPAIGN_DEMO and fill er_entity

  
SELECT SINGLE FROM ZCAMPCC INTO WA_COMP WHERE C_ID LV_ID.
  
IF SY-SUBRC 0.
    
MOVE-CORRESPONDING WA_COMP TO ER_ENTITY.
  
ENDIF.
·         Zcamp_create_entity

METHOD ZCAMPCCSET_CREATE_ENTITY.

  
DATALS_REQUEST_INPUT_DATA TYPE ZCL_ZNGS_104_CAMP_MPC=>TS_ZCAMPCC,
        WA_COMP 
TYPE ZCAMPCC.
* Read Request Data
  IO_DATA_PROVIDER
->READ_ENTRY_DATAIMPORTING ES_DATA LS_REQUEST_INPUT_DATA ).
* Fill workarea to be inserted
  
MOVE-CORRESPONDING LS_REQUEST_INPUT_DATA TO WA_COMP.
* Insert Data in table ZUSERINFO
  
INSERT ZCAMPCC FROM WA_COMP.
  
IF SY-SUBRC 0.
    ER_ENTITY 
LS_REQUEST_INPUT_DATA"Fill Exporting parameter ER_ENTITY
  
ENDIF.

·         Zcamp_update_entity

DATA:   LS_REQUEST_INPUT_DATA TYPE ZCL_ZNGS_104_CAMP_MPC=>TS_ZCAMPCC,
          LS_KEY_TAB        
LIKE LINE OF IT_KEY_TAB,
          LV_ID             
TYPE ZCAMPCC-C_ID,
          WA_COMP           
TYPE ZCAMPCC.
* Get key values
  
READ TABLE IT_KEY_TAB WITH KEY NAME 'CId' INTO LS_KEY_TAB.
  LV_ID 
LS_KEY_TAB-VALUE.
  
IF LV_ID IS NOT INITIAL.

* Read request data
    IO_DATA_PROVIDER
->READ_ENTRY_DATAIMPORTING ES_DATA LS_REQUEST_INPUT_DATA ).

* Update fields of table ZUSERINFO
    
UPDATE ZCAMPCC SET        C_NAME  LS_REQUEST_INPUT_DATA-C_NAME
                              C_TYPE    
LS_REQUEST_INPUT_DATA-C_TYPE
                              C_GRP     
LS_REQUEST_INPUT_DATA-C_GRP
                              C_TCUST  
LS_REQUEST_INPUT_DATA-C_TCUST
                              C_EXE    
'X'""LS_REQUEST_INPUT_DATA-C_EXE'
                          
WHERE C_ID  LV_ID.
    
IF SYSUBRC 0.
      ER_ENTITY LS_REQUEST_INPUT_DATA"Fill exporting parameter ER_
  
else.
    er_entity
-c_err 'Error in Update'.
    ENDIF.

·         Zcamp_delete_entity.

METHOD ZCAMPCCSET_DELETE_ENTITY.

  
DATA:  LS_KEY_TAB LIKE LINE OF IT_KEY_TAB,
        LV_ID 
TYPE ZCAMPCC-C_ID.

* Read key values
  
READ  TABLE IT_KEY_TAB INTO LS_KEY_TAB WITH KEY NAME 'CId'.
  LV_ID 
LS_KEY_TAB-VALUE.
  
IF LV_ID IS NOT INITIAL.
* Delete record from table ZUSERINFO
    
DELETE FROM ZCAMPCC WHERE C_ID LV_ID.
  
ENDIF.

ENDMETHOD.



Zcust_get_entityset.
 DATAIT_COMP TYPE TABLE OF ZCUSTCC,
        WA_COMP 
LIKE LINE OF IT_COMP,
        WA_ENTITY 
LIKE LINE OF ET_ENTITYSET.

*Get data from ZCAMPAIGN_DEMO table
  
SELECT FROM ZCUSTCC INTO TABLE IT_COMP.

*FILL ET_ENTITYSET
  
LOOP AT IT_COMP INTO WA_COMP.
    WA_ENTITY
-CUST_ID WA_COMP-CUST_ID.
    WA_ENTITY
-CUST_NAME WA_COMP-CUST_NAME.
    WA_ENTITY
-CUST_EID WA_COMP-CUST_EID.
    WA_ENTITY
-C_GRP WA_COMP-C_GRP.
    WA_ENTITY
-C_TYPE WA_COMP-C_TYPE.


    
APPEND WA_ENTITY TO ET_ENTITYSET.
  
ENDLOOP.
Zcust_get_entity.
DATALS_KEY_TAB LIKE LINE OF IT_KEY_TAB,"TYPE /IWBEP/T_MGW_NAME_VALUE_PAIR,
        LV_ID 
TYPE ZCUSTCC-CUST_ID,
        WA_COMP 
TYPE ZCUSTCC.

*Get the key property values
  
READ TABLE IT_KEY_TAB WITH KEY NAME 'CustId' INTO LS_KEY_TAB.
  LV_ID 
LS_KEY_TAB-VALUE.

*Get the single record from ZCAMPAIGN_DEMO and fill er_entity

  
SELECT SINGLE FROM ZCUSTCC INTO WA_COMP WHERE CUST_ID LV_ID.
  
IF SY-SUBRC 0.
    MOVE-CORRESPONDING WA_COMP TO ER_ENTITY.
  ENDIF.
Zcust_create_entity.
  DATALS_REQUEST_INPUT_DATA TYPE ZCL_ZNGS_104_CAMP_MPC=>TS_ZCUSTCC,
       WA_COMP 
TYPE ZCUSTCC.

* Read Request Data
  IO_DATA_PROVIDER
->READ_ENTRY_DATAIMPORTING ES_DATA LS_REQUEST_INPUT_DATA ).

* Fill workarea to be inserted
  
MOVE-CORRESPONDING LS_REQUEST_INPUT_DATA TO WA_COMP.
* Insert Data in table ZUSERINFO
  
INSERT ZCUSTCC FROM WA_COMP.
  
IF SY-SUBRC 0.
    ER_ENTITY 
LS_REQUEST_INPUT_DATA"Fill Exporting parameter ER_ENTITY
  
ENDIF.
Zcust_update_entity.
DATA:  LS_REQUEST_INPUT_DATA TYPE ZCL_ZNGS_104_CAMP_MPC=>TS_ZCUSTCC ,
         LS_KEY_TAB            
LIKE LINE OF IT_KEY_TAB,
         LV_ID             
TYPE ZCUSTCC-CUST_ID,
         WA_COMP           
TYPE ZCUSTCC.
* Get key values
  
READ TABLE IT_KEY_TAB WITH KEY NAME 'CustId' INTO LS_KEY_TAB.
  LV_ID 
LS_KEY_TAB-VALUE.
  
IF LV_ID IS NOT INITIAL.

* Read request data
    IO_DATA_PROVIDER
->READ_ENTRY_DATAIMPORTING ES_DATA LS_REQUEST_INPUT_DATA ).

* Update fields of table ZUSERINFO
    
UPDATE ZCUSTCC SET           CUST_ID LS_REQUEST_INPUT_DATA-CUST_ID
                                 CUST_NAME  
LS_REQUEST_INPUT_DATA-CUST_NAME
                                 CUST_EID  
LS_REQUEST_INPUT_DATA-CUST_EID
                                 C_TYPE    
LS_REQUEST_INPUT_DATA-C_TYPE
                                 C_GRP     
LS_REQUEST_INPUT_DATA-C_GRP
                          
WHERE  CUST_ID  LV_ID.
    
IF SY-SUBRC 0.
      ER_ENTITY 
LS_REQUEST_INPUT_DATA"Fill exporting parameter ER_ENTITY
    
ENDIF.
  
ENDIF.
Zcust_delete_entity.
 DATA:  LS_KEY_TAB LIKE LINE OF IT_KEY_TAB,
      LV_ID 
TYPE ZCUSTCC-CUST_ID.

* Read key values
  
READ  TABLE IT_KEY_TAB INTO LS_KEY_TAB WITH KEY NAME 'CustId'.
  LV_ID 
LS_KEY_TAB-VALUE.
  
IF LV_ID IS NOT INITIAL.
* Delete record from table ZUSERINFO
    
DELETE FROM ZCUSTCC WHERE CUST_ID LV_ID.
  
ENDIF.

For Creating association :

Go to association folder and right click and click create.

Fill the following details as shown below.

 
If your structure has same key fields then select the principal key and dependent proprety as same field.
Click next.

 
Select Finish.

 

To run this project go to gateway client.

 



The Below URI will call Zcampccset_get_entityset method. 
/sap/opu/odata/SAP/ZNGS_104_CAMP_SRV/zcampccSet
/sap/opu/odata/SAP/ZNGS_104_CAMP_SRV/zcustccSet
_________________________________________________________________________________

/sap/opu/odata/SAP/ZNGS_104_CAMP_SRV/zcampccSet?$expand=camptocustrel
The above uri is for association.
The Below image shows the final tree of the project ZNgs_104_camp.