Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

CDHDR and CDPOS : fields

Former Member
0 Likes
6,353

Hi

Does anybody have a list of field and it's descriptions.

I want the changes happening to fields on the purchase orders and purchase reqs.

1 ACCEPTED SOLUTION
Read only

former_member186741
Active Contributor
0 Likes
4,117

there are a number of change document classes that relate to po's. EINKBELEG is one. The best way to find a list might be to browse CDHDR for the transaction code ME21N and ME22N (and maybe ME21/ME22 depending on what release you're on).

5 REPLIES 5
Read only

Former Member
0 Likes
4,117

Hi,

The change documents are divided into classes bases on the documents. So, the PO and the PR should have a document class type which you can find the from the CDHDR table.

CDHDR table will have the header record as to when the table was changed and actual changes like the old value and new value can be found in the CDPOS table. These two tables are linked by a Key.

By default the changed documents are not activated for all the fields. This is usually done at the Data element level and can be done using SCDO transaction and checking the relevant flag at the data element level in SE11.

Regards,

Ravi

Note : Please mark all the helpful answers

Read only

former_member186741
Active Contributor
0 Likes
4,118

there are a number of change document classes that relate to po's. EINKBELEG is one. The best way to find a list might be to browse CDHDR for the transaction code ME21N and ME22N (and maybe ME21/ME22 depending on what release you're on).

Read only

Former Member
0 Likes
4,117

Hi,

Try using the std SAP FM to get the required data you need.

   
   Loop at so_ekko.
    CALL FUNCTION 'CHANGEDOCUMENT_READ_HEADERS'
        EXPORTING
          DATE_OF_CHANGE             = DATE_FROM
          OBJECTCLASS                = <EKKO- OBJECT CLASS>          OBJECTID                   = PO_EKKO-EBELN
          TIME_OF_CHANGE             = TIME_UNTIL
          DATE_UNTIL                 = DATE_UNTIL
          USERNAME                   = ' '
        TABLES
          I_CDHDR                    = ITAB_CDHDR
        EXCEPTIONS
          NO_POSITION_FOUND          = 1
          WRONG_ACCESS_TO_ARCHIVE    = 2
          TIME_ZONE_CONVERSION_ERROR = 3
          OTHERS                     = 4.
      IF SY-SUBRC NE 0.
        CONTINUE.
      ENDIF.
      LOOP AT ITAB_CDHDR WHERE USERNAME IN S_CHABY.
        REFRESH IT_CDSHW.
        CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS'
          EXPORTING
            CHANGENUMBER            = ITAB_CDHDR-CHANGENR
          TABLES
            EDITPOS                 = IT_CDSHW
          EXCEPTIONS
            NO_POSITION_FOUND       = 1
            WRONG_ACCESS_TO_ARCHIVE = 2
            OTHERS                  = 3.
        IF SY-SUBRC EQ 0.
          PERFORM GET_ACTION .
        ENDIF.
      ENDLOOP.
    ENDLOOP.

Cheers

VJ

Read only

Former Member
0 Likes
4,117

You can also use:


parameters: p_ebeln   LIKE ekko-ebeln.

DATA: BEGIN OF change_doc_int OCCURS 0.
        INCLUDE STRUCTURE cdred.
DATA: END OF change_doc_int.
data: object(90).


SELECT SINGLE * FROM  ekko              " PO header
  WHERE  ebeln  = p_ebeln.

CLEAR: change_doc_int.
REFRESH change_doc_int.
object = ekko-ebeln.

CALL FUNCTION 'CHANGEDOCUMENT_READ'
     EXPORTING
          objectclass             = 'EINKBELEG'
          objectid                = object
     TABLES
          editpos                 = change_doc_int
     EXCEPTIONS
          no_position_found       = 01
          wrong_access_to_archive = 02.

Rob

Read only

Former Member
0 Likes
4,117

HI

GOOD

It is possible to generate a complete list of purchase document releases with the purchase document number (requisitions and orders), releaser, release date and release time. * First, create an Infoset using transaction SQ02 directly reading from table CDPOS and create an additional table: CDHDR. If you are releasing purchase requsitions at the item level, it is convenient to create an additional field (PURPS LIKE EBAN-BNFPO) to capture the item number.

GO THROUGH THIS CODE

-


Mass Display of Purchase Orders

