2018 Sep 23 11:28 AM
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.
2018 Sep 23 11:43 AM
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.
2018 Sep 23 12:07 PM
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.
2018 Sep 23 12:33 PM
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/
2018 Sep 23 12:20 PM
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.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |