‎2007 Sep 06 7:04 AM
hi experts
how to read cdpos table data for a particular sales order and line item,
i want to read data by table = vbap and field = ABGRU.
is there any there reading criteria to improve performance.
does it create any performance problem while reading?
if it so, how to avoid it ?
Thanks in advance
Regards
Rajaram
‎2007 Sep 06 7:06 AM
refer this program
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.
‎2007 Sep 06 7:06 AM
refer this program
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.
‎2007 Sep 06 7:16 AM
can you pls tell me,
will it create any performance problem while reading this table based on table name = vbap field name = abgru.
regards
Rajaram