Submitted by webmaster at www.sap-img.com

*

  • Mass display or print Purchase Order History

*

  • You can request report by :

  • 1. Change date

  • 2. User Name

  • 3. Purchase Order Number

  • 4. Vendor Code

*

  • Written by : SAP Basis, ABAP Programming and Other IMG Stuff

  • www.sap-img.com

*

REPORT ZPOCHANGE LINE-SIZE 132 NO STANDARD PAGE HEADING

LINE-COUNT 065(001)

MESSAGE-ID VR.

TABLES: DD04T,

CDHDR,

CDPOS,

DD03L,

DD41V,

T685T,

VBPA,

TPART,

KONVC,

EKKO.

SELECT-OPTIONS: XUDATE FOR CDHDR-UDATE,

XNAME FOR CDHDR-USERNAME,

XEBELN FOR EKKO-EBELN,

XLIFNR FOR EKKO-LIFNR.

SELECTION-SCREEN SKIP.

  • TEXT-001 - Sorting Sequence

SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.

PARAMETERS: SUDATE RADIOBUTTON GROUP R1,

SNAME RADIOBUTTON GROUP R1,

SOBID RADIOBUTTON GROUP R1.

SELECTION-SCREEN END OF BLOCK BLK1.

DATA: WFLAG,

WCHANGENR LIKE CDHDR-CHANGENR.

DATA: INDTEXT(60) TYPE C.

DATA: BEGIN OF ICDHDR OCCURS 50.

INCLUDE STRUCTURE CDHDR.

DATA: END OF ICDHDR.

DATA: BEGIN OF ICDSHW OCCURS 50.

INCLUDE STRUCTURE CDSHW.

DATA: END OF ICDSHW.

DATA: BEGIN OF EKKEY,

EBELN LIKE EKET-EBELN,

EBELP LIKE EKET-EBELP,

ETENR LIKE EKET-ETENR,

END OF EKKEY.

DATA: BEGIN OF ITAB OCCURS 50,

BEGIN OF EKKEY,

EBELN LIKE EKET-EBELN,

EBELP LIKE EKET-EBELP,

ETENR LIKE EKET-ETENR,

END OF EKKEY,

CHANGENR LIKE CDHDR-CHANGENR,

UDATE LIKE CDHDR-UDATE,

UTIME LIKE CDHDR-UTIME,

USERNAME LIKE CDHDR-USERNAME,

CHNGIND LIKE CDSHW-CHNGIND,

FTEXT LIKE CDSHW-FTEXT,

OUTLEN LIKE CDSHW-OUTLEN,

F_OLD LIKE CDSHW-F_OLD,

F_NEW LIKE CDSHW-F_NEW,

END OF ITAB.

DATA: OLD_OBJECTID LIKE CDHDR-OBJECTID.

FIELD-SYMBOLS: <F_OLD>, <F_NEW>.

SELECT * FROM EKKO WHERE EBELN IN XEBELN AND

LIFNR IN XLIFNR.

CLEAR CDHDR.

CLEAR CDPOS.

CDHDR-OBJECTCLAS = 'EINKBELEG'.

CDHDR-OBJECTID = EKKO-EBELN.

PERFORM GETCHGDOCS.

ENDSELECT.

IF SUDATE = 'X'.

SORT ITAB BY UDATE EKKEY-EBELN CHANGENR EKKEY-EBELP

EKKEY-ETENR.

ELSEIF SNAME = 'X'.

SORT ITAB BY USERNAME EKKEY-EBELN CHANGENR EKKEY-EBELP

EKKEY-ETENR.

ELSE.

SORT ITAB BY EKKEY-EBELN CHANGENR EKKEY-EBELP EKKEY-ETENR.

ENDIF.

LOOP AT ITAB.

CLEAR: INDTEXT, EKKEY.

CASE ITAB-CHNGIND.

WHEN 'U'.

INDTEXT(50) = ITAB-FTEXT.

INDTEXT+51 = TEXT-020.

CONDENSE INDTEXT.

WHEN 'D'.

INDTEXT = TEXT-021.

WHEN 'E'.

INDTEXT(5) = ITAB-FTEXT.

INDTEXT+51 = TEXT-021.

CONDENSE INDTEXT.

WHEN 'I'.

INDTEXT = TEXT-022.

