2008 Jul 30 12:24 PM
hi all, please let me know this issue. I have this select options on my report and i have to select the open purchase orders on combination of any of this select-option, But i like to know how to write the combination for this select-option.
SELECT-OPTIONS : so_matnr FOR marc-matnr,
so_werks FOR marc-werks,
so_ebeln FOR ekpo-ebeln,
so_lifnr FOR ekko-lifnr,
so_ekgrp FOR ekko-ekgrp,
so_eindt FOR ekes-eindt.
example : i can select any of this combination, that is i can select only lifnr or material or werks or ebeln or ekgrp or eindt or ( matnr and lifnr ) or ( matnr and ebeln) like this all the combination, So i dont know how to fetch this combination on my select query.......
please let me know,
regards
krish
2008 Jul 30 12:28 PM
Hi Krishna,
Krishna wrote :+
+SELECT-OPTIONS : so_matnr FOR marc-matnr,+
+so_werks FOR marc-werks,+
+so_ebeln FOR ekpo-ebeln,+
+so_lifnr FOR ekko-lifnr,+
+so_ekgrp FOR ekko-ekgrp,+
+so_eindt FOR ekes-eindt.
In your select query write like this :
select <fields you want>
from <db table name>
into <int table name>
where matnr in so_matnr
and werks in so_werks
and ebeln in so_ebeln
and lifnr in so_lifnr
and ekgrp in so_ekgrp
and eindt in so_eindt .
It will select according to the input given irrespective of whether you have entered any values or not. Like if you dont enter any values it will fetch all records
Regards,
Swapna.
2008 Jul 30 12:34 PM
hi swapna plzzzz check this and let me know
TABLES : marc, " Plant Data for Material
ekko, " Purchasing Document Header
ekpo, " Purchasing Document Item
ekes, " Vendor Confirmations
t458a, " Exception Messages in Material Requirements Planning
t458b. " Description of exception messages
*----
Types Declaration
*----
TYPES : BEGIN OF ty_marc,
matnr TYPE marc-matnr, " Material Number
werks TYPE marc-werks, " Plant
lvorm TYPE marc-lvorm,
END OF ty_marc.
TYPES : BEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln, " Purchasing Document Number
loekz TYPE ekko-loekz,
lifnr TYPE ekko-lifnr, " Account Number of the Vendor
ekgrp TYPE ekko-ekgrp, " Purchasing group
END OF ty_ekko.
TYPES : BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln, " Purchasing Document Number
ebelp TYPE ekpo-ebelp, " Item Number of Purchasing Document
loekz TYPE ekpo-loekz,
matnr TYPE ekpo-matnr, " Material Number
werks TYPE ekpo-werks, " Plant
menge TYPE ekpo-menge, " Purchase order quantity
elikz TYPE ekpo-elikz,
END OF ty_ekpo.
TYPES : BEGIN OF ty_eket,
ebeln TYPE eket-ebeln,
ebelp TYPE eket-ebelp,
etenr TYPE eket-etenr,
eindt TYPE eket-eindt,
menge TYPE eket-menge,
wemng TYPE eket-wemng,
dabmg TYPE eket-dabmg,
END OF ty_eket.
TYPES : BEGIN OF ty_ekes,
ebeln TYPE ekes-ebeln, " Purchasing Document Number
ebelp TYPE ekes-ebelp, " Item Number of Purchasing Document
etens TYPE ekes-etens, " Sequential Number of Vendor Confirmation
ebtyp TYPE ekes-ebtyp, " Confirmation category
eindt TYPE ekes-eindt, " Delivery date of vendor confirmation
menge TYPE ekes-menge,
dabmg TYPE ekes-dabmg,
loekz TYPE ekes-loekz, " Vendor confirmation deletion indicator
END OF ty_ekes.
TYPES : BEGIN OF ty_t458a,
aussl TYPE t458a-aussl, " Exception message key
auskt TYPE t458a-auskt, " Exception message number
END OF ty_t458a.
TYPES : BEGIN OF ty_t458b,
aussl TYPE t458b-aussl, " Exception message key
auslt TYPE t458b-auslt, " Exception message text
END OF ty_t458b.
*----
Internal Table Declaration
*----
DATA : it_marc TYPE TABLE OF ty_marc,
it_ekko TYPE TABLE OF ty_ekko,
it_ekpo TYPE TABLE OF ty_ekpo,
it_eket TYPE TABLE OF ty_eket ,
it_ekes TYPE TABLE OF ty_ekes,
it_t458a TYPE TABLE OF ty_t458a,
it_t458b TYPE TABLE OF ty_t458b.
*----
Work Area Declaration
*----
DATA : wa_marc TYPE ty_marc,
wa_ekko TYPE ty_ekko,
wa_ekpo TYPE ty_ekpo,
wa_eket TYPE ty_eket ,
wa_ekes TYPE ty_ekes,
wa_t458a TYPE ty_t458a,
wa_t458b TYPE ty_t458b.
*----
Selection Screen
*----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : so_matnr FOR marc-matnr,
so_werks FOR marc-werks,
so_ebeln FOR ekpo-ebeln,
so_lifnr FOR ekko-lifnr,
so_ekgrp FOR ekko-ekgrp,
so_eindt FOR ekes-eindt.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION .
IF ( so_matnr IS NOT INITIAL OR so_werks IS NOT INITIAL OR so_ebeln IS NOT INITIAL OR so_lifnr IS INITIAL OR so_ekgrp IS INITIAL ) AND so_eindt IS INITIAL .
IF so_matnr IS INITIAL AND so_werks IS INITIAL .
SELECT ebeln
ebelp
loekz
matnr
werks
menge
elikz
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln IN so_ebeln
AND loekz <> 'X'
AND elikz <> 'X' .
IF sy-subrc = 0 .
SORT it_ekpo[] BY ebeln ebelp .
SELECT matnr
werks
lvorm
FROM marc
INTO TABLE it_marc
FOR ALL ENTRIES IN it_ekpo
WHERE matnr = it_ekpo-matnr
AND werks = it_ekpo-werks .
IF sy-subrc = 0 .
SORT it_marc[] BY matnr werks .
DELETE ADJACENT DUPLICATES FROM it_marc COMPARING matnr werks .
ENDIF .
PERFORM eee_data_retrival.
ENDIF .
ELSE .
SELECT matnr
werks
lvorm
FROM marc
INTO TABLE it_marc
WHERE matnr IN so_matnr
AND werks IN so_werks.
IF sy-subrc = 0.
SORT it_marc[] BY matnr werks .
SELECT ebeln
ebelp
loekz
matnr
werks
menge
elikz
FROM ekpo
INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_marc
WHERE matnr = it_marc-matnr
AND werks = it_marc-werks
AND ebeln = so_ebeln
AND loekz <> 'X'
AND elikz <> 'X' .
IF sy-subrc = 0.
SORT it_ekpo[] BY ebeln ebelp matnr werks .
PERFORM eee_data_retrival.
ENDIF.
ENDIF.
ENDIF .
ELSE .
ENDIF .
&----
*& Form EEE_DATA_RETRIVAL
&----
DATA RETRIVAL FORM EKET EKKO EKES
----
FORM eee_data_retrival .
SELECT ebeln
ebelp
etenr
eindt
menge
wemng
dabmg
FROM eket
INTO TABLE it_eket
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp .
IF sy-subrc = 0 .
SORT it_eket[] BY ebeln ebelp .
ENDIF .
SELECT ebeln
loekz
lifnr
ekgrp
FROM ekko
INTO TABLE it_ekko
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND EKGRP IN SO_EKGRP
AND LIFNR IN SO_LIFNR
AND loekz <> 'X' .
IF sy-subrc = 0.
SORT it_ekko[] BY ebeln .
ENDIF .
SELECT ebeln
ebelp
etens
ebtyp
eindt
menge
dabmg
loekz
FROM ekes
INTO TABLE it_ekes
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp
AND loekz <> 'X' .
IF sy-subrc = 0.
SORT it_ekes[] BY ebeln ebelp .
ENDIF.
ENDFORM. " EEE_DATA_RETRIVAL
2008 Jul 30 12:29 PM
2008 Jul 30 12:53 PM
Hi!
Check out this sample code
REPORT z_sdn.
TABLES:
marc,
ekpo,
ekko,
ekes.
SELECT-OPTIONS : so_matnr FOR marc-matnr,
so_werks FOR marc-werks,
so_ebeln FOR ekpo-ebeln,
so_lifnr FOR ekko-lifnr,
so_ekgrp FOR ekko-ekgrp,
so_eindt FOR ekes-eindt.
DATA:
BEGIN OF fs_tab,
werks TYPE marc-werks,
ebeln TYPE ekpo-ebeln,
lifnr TYPE ekko-lifnr,
ekgrp TYPE ekko-ekgrp,
eindt TYPE ekes-eindt,
END OF fs_tab.
DATA:
t_tab LIKE
TABLE OF
fs_tab.
START-OF-SELECTION.
SELECT m~werks
p~ebeln
k~lifnr
k~ekgrp
s~eindt
FROM ( ( ( marc AS m
INNER JOIN ekpo AS p ON m~werks = p~werks )
INNER JOIN ekko AS k ON p~ebeln = k~ebeln )
INNER JOIN ekes AS s ON k~ebeln = s~ebeln )
INTO TABLE t_tab
WHERE m~werks IN so_werks
AND p~ebeln IN so_ebeln
AND k~lifnr IN so_lifnr
AND k~ekgrp IN so_ekgrp
AND s~eindt IN so_eindt.
Regards
Abhijeet
2008 Jul 30 1:00 PM
you can go for joins and then in where condition give your select criteria.
select field
from marc inner join.....
on........................
where
werks in s_werks
and lifnr in so_lifnr
anf ekgrp in so_ekgrp
.................
and also u can go for " for all entries' that will be better performance wise.
with luck,
pritam.