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

Regarding Change document read

Former Member
0 Likes
2,218

Hi All,

Am using Change Document read function module to find out the changed material details. i want to fetch the plant from marc to filter the records am having the only relationship i.e material to fetch the details from marc and mara,with this i can't filter because for one material four plants will be there.so am using the tabkey from that function module to fetch the plant i don't think is this a right way can anyone explain how i can get a plant.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,150

Think you query is misleading...

As per my understanding you are trying to find all changes for materials in a specific plant right????

If so below code can give you some idea:


TABLES: mara.

SELECT-OPTIONS: so_date FOR mara-laeda. " Date Criteria
PARAMETERS: p_werks TYPE werks_d obligatory. " Plant

CONSTANTS: c_tcode TYPE sytcode VALUE 'MM02'.

TYPES: BEGIN OF ty_marc,
         matnr TYPE matnr,
         werks TYPE werks_d,
       END OF ty_marc.

DATA: i_cdocs TYPE STANDARD TABLE OF cdred,  " Change Docs
      wa_cdocs TYPE cdred,
      i_marc TYPE STANDARD TABLE OF ty_marc, " Plant Existence
      wa_marc TYPE ty_marc.

START-OF-SELECTION.

" Read Change documents
  CALL FUNCTION 'CHANGEDOCUMENT_READ'
    EXPORTING
      date_of_change             = so_date-low
      objectclass                = 'MATERIAL'
      date_until                 = so_date-high
    TABLES
      editpos                    = i_cdocs
    EXCEPTIONS
      no_position_found          = 1
      wrong_access_to_archive    = 2
      time_zone_conversion_error = 3
      OTHERS                     = 4.

" Delete documents where materials are not changed
  DELETE i_cdocs WHERE tcode NE c_tcode.

  CHECK NOT i_cdocs[] IS INITIAL.

* Check for Material existence in Plant
  SELECT matnr werks INTO TABLE i_marc
         FROM marc
         FOR ALL ENTRIES IN i_cdocs
         WHERE matnr = i_cdocs-objectid(18)
         AND   werks = p_werks.


  LOOP AT i_cdocs INTO wa_cdocs.

    READ TABLE i_marc INTO wa_marc
       WITH KEY matnr = wa_cdocs-objectid.
    IF sy-subrc EQ 0.  " Material Defined in specified plant
      " Further Processing statements
    ENDIF.

  ENDLOOP.

Correct me if my understanding is wrong.

Regards

Eswar

4 REPLIES 4
Read only

Former Member
0 Likes
1,150

Check out how the data for change documents is stored - I browsed tables CDHDR and CDPOS for Change Document Object "MATERIAL" and it seems that in CDPOS the entries for changes to MARC are stored with a "Table Key" value made up of the Client, Material Number, and Plant. So this should show you which plants the details were changed for. I believe the change document read function module returns the data from these tables, and should therefore have this level of detail available.

Andrew

Read only

Former Member
0 Likes
1,150

Dear ,

Use this FM for fetch the Change document read CHANGEDOCU_CDPOS_READ and pass arguments accordingly ,

Objectid - Guid

Tabname - Marc

Fname - Plant

Regards,

Kumaresan P

Read only

Former Member
0 Likes
1,151

Think you query is misleading...

As per my understanding you are trying to find all changes for materials in a specific plant right????

If so below code can give you some idea:


TABLES: mara.

SELECT-OPTIONS: so_date FOR mara-laeda. " Date Criteria
PARAMETERS: p_werks TYPE werks_d obligatory. " Plant

CONSTANTS: c_tcode TYPE sytcode VALUE 'MM02'.

TYPES: BEGIN OF ty_marc,
         matnr TYPE matnr,
         werks TYPE werks_d,
       END OF ty_marc.

DATA: i_cdocs TYPE STANDARD TABLE OF cdred,  " Change Docs
      wa_cdocs TYPE cdred,
      i_marc TYPE STANDARD TABLE OF ty_marc, " Plant Existence
      wa_marc TYPE ty_marc.

START-OF-SELECTION.

" Read Change documents
  CALL FUNCTION 'CHANGEDOCUMENT_READ'
    EXPORTING
      date_of_change             = so_date-low
      objectclass                = 'MATERIAL'
      date_until                 = so_date-high
    TABLES
      editpos                    = i_cdocs
    EXCEPTIONS
      no_position_found          = 1
      wrong_access_to_archive    = 2
      time_zone_conversion_error = 3
      OTHERS                     = 4.

" Delete documents where materials are not changed
  DELETE i_cdocs WHERE tcode NE c_tcode.

  CHECK NOT i_cdocs[] IS INITIAL.

* Check for Material existence in Plant
  SELECT matnr werks INTO TABLE i_marc
         FROM marc
         FOR ALL ENTRIES IN i_cdocs
         WHERE matnr = i_cdocs-objectid(18)
         AND   werks = p_werks.


  LOOP AT i_cdocs INTO wa_cdocs.

    READ TABLE i_marc INTO wa_marc
       WITH KEY matnr = wa_cdocs-objectid.
    IF sy-subrc EQ 0.  " Material Defined in specified plant
      " Further Processing statements
    ENDIF.

  ENDLOOP.

Correct me if my understanding is wrong.

Regards

Eswar

Read only

Former Member
0 Likes
1,150

thanks