04-22-2008 5:06 AM
Hi All,
Data is comming to Internal tables but I am unable to show out put some where I am missing,any one please help me.
REPORT ztest2.
TABLES:s031,s032,makt,marc.
DATA : BEGIN OF itab1 OCCURS 0,
matnr TYPE s031-matnr,
lgort TYPE s031-lgort,
werks TYPE s031-werks,
spmon TYPE s031-spmon,
magbb TYPE s031-magbb,
wagbb TYPE s031-wagbb,
azubb TYPE s031-azubb,
aagbb TYPE s031-aagbb,
END OF itab1.
DATA : BEGIN OF itab2 OCCURS 0,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
END OF itab2.
DATA : BEGIN OF itab3 OCCURS 0,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
ekgrp TYPE marc-ekgrp,
END OF itab3.
DATA : BEGIN OF itab4 OCCURS 0 ,
matnr TYPE s032-matnr,
lgort TYPE s032-lgort,
werks TYPE s032-werks,
mbwbest TYPE s032-mbwbest,
wbwbest TYPE s032-wbwbest,
END OF itab4.
DATA: BEGIN OF itab5 OCCURS 0,
matnr LIKE s031-matnr,
atinn LIKE cawn-atinn,
atwrt LIKE cawn-atwrt,
objek LIKE ausp-objek,
END OF itab5.
DATA : BEGIN OF itab_final1 OCCURS 0,
matnr TYPE s031-matnr,
lgort TYPE s031-lgort,
werks TYPE s031-werks,
magbb TYPE s031-magbb,
wagbb TYPE s031-wagbb,
azubb TYPE s031-azubb,
aagbb TYPE s031-aagbb,
maktx TYPE makt-maktx,
ekgrp TYPE marc-ekgrp,
mbwbest TYPE s032-mbwbest,
wbwbest TYPE s032-wbwbest,
atwrt TYPE cawn-atwrt,
END OF itab_final1.
DATA : BEGIN OF itab_final OCCURS 0,
matnr TYPE s031-matnr,
lgort TYPE s031-lgort,
werks TYPE s031-werks,
magbb TYPE s031-magbb,
wagbb TYPE s031-wagbb,
azubb TYPE s031-azubb,
aagbb TYPE s031-aagbb,
maktx TYPE makt-maktx,
ekgrp TYPE marc-ekgrp,
mbwbest TYPE s032-mbwbest,
wbwbest TYPE s032-wbwbest,
atwrt TYPE cawn-atwrt,
END OF itab_final.
DATA: wa_itab5 LIKE LINE OF itab5.
DATA : wa_itab_final LIKE LINE OF itab_final.
SELECT-OPTIONS:s_matnr FOR s031-matnr.
SELECT amatnr algort awerks aspmon amagbb awagbb aazubb aaagbb
bmaktx cekgrp dmbwbest dwbwbest
INTO CORRESPONDING FIELDS OF TABLE itab_final1
FROM ( ( ( s031 AS a
INNER JOIN makt AS b ON bmatnr = amatnr )
INNER JOIN marc AS c ON cmatnr = bmatnr )
INNER JOIN s032 AS d ON dwerks = cwerks ) WHERE a~matnr IN s_matnr.
SORT itab_final1 BY matnr werks ekgrp .
DELETE ADJACENT DUPLICATES FROM itab_final1 COMPARING matnr werks ekgrp.
LOOP AT itab_final1 INTO wa_itab_final.
itab_final-matnr = wa_itab_final-matnr.
itab_final-lgort = wa_itab_final-lgort.
itab_final-werks = wa_itab_final-werks.
itab_final-magbb = wa_itab_final-magbb.
itab_final-wagbb = wa_itab_final-wagbb.
itab_final-azubb = wa_itab_final-azubb.
itab_final-aagbb = wa_itab_final-aagbb.
itab_final-maktx = wa_itab_final-maktx.
itab_final-mbwbest = wa_itab_final-mbwbest.
itab_final-wbwbest = wa_itab_final-wbwbest.
ENDLOOP.
SELECT eatinn eatwrt fatinn fobjek
INTO CORRESPONDING FIELDS OF TABLE itab5
FROM ( cawn AS e
INNER JOIN ausp AS f ON fatinn = eatinn ) WHERE f~objek IN s_matnr.
LOOP AT itab5 INTO wa_itab5 .
itab_final-atwrt = wa_itab5-atwrt.
ENDLOOP.
append Itab_final.
LOOP AT itab_final.
WRITE: /2 itab_final-matnr COLOR 1, 23 itab_final-lgort COLOR 2,29 itab_final-werks COLOR 3,44 itab_final-magbb COLOR 5,66 itab_final-wagbb COLOR 6,86 itab_final-azubb COLOR 7,97 itab_final-aagbb COLOR 5,
110 itab_final-maktx COLOR 1, 130 itab_final-ekgrp COLOR 3,150 itab_final-wbwbest COLOR 6,190 itab_final-mbwbest COLOR 3,200 itab_final1-atwrt COLOR 5.
ENDLOOP.
ThanKs®ds,
Sree.
04-22-2008 5:58 AM
Hi,
Use the below code:
LOOP AT itab5 INTO wa_itab5 .
loop at itab_final where matnr = wa_itab5-matnr.
itab_final-atwrt = wa_itab5-atwrt.
modify itab_final index sy-tabix transporting atwrt.
endloop.
ENDLOOP.
This should work out!
Regards,
Lakshmi.
04-22-2008 5:10 AM
hi Sree,
you missed append.
Here it is..
LOOP AT itab_final1 INTO wa_itab_final.
itab_final-matnr = wa_itab_final-matnr.
itab_final-lgort = wa_itab_final-lgort.
itab_final-werks = wa_itab_final-werks.
itab_final-magbb = wa_itab_final-magbb.
itab_final-wagbb = wa_itab_final-wagbb.
itab_final-azubb = wa_itab_final-azubb.
itab_final-aagbb = wa_itab_final-aagbb.
itab_final-maktx = wa_itab_final-maktx.
itab_final-mbwbest = wa_itab_final-mbwbest.
itab_final-wbwbest = wa_itab_final-wbwbest.
append itab_final.
ENDLOOP.
Have a nice day!!
Reward points if my reply is useful.
Lakshmiraj A
04-22-2008 5:14 AM
there is one more problem...
check this out...!!!
LOOP AT itab_final1 INTO wa_itab_final.
itab_final-matnr = wa_itab_final-matnr.
itab_final-lgort = wa_itab_final-lgort.
itab_final-werks = wa_itab_final-werks.
itab_final-magbb = wa_itab_final-magbb.
itab_final-wagbb = wa_itab_final-wagbb.
itab_final-azubb = wa_itab_final-azubb.
itab_final-aagbb = wa_itab_final-aagbb.
itab_final-maktx = wa_itab_final-maktx.
itab_final-mbwbest = wa_itab_final-mbwbest.
itab_final-wbwbest = wa_itab_final-wbwbest.
append itab_final.
ENDLOOP.
SELECT eatinn eatwrt fatinn fobjek
INTO CORRESPONDING FIELDS OF TABLE itab5
FROM ( cawn AS e
INNER JOIN ausp AS f ON fatinn = eatinn ) WHERE f~objek IN s_matnr.
Loop at itab5 into wa_itab5.
Loop at itab_final where matnr eq itab5-matnr.
itab_final-atwrt = wa_itab5-atwrt.
modify itab_final.
endloop.
endloop.
Reward points if useful
04-22-2008 5:39 AM
Hi Lakshmi Raj,
Still I am struggling with ATWRT data is not comming as out put and also for few records data is repeating several times ,please help me.
Thanks®ds,
Sree.
04-22-2008 6:05 AM
Hi Sree,
Try this way
Loop at itab_final.
read table itab5 with key matnr eq itab_final-matnr.
if sy-subrc eq 0.
itab_final-atwrt = itab5-atwrt.
modify itab_final.
endif.
endloop.
Hope this helps...
Rgds,
Lakshmiraj A
04-22-2008 6:28 AM
04-22-2008 6:56 AM
Hi ALL,
ThankQ very much to all of U,due to U R input my problem solved now I am converting this report into ALV with selection criteria if any problem I face hope all of you help me again.
Thanks®ds,
Sree.
04-22-2008 5:11 AM
Hi,
here u r not appending Sree.
LOOP AT itab_final1 INTO wa_itab_final.
itab_final-matnr = wa_itab_final-matnr.
itab_final-lgort = wa_itab_final-lgort.
itab_final-werks = wa_itab_final-werks.
itab_final-magbb = wa_itab_final-magbb.
itab_final-wagbb = wa_itab_final-wagbb.
itab_final-azubb = wa_itab_final-azubb.
itab_final-aagbb = wa_itab_final-aagbb.
itab_final-maktx = wa_itab_final-maktx.
itab_final-mbwbest = wa_itab_final-mbwbest.
itab_final-wbwbest = wa_itab_final-wbwbest.
append itab_final.
ENDLOOP.
reward if helpful
raam
04-22-2008 5:15 AM
Hi,
I think you are missing 2 points.
LOOP AT itab_final1 INTO wa_itab_final.
itab_final-matnr = wa_itab_final-matnr.
itab_final-lgort = wa_itab_final-lgort.
itab_final-werks = wa_itab_final-werks.
itab_final-magbb = wa_itab_final-magbb.
itab_final-wagbb = wa_itab_final-wagbb.
itab_final-azubb = wa_itab_final-azubb.
itab_final-aagbb = wa_itab_final-aagbb.
itab_final-maktx = wa_itab_final-maktx.
itab_final-mbwbest = wa_itab_final-mbwbest.
itab_final-wbwbest = wa_itab_final-wbwbest.
1 There should be an APPEND statement here ****
APPEND itab_final.
ENDLOOP.
SELECT eatinn eatwrt fatinn fobjek
INTO CORRESPONDING FIELDS OF TABLE itab5
FROM ( cawn AS e
INNER JOIN ausp AS f ON fatinn = eatinn ) WHERE f~objek IN s_matnr.
LOOP AT itab5 INTO wa_itab5 .
itab_final-atwrt = wa_itab5-atwrt.
2 Logic here is not correct Itab_final already has several records ****
MODIFY itab_final where matnr = wa_itab5-matnr.
you need to modify the table with atwrt for each record using some logic
ENDLOOP.
append Itab_final. -
> Append is not required here
Hope this solves your problem.
Thanks and Regards,
Lakshmi.
04-22-2008 5:28 AM
Hi Laxmi Garu,
In modify statement MODIFY itab_final where matnr = wa_itab5-matnr. I am gett
ing error as where statement is not possible,can you explain me how to proceed.
Thanks and Regds,
Sree.
04-22-2008 5:17 AM
hi
one more correction in your program....
in the final display you are looping itab_final BUT printing itab_final1-atwart....
change this...
LOOP AT itab_final.
WRITE: /2 itab_final-matnr COLOR 1, 23 itab_final-lgort COLOR 2,29 itab_final-werks COLOR 3,44 itab_final-magbb COLOR 5,66 itab_final-wagbb COLOR 6,86 itab_final-azubb COLOR 7,97 itab_final-aagbb COLOR 5,
110 itab_final-maktx COLOR 1, 130 itab_final-ekgrp COLOR 3,150 itab_final-wbwbest COLOR 6,190 itab_final-mbwbest COLOR 3,200 itab_final1-atwrt COLOR 5.
ENDLOOP.
to
LOOP AT itab_final.
WRITE: /2 itab_final-matnr COLOR 1, 23 itab_final-lgort COLOR 2,29 itab_final-werks COLOR 3,44 itab_final-magbb COLOR 5,66 itab_final-wagbb COLOR 6,86 itab_final-azubb COLOR 7,97 itab_final-aagbb COLOR 5,
110 itab_final-maktx COLOR 1, 130 itab_final-ekgrp COLOR 3,150 itab_final-wbwbest COLOR 6,190 itab_final-mbwbest COLOR 3,200 itab_final-atwrt COLOR 5.
ENDLOOP.
Reward if useful
Edited by: LAKSHMIRAJ on Apr 22, 2008 6:18 AM
04-22-2008 5:28 AM
Hi Frd
Dont use inner join for more than two tables..in ur report u made four tables this will reduces ur preformance of the report and while going for bulk datas it will you a dump error.So , try to put u select statment like this.
Sample Coding :
FORM MATERIAL.
SELECT MARAMATNR MARAMEINS MARALVORM MARAMSTAE
MARDWERKS MARDLGORT
INTO CORRESPONDING FIELDS OF TABLE IMAT
FROM MARA INNER JOIN MARD ON MARDMATNR = MARAMATNR
WHERE MARA~MATNR IN MATERIAL AND
MARD~WERKS IN PLANT AND
MARD~LGORT IN STORAGE AND
MARA~LVORM <> 'X' AND
MARA~MSTAE EQ SPACE.
IF SY-SUBRC <> 0.
MESSAGE 'NO DATA FOUND FOR THE SELECTION ' TYPE 'E'.
EXIT.
ENDIF.
ENDFORM. "MATERIAL
&----
*& FORM P_MAKT SELECTING MATERIAL DESC.,
&----
TEXT
----
FORM P_MAKT.
LOOP AT IMAT.
SELECT MATNR MAKTX FROM MAKT APPENDING TABLE IMAKT
WHERE MATNR = IMAT-MATNR.
ENDLOOP.
CLEAR : IMAT, IMAKT.
ENDFORM. "P_MAKT
&----
*& FORM P_MARC
&----
TEXT
----
FORM P_MARC.
LOOP AT IMAT.
SELECT MATNR MINBE LVORM BSTFE FROM MARC APPENDING TABLE IMARC
WHERE MATNR = IMAT-MATNR AND
LVORM <> 'X'.
ENDLOOP.
CLEAR : IMAT, IMARC.
ENDFORM. "P_MARC
&----
*& FORM P_MBEW SELECTING WAREHOUSE STOCK
&----
TEXT
----
FORM P_MBEW.
LOOP AT IMAT.
SELECT MATNR LBKUM FROM MBEW APPENDING TABLE IMBEW
WHERE MATNR = IMAT-MATNR.
ENDLOOP.
CLEAR : IMAT, IMBEW.
ENDFORM. "P_MBEW
&----
*& FORM POS SELECTING PO's
&----
TEXT
----
FORM POS.
LOOP AT IMAT.
SELECT EBELN EBELP LOEKZ MATNR BUKRS WERKS LGORT MENGE
FROM EKPO APPENDING TABLE IEKPO
WHERE MATNR = IMAT-MATNR AND
WERKS = IMAT-WERKS AND
LOEKZ EQ SPACE.
ENDLOOP.
CLEAR : IMAT, IEKPO.
ENDFORM. "POS
Reward Me points
By
Pari
04-22-2008 5:58 AM
Hi,
Use the below code:
LOOP AT itab5 INTO wa_itab5 .
loop at itab_final where matnr = wa_itab5-matnr.
itab_final-atwrt = wa_itab5-atwrt.
modify itab_final index sy-tabix transporting atwrt.
endloop.
ENDLOOP.
This should work out!
Regards,
Lakshmi.