Difficulties using change pointers
Hi all.
We are currently working on a project where we will have SAP HR as the master HR table, and distribute changes to connected systems. To to this we will use change pointers to track and collect changes to master data, and create IDoc for distribution. I have a question regarding the validity-periods for all objects in SAP.
Say I activate change pointers to track changes to master data. Is the IDoc always created when you enter the information in SAP (which not necessarily is the same date as valid-from date)? This would allow the receiving system to perform other related tasks, such as setting up email accounts for a new hire, before the actual change is implemented in the receiving system. On the other hand, the receiving system does not support the valid-from date concept, so we cannot transfer the IDoc to the receiving system until the change is actually effective. A solution here would be to create an email when the data is entered in SAP, and send the email to the receiving system instead of the Idoc, stating what action occured. This would allow the receiving system owner to perform these related tasks. Is this possible? If so, it brings me to my next question.
Is it possible to create IDoc for transfer from SAP when a valid-from date becomes effective? Since the receiving system does not support valid-from dates the IDoc can only be sent when the data is actually effective.
Any help on this issue is highly appreciated.
Hi all.
We are currently working on a project where we will have SAP HR as the master HR table, and distribute changes to connected systems. To to this we will use change pointers to track and collect changes to master data, and create IDoc for distribution. I have a question regarding the validity-periods for all objects in SAP.
Say I activate change pointers to track changes to master data. Is the IDoc always created when you enter the information in SAP (which not necessarily is the same date as valid-from date)? This would allow the receiving system to perform other related tasks, such as setting up email accounts for a new hire, before the actual change is implemented in the receiving system. On the other hand, the receiving system does not support the valid-from date concept, so we cannot transfer the IDoc to the receiving system until the change is actually effective. A solution here would be to create an email when the data is entered in SAP, and send the email to the receiving system instead of the Idoc, stating what action occured. This would allow the receiving system owner to perform these related tasks. Is this possible? If so, it brings me to my next question.
Is it possible to create IDoc for transfer from SAP when a valid-from date becomes effective? Since the receiving system does not support valid-from dates the IDoc can only be sent when the data is actually effective.
Any help on this issue is highly appreciated.
Similar Messages
-
Trigger IDOC using change pointers
Dear All,
We are using change pointers for triggering IDOC's when a cost centere is creaed/changed/deleted.
We are using message type COSMAS for the same.
I have maintained all the necessary settings including Distrubution model.
When a cost centre is created or changed the IDOC is getting triggered ( After executing prgroam RBDMIDOC ).
But when we delete an cost centre the IDOC is not getting triggered.
I am able to see the releated entries in BDCP and BDCPV tables as well as CDHDR and CDPOS tables.
Can any one say how this can be achieved? When a cost centre is deleted then also IDOC should get triggered.
Regards,
SRavanWhen we remove an Cost center it physically gets deleted from the data base.There is no delete indicator as such
-
Can anyone send me link of IDOC gentn using change pointers!
Hey guys I need to learn IDOC generation using change pointers.Please send me some help notes and link and sample program on that !
Hi,
Change pointers are the mechanism through which you can send data to another SAP system or external system if there is a change happening to specific fields of master data.
For more information, please check this link.
http://www.angeli.biz/www5/cookbooks/workflow/workflow_30/docu.htm
http://help.sap.com/saphelp_nw04/helpdata/en/12/83e03c19758e71e10000000a114084/content.htm
Regards, -
Using change pointers for Process orders
Hi Experts,
We have a requirement where we need to send idocs when a process order is changed. Since process order data is a transactional data, can we still use change pointers?
We tried using the message type LOIPRO and it is giving an error saying that this message type cannot be sent with change pointers.
Can anyone guide me with the process and steps to get this done?
Thanks.For change pointer, you would have to deligate the business object with t.code SWO1. To handle it, it would take too much time to explaint.
If you use the BAdI, and call function in this way : " CALL FUNCTION 'FUNCTION_NAME' IN BACKGROUND TASK AS SEPARATE UNIT EXPORTING ....." the function would executed only after commit (when you call the funtion, it holds in a queue for commit. In roll back, it get disapeared).
User method in_update from the BAdI.
Edited by: Lior Tabib on Oct 19, 2010 4:18 PM
Edited by: Lior Tabib on Oct 22, 2010 7:27 PM -
BATMAS IDocs not gettting generated using Change Pointers
Hi,
I have scenario where I am supposed to replicate Batch between R/3 & Ware House Systems. So, for this I am using the standard BAPI to generate IDocs correctly for the batch.
Now, when I go and change the document flow i.e. make changes to the Batch using transaction MSC2N and saving a new document is getting generated.
Change Pointers are active globally and also on the message type. Now when I use the transaction BD21 to generate IDocs, they are getting created successfully for the distribution model that is existing. Now, when I add a filter in my distribution model based on Plant IDocs are not getting generated.
Can any one let me know if I missed out any configuration step or else what needs to be done in order to solve this issue.
Raghuram.Is this thread still valid? If not, please close the thread.
If so, as no response has been submitted, please rephrase your question and/or provide further information to describe your requirement.
Thanks
Jason
SDN SRM Moderator Team -
Use change pointers to send complete employee in HRMD_A
Hi
I need to distribute employee data from my SAP system. I want to send a Idoc every time a record in PA30 is changed. But know it only sends out a IDoc with the infotype that is changed, I need to distribute all infotype's.
Example: One person is changed in infotype IT0002. I need to send out not only IT0002 but also IT0006 and IT0008.
Is there a way to solve this?
Best Regards,
MortenHello Morten,
Yes, you can do it. I have done same thing in one of my interface. You need to write code into BADI.
BADI : BDCP_BEFORE_WRITE
Method : FILTER_BDCPV_BEFORE_WRITE
Basic idea is to populate internal table change_pointers with remaining infotype details.
Refer following code for reference....
BADI implemented in order to send customised data as
maintained in the distribution mdoel
METHOD if_ex_bdcp_before_write~filter_bdcpv_before_write.
Type Declaration
TYPES : BEGIN OF ts_range,
sign TYPE tvarv-sign,
option TYPE tvarv-opti,
low TYPE tvarv-low,
high TYPE tvarv-high,
END OF ts_range.
TYPES : BEGIN OF ts_group,
int_grp TYPE zthr_infty_subty-int_grp,
END OF ts_group.
Internal table
DATA:
lt_zthr_infty_subty TYPE TABLE OF zthr_infty_subty,
lt_dist_infty_subty TYPE TABLE OF t788u,
lt_groups TYPE TABLE OF ts_group.
DATA:
lt_changed_objects TYPE TABLE OF hrobjinfty.
DATA :
lr_infty TYPE RANGE OF t591s-infty, " Range for infotypes
lr_subty TYPE RANGE OF t591s-subty. " Range for subtypes.
Work Areas
DATA:
lw_change_pointers TYPE bdcpv,
lw_change_pointers1 TYPE bdcpv,
lw_text(254) TYPE c,
lw_infty TYPE ts_range,
lw_subty TYPE ts_range,
lw_groups TYPE ts_group.
DATA:
lw_zthr_infty_subty TYPE zthr_infty_subty, "Infotype & Subtype
lw_zthr_infty_subty1 TYPE zthr_infty_subty, "Infotype & Subtype
lw_dist_infty_subty TYPE t788u. "Infotypes
DATA:
lw_changed_objects TYPE hrobjinfty,
lw_changed_objects1 TYPE hrobjinfty,
lw_changed_objects2 TYPE hrobjinfty.
Local Variables
DATA:
lv_tabix TYPE sy-tabix, " Table index
lv_cpident TYPE cpident, " Change pointer no.
lv_pernr TYPE pa0000-pernr, " Employee Number
lv_tabname TYPE dd02t-tabname, " Table Name
lv_abkrs TYPE pa0001-abkrs, " Payroll Area
lv_infty(4) TYPE n. " Infotype Number
Local Constants
CONSTANTS:
lc_e TYPE t591s-sprsl VALUE 'E',
lc_i TYPE tvarv-sign VALUE 'I',
lc_x TYPE c VALUE 'X',
lc_7 TYPE c VALUE '7',
lc_p TYPE otype VALUE 'P',
lc_zhrmd TYPE edi_mestyp VALUE 'ZHRMD_A',
lc_eq TYPE tvarv-opti VALUE 'EQ',
lc_pa(2) TYPE c VALUE 'PA',
lc_begda TYPE sy-datum VALUE '19000101',
lc_02 TYPE pa0001-abkrs VALUE '02',
lc_1000(4) TYPE n VALUE '1000',
lc_2000(4) TYPE n VALUE '2000'.
Clear all local variables / internal tables / Work Areas
REFRESH : lt_groups,
lr_infty,
lr_subty,
lt_changed_objects.
CLEAR : lv_tabix,
lv_abkrs,
lw_change_pointers,
lw_dist_infty_subty,
lv_tabname,
lw_groups.
Select only otypes and infotypes from distribution model
Read change infotype / subtype data
IF NOT change_pointers[] IS INITIAL.
LOOP AT change_pointers INTO lw_change_pointers.
lw_changed_objects = lw_change_pointers-tabkey.
Filter CE Employee if Pay-Area not '02' ***
IF flt_val EQ lc_zhrmd. " Check for CE emploeyee
SELECT abkrs
INTO lv_abkrs
FROM pa0001 UP TO 1 ROWS
WHERE pernr EQ lw_changed_objects-objid
AND endda GE sy-datum
AND begda LE sy-datum
AND abkrs EQ lc_02.
ENDSELECT.
IF sy-subrc EQ 0.
APPEND lw_changed_objects TO lt_changed_objects.
ELSE.
DELETE change_pointers.
ENDIF.
ELSE.
APPEND lw_changed_objects TO lt_changed_objects.
ENDIF. " IF flt_val EQ lc_zhrmd.
ENDLOOP. " LOOP AT change_pointers INTO lw_change_pointers.
lv_cpident = lw_change_pointers-cpident.
ENDIF. "IF NOT change_pointers[] IS INITIAL.
Select only otypes and infotypes from distribution model**
Select corresponding infotypes / subtypes from table **
ZTHR_INFTY_SUBTY to create change pointers **
CALL FUNCTION 'RH_DISTRIBUTED_INFOTYPES'
EXPORTING
message_type = flt_val
check_model = lc_x
TABLES
distributed_infty_subty = lt_dist_infty_subty.
IF NOT lt_dist_infty_subty[] IS INITIAL.
Read table ZTHR_INFTY_SUBTY
SELECT mandt " Client
mestyp " Message Type
infty " Infotype
subty " Info Subtype
int_grp " Change pointer group
INTO TABLE lt_zthr_infty_subty
FROM zthr_infty_subty AS a
FOR ALL ENTRIES IN lt_dist_infty_subty
WHERE mestyp EQ flt_val
AND infty EQ lt_dist_infty_subty-infty.
IF sy-subrc EQ 0.
CLEAR : lw_changed_objects.
LOOP AT lt_changed_objects INTO lw_changed_objects.
MOVE : lw_changed_objects TO lw_changed_objects2.
AT NEW objid.
Read all groups belongs to infotype.
CLEAR : lw_groups.
REFRESH: lt_groups.
LOOP AT lt_zthr_infty_subty INTO lw_zthr_infty_subty
WHERE infty = lw_changed_objects2-infty
AND subty = lw_changed_objects2-subty.
lw_groups = lw_zthr_infty_subty-int_grp.
APPEND lw_groups TO lt_groups.
ENDLOOP. " LOOP AT lt_zthr_infty_subty INTO ....
Do not create change pointer if infotype not maintained in
table 'ZTHR_INFTY_SUBTY'.
IF sy-subrc NE 0.
DELETE change_pointers WHERE
tabkey+12(4) = lw_changed_objects2-infty
AND tabkey+16(4) = lw_changed_objects2-subty.
ENDIF. " IF sy-subrc NE 0.
Read all infotypes belongs to all above groups.
LOOP AT lt_groups INTO lw_groups.
LOOP AT lt_zthr_infty_subty INTO lw_zthr_infty_subty
WHERE int_grp EQ lw_groups-int_grp.
Check if change pointer already present
READ TABLE lt_changed_objects INTO lw_changed_objects1
WITH KEY infty = lw_zthr_infty_subty-infty
subty = lw_zthr_infty_subty-subty.
IF sy-subrc NE 0.
Check if data exist for infotype / subtype
IF lw_changed_objects-otype EQ lc_p.
CONCATENATE : lc_pa lw_zthr_infty_subty-infty
INTO lv_tabname.
SELECT SINGLE pernr
INTO lv_pernr
FROM (lv_tabname)
WHERE subty EQ lw_zthr_infty_subty-subty
AND pernr EQ lw_changed_objects2-objid.
IF sy-subrc EQ 0. " Change pointer for employee
Create change pointer for infotype / subtype combination
ADD 1 TO lv_cpident.
lw_change_pointers-cpident = lv_cpident.
lw_change_pointers-tabkey+12(4) = lw_zthr_infty_subty-infty.
lw_change_pointers-tabkey+16(4) = lw_zthr_infty_subty-subty.
lw_change_pointers-tabkey+20(8) = lc_begda.
APPEND lw_change_pointers TO change_pointers.
ENDIF. " IF sy-subrc EQ 0.
ELSE.
Create change pointer for Org Data
ADD 1 TO lv_cpident.
lw_change_pointers-cpident = lv_cpident.
lw_change_pointers-tabkey+12(4) = lw_zthr_infty_subty-infty.
lw_change_pointers-tabkey+16(4) = lw_zthr_infty_subty-subty.
lw_change_pointers-tabkey+20(8) = lc_begda.
APPEND lw_change_pointers TO change_pointers.
ENDIF. " IF lw_changed_objects-objtyp EQ lc_p.
ENDIF. " IF sy-sybrc NE 0.
ENDLOOP. " LOOP AT lt_zthr_infty_subty INTO..
ENDLOOP. " LOOP AT lt_groups INTO lw_groups.
ENDAT. " AT NEW objid.
ENDLOOP. " LOOP AT lt_changed_objects INTO lw_changed_objects.
ENDIF. " IF sy-subrc EQ 0.
ENDIF. " IF NOT lt_dist_infty_subty[] IS INITIAL.
ENDMETHOD.
But make sure you maintained remaining infotypes in distribution model. I have created table zthr_infty_subty twhere I am keeping track of all infotype and subtype for which I have to send a data.. You can hardcode values in u r program if you want / if you know the all infotype for which you have to send data.
if you still have any doubt / issues let me know your email id will mail you badi-code.
Cheers,
Nilesh -
Needs to update Infotype using ALE-Change Pointers-ECC 6.0
HR Experts,
We are using ECC 6.0. There are two SAP-HR systems.. for e.g system A and B.
We would like to send data from system A to B.
If there are any changes in system A for Infotype-0, 1, 2, 6, 8, the IDOC should be generated and it should deliver and update the infotypes in system B.
What message type I have to use?
Do I have to use change pointers?
If there is only change in any one of the above infotypes then it will generate IDOC for all above infotypes or just the changed one?
Thanks in advance for your help..
MPHi Frank,
Thanks for your quick reply!
I rewarded you with the points
How I have to choose which infotypes I have to transfer in message type HRMD_A, What tcode I have to use to configure this?
Do you know the BADI or User-Exit for enhancement of custom fields?
How I have to configure to transfer only the changed records OR transfer complete data? Where should I go to do this?
Thanks for your help in advance...
MP -
HI All,
Can you guys plz help me on change pointers.
I have activated change pointers for CREMAS and I am running program RBDMIDOC in background. But it is generating idocs properly when ever vendor is created or changed.
Change pointer is triggering for all vendors when ever vendor is created or changed.
Here my problem is that i don't want to generate all idocs i want to generate idocs for some specifi vendors only (Here we are having different types of vendors depend upon Account group.)
How can I generate specific venodr Idocs using change pointers.
Thanks & Regards
PraveenHi Praveen,
There are two filtering in IDoc.
<b>Segment Filtering</b>:
Segment filtering can be achieved using T/Code BD56. Here you can suppress a whole segment irrespective of data inside it . You have to give Message Type / Sender Prrtner / Receiver Partner.
<b>Data Filtering</b>:
Data filtering can be done in dustribution model where you can restrict whole IDOCS or partials IDOCS to be send based on data in fields inside IDOC depending on whether the segment in which you filter is at the highest level or at a lower level. For example in MATMAS if you put a filter of E1MARCM for a particular plant , only data for this plant will go and other plants will be ignored.
For your case, you can use <b>segment filter</b> to send only to specific vendor(s).
Please check this link for detail information.
http://help.sap.com//saphelp_470/helpdata/EN/0b/2a611c507d11d18ee90000e8366fc2/frameset.htm
Hope this will help.
Regards,
Ferry Lianto -
Change pointers for DELVRY03 Idoc
Hi,
I need to trigger DELVRY03 idoc whenever a delivery document is changed. I understand that one cud trigger a idoc on creation of delivery document using change pointers. But is it possible to use change pointers on edit of del. doc as well??
Also i guess delivery document is transactional data, hence message control might have to be used, but I am not aware how to configure the same for delivery documents.
If anyone could give me the steps to configure message control then it would be helpful.
Thanks in advance
Anand ChavanHI Anand
Same kind of problem discussed here...
Change pointers
Hope it will helps you...
Cheers..
Vasu
<i>** REward Points if found useful **</i> -
How to send changes in the Database Table Periodically using Change Pointe
Hi,
How to send changes in the Database Table to the external system Periodically using Change Pointers.
Thanks & Regards,
Gopi.That depends on what table you are referring to.
-
CHANGE POINTERS-IDOC,BADI
For Transaction code XD01 we have implemented BADI for definition CUSTOMER_ADD_DATA_BI.In this implementation we are retrieving Email address from database. This whole Process is going in OUTBOUND PROCESS.
I am sending data by using CHANGE POINTERS method.
How can I implement BADI for INBOUND process?
As I know that INBOUNDPROCESS is automatic how it updates the data in Inbound Process.You have to run the back ground job through the program RBDAPP01 (Transaciton BD20) to process the IDocs which you have created.
Reward if it is useful.
Thanks,
Srinivasa Rada -
For Transaction code XD01 we have implemented BADI for definition CUSTOMER_ADD_DATA_BI.In this implementation we are retrieving Email address from database. This whole Process is going in OUTBOUND PROCESS.
I am sending data by using CHANGE POINTERS method.
How can I implement BADI for INBOUND process?
As I know that INBOUNDPROCESS is automatic how it updates the data in Inbound Process.HI,
Please go through the following links for change pointers.
[http://help.sap.com/saphelp_nw04/helpdata/en/12/83e03c19758e71e10000000a114084/content.htm]
[http://abapprogramming.blogspot.com/2008/01/ale-change-pointers.html]
Reward points if helpful.
Thanks and Regards. -
Transfering data from ztable across the r/3 systems by using change pointer
hi all,
what we have to do at the field of domain level when we are transfering data from custom table across the r/3 systems by using change pointers.Hi Deepak,
Check this blog.. it gives a very good explanation on extraction of data through function modules...
/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
Hope it helps..
Regards
Manick
Message was edited by:
Manickavasagan M -
Regd. change pointers and notifications
Hi,
The question might sound a little too broad.
But bear with me...Just give me a brief overview,
of how do I go about using change pointers....
Just correct me if I am wrong.
We create a change document object in the system, or use an existing one. About pointers I am not sure.
Then, through SPRO and ALE we activate the change pointer for some message type. then....??Hi,
I haven't done this in a while, so please check my answer!
1) You activate change pointers in general in one transaction (I think it was BD61, but I'm not sure)
2) Then you activate them for certain master data (i. e. material, customer, ...) in another transaction which I don't recall atm.
3) Every time one of those master data objects is changed, the system generates a "change pointer", which you can basically just think of as an entry in a transparent table, which includes the type and key of your master data object (such as e. g. the material number).
4) You plan a background job which will go through those change pointers and which will generate a master IDoc (e. g. MATMASxx) for this data object. The change pointers are then reset (i. e. every item will only be sent once).
5) Depending on your ALE customization this master IDoc will be sent to a remote system.
You can refine this scenario using quite a bunch of different techniques. One of them is filtering (e. g. only materials with a certain material group, or based on classification etc.). Other options are reducing the Master IDoc, e. g. sending only relevant data instead of the whole master IDoc. There are even a few customer exits, if that doesn't suffice.
Hope that helps (please reward me if it does)!
Regards, Joerg -
Hi All,
Is it possible to implement change pointers without creating idocs, but with only RFC's.
Actaully i am goign through aproject document which says the interfaces are implemented using change pointers and BADI's.I was in a understandign that there would be idocs created to communicate the master data changes to other systems.
But one of the person who involved in the interface development said that there are no idocs related involved related to the interfaces, its all RFC's enabled.
Can anyone please let me know if change pointers can also be implemented using RFC.
Thanks in advcane.Hi,
this is described sufficiently in SAPHELP - in a nutshell:
Changepointers - as the name says - point at changes (change documents). Therefore the creation is together with change documents (at the end of FM CHANGEDOCUMENT_CLOSE.
Chane pointers are created for ALE message types (tcode WE81). This does not mean, that any ALE message has to follow - there might be another subsequent action.
Writing of CP must be enabled with BD50. With BD52 the tables/fields are customized. Precondition is, that the data element of the table field is enabled for change documents and that change documents are created. BADI
BDCP_BEFORE_WRITE allows further refinement (or any other action triggerd by the change). Note that both - change documents and CP - are created in update task - so you have to activate update debugging to see it in debug.
Storage of CP is in table BDCP2 (since release 7.00 former releases use BDCP and BDCPS). Read pointers with FM CHANGE_POINTERS_READ and set them to processed with CHANGE_POINTERS_STATUS_WRITE. If more than aprox. 1 Mio. pointers are read an overflow may occur - use CHANGE_POINTERS_READ_MODE_SET to set an appropriate block size and CHANGE_POINTERS_READ_INFO_GET to stirr the further processing. All FM are documented sufficiently.
Have fun!
hp
Edited by: Holger Pakirnus on Sep 14, 2011 3:58 PM
Maybe you are looking for
-
Creation of Delivery Using IDOC without reference to order
Pls suggest is there is any way to create delivery using idoc without reference to order. This is very urgent.
-
I am unable to run iTunes because I am missing MSVCR8080.dll.
After trying to install the latest version of iTunes, I am unable to open it. I get the error message that I'm missing "MSVCR8080.dll", and that I should reinstall. However, I can't find the file that I downloaded it from, and when I try to downloa
-
Unknown error -50 when syncing Ipod
Hi all, hope you can help. I have a Mac 10.4.11, and just got an 8 gb ipod touch yesterday. I am unable to sync my music and photos, I keep getting the following msg: "The Ipod Emy's Ipod cannot be synced. An unknown error occured (-50)." For informa
-
When using DDX to merge certain pdf files, we get the following error: failed: DDXM_S18005: An error occurred in the PrepareTOC phase while building <TableOfContents>. Cause given. We are running Coldfusion 9.0.1 on a Windows Server 2008 R2 64-bit se
-
Truncate table related questions
Hi Folks, Environment: 10g Rel 2 I am trying to prove the following two points by way of experimentation a, The truncate table operation will reset the high water mark (HWM) to the first usable data block in the table segment # Take a HWM snap shot b