ENDCASE.

RESERVE 4 LINES.

IF WCHANGENR NE ITAB-CHANGENR.

WCHANGENR = ITAB-CHANGENR.

EKKEY = ITAB-EKKEY.

WRITE:/ ITAB-UDATE UNDER 'Change Date',

ITAB-UTIME UNDER 'Time',

ITAB-USERNAME UNDER 'User Name',

ITAB-EKKEY-EBELN UNDER 'PO No',

ITAB-EKKEY-EBELP UNDER 'Item',

ITAB-EKKEY-ETENR UNDER 'Sch No',

INDTEXT UNDER 'Changes'.

ELSEIF ITAB-EKKEY NE EKKEY.

WRITE:/ ITAB-EKKEY-EBELP UNDER 'Item',

ITAB-EKKEY-ETENR UNDER 'Sch No',

INDTEXT UNDER 'Changes'.

ENDIF.

CASE ITAB-CHNGIND.

WHEN 'U'.

ASSIGN ITAB-F_OLD(ITAB-OUTLEN) TO <F_OLD>.

ASSIGN ITAB-F_NEW(ITAB-OUTLEN) TO <F_NEW>.

WRITE: / TEXT-023 UNDER 'Changes',

<F_OLD>.

WRITE: / TEXT-024 UNDER 'Changes',

<F_NEW>.

WHEN 'E'.

ASSIGN ITAB-F_OLD(ITAB-OUTLEN) TO <F_OLD>.

WRITE: TEXT-023 UNDER 'Changes',

<F_OLD>.

ENDCASE.

SKIP.

ENDLOOP.

TOP-OF-PAGE.

WRITE:/ SY-DATUM,SY-UZEIT,

50 'P U R C H A S E O R D E R H I S T O R Y',

120 'Page', SY-PAGNO.

WRITE: / SY-REPID,

60 'Purchase Orders Changes'.

SKIP.

ULINE.

IF SUDATE = 'X'.

WRITE:/001 'Change Date',

014 'Time',

024 'User Name',

038 'PO No',

050 'Item',

057 'Sch No',

065 'Changes'.

ELSEIF SOBID = 'X'.

WRITE:/001 'PO No',

013 'Item',

020 'Sch No',

028 'Change Date',

041 'Time',

051 'User Name',

065 'Changes'.

ELSE.

WRITE:/001 'User Name',

015 'Change Date',

028 'Time',

038 'PO No',

050 'Item',

057 'Sch No',

065 'Changes'.

ENDIF.

ULINE.

FORM GETCHGDOCS.

CALL FUNCTION 'CHANGEDOCUMENT_READ_HEADERS'

EXPORTING

DATE_OF_CHANGE = CDHDR-UDATE

OBJECTCLASS = CDHDR-OBJECTCLAS

OBJECTID = CDHDR-OBJECTID

TIME_OF_CHANGE = CDHDR-UTIME

USERNAME = CDHDR-USERNAME

TABLES

I_CDHDR = ICDHDR

EXCEPTIONS

NO_POSITION_FOUND = 1

OTHERS = 2.

CHECK SY-SUBRC EQ 0.

DELETE ICDHDR WHERE CHANGE_IND EQ 'I'.

CHECK NOT ICDHDR[] IS INITIAL.

LOOP AT ICDHDR.

CHECK ICDHDR-UDATE IN XUDATE.

CHECK ICDHDR-USERNAME IN XNAME.

CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS'

EXPORTING CHANGENUMBER = ICDHDR-CHANGENR

IMPORTING HEADER = CDHDR

TABLES EDITPOS = ICDSHW

EXCEPTIONS NO_POSITION_FOUND = 1

OTHERS = 2.

CHECK SY-SUBRC EQ 0.

LOOP AT ICDSHW.

CHECK ICDSHW-TEXT_CASE EQ SPACE.

MOVE-CORRESPONDING ICDSHW TO ITAB.

MOVE-CORRESPONDING ICDHDR TO ITAB.

MOVE ICDSHW-TABKEY+3 TO ITAB-EKKEY.

APPEND ITAB.

ENDLOOP.

ENDLOOP.

ENDFORM.

*

  • END OF PROGRAM

GO THROUGH THIS LINK

http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.wbia_adapters.doc/d...

THANKS

MRUTYUN