‎2008 May 04 6:24 AM
REPORT ZSKARCR3
NO STANDARD PAGE HEADING.
*****************DATA DECLARATION*************************************
TABLES: MARA, MAKT.
DATA: BEGIN OF I_MARA OCCURS 0,
I_MATNR LIKE MARA-MATNR,
I_MEINS LIKE MARA-MEINS,
I_MAKTX LIKE MAKT-MAKTX,
END OF I_MARA.
SELECT SINGLE MARA~MATNR
MARA~MEINS
MAKT~MAKTX
INTO I_MARA
FROM MARA
INNER JOIN MAKT
ON MARAMATNR = MAKTMATNR
WHERE MARA~MATNR = I_MARA-I_MATNR
AND MAKT~SPRAS = SY-LANGU.
***************************SELECTION SCREEN****************************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TEXT-001
SELECT-OPTIONS: MATERIAL FOR I_MARA-I_MATNR NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN: END OF BLOCK B1.
***************************PRINTING STATEMENT**************************
write : /2 'date:', 10 sy-datum.
skip 1.
write : /5 'MATERIAL NUMBER', 25 'MATERIAL DESCRIPTION', 50 'UNIT OF MEASURE'.
write : /5 '**************', 25 '******************', 50 '**************'.
write : /5 I_MARA-I_MATNR, 12 I_MARA-I_MAKTX, 30 I_MARA-I_MEINS.
This is my code to fetch data from the tables, but during debugging i found the debugger is not executing the select statement.
Can anybody help me out?
regards
sobhan
‎2008 May 04 6:32 AM
SELECT SINGLE MARA~MATNR
MARA~MEINS
MAKT~MAKTX
INTO I_MARA
FROM MARA as mara
INNER JOIN MAKT as makt
ON MARA~MATNR = MAKT~MATNR
WHERE MAKT~SPRAS = SY-LANGU
‎2008 May 04 6:32 AM
SELECT SINGLE MARA~MATNR
MARA~MEINS
MAKT~MAKTX
INTO I_MARA
FROM MARA as mara
INNER JOIN MAKT as makt
ON MARA~MATNR = MAKT~MATNR
WHERE MAKT~SPRAS = SY-LANGU
‎2008 May 04 9:54 AM
Hi,
thanks for help me out.
the code really did work, but what is the difference when you put 'in' instead of '='in the where clause?
best of my regards.
‎2008 May 04 2:04 PM
Hi Sobhan,
Its not problem with In or =. It is the problem with ur WHERE CLAUSE. Check ur WHERE CLAUSE carefully.
SELECT SINGLE MARA~MATNR
MARA~MEINS
MAKT~MAKTX
INTO I_MARA
FROM MARA
INNER JOIN MAKT
ON MARAMATNR = MAKTMATNR
WHERE MARA~MATNR = I_MARA-I_MATNR
AND MAKT~SPRAS = SY-LANGU.
Here i_mara is defined with header line. So at the time of execution of this select i_mara-matnr doesn't have any data.
So ur select is failing. Also for the material number u gave select option. But in select u r using select single. This select will select only one record. So modify ur select like below to select all the records for the materials entered in select option.
SELECT MARA~MATNR
MARA~MEINS
MAKT~MAKTX
INTO TABLE I_MARA
FROM MARA
INNER JOIN MAKT
ON MARAMATNR = MAKTMATNR
WHERE MARA~MATNR IN MATERIAL
AND MAKT~SPRAS = SY-LANGU.
Why we are using In is because u declared ur material number as select option. For parameter we will use = and for select option use IN.
Hope this is clear now.
Thanks,
Vinod.
‎2008 May 04 6:36 AM
Hi Sobhan,
Try the following code i have changed it,
*****************DATA DECLARATION*************************************
TABLES: MARA, MAKT.
DATA: BEGIN OF I_MARA OCCURS 0,
I_MATNR LIKE MARA-MATNR,
I_MEINS LIKE MARA-MEINS,
I_MAKTX LIKE MAKT-MAKTX,
END OF I_MARA.
***************************SELECTION SCREEN****************************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME title TEXT-001 .
SELECT-OPTIONS: MATERIAL FOR I_MARA-I_MATNR NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN: END OF BLOCK B1.
***************************PRINTING STATEMENT**************************
SELECT SINGLE MARA~MATNR
MARA~MEINS
MAKT~MAKTX
INTO I_MARA
FROM MARA
INNER JOIN MAKT
ON MARAMATNR = MAKTMATNR
WHERE MARA~MATNR in MATERIAL
AND MAKT~SPRAS = SY-LANGU.
write : /2 'date:', 10 sy-datum.
skip 1.
write : /5 'MATERIAL NUMBER', 25 'MATERIAL DESCRIPTION', 50 'UNIT OF MEASURE'.
write : /5 '**************', 25 '******************', 50 '**************'.
write : /5 I_MARA-I_MATNR, 25 I_MARA-I_MAKTX, 50 I_MARA-I_MEINS.
PS : Reward all useful answers.
Regards,
Talwinder
‎2008 May 04 6:40 AM
Instead of using Inner join u can use *for all entries* . This will improve the performance of your program and the code is also very easy to understand.
regards