Mass Select and Print Material
Master Changed History
Contributed by : SAP
Hints and Tips on Configuration and Abap/4 Programming
4.6x
REPORT ZMMCHGHISTORY NO STANDARD PAGE HEADING
LINE-SIZE 195 LINE-COUNT 60.
* Change doc listing
* Grouped into 3 chg types: 1. Part revision 2.
Price change 3. Others
TABLES:
CDHDR, CDPOS,
MARA, MAKT, MARD.
FIELD-GROUPS: HEADER.
DATA: BEGIN OF CHGDOC OCCURS 50.
INCLUDE STRUCTURE
CDRED.
DATA: END OF CHGDOC.
DATA:
CHGTYPE(1),
PLANT(4),
MATNR1 LIKE CHGDOC-OBJECTID.
SELECT-OPTIONS:
XMATNR FOR CDHDR-OBJECTID,
"Material
XUDATE FOR CDHDR-UDATE,
"Change Date
XUNAME FOR CDHDR-USERNAME,
"User Name
XTCODE FOR CDHDR-TCODE,
"Transaction Code
XWERKS FOR MARD-WERKS.
"Plants
SELECTION-SCREEN SKIP.
*Filter change type
SELECTION-SCREEN BEGIN OF BLOCK CHG0 WITH FRAME TITLE
TEXT-001.
PARAMETERS : XCHG1 AS CHECKBOX DEFAULT 'X',
XCHG2 AS CHECKBOX DEFAULT 'X',
XCHG3 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK CHG0.
START-OF-SELECTION.
INSERT:
CHGDOC-OBJECTID
"Material
CHGTYPE
"Change type
PLANT
CHGDOC-CHANGENR
CHGDOC-USERNAME
CHGDOC-UDATE
CHGDOC-TCODE
CHGDOC-TABNAME
CHGDOC-TABKEY
CHGDOC-CHNGIND
CHGDOC-FNAME
CHGDOC-FTEXT
CHGDOC-TEXTART
CHGDOC-OUTLEN
CHGDOC-F_OLD
CHGDOC-F_NEW
INTO HEADER.
SELECT * FROM MARA WHERE MATNR IN XMATNR.
MATNR1 = MARA-MATNR.
CALL FUNCTION 'CHANGEDOCUMENT_READ'
EXPORTING
* ARCHIVE_HANDLE
= 0
* CHANGENUMBER
= ' '
* DATE_OF_CHANGE
= '00000000'
OBJECTCLASS
= 'MATERIAL'
OBJECTID
= MATNR1
* TABLEKEY
= ' '
* TABLENAME
= ' '
* TIME_OF_CHANGE
= '000000'
* USERNAME
= ' '
* LOCAL_TIME
= ' '
TABLES
EDITPOS
= CHGDOC
EXCEPTIONS
NO_POSITION_FOUND
= 1
WRONG_ACCESS_TO_ARCHIVE = 2
TIME_ZONE_CONVERSION_ERROR = 3
OTHERS
= 4.
LOOP AT CHGDOC.
CHECK: CHGDOC-UDATE
IN XUDATE,
CHGDOC-USERNAME IN XUNAME,
CHGDOC-TCODE IN XTCODE.
* Chg type: 1. Part revision,
2. Price change, 3. Others
CASE CHGDOC-TCODE.
WHEN
'MM01' OR 'MM02' OR 'MM03'. CHGTYPE = '1'.
WHEN
'MR21'. CHGTYPE = '2'.
WHEN
OTHERS. CHGTYPE = '3'.
ENDCASE.
* Filter chg type
IF ( CHGTYPE = '1' AND
XCHG1 <> 'X' ) OR
( CHGTYPE
= '2' AND XCHG2 <> 'X' ) OR
( CHGTYPE
= '3' AND XCHG3 <> 'X' ).
CONTINUE.
ENDIF.
* Plant is a substring of tabkey
PLANT = CHGDOC-TABKEY+21(4).
IF NOT ( XWERKS IS INITIAL
) AND NOT ( PLANT IS INITIAL ).
CHECK
PLANT IN XWERKS.
ENDIF.
EXTRACT HEADER.
ENDLOOP.
ENDSELECT.
END-OF-SELECTION.
SORT.
LOOP.
* Material
AT NEW CHGDOC-OBJECTID.
SELECT SINGLE * FROM MAKT
WHERE MATNR = CHGDOC-OBJECTID.
FORMAT INTENSIFIED ON.
SKIP. SKIP.
WRITE:/' *** Material:',
(18) CHGDOC-OBJECTID, MAKT-MAKTX.
ENDAT.
* Change type
AT NEW CHGTYPE.
FORMAT INTENSIFIED ON.
SKIP.
CASE CHGTYPE.
WHEN
'1'. WRITE:/ ' ** Change type: PARTS REVISION'.
WHEN
'2'. WRITE:/ ' ** Change type: PRICE CHANGE'.
WHEN
'3'. WRITE:/ ' ** Change type: OTHERS'.
ENDCASE.
SKIP.
ENDAT.
SHIFT CHGDOC-F_OLD LEFT DELETING LEADING
SPACE.
SHIFT CHGDOC-F_NEW LEFT DELETING LEADING
SPACE.
FORMAT INTENSIFIED OFF.
WRITE:
/ PLANT
UNDER 'Plant',
(50) CHGDOC-FTEXT
UNDER 'Field',
(45) CHGDOC-F_OLD
UNDER 'Old value',
(45) CHGDOC-F_NEW
UNDER 'New value'.
AT NEW CHGDOC-CHANGENR.
FORMAT INTENSIFIED OFF.
WRITE:
CHGDOC-CHANGENR UNDER 'Change doc',
CHGDOC-TCODE UNDER 'Tcod',
CHGDOC-USERNAME UNDER 'User name ',
CHGDOC-UDATE UNDER 'Date
' DD/MM/YY.
ENDAT.
AT END OF CHGDOC-OBJECTID.
SKIP.
ULINE.
SKIP.
ENDAT.
ENDLOOP.
TOP-OF-PAGE.
WRITE: / SY-DATUM, SY-UZEIT,
50 'ABC PTE LTD',
100 'page', SY-PAGNO,
/ SY-REPID,
48 'Change Documents Report',
100 SY-UNAME.
SKIP.
ULINE.
WRITE:/3
'Change doc',
'Tcod',
'User name
',
'Date
',
'Plant',
(50) 'Field',
(45) 'Old value',
(45) 'New value'.
ULINE.
*** End of Program
Get help for your ABAP problems
Do you have
a ABAP Question?
SAP Books
SAP Certification,
Functional, Basis Administration and ABAP Programming Reference Books
More ABAP Tips
Best regards,
SAP Basis, ABAP Programming and Other IMG Stuff
http://www.erpgreat.com
All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
All product names are trademarks of their respective
companies. The site www.erpgreat.com is in no way affiliated with
SAP AG.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
The content on this site may not be reproduced
or redistributed without the express written permission of
www.erpgreat.com or the content authors.
|