07-15-2008 7:19 PM
Hi Guru's
I have written a report which display output.and the output fields are 1-Plant, 2-Purchase oragnization , 3- Purchase Order and 4-Purchase item.
Plz check this program where i can mistake to write this program..
TABLES : EKKO,
EKPO.
DATA: BEGIN OF IT_EKKO OCCURS 1,
EBELN LIKE EKKO-EBELN,
EKORG LIKE EKKO-EKORG,
BEDAT LIKE EKKO-BEDAT,
END OF IT_EKKO.
DATA : BEGIN OF IT_EKPO OCCURS 1,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
ELIKZ LIKE EKPO-ELIKZ,
WERKS LIKE EKPO-WERKS,
MENGE LIKE EKPO-MENGE,
END OF IT_EKPO.
DATA : BEGIN OF IT_FINAL OCCURS 1,
EBELN LIKE EKKO-EBELN,
EKORG LIKE EKKO-EKORG,
BEDAT LIKE EKKO-BEDAT,
WERKS LIKE EKPO-WERKS,
END OF IT_FINAL.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS : S_WERKS FOR EKPO-WERKS,
S_EKORG FOR EKKO-EKORG,
S_BEDAT FOR EKKO-BEDAT.
SELECTION-SCREEN : END OF BLOCK B1.
START-OF-SELECTION.
SELECT EBELN EKORG BEDAT FROM EKKO INTO TABLE IT_EKKO
WHERE EKORG IN S_EKORG AND
BEDAT IN S_BEDAT.
IF NOT IT_EKKO[] IS INITIAL.
SELECT EBELN EBELP ELIKZ WERKS MENGE FROM EKPO INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
ENDIF.
LOOP AT IT_EKPO.
READ TABLE IT_EKKO WITH KEY EBELN = IT_EKPO-EBELN.
IF SY-SUBRC = 0.
IT_FINAL-EBELN = IT_EKKO-EBELN.
IT_FINAL-EKORG = IT_EKKO-EKORG.
IT_FINAL-BEDAT = IT_EKKO-BEDAT.
ENDIF.
MOVE-CORRESPONDING IT_EKPO TO IT_FINAL
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDLOOP.
LOOP AT IT_FINAL.
WRITE : / IT_FINAL-WERKS,
IT_FINAL-EKORG,
IT_FINAL-EBELN,
IT_FINAL-EBELP.
ENDLOOP.
THANKS
GOLU.
07-15-2008 7:23 PM
Hi,
There is no EBELP field declared in the structure of IT_FINAL. check that.
Hope this would resolve your issue.
Any other revert back.
Regards
Narin Nandivada
07-15-2008 7:26 PM
The program is all correct except to minor errors.
I have changed accordingly.
However I would suggest to use Inner Join for both the tables and write one select querry ans also can avoid the read statement.
TABLES : ekpo, ekko.
DATA: BEGIN OF it_ekko OCCURS 1,
ebeln LIKE ekko-ebeln,
ekorg LIKE ekko-ekorg,
bedat LIKE ekko-bedat,
END OF it_ekko.
DATA : BEGIN OF it_ekpo OCCURS 1,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
elikz LIKE ekpo-elikz,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
END OF it_ekpo.
DATA : BEGIN OF it_final OCCURS 1,
ebeln LIKE ekko-ebeln,
ekorg LIKE ekko-ekorg,
bedat LIKE ekko-bedat,
werks LIKE ekpo-werks,
END OF it_final.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS : s_werks FOR ekpo-werks,
s_ekorg FOR ekko-ekorg,
s_bedat FOR ekko-bedat.
SELECTION-SCREEN : END OF BLOCK b1.
START-OF-SELECTION.
SELECT ebeln ekorg bedat FROM ekko INTO TABLE it_ekko
WHERE ekorg IN s_ekorg AND
bedat IN s_bedat.
IF NOT it_ekko[] IS INITIAL.
SELECT ebeln ebelp elikz werks menge FROM ekpo INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln.
ENDIF.
LOOP AT it_ekpo.
READ TABLE it_ekko WITH KEY ebeln = it_ekpo-ebeln.
IF sy-subrc = 0.
it_final-ebeln = it_ekko-ebeln.
it_final-ekorg = it_ekko-ekorg.
it_final-bedat = it_ekko-bedat.
ENDIF.
MOVE-CORRESPONDING it_ekpo TO it_final. "Changed
APPEND it_final.
CLEAR it_final.
ENDLOOP.
LOOP AT it_final.
WRITE : / it_final-werks,
it_final-ekorg,
it_final-ebeln.
* it_final-ebelp. "Changes
ENDLOOP.
Hope I answered you.
Shreekant