Application Development 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: 

Regarding PO reports

Former Member
0 Kudos

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.

2 REPLIES 2

Former Member
0 Kudos

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

Former Member
0 Kudos

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