‎2007 Mar 16 3:12 PM
hello experts,
here I am retrieving the data for the po header and item details. here I wrote the select statements as below...
<b>here is the selection screen</b>
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-b01.
SELECT-OPTIONS: p_lifnr FOR ekko-lifnr,
p_matnr FOR ekpo-matnr,
p_ebeln FOR ekko-ebeln,
p_ekgrp FOR ekko-ekgrp,
p_aedat FOR ekko-aedat,
p_eindt FOR eket-eindt,
p_ernam FOR ekko-ernam.
PARAMETERS: blind AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK blc1.
<b>for header details...</b>
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekkolifnr ekpomatnr eket~eindt INTO corresponding fields of TABLE it_ekko
FROM ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln
INNER JOIN eket ON ekkoebeln = eketebeln
WHERE ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt
<b>for item details</b>
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding fields of TABLE it_ekko FROM
ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln
FOR ALL entries IN it_ekko WHERE
ekpo~ebeln = it_ekko-ebeln
where ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
I think the above select statement is wrong.. like first of all i retrieve all the header records into it_ekko now for all entries in that int.table i have to retrieve the item details based upon the selected options in the selection scree.....
so with this also I am getting the data... but when i give the value in the last field of selection screen P_ernam. It is not working...
can any one help to modify my code in correct way...
Thanks a lot for your anticipation..
SIRI
‎2007 Mar 16 7:09 PM
Hi,
Check this new code..
TYPE-POOLS slis .
TABLES: ekko,
ekpo,
eket,
mara,
mard,
t001l,
makt.
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-b01.
SELECT-OPTIONS: p_lifnr FOR ekko-lifnr,
p_matnr FOR ekpo-matnr,
p_ebeln FOR ekko-ebeln,
p_ekgrp FOR ekko-ekgrp,
p_aedat FOR ekko-aedat,
p_eindt FOR eket-eindt,
p_ernam FOR ekko-ernam.
PARAMETERS: blind AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK blc1.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko.
TYPES: BEGIN OF t_ekko_itm,
ebeln TYPE ekko-ebeln,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko_itm.
*types: begin of i_ekko_hdr ,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
end of i_ekko_hdr.
*
*DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF I_EKKO_HDR INITIAL SIZE 0.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE,
wa_ekko TYPE t_ekko.
DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE.
DATA: IT_EKKO_ITM TYPE STANDARD TABLE OF T_EKKO_ITM WITH HEADER LINE.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
gd_repid = sy-repid.
Data declaration for EVENT and PRINT PARAMETER.
DATA: gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv.
data declaration for sorting.
DATA : it_sortcat TYPE slis_sortinfo_alv OCCURS 1,
wa_sort LIKE LINE OF it_sortcat.
DATA : i_list_comments TYPE slis_t_listheader.
*DATA int_fcat TYPE slis_t_fieldcat_alv.
DATA:ls_int_fcat TYPE slis_fieldcat_alv.
*data: rs_selfield type slis_selfield.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_sortcat.
PERFORM build_events.
PERFORM top-of-page.
PERFORM display_alv_report.
END-OF-SELECTION.
*&----
*& Form build_fieldcatalog
*&----
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'PO NUMBER'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EBELN'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'PO DATE'.
fieldcatalog-col_pos = 1.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'AEDAT'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKGRP'.
fieldcatalog-seltext_m = 'PUR GRP/BUYER'.
fieldcatalog-col_pos = 2.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKGRP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKORG'.
fieldcatalog-seltext_m = 'PUR ORG.'.
fieldcatalog-col_pos = 3.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKORG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LIFNR'.
fieldcatalog-seltext_m = 'VENDOR NO'.
fieldcatalog-col_pos = 4.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'LIFNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO LINE'.
fieldcatalog-col_pos = 5.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'EBELP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'ORD QTY'.
fieldcatalog-col_pos = 6.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'MENGE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'UNIT'.
fieldcatalog-col_pos = 7.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MEINS'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'MATERIAL'.
fieldcatalog-col_pos = 8.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MATNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'TXZ01'.
fieldcatalog-seltext_m = 'DESCRIPTION'.
fieldcatalog-col_pos = 9.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'TXZ01'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'IDNLF'.
fieldcatalog-seltext_m = 'VEND MAT'.
fieldcatalog-col_pos = 10.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'IDNLF'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGPBE'.
fieldcatalog-seltext_m = 'ST.LOC SHELF BIN'.
fieldcatalog-col_pos = 11.
fieldcatalog-outputlen = 6.
fieldcatalog-ref_tabname = 'MARD'.
fieldcatalog-ref_fieldname = 'LGPBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGOBE'.
fieldcatalog-seltext_m = 'ST.LOC DESCRIPTION'.
fieldcatalog-col_pos = 12.
fieldcatalog-ref_tabname = 'T001L'.
fieldcatalog-ref_fieldname = 'LGOBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
IF blind = ' '. " if the check box is not checked.
fieldcatalog-fieldname = 'MENGE1'.
fieldcatalog-seltext_m = 'QTY TO RECEIVE'.
fieldcatalog-col_pos = 13.
fieldcatalog-ref_tabname = 'EKES'.
fieldcatalog-ref_fieldname = 'MENGE'.
fieldcatalog-rollname = 'MENGE_D'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WEMNG'.
fieldcatalog-seltext_m = 'QTY RECEIVED'.
fieldcatalog-col_pos = 14 .
fieldcatalog-decimals_out = 0.
fieldcatalog-no_zero = 'X'.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'WEMNG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDIF.
LOOP AT fieldcatalog INTO ls_int_fcat.
ls_int_fcat-col_pos = syst-tabix.
MODIFY fieldcatalog FROM ls_int_fcat INDEX syst-tabix.
ENDLOOP.
LOOP AT fieldcatalog INTO ls_int_fcat.
CHECK ls_int_fcat-fieldname EQ 'EBELN'
OR ls_int_fcat-fieldname EQ 'LIFNR'.
ls_int_fcat-hotspot = 'X'.
MODIFY fieldcatalog FROM ls_int_fcat TRANSPORTING hotspot.
ENDLOOP.
ENDFORM. " build_fieldcatalog
*&----
*& Form data_retrieval
*&----
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
DATA: V_TABIX TYPE SYTABIX.
*SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
*ekpomatnr eketeindt INTO corresponding fields of TABLE it_ekko
FROM ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln
INNER JOIN eket ON ekkoebeln = eketebeln
WHERE ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt
*SELECT * INTO corresponding fields of TABLE it_ekko
FROM ekko UP TO 20 ROWS where lifnr in p_lifnr
and matnr in p_matnr
and ebeln in p_ebeln
and ekgrp in p_ekgrp
and aedat in p_aedat
and ernam in p_ernam.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE IT_EKKO_HDR
FROM ekko
WHERE lifnr IN p_lifnr
AND ebeln IN p_ebeln
AND ekgrp IN p_ekgrp
AND aedat IN p_aedat
AND ernam IN p_ernam.
.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf
*ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding
fields of TABLE it_ekko FROM
ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
*
FOR ALL entries IN it_ekko WHERE
ekpo~ebeln = it_ekko-ebeln
where ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
SELECT ekpo~ebeln
ekpo~ebelp
ekpo~menge
ekpo~meins
ekpo~matnr
mard~lgort
ekpo~idnlf
ekpo~txz01
mard~lgpbe
t001l~lgobe
ekes~menge
eket~wemng INTO TABLE it_ekko_itm FROM
ekpo
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
FOR ALL entries IN it_ekko_hdr
WHERE
ekpo~ebeln = it_ekko_hdr-ebeln
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
LOOP AT IT_EKKO_itm.
MOVE-CORRESPONDING IT_EKKO_ITM TO IT_EKKO.
READ TABLE IT_EKKO_HDR WITH KEY EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
IT_EKKO-aedat = IT_EKKO_HDR-AEDAT.
IT_EKKO-ekgrp = IT_EKKO_HDR-EKGRP.
IT_EKKO-ekorg = IT_EKKO_HDR-EKORG.
IT_EKKO-lifnr = IT_EKKO_HDR-LIFNR.
ENDIF.
APPEND IT_EKKO.
CLEAR: IT_EKKO.
ENDLOOP.
LOOP AT it_ekko INTO wa_ekko.
CLEAR wa_ekko-wemng.
MODIFY it_ekko FROM wa_ekko INDEX sy-tabix.
ENDLOOP.
ENDFORM. " data_retrieval
*&----
*& Form display_alv_report
*&----
FORM display_alv_report.
DATA:user_command TYPE slis_formname,
set_pf_status TYPE slis_formname.
set_pf_status = 'ZSTANDARD_FULLSCREEN'.
user_command = 'ALV_USER_COMMAND'.
DATA: gt_events TYPE slis_t_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
is_layout = gd_layout
i_callback_user_command = 'USER_COMMAND'
it_events = gt_events
it_fieldcat = fieldcatalog[]
it_sort = it_sortcat
i_save = 'A'
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&----
*& Form top-of-page
*&----
FORM top-of-page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
Title
wa_header-typ = 'H'.
wa_header-info = 'STOCK PO RECEIVER REPORT'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info."todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
IT_LIST_COMMENTARY = SD_HEADING.
i_logo = 'GANESH_LOGO'.
ENDFORM. " top-of-page
----
FORM user_command *
----
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
case r_ucomm.
when '&IC1'.
IF rs_selfield-fieldname = 'EBELN'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
when 'ULHAS'.
IF rs_selfield-fieldname = 'LIFNR'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-lifnr.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'IT_EKKO-LIFNR'.
if rs_selfield-fieldname = 'LIFNR'.
SET PARAMETER ID 'LIF' FIELD rs_selfield-value.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
endcase.
ENDFORM. "user_command
&----
*& Form build_events
&----
FORM build_events.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'TOP-OF-PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'USER_COMMAND' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " build_events
----
FORM END_OF_PAGE *
----
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
WRITE: sy-uline(50).
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_page
----
FORM END_OF_LIST *
----
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_list
&----
*& Form build_sortcat
&----
FORM build_sortcat.
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
APPEND wa_sort TO it_sortcat.
wa_sort-spos = 2.
wa_sort-fieldname = 'EBELP'.
APPEND wa_sort TO it_sortcat.
ENDFORM. " build_sortcat
Thanks,
Naren
‎2007 Mar 16 3:31 PM
Hi,
1) Which select is failing the first one or the second select??
2) Also The FOR ALL ENTRIES code is commented..Is it a typo??
Thanks,
Naren
‎2007 Mar 16 3:39 PM
ACTUALLY I AM GETTING THE DATA WITH THESE SELECT STATEMENTS NAREN..
but problem is the with the last select statement is p_ernam if i give one user name then i am not getting the data created by that user.
For all entries.. actually i have to retrieve the item data based upon the values in the it_ekko header data so i used that but if i use that with out where condition my selection screen fields r not working.. so i commented those lines...
can any one help me to solve my problem or to correct my code or to modify my code...
‎2007 Mar 16 3:49 PM
Hi,
Why do you have two SELECTs one for ekko & ekpo and other for ekko, ekpo & other tables..You can directly select from all the tables using join..
For EKES inner join I have added another AND condition..Marked in bold..
Try this..
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding fields of TABLE it_ekko FROM
ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln <b>AND ekpoebelp = ekesebelp</b>
where ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
Thanks,
Naren
‎2007 Mar 16 4:01 PM
Naren actual logic should be like...
First of all i have to get all the PO numbers based upon the selection screen values
after that for every single PO there would be different multiple line items rite.. I have to get all those items in the output based upon the selection made that y i put 2 select statements..
actually i have to use for all entries but I am not getting the idea how to apply that...
‎2007 Mar 16 4:04 PM
Any how its working fine for me...
but My main issue is with the last field in the selection screen that is the field for the PO created by
if i give some name it is not retrieving the data based upon the user name given in that selection screen where to modify my select statement...
‎2007 Mar 16 4:08 PM
HI
Try like this
SELECT ebeln
aedat
ekgrp
ekorg
lifnr
INTO TABLE it_ekko
FROM ekko
WHERE lifnr IN p_lifnr
AND ebeln IN p_ebeln
AND ekgrp IN p_ekgrp
AND aedat IN p_aedat
AND ernam IN p_ernam
if not it_ekko[] is initial.
SELECT ebeln
ebelp
menge
meins
matnr
idnlf
txz01
from ekpo
into table it_ekpo
for all entries in it_ekko
where ebeln = it_ekko-ebeln.
and matnr in p_matnr.
if not it_ekpo[] is initial.
SELECT matnr
waers
lgort
lgpbe
from mard
into table it_mard
for all entries in it_ekpo
where matnr = it_ekpo-matnr.
endif.
if not it_ekpo[] is initial.
SELECT lgobe
from t001l
into table it_t001l
for all entries in it_ekpo
where werks = it_ekpo-werks.
endif.
if not it_ekpo[] is initial.
SELECT ebeln
menge
from ekes
into table it_ekes
for all entries in it_ekpo
where ebeln = it_ekpo-ebeln.
endif.
if not it_ekpo[] is initial.
SELECT ebeln
ebelp
wemng
from eket
into table it_eket
for all entries in it_ekpo
where ebeln = it_ekpo-ebeln
and ebelp = it_ekpo-ebelp
and eindt in p_eindt.
endif.
endif.
Donot use <b>INTO CORRESPONDING FIELDS OF and JOINS</b> Instead use for all entries as i have written in the code.
Hope this will solve your problem.
Regards
Haritha.
‎2007 Mar 16 4:09 PM
Hi,
Okay..Try this..
<b>for header details...</b>
DATA: IT_EKKO_HDR like it_ekko occurs 0 with header line.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE IT_EKKO_HDR
FROM ekko
WHERE lifnr IN p_lifnr
AND ebeln IN p_ebeln
AND ekgrp IN p_ekgrp
AND aedat IN p_aedat
AND ernam IN p_ernam.
<b>for item details</b>
SELECT ekpoebeln ekpoposnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding fields of TABLE it_ekko FROM
ekpo
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln
FOR ALL entries IN it_ekko_hdr
WHERE
ekpo~ebeln = it_ekko_hdr-ebeln
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
Merge the two tables.
DATA: V_TABIX TYPE SYTABIX.
LOOP AT IT_EKKO.
V_TABIX = SY-TABIX.
READ TABLE IT_EKKO_HDR WITH KEY EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING IT_EKKO_HDR TO IT_EKKO.
MODIFY IT_EKKO INDEX V_TABIX.
ENDIF.
ENDLOOP.
Thanks,
Naren
‎2007 Mar 16 4:29 PM
Naren i am getting this error..
When using "WITH HEADER LINE", the line type cannot be a table type. a
table type.
here i am giving my data declarations...
YPE-POOLS slis .
TABLES: ekko,
ekpo,
eket,
mara,
mard,
t001l,
makt.
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-b01.
SELECT-OPTIONS: p_lifnr FOR ekko-lifnr,
p_matnr FOR ekpo-matnr,
p_ebeln FOR ekko-ebeln,
p_ekgrp FOR ekko-ekgrp,
p_aedat FOR ekko-aedat,
p_eindt FOR eket-eindt,
p_ernam FOR ekko-ernam.
PARAMETERS: blind AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK blc1.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
DATA: IT_EKKO_HDR like it_ekko occurs 0 with header line.
can u check it out once plz....
‎2007 Mar 16 4:35 PM
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
<b>DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE</b>
‎2007 Mar 16 4:32 PM
Hi,
Changes marked in bold..
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
<b>DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE.</b>
Thanks,
Naren
‎2007 Mar 16 4:39 PM
Naren its not retrieving the item details any more
here I am posting my total code can u check it once plz...
REPORT zpo_receiver1.
TYPE-POOLS slis .
TABLES: ekko,
ekpo,
eket,
mara,
mard,
t001l,
makt.
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-b01.
SELECT-OPTIONS: p_lifnr FOR ekko-lifnr,
p_matnr FOR ekpo-matnr,
p_ebeln FOR ekko-ebeln,
p_ekgrp FOR ekko-ekgrp,
p_aedat FOR ekko-aedat,
p_eindt FOR eket-eindt,
p_ernam FOR ekko-ernam.
PARAMETERS: blind AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK blc1.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko.
*types: begin of i_ekko_hdr ,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
end of i_ekko_hdr.
*
*DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF I_EKKO_HDR INITIAL SIZE 0.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE,
wa_ekko TYPE t_ekko.
DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid VALUE sy-repid.
Data declaration for EVENT and PRINT PARAMETER.
DATA: gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv.
data declaration for sorting.
DATA : it_sortcat TYPE slis_sortinfo_alv OCCURS 1,
wa_sort LIKE LINE OF it_sortcat.
DATA : i_list_comments TYPE slis_t_listheader.
*DATA int_fcat TYPE slis_t_fieldcat_alv.
DATA:ls_int_fcat TYPE slis_fieldcat_alv.
*data: rs_selfield type slis_selfield.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_sortcat.
PERFORM build_events.
PERFORM top-of-page.
PERFORM display_alv_report.
END-OF-SELECTION.
*&----
*& Form build_fieldcatalog
*&----
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'PO NUMBER'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EBELN'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'PO DATE'.
fieldcatalog-col_pos = 1.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'AEDAT'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKGRP'.
fieldcatalog-seltext_m = 'PUR GRP/BUYER'.
fieldcatalog-col_pos = 2.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKGRP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKORG'.
fieldcatalog-seltext_m = 'PUR ORG.'.
fieldcatalog-col_pos = 3.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKORG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LIFNR'.
fieldcatalog-seltext_m = 'VENDOR NO'.
fieldcatalog-col_pos = 4.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'LIFNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO LINE'.
fieldcatalog-col_pos = 5.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'EBELP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'ORD QTY'.
fieldcatalog-col_pos = 6.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'MENGE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'UNIT'.
fieldcatalog-col_pos = 7.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MEINS'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'MATERIAL'.
fieldcatalog-col_pos = 8.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MATNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'TXZ01'.
fieldcatalog-seltext_m = 'DESCRIPTION'.
fieldcatalog-col_pos = 9.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'TXZ01'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'IDNLF'.
fieldcatalog-seltext_m = 'VEND MAT'.
fieldcatalog-col_pos = 10.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'IDNLF'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGPBE'.
fieldcatalog-seltext_m = 'ST.LOC SHELF BIN'.
fieldcatalog-col_pos = 11.
fieldcatalog-outputlen = 6.
fieldcatalog-ref_tabname = 'MARD'.
fieldcatalog-ref_fieldname = 'LGPBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGOBE'.
fieldcatalog-seltext_m = 'ST.LOC DESCRIPTION'.
fieldcatalog-col_pos = 12.
fieldcatalog-ref_tabname = 'T001L'.
fieldcatalog-ref_fieldname = 'LGOBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
IF blind = ' '. " if the check box is not checked.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'QTY TO RECEIVE'.
fieldcatalog-col_pos = 13.
fieldcatalog-ref_tabname = 'EKES'.
fieldcatalog-ref_fieldname = 'MENGE1'.
fieldcatalog-rollname = 'MENGE_D'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WEMNG'.
fieldcatalog-seltext_m = 'QTY RECEIVED'.
fieldcatalog-col_pos = 14 .
fieldcatalog-decimals_out = 0.
fieldcatalog-no_zero = 'X'.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'WEMNG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDIF.
LOOP AT fieldcatalog INTO ls_int_fcat.
ls_int_fcat-col_pos = syst-tabix.
MODIFY fieldcatalog FROM ls_int_fcat INDEX syst-tabix.
ENDLOOP.
LOOP AT fieldcatalog INTO ls_int_fcat.
CHECK ls_int_fcat-fieldname EQ 'EBELN'
OR ls_int_fcat-fieldname EQ 'LIFNR'.
ls_int_fcat-hotspot = 'X'.
MODIFY fieldcatalog FROM ls_int_fcat TRANSPORTING hotspot.
ENDLOOP.
ENDFORM. " build_fieldcatalog
*&----
*& Form data_retrieval
*&----
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
DATA: V_TABIX TYPE SYTABIX.
*SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekkolifnr ekpomatnr eket~eindt INTO corresponding fields of TABLE it_ekko
FROM ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln
INNER JOIN eket ON ekkoebeln = eketebeln
WHERE ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt
*SELECT * INTO corresponding fields of TABLE it_ekko
FROM ekko UP TO 20 ROWS where lifnr in p_lifnr
and matnr in p_matnr
and ebeln in p_ebeln
and ekgrp in p_ekgrp
and aedat in p_aedat
and ernam in p_ernam.
SELECT ekko~ebeln ekko~aedat ekko~ekgrp ekko~ekorg ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE IT_EKKO_HDR
FROM ekko
WHERE lifnr IN p_lifnr
AND ebeln IN p_ebeln
AND ekgrp IN p_ekgrp
AND aedat IN p_aedat
AND ernam IN p_ernam.
.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding fields of TABLE it_ekko FROM
ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
*
FOR ALL entries IN it_ekko WHERE
ekpo~ebeln = it_ekko-ebeln
where ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
SELECT ekpo~ebeln
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding fields of TABLE it_ekko FROM
ekpo
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln
FOR ALL entries IN it_ekko_hdr
WHERE
ekpo~ebeln = it_ekko_hdr-ebeln
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
LOOP AT IT_EKKO.
V_TABIX = SY-TABIX.
READ TABLE IT_EKKO_HDR WITH KEY EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING IT_EKKO_HDR TO IT_EKKO.
MODIFY IT_EKKO INDEX V_TABIX.
ENDIF.
ENDLOOP.
LOOP AT it_ekko INTO wa_ekko.
CLEAR wa_ekko-wemng.
MODIFY it_ekko FROM wa_ekko INDEX sy-tabix.
ENDLOOP.
ENDFORM. " data_retrieval
*&----
*& Form display_alv_report
*&----
FORM display_alv_report.
DATA:user_command TYPE slis_formname,
set_pf_status TYPE slis_formname.
set_pf_status = 'ZSTANDARD_FULLSCREEN'.
user_command = 'ALV_USER_COMMAND'.
DATA: gt_events TYPE slis_t_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
is_layout = gd_layout
i_callback_user_command = 'USER_COMMAND'
it_events = gt_events
it_fieldcat = fieldcatalog[]
it_sort = it_sortcat
i_save = 'A'
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&----
*& Form top-of-page
*&----
FORM top-of-page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
Title
wa_header-typ = 'H'.
wa_header-info = 'STOCK PO RECEIVER REPORT'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info."todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
IT_LIST_COMMENTARY = SD_HEADING.
i_logo = 'GANESH_LOGO'.
ENDFORM. " top-of-page
----
FORM user_command *
----
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
case r_ucomm.
when '&IC1'.
IF rs_selfield-fieldname = 'EBELN'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
when 'ULHAS'.
IF rs_selfield-fieldname = 'LIFNR'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-lifnr.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'IT_EKKO-LIFNR'.
if rs_selfield-fieldname = 'LIFNR'.
SET PARAMETER ID 'LIF' FIELD rs_selfield-value.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
endcase.
ENDFORM. "user_command
&----
*& Form build_events
&----
FORM build_events.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'TOP-OF-PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'USER_COMMAND' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " build_events
----
FORM END_OF_PAGE *
----
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
WRITE: sy-uline(50).
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_page
----
FORM END_OF_LIST *
----
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_list
&----
*& Form build_sortcat
&----
FORM build_sortcat.
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
APPEND wa_sort TO it_sortcat.
wa_sort-spos = 2.
wa_sort-fieldname = 'EBELP'.
APPEND wa_sort TO it_sortcat.
ENDFORM. " build_sortcat
Plz help me its bit urgent..
‎2007 Mar 16 4:45 PM
Naren some problem with the loop statement after select statement i think...
when i comment those lines i am getting the line items but not all those existing in the data base but only some line items in the random order even though i didn't give any value in the selection screen.
‎2007 Mar 16 4:49 PM
Hi,
Check the modified code...It is working for me...Just copy and paste the code..
TYPE-POOLS slis .
TABLES: ekko,
ekpo,
eket,
mara,
mard,
t001l,
makt.
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-b01.
SELECT-OPTIONS: p_lifnr FOR ekko-lifnr,
p_matnr FOR ekpo-matnr,
p_ebeln FOR ekko-ebeln,
p_ekgrp FOR ekko-ekgrp,
p_aedat FOR ekko-aedat,
p_eindt FOR eket-eindt,
p_ernam FOR ekko-ernam.
PARAMETERS: blind AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK blc1.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko.
*types: begin of i_ekko_hdr ,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
end of i_ekko_hdr.
*
*DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF I_EKKO_HDR INITIAL SIZE 0.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE,
wa_ekko TYPE t_ekko.
DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
gd_repid = sy-repid.
Data declaration for EVENT and PRINT PARAMETER.
DATA: gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv.
data declaration for sorting.
DATA : it_sortcat TYPE slis_sortinfo_alv OCCURS 1,
wa_sort LIKE LINE OF it_sortcat.
DATA : i_list_comments TYPE slis_t_listheader.
*DATA int_fcat TYPE slis_t_fieldcat_alv.
DATA:ls_int_fcat TYPE slis_fieldcat_alv.
*data: rs_selfield type slis_selfield.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_sortcat.
PERFORM build_events.
PERFORM top-of-page.
PERFORM display_alv_report.
END-OF-SELECTION.
*&----
*& Form build_fieldcatalog
*&----
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'PO NUMBER'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EBELN'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'PO DATE'.
fieldcatalog-col_pos = 1.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'AEDAT'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKGRP'.
fieldcatalog-seltext_m = 'PUR GRP/BUYER'.
fieldcatalog-col_pos = 2.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKGRP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKORG'.
fieldcatalog-seltext_m = 'PUR ORG.'.
fieldcatalog-col_pos = 3.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKORG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LIFNR'.
fieldcatalog-seltext_m = 'VENDOR NO'.
fieldcatalog-col_pos = 4.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'LIFNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO LINE'.
fieldcatalog-col_pos = 5.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'EBELP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'ORD QTY'.
fieldcatalog-col_pos = 6.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'MENGE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'UNIT'.
fieldcatalog-col_pos = 7.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MEINS'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'MATERIAL'.
fieldcatalog-col_pos = 8.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MATNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'TXZ01'.
fieldcatalog-seltext_m = 'DESCRIPTION'.
fieldcatalog-col_pos = 9.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'TXZ01'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'IDNLF'.
fieldcatalog-seltext_m = 'VEND MAT'.
fieldcatalog-col_pos = 10.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'IDNLF'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGPBE'.
fieldcatalog-seltext_m = 'ST.LOC SHELF BIN'.
fieldcatalog-col_pos = 11.
fieldcatalog-outputlen = 6.
fieldcatalog-ref_tabname = 'MARD'.
fieldcatalog-ref_fieldname = 'LGPBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGOBE'.
fieldcatalog-seltext_m = 'ST.LOC DESCRIPTION'.
fieldcatalog-col_pos = 12.
fieldcatalog-ref_tabname = 'T001L'.
fieldcatalog-ref_fieldname = 'LGOBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
IF blind = ' '. " if the check box is not checked.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'QTY TO RECEIVE'.
fieldcatalog-col_pos = 13.
fieldcatalog-ref_tabname = 'EKES'.
fieldcatalog-ref_fieldname = 'MENGE1'.
fieldcatalog-rollname = 'MENGE_D'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WEMNG'.
fieldcatalog-seltext_m = 'QTY RECEIVED'.
fieldcatalog-col_pos = 14 .
fieldcatalog-decimals_out = 0.
fieldcatalog-no_zero = 'X'.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'WEMNG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDIF.
LOOP AT fieldcatalog INTO ls_int_fcat.
ls_int_fcat-col_pos = syst-tabix.
MODIFY fieldcatalog FROM ls_int_fcat INDEX syst-tabix.
ENDLOOP.
LOOP AT fieldcatalog INTO ls_int_fcat.
CHECK ls_int_fcat-fieldname EQ 'EBELN'
OR ls_int_fcat-fieldname EQ 'LIFNR'.
ls_int_fcat-hotspot = 'X'.
MODIFY fieldcatalog FROM ls_int_fcat TRANSPORTING hotspot.
ENDLOOP.
ENDFORM. " build_fieldcatalog
*&----
*& Form data_retrieval
*&----
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
DATA: V_TABIX TYPE SYTABIX.
*SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
*ekpomatnr eketeindt INTO corresponding fields of TABLE it_ekko
FROM ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln
INNER JOIN eket ON ekkoebeln = eketebeln
WHERE ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt
*SELECT * INTO corresponding fields of TABLE it_ekko
FROM ekko UP TO 20 ROWS where lifnr in p_lifnr
and matnr in p_matnr
and ebeln in p_ebeln
and ekgrp in p_ekgrp
and aedat in p_aedat
and ernam in p_ernam.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE IT_EKKO_HDR
FROM ekko
WHERE lifnr IN p_lifnr
AND ebeln IN p_ebeln
AND ekgrp IN p_ekgrp
AND aedat IN p_aedat
AND ernam IN p_ernam.
.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf
*ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding
fields of TABLE it_ekko FROM
ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
*
FOR ALL entries IN it_ekko WHERE
ekpo~ebeln = it_ekko-ebeln
where ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
IF NOT IT_EKKO_HDR[] IS INITIAL.
SELECT ekpo~ebeln
ekpo~ebelp
ekpo~menge
ekpo~meins
ekpo~matnr
mard~lgort
ekpo~idnlf
ekpo~txz01
mard~lgpbe
t001l~lgobe
ekes~menge
eket~wemng INTO corresponding fields
of TABLE it_ekko FROM
ekpo
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
FOR ALL entries IN it_ekko_hdr
WHERE
ekpo~ebeln = it_ekko_hdr-ebeln
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
ENDIF.
LOOP AT IT_EKKO.
V_TABIX = SY-TABIX.
READ TABLE IT_EKKO_HDR WITH KEY EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING IT_EKKO_HDR TO IT_EKKO.
MODIFY IT_EKKO INDEX V_TABIX TRANSPORTING
aedat ekgrp ekorg lifnr.
ENDIF.
ENDLOOP.
LOOP AT it_ekko INTO wa_ekko.
CLEAR wa_ekko-wemng.
MODIFY it_ekko FROM wa_ekko INDEX sy-tabix.
ENDLOOP.
ENDFORM. " data_retrieval
*&----
*& Form display_alv_report
*&----
FORM display_alv_report.
DATA:user_command TYPE slis_formname,
set_pf_status TYPE slis_formname.
set_pf_status = 'ZSTANDARD_FULLSCREEN'.
user_command = 'ALV_USER_COMMAND'.
DATA: gt_events TYPE slis_t_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
is_layout = gd_layout
i_callback_user_command = 'USER_COMMAND'
it_events = gt_events
it_fieldcat = fieldcatalog[]
it_sort = it_sortcat
i_save = 'A'
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&----
*& Form top-of-page
*&----
FORM top-of-page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
Title
wa_header-typ = 'H'.
wa_header-info = 'STOCK PO RECEIVER REPORT'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info."todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
IT_LIST_COMMENTARY = SD_HEADING.
i_logo = 'GANESH_LOGO'.
ENDFORM. " top-of-page
----
FORM user_command *
----
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
case r_ucomm.
when '&IC1'.
IF rs_selfield-fieldname = 'EBELN'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
when 'ULHAS'.
IF rs_selfield-fieldname = 'LIFNR'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-lifnr.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'IT_EKKO-LIFNR'.
if rs_selfield-fieldname = 'LIFNR'.
SET PARAMETER ID 'LIF' FIELD rs_selfield-value.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
endcase.
ENDFORM. "user_command
&----
*& Form build_events
&----
FORM build_events.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'TOP-OF-PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'USER_COMMAND' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " build_events
----
FORM END_OF_PAGE *
----
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
WRITE: sy-uline(50).
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_page
----
FORM END_OF_LIST *
----
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_list
&----
*& Form build_sortcat
&----
FORM build_sortcat.
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
APPEND wa_sort TO it_sortcat.
wa_sort-spos = 2.
wa_sort-fieldname = 'EBELP'.
APPEND wa_sort TO it_sortcat.
ENDFORM. " build_sortcat
Thanks,
Naren
‎2007 Mar 16 5:13 PM
Naren,
It is not giving all the records if u go to se16 and from the ekko table check all the records in the order and
in ur program with out giving any selection screen values execute it.
some records r not coming can u tell me the reason where is the exact problem...
‎2007 Mar 16 5:36 PM
Hi,
In the first select from EKKO I am getting all the records...I checked the number of records in SE16 also...
But in the second select, since you are also having a INNER JOIN ON EKES...The records are getting filtered..
Since in our system..All the POs will not have confirmations..I am getting less records...
The select from EKKO is working fine for me...
Please make sure to reward points for helpful answers..
Thanks
Naren
‎2007 Mar 16 6:33 PM
Naren I am getting the print preview can u check it out once...
Plz its almost completed... I donno what is the problem exactly...
can u let me know
‎2007 Mar 16 6:42 PM
Hi,
Do this change marked in bold..
fieldcatalog-fieldname = <b>'MENGE1'</b>.
fieldcatalog-seltext_m = 'QTY TO RECEIVE'.
fieldcatalog-col_pos = 13.
fieldcatalog-ref_tabname = 'EKES'.
fieldcatalog-ref_fieldname = <b>'MENGE'.</b>
fieldcatalog-rollname = 'MENGE_D'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
Thanks,
Naren
‎2007 Mar 16 6:55 PM
Naren finally
For that above field i am not getting the values it is showing all 0.0000
where is the exact problem naren...
sorry to trouble u so many times...
I really appreciate your valuable time naren...
‎2007 Mar 16 7:09 PM
Hi,
Check this new code..
TYPE-POOLS slis .
TABLES: ekko,
ekpo,
eket,
mara,
mard,
t001l,
makt.
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-b01.
SELECT-OPTIONS: p_lifnr FOR ekko-lifnr,
p_matnr FOR ekpo-matnr,
p_ebeln FOR ekko-ebeln,
p_ekgrp FOR ekko-ekgrp,
p_aedat FOR ekko-aedat,
p_eindt FOR eket-eindt,
p_ernam FOR ekko-ernam.
PARAMETERS: blind AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK blc1.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko.
TYPES: BEGIN OF t_ekko_itm,
ebeln TYPE ekko-ebeln,
ebelp TYPE ekpo-ebelp,
MENGE TYPE ekpo-menge,
meins TYPE ekpo-meins,
matnr TYPE ekpo-matnr,
lgort TYPE mard-lgort,
idnlf TYPE ekpo-idnlf,
txz01 TYPE ekpo-txz01,
lgpbe TYPE mard-lgpbe,
lgobe TYPE t001l-lgobe,
MENGE1 TYPE ekes-menge,
wemng TYPE eket-wemng,
END OF t_ekko_itm.
*types: begin of i_ekko_hdr ,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
ekgrp TYPE ekko-ekgrp,
ekorg TYPE ekko-ekorg,
lifnr TYPE ekko-lifnr,
end of i_ekko_hdr.
*
*DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF I_EKKO_HDR INITIAL SIZE 0.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE,
wa_ekko TYPE t_ekko.
DATA: IT_EKKO_HDR TYPE STANDARD TABLE OF t_ekko WITH HEADER LINE.
DATA: IT_EKKO_ITM TYPE STANDARD TABLE OF T_EKKO_ITM WITH HEADER LINE.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
gd_repid = sy-repid.
Data declaration for EVENT and PRINT PARAMETER.
DATA: gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv.
data declaration for sorting.
DATA : it_sortcat TYPE slis_sortinfo_alv OCCURS 1,
wa_sort LIKE LINE OF it_sortcat.
DATA : i_list_comments TYPE slis_t_listheader.
*DATA int_fcat TYPE slis_t_fieldcat_alv.
DATA:ls_int_fcat TYPE slis_fieldcat_alv.
*data: rs_selfield type slis_selfield.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_sortcat.
PERFORM build_events.
PERFORM top-of-page.
PERFORM display_alv_report.
END-OF-SELECTION.
*&----
*& Form build_fieldcatalog
*&----
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'PO NUMBER'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EBELN'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'PO DATE'.
fieldcatalog-col_pos = 1.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'AEDAT'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKGRP'.
fieldcatalog-seltext_m = 'PUR GRP/BUYER'.
fieldcatalog-col_pos = 2.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKGRP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EKORG'.
fieldcatalog-seltext_m = 'PUR ORG.'.
fieldcatalog-col_pos = 3.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'EKORG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LIFNR'.
fieldcatalog-seltext_m = 'VENDOR NO'.
fieldcatalog-col_pos = 4.
fieldcatalog-ref_tabname = 'EKKO'.
fieldcatalog-ref_fieldname = 'LIFNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO LINE'.
fieldcatalog-col_pos = 5.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'EBELP'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'ORD QTY'.
fieldcatalog-col_pos = 6.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'MENGE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'UNIT'.
fieldcatalog-col_pos = 7.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MEINS'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'MATERIAL'.
fieldcatalog-col_pos = 8.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'MATNR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'TXZ01'.
fieldcatalog-seltext_m = 'DESCRIPTION'.
fieldcatalog-col_pos = 9.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'TXZ01'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'IDNLF'.
fieldcatalog-seltext_m = 'VEND MAT'.
fieldcatalog-col_pos = 10.
fieldcatalog-ref_tabname = 'EKPO'.
fieldcatalog-ref_fieldname = 'IDNLF'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGPBE'.
fieldcatalog-seltext_m = 'ST.LOC SHELF BIN'.
fieldcatalog-col_pos = 11.
fieldcatalog-outputlen = 6.
fieldcatalog-ref_tabname = 'MARD'.
fieldcatalog-ref_fieldname = 'LGPBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGOBE'.
fieldcatalog-seltext_m = 'ST.LOC DESCRIPTION'.
fieldcatalog-col_pos = 12.
fieldcatalog-ref_tabname = 'T001L'.
fieldcatalog-ref_fieldname = 'LGOBE'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
IF blind = ' '. " if the check box is not checked.
fieldcatalog-fieldname = 'MENGE1'.
fieldcatalog-seltext_m = 'QTY TO RECEIVE'.
fieldcatalog-col_pos = 13.
fieldcatalog-ref_tabname = 'EKES'.
fieldcatalog-ref_fieldname = 'MENGE'.
fieldcatalog-rollname = 'MENGE_D'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WEMNG'.
fieldcatalog-seltext_m = 'QTY RECEIVED'.
fieldcatalog-col_pos = 14 .
fieldcatalog-decimals_out = 0.
fieldcatalog-no_zero = 'X'.
fieldcatalog-ref_tabname = 'EKET'.
fieldcatalog-ref_fieldname = 'WEMNG'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDIF.
LOOP AT fieldcatalog INTO ls_int_fcat.
ls_int_fcat-col_pos = syst-tabix.
MODIFY fieldcatalog FROM ls_int_fcat INDEX syst-tabix.
ENDLOOP.
LOOP AT fieldcatalog INTO ls_int_fcat.
CHECK ls_int_fcat-fieldname EQ 'EBELN'
OR ls_int_fcat-fieldname EQ 'LIFNR'.
ls_int_fcat-hotspot = 'X'.
MODIFY fieldcatalog FROM ls_int_fcat TRANSPORTING hotspot.
ENDLOOP.
ENDFORM. " build_fieldcatalog
*&----
*& Form data_retrieval
*&----
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
DATA: V_TABIX TYPE SYTABIX.
*SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
*ekpomatnr eketeindt INTO corresponding fields of TABLE it_ekko
FROM ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln
INNER JOIN eket ON ekkoebeln = eketebeln
WHERE ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt
*SELECT * INTO corresponding fields of TABLE it_ekko
FROM ekko UP TO 20 ROWS where lifnr in p_lifnr
and matnr in p_matnr
and ebeln in p_ebeln
and ekgrp in p_ekgrp
and aedat in p_aedat
and ernam in p_ernam.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE IT_EKKO_HDR
FROM ekko
WHERE lifnr IN p_lifnr
AND ebeln IN p_ebeln
AND ekgrp IN p_ekgrp
AND aedat IN p_aedat
AND ernam IN p_ernam.
.
SELECT ekkoebeln ekkoaedat ekkoekgrp ekkoekorg ekko~lifnr
ekpoebelp ekpomenge ekpomeins ekpomatnr mardlgort ekpoidnlf
*ekpo~txz01
mardlgpbe t001llgobe ekesmenge eketwemng INTO corresponding
fields of TABLE it_ekko FROM
ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
*
FOR ALL entries IN it_ekko WHERE
ekpo~ebeln = it_ekko-ebeln
where ekko~lifnr IN p_lifnr
AND ekko~ebeln IN p_ebeln
AND ekko~ekgrp IN p_ekgrp
AND ekko~aedat IN p_aedat
AND ekko~ernam IN p_ernam
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
SELECT ekpo~ebeln
ekpo~ebelp
ekpo~menge
ekpo~meins
ekpo~matnr
mard~lgort
ekpo~idnlf
ekpo~txz01
mard~lgpbe
t001l~lgobe
ekes~menge
eket~wemng INTO TABLE it_ekko_itm FROM
ekpo
INNER JOIN eket ON ekpoebeln = eketebeln AND ekpoebelp = eketebelp
INNER JOIN t001l ON ekpowerks = t001lwerks
INNER JOIN mard ON ekpomatnr = mardmatnr AND ekpowerks = mardwerks
INNER JOIN ekes ON ekpoebeln = ekesebeln AND ekpoebelp = ekesebelp
FOR ALL entries IN it_ekko_hdr
WHERE
ekpo~ebeln = it_ekko_hdr-ebeln
AND ekpo~matnr IN p_matnr
AND eket~eindt IN p_eindt.
LOOP AT IT_EKKO_itm.
MOVE-CORRESPONDING IT_EKKO_ITM TO IT_EKKO.
READ TABLE IT_EKKO_HDR WITH KEY EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
IT_EKKO-aedat = IT_EKKO_HDR-AEDAT.
IT_EKKO-ekgrp = IT_EKKO_HDR-EKGRP.
IT_EKKO-ekorg = IT_EKKO_HDR-EKORG.
IT_EKKO-lifnr = IT_EKKO_HDR-LIFNR.
ENDIF.
APPEND IT_EKKO.
CLEAR: IT_EKKO.
ENDLOOP.
LOOP AT it_ekko INTO wa_ekko.
CLEAR wa_ekko-wemng.
MODIFY it_ekko FROM wa_ekko INDEX sy-tabix.
ENDLOOP.
ENDFORM. " data_retrieval
*&----
*& Form display_alv_report
*&----
FORM display_alv_report.
DATA:user_command TYPE slis_formname,
set_pf_status TYPE slis_formname.
set_pf_status = 'ZSTANDARD_FULLSCREEN'.
user_command = 'ALV_USER_COMMAND'.
DATA: gt_events TYPE slis_t_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
is_layout = gd_layout
i_callback_user_command = 'USER_COMMAND'
it_events = gt_events
it_fieldcat = fieldcatalog[]
it_sort = it_sortcat
i_save = 'A'
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&----
*& Form top-of-page
*&----
FORM top-of-page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
Title
wa_header-typ = 'H'.
wa_header-info = 'STOCK PO RECEIVER REPORT'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info."todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
IT_LIST_COMMENTARY = SD_HEADING.
i_logo = 'GANESH_LOGO'.
ENDFORM. " top-of-page
----
FORM user_command *
----
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
case r_ucomm.
when '&IC1'.
IF rs_selfield-fieldname = 'EBELN'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
when 'ULHAS'.
IF rs_selfield-fieldname = 'LIFNR'.
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BES' FIELD wa_ekko-lifnr.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'IT_EKKO-LIFNR'.
if rs_selfield-fieldname = 'LIFNR'.
SET PARAMETER ID 'LIF' FIELD rs_selfield-value.
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDIF.
endcase.
ENDFORM. "user_command
&----
*& Form build_events
&----
FORM build_events.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'TOP-OF-PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'USER_COMMAND' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " build_events
----
FORM END_OF_PAGE *
----
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
WRITE: sy-uline(50).
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_page
----
FORM END_OF_LIST *
----
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
SKIP. WRITE:/40 'Page:', sy-pagno .
ENDFORM. "end_of_list
&----
*& Form build_sortcat
&----
FORM build_sortcat.
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
APPEND wa_sort TO it_sortcat.
wa_sort-spos = 2.
wa_sort-fieldname = 'EBELP'.
APPEND wa_sort TO it_sortcat.
ENDFORM. " build_sortcat
Thanks,
Naren
‎2007 Mar 16 8:14 PM
Hi,
Please make sure to reward points for helpful answers..
And close the thread if the problem is solved..
Thanks,
Naren
‎2007 Mar 16 9:02 PM
hi,
Why don't you use ABAP Query and Infoset, you have all futures up there
use sq03,sq02 and sq01
regards
sarath