‎2009 Oct 23 1:07 PM
Hi Guriji's
I made a one report for display the last consumption period of material and show last day of consumption . according to my coding it will show last consumption period of material based on the date, that means in different-2 date this material is consumed . But my requirement is this it will pick only the latest date for this particular material and last consumption day.
so plz tell me where i the problem in my coding.
REPORT Z_MC46 NO STANDARD PAGE HEADING LINE-SIZE 232.
TABLES: ZV_MC46. " view"
DATA: BEGIN OF T_ITAB OCCURS 0,
MATNR TYPE ZV_MC46-MATNR,
MAKTX TYPE ZV_MC46-MAKTX,
SALK3 TYPE ZV_MC46-SALK3,
MATKL TYPE ZV_MC46-MATKL,
MTART TYPE ZV_MC46-MTART,
EKGRP TYPE ZV_MC46-EKGRP,
LBKUM TYPE ZV_MC46-LBKUM,
BWART TYPE ZV_MC46-BWART,
BUDAT TYPE ZV_MC46-BUDAT,
DATE LIKE SY-DATUM,
END OF T_ITAB.
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: W_WERKS FOR ZV_MC46-WERKS.
PARAMETERS: DAYS(4).
SELECTION-SCREEN END OF BLOCK B1.
IF DAYS IS NOT INITIAL.
SELECTION-SCREEN END OF BLOCK B1.
IF DAYS IS NOT INITIAL.
SELECT MATNR MAKTX SALK3 MATKL MTART EKGRP LBKUM BWART BUDAT FROM ZV_MC46 INTO CORRESPONDING FIELDS OF TABLE T_ITAB
WHERE WERKS IN W_WERKS AND BUDAT BETWEEN ZV_MC46-BUDAT AND SY-DATUM . " BUDAT IN B_BUDAT.
DELETE ADJACENT DUPLICATES FROM T_ITAB.
ENDIF.
WRITE:/1 'MATNR',
14 'MAKTX',
48 'LBKUM',
64 'MATKL',
75 'MTART',
83 'EKGRP',
100 'SALK3',
112 'MBLNR',
124 'BWART',
132 'LAST DATE',
145 'BUDAT',
158 'DAYS'.
SKIP 1.
SORT T_ITAB BY BUDAT MATNR.
LOOP AT T_ITAB.
AT END OF BUDAT .
DELETE ADJACENT DUPLICATES FROM T_ITAB.
IF T_ITAB IS NOT INITIAL.
DAYS = SY-DATUM - T_ITAB-BUDAT.
WRITE:/1 T_ITAB-MATNR,
14 T_ITAB-MAKTX,
40 T_ITAB-LBKUM,
64 T_ITAB-MATKL,
75 T_ITAB-MTART,
83 T_ITAB-EKGRP,
92 T_ITAB-SALK3,
125 T_ITAB-BWART,
132 ZV_MC46-BUDAT,
145 T_ITAB-BUDAT,
158 DAYS.
ENDIF.
ENDAT.
ENDLOOP.
thanks ...
‎2009 Oct 23 1:20 PM
Hi,
You could just try the following,
REPORT Z_MC46 NO STANDARD PAGE HEADING LINE-SIZE 232.
TABLES: ZV_MC46. " view"
DATA: BEGIN OF T_ITAB OCCURS 0,
MATNR TYPE ZV_MC46-MATNR,
MAKTX TYPE ZV_MC46-MAKTX,
SALK3 TYPE ZV_MC46-SALK3,
MATKL TYPE ZV_MC46-MATKL,
MTART TYPE ZV_MC46-MTART,
EKGRP TYPE ZV_MC46-EKGRP,
LBKUM TYPE ZV_MC46-LBKUM,
BWART TYPE ZV_MC46-BWART,
BUDAT TYPE ZV_MC46-BUDAT,
DATE LIKE SY-DATUM,
END OF T_ITAB.
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: W_WERKS FOR ZV_MC46-WERKS.
PARAMETERS: DAYS(4).
SELECTION-SCREEN END OF BLOCK B1.
IF DAYS IS NOT INITIAL.
SELECTION-SCREEN END OF BLOCK B1.
IF DAYS IS NOT INITIAL.
SELECT MATNR MAKTX SALK3 MATKL MTART EKGRP LBKUM BWART BUDAT
FROM ZV_MC46
INTO CORRESPONDING FIELDS OF TABLE T_ITAB
WHERE WERKS IN W_WERKS AND
BUDAT BETWEEN ZV_MC46-BUDAT AND SY-DATUM . " BUDAT IN B_BUDAT.
ENDIF.
WRITE:/1 'MATNR',
14 'MAKTX',
48 'LBKUM',
64 'MATKL',
75 'MTART',
83 'EKGRP',
100 'SALK3',
* 112 'MBLNR',
124 'BWART',
132 'LAST DATE',
145 'BUDAT',
158 'DAYS'.
SKIP 1.
SORT T_ITAB BY BUDAT MATNR DESCENDING.
DELETE ADJACENT DUPLICATES FROM T_ITAB comparing matnr.
LOOP AT T_ITAB.
DAYS = SY-DATUM - T_ITAB-BUDAT.
WRITE:/1 T_ITAB-MATNR,
14 T_ITAB-MAKTX,
40 T_ITAB-LBKUM,
64 T_ITAB-MATKL,
75 T_ITAB-MTART,
83 T_ITAB-EKGRP,
92 T_ITAB-SALK3,
125 T_ITAB-BWART,
132 ZV_MC46-BUDAT,
145 T_ITAB-BUDAT,
158 DAYS.
ENDLOOP.
Vikranth
‎2009 Oct 23 1:20 PM
Hi,
You could just try the following,
REPORT Z_MC46 NO STANDARD PAGE HEADING LINE-SIZE 232.
TABLES: ZV_MC46. " view"
DATA: BEGIN OF T_ITAB OCCURS 0,
MATNR TYPE ZV_MC46-MATNR,
MAKTX TYPE ZV_MC46-MAKTX,
SALK3 TYPE ZV_MC46-SALK3,
MATKL TYPE ZV_MC46-MATKL,
MTART TYPE ZV_MC46-MTART,
EKGRP TYPE ZV_MC46-EKGRP,
LBKUM TYPE ZV_MC46-LBKUM,
BWART TYPE ZV_MC46-BWART,
BUDAT TYPE ZV_MC46-BUDAT,
DATE LIKE SY-DATUM,
END OF T_ITAB.
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: W_WERKS FOR ZV_MC46-WERKS.
PARAMETERS: DAYS(4).
SELECTION-SCREEN END OF BLOCK B1.
IF DAYS IS NOT INITIAL.
SELECTION-SCREEN END OF BLOCK B1.
IF DAYS IS NOT INITIAL.
SELECT MATNR MAKTX SALK3 MATKL MTART EKGRP LBKUM BWART BUDAT
FROM ZV_MC46
INTO CORRESPONDING FIELDS OF TABLE T_ITAB
WHERE WERKS IN W_WERKS AND
BUDAT BETWEEN ZV_MC46-BUDAT AND SY-DATUM . " BUDAT IN B_BUDAT.
ENDIF.
WRITE:/1 'MATNR',
14 'MAKTX',
48 'LBKUM',
64 'MATKL',
75 'MTART',
83 'EKGRP',
100 'SALK3',
* 112 'MBLNR',
124 'BWART',
132 'LAST DATE',
145 'BUDAT',
158 'DAYS'.
SKIP 1.
SORT T_ITAB BY BUDAT MATNR DESCENDING.
DELETE ADJACENT DUPLICATES FROM T_ITAB comparing matnr.
LOOP AT T_ITAB.
DAYS = SY-DATUM - T_ITAB-BUDAT.
WRITE:/1 T_ITAB-MATNR,
14 T_ITAB-MAKTX,
40 T_ITAB-LBKUM,
64 T_ITAB-MATKL,
75 T_ITAB-MTART,
83 T_ITAB-EKGRP,
92 T_ITAB-SALK3,
125 T_ITAB-BWART,
132 ZV_MC46-BUDAT,
145 T_ITAB-BUDAT,
158 DAYS.
ENDLOOP.
Vikranth
‎2009 Oct 23 1:54 PM
HI
what are the changes u have done this code? it will also give the same output.But i want to pick the last latest date on which the material is consumed.
thanks
‎2009 Oct 23 2:00 PM
Hi,
Did you compare the code i posted and the code you have at present? Execute with what i sent and check if you are getting the material with the latest date.
Vikranth
‎2009 Oct 24 5:42 AM
Hi
I got the material with the latest date, but for the same material i also got another date on which the material consumed .but my requirement is that for all of those date i want to capture only the latest date material. Plz tell me for this what should i change in my code.
Thanks.
Edited by: Sachin Rathore on Oct 24, 2009 6:43 AM
‎2009 Oct 24 8:00 AM
In the code i posted, change the sort statement this way,
sort t_itab by matnr ascending budat descending.
delete adjacent duplicates from t_itab comparing matnr.
Vikranth
‎2009 Oct 26 8:02 AM
Hi Dear,
Thanks.
My program is working fine. You just tell me , my output format is ALV.
Suppose when there is no material is consumed since last 10 days then in the output of alv i want to display one message that
"no material is consumedsince last 10 days" for this what should i do. Plz tell me.
Thanks.
‎2009 Oct 26 8:05 AM
Hi,
As per the rules of the forum, only one question per thread is allowed. please close this thread and open a new one for your new query.
Vikranth