Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Odata Association without common key fields

gopalmishra673
Explorer
0 Likes
4,203

Hi, I am creating a association in Odata using my two custom tables say ZSW_EKKO and ZSW_LFA1 but there is no common key in these tables.

ZSW_EKKO:-MANDT, EBELN, BUKRS, BSART ,LIFNR. (EBELN is key)

ZSW_LFA1:-MANDT, LIFNR ,NAME1, NAME2, ORT01, STRAS. (LIFNR is key)

I am writing below code in my get entity method of dependent entityset. It is not working for EBELN value. Can any one suggest how to solve it.

method VENDOR_DETAILSSE_GET_ENTITY.
DATA LS_KEY TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR.
TYPES: BEGIN OF TY_S_TAB,
EBELN TYPE ZSW_EKKO-EBELN,
LIFNR TYPE ZSW_LFA1-LIFNR,
NAME1 TYPE ZSW_LFA1-NAME1,
NAME2 TYPE ZSW_LFA1-NAME2,
ORT01 TYPE ZSW_LFA1-ORT01,
STRAS TYPE ZSW_LFA1-STRAS,
END OF TY_S_TAB.
DATA LS_ENTITY TYPE TY_S_TAB.
DATA LT_ENTITY TYPE TABLE OF TY_S_TAB.
READ TABLE IT_KEY_TAB INTO LS_KEY INDEX 1.
IF LS_KEY-NAME = 'Lifnr'.

SELECT SINGLE * FROM ZSW_LFA1 INTO CORRESPONDING FIELDS OF ER_ENTITY WHERE LIFNR EQ LS_KEY-VALUE.
ENDIF.
IF LS_KEY-NAME = 'Ebeln'.
SELECT ZSW_EKKO~EBELN
ZSW_LFA1~LIFNR
ZSW_LFA1~NAME1
ZSW_LFA1~NAME2
ZSW_LFA1~ORT01
ZSW_LFA1~STRAS
FROM ZSW_EKKO INNER JOIN ZSW_LFA1
ON ZSW_EKKO~LIFNR EQ ZSW_LFA1~LIFNR
INTO TABLE LT_ENTITY.

READ TABLE LT_ENTITY INTO LS_ENTITY INDEX 1.
MOVE-CORRESPONDING LS_ENTITY TO ER_ENTITY.

ENDIF.

Hi, I am creating a association in Odata using my two custom tables say ZSW_EKKO and ZSW_LFA1 but there is no common key in these tables.

ZSW_EKKO:-MANDT, EBELN, BUKRS, BSART ,LIFNR. (EBELN is key)

ZSW_LFA1:-MANDT, LIFNR ,NAME1, NAME2, ORT01, STRAS. (LIFNR is key)

I am writing below code in my get entity method of dependent entityset. It is not working for EBELN value. Can any one suggest how to solve it.

method VENDOR_DETAILSSE_GET_ENTITY.
DATA LS_KEY TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR.
TYPES: BEGIN OF TY_S_TAB,
EBELN TYPE ZSW_EKKO-EBELN,
LIFNR TYPE ZSW_LFA1-LIFNR,
NAME1 TYPE ZSW_LFA1-NAME1,
NAME2 TYPE ZSW_LFA1-NAME2,
ORT01 TYPE ZSW_LFA1-ORT01,
STRAS TYPE ZSW_LFA1-STRAS,
END OF TY_S_TAB.
DATA LS_ENTITY TYPE TY_S_TAB.
DATA LT_ENTITY TYPE TABLE OF TY_S_TAB.
READ TABLE IT_KEY_TAB INTO LS_KEY INDEX 1.
IF LS_KEY-NAME = 'Lifnr'.

SELECT SINGLE * FROM ZSW_LFA1 INTO CORRESPONDING FIELDS OF ER_ENTITY WHERE LIFNR EQ LS_KEY-VALUE.
ENDIF.
IF LS_KEY-NAME = 'Ebeln'.
SELECT ZSW_EKKO~EBELN
ZSW_LFA1~LIFNR
ZSW_LFA1~NAME1
ZSW_LFA1~NAME2
ZSW_LFA1~ORT01
ZSW_LFA1~STRAS
FROM ZSW_EKKO INNER JOIN ZSW_LFA1
ON ZSW_EKKO~LIFNR EQ ZSW_LFA1~LIFNR
INTO TABLE LT_ENTITY.

READ TABLE LT_ENTITY INTO LS_ENTITY INDEX 1.
MOVE-CORRESPONDING LS_ENTITY TO ER_ENTITY.

ENDIF.

4 REPLIES 4
Read only

0 Likes
2,339

Hi Gopal,

Please can you redifine method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITYSET and write the same code there and check whether it is working for EBELN.

Read only

0 Likes
2,339

Hi Urvashi,

Can you please clear my one doubt. Is it possible to create association between two odata structures which do not have common key fields?

If it is not possible than I am doing wrong approach. Please guide me.

Read only

0 Likes
2,339

Hi Gopal ,

I don't know your exact requirement but there may not be any referential constraint (no common key among all these) but still the association holds true.

You need to create association and navigation properties. Then you need to implement the create_deep_entity method in order to receive your payload and create a sales order. You can check this link on https://blogs.sap.com/2014/04/27/step-by-step-development-guide-for-createdeepentity-operation/

Read only

gopalmishra673
Explorer
0 Likes
2,339

Hi,

I used below code and now I am getting output thanks for your response.

method VENDOR_DETAILSSE_GET_ENTITY.
DATA: LS_KEY TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR,
lt_ekko TYPE TABLE OF zsw_ekko,
ls_ekko TYPE zsw_ekko,
lt_lfa1 TYPE TABLE OF zsw_lfa1,
ls_lfa1 TYPE zsw_lfa1.
TYPES: BEGIN OF TY_S_TAB,
EBELN TYPE ZSW_EKKO-EBELN,
LIFNR TYPE ZSW_LFA1-LIFNR,
NAME1 TYPE ZSW_LFA1-NAME1,
NAME2 TYPE ZSW_LFA1-NAME2,
ORT01 TYPE ZSW_LFA1-ORT01,
STRAS TYPE ZSW_LFA1-STRAS,
END OF TY_S_TAB.
DATA LS_ENTITY TYPE TY_S_TAB.
DATA LT_ENTITY TYPE TABLE OF TY_S_TAB.
READ TABLE IT_KEY_TAB INTO LS_KEY INDEX 1.
IF LS_KEY-NAME = 'Lifnr'.

SELECT SINGLE * FROM ZSW_LFA1 INTO CORRESPONDING FIELDS OF ER_ENTITY WHERE LIFNR EQ LS_KEY-VALUE.
ENDIF.
IF LS_KEY-NAME = 'Ebeln'.
SELECT SINGLE * FROM zsw_ekko INTO CORRESPONDING FIELDS OF ls_ekko WHERE ebeln eq ls_key-value.
SELECT SINGLE * FROM ZSW_LFA1 INTO CORRESPONDING FIELDS OF ER_ENTITY WHERE lifnr eq ls_ekko-lifnr.
ENDIF.

endmethod.