Call FM of Change Document
Hi experts,
I have created a Change Document Object for about 5 tables including 2 Z-tables.
Before I record the changes, one of the tables may have different kinds of changes.
For example, some of the entries are inserted, some are updated, and others maybe deleted. Now my question is that how can I recode all these changes which belong to different kinds in one go by calling the FM generated automatically after creating the Change Document Object? Because there are some other tables whose changes also need to be recorded, I can not call the FM several times. Does any1 have some ideas about this?
Thanks in advance. Points will be rewarded.
Vincent
Hi Danijela,
You can use FM IQAPI_WORD_WRAP to split your text across multiple lines.
Regards,
Raj
Similar Messages
-
Hi Experts,
I wish to thank anybody replying this message first.
I have some questions to be cleared, may be you can provide me some help.
To log changes on specific fiekds from a custom table, one has to use SCDO to generate change object and fct modules.
These fct modules shoudl be called from program to log changes in tables CHDR and CDPOS.
In the process of modifying a PO (me22n), I have several additional custom fields added in SAP table EKPO. These fields are available in PO trhough a custom tab on PO screen. I want to log the changes on these custom fields. The data elements of these fields are checked within change document check box. I modify the PO on several fields including custom fields , examine the content of CHDR and CDPOS and then find out that changes are logged for SAP EKPO fields modified but not for the EKPO custom fields.
So here is my question:
Do I have to call the generated changed document fct modules from an user exit or BADI prior to saving to have the log changes or SAP handle it automatically ? If Yes, then which user exit or BAdi should I use ?
Thank you for your time
Dean Q.I found that SAP log the changes aumatically
Thank u all -
How to use change document object ?
Friends,
I am learning to use the Change Document object for one of my Z table. I have created a change doc object using SCDO. I have now written a test report in which i am issuing the SELECT statement for fetching old and new values from the Z table and passing them to the FM generated by SCDO.
I am not able to see the changes in the CDHDR and CDPOS tables. I am doubtful abt the values being passed to the FM. Here are the values i am passing:
CALL FUNCTION 'YTEST_WRITE_DOCUMENT'
EXPORTING
objectid = 'YTEST'
tcode = 'se38'
utime = sy-uzeit
udate = sy-datum
username = sy-uname
PLANNED_CHANGE_NUMBER = ' '
OBJECT_CHANGE_INDICATOR = 'U'
PLANNED_OR_REAL_CHANGES = ' '
NO_CHANGE_POINTERS = ' '
UPD_ICDTXT_YTEST = 'U'
n_ztest_cle = wa_ztest_cle
o_o_ztest_cle = o_ztest_cle
UPD_ZTEST_CLE = ' '
tables
icdtxt_ytest = itab_cdtxt.
Is the object ID the same as the Change Document Object name ??
Please help.
Thanks,
Ram.Well, i found a way out for the problem i was facing. I was not setting the "UPD_ZTEST_CLE " FM parameter. When i set it to 'U', the changes got reflected in the CDHDR and CDPOS tables.
Can i reward myself as i solved this by myself ??? -
Problem while generating Update progam for a Change Document Object
Hi,
I'm trying to deal with Change Document concept in a R/3 4.6C environment and to establish new Change Document object for my (Z)-table. I haven't using any namespace and created object with name ZTEST. Following the online documentation I came to the point, where I have to generate include program. I made all the nessesary inputs (using Z prefix) but faced
"Function module name is reserved for SAP"
Creating everything similarily using some of our registered namespaces (/somenamespace/) I succeed to generate the Update program and to integrate it in my Z-programs as well.
My question is: is it possible to use Change Document Object-names without predefined namespace - being a regular customer developer, but not an SAP developer - means, if I am allowed to manage programs in the customer namespace (Z,Y, X) only. If yes, how to do this?
Further (I decided not to open a new thread) - generated Update program uses
CALL FUNCTION 'xxxxx' IN UPDATE TASK
for creation of Change Numbers for generated Change Document Object. This CALL doesn't work when I implemented it in my Z-program, but when changed (IN UPDATE TASK was commented) - everything goes well and the system creates records in CDHDR/CDPOS tables for my object class and table.
Why is that? According to the documentation I shoud only fill appropriate variables for the Change Document Object (class, tr.code, etc.) and call generated FM, nothing is pointed out about any possible problems? Am I doing something wrong?
Well, to be precise, I think I have to give a sample:
1. I have a sample Z-table with few fields (their data elements are marked as Change-Document relevant).
2. Using own z-progam I created a new record for this z-table. Also fill all the nessesary variables included in the interface of generated FM for Change Document Object (for example - FM-mane CD_CALL_my_object).
3. I call the CDO FM.
4. Check what is happening (directly in both tables CDHDR/CDPOS or using FM CHANGEDOCUMENT_READ).
Further, I perfom the steps from 1 to 4 updating the created in previous loop record in my Z-table.
In both cases if the FM 'CD_CALL_my_object' is called IN UPDATE TASK nothing happens, but in case of direct call (without addition IN UPDATE TASK) the system behaves as expected. Well, obliously I can change the generated code for our production needs, but it doesn't seems to be the correct decision - in case of next possible modification of the Change Document Object definition, respectively in need of re-generation of the code.
Any hints are wellcome.
Thanks in advance.
Ivaylo Mutafchiev
Edited by: Ivaylo Mutafchiev on Jan 24, 2008 10:24 AM"IN UPDATE TASK" resolved by myself. The one should explicitly call 'COMMIT WORK' from Z-program after CALL FUNCTION '...' IN UPDATE TASK in order to get changes in the CDHDR/CDPOS commited. The key in this issue for me was to check the documentation of CALL FUNCTION :-).
Regards,
Ivo -
Problem in multiple item for change document objects
hi gurus,
I have created change document object in tcode SCDO . It had giveN function module /TMW/CHG_OBJ1_WRITE_DOCUMENT.
CDPOS AND CDHDR tables are updated with changed data. now i am trying to display all old and new data in se38 program.
here my problem is when ever i changed multiple item data , my program showing first item details only . I need to show all item data when ever i changed parallel . please help me where is my problem .
thank youI think this is issue with function module generated thru SCDO Please check in your function module inside that the following function modules are used
CALL FUNCTION 'CHANGEDOCUMENT_OPEN'
CALL FUNCTION 'CHANGEDOCUMENT_MULTIPLE_CASE'
CALL FUNCTION 'CHANGEDOCUMENT_CLOSE'
if not then there may be issue with SCDO
a® -
Problem while creating change document
hi all
i am creating change document for master data like project type , project applicant
but i am unable to complete it as i am very new to ABAP
can any one give me step-by-step procedure to do the same?
I have followed the procedure given in sap Liabrary i.e.
1 - Define the change document object
2 - Check in the Dictionary, whether the data elements of the fields which are to
be logged are flagged appropriately.
3 - Generate the update.
4 - Program the appropriate calls in your program.
But then i got stucked on point 4...what exactly I need to do in that?
Regards
SheetalHi,
The table you have used is having the key which comprises both MANDT and ID. However, while writing the code you must have used only the ID. The system takes MANDT and ID both as the key fields.
This may be the reason of the error you are encountering.
Thanks,
Jyoti -
WHAT IS USE OF CHANGE DOCUMENT FIELD?
HI experts,
go like this,
mara->matnr->dataelement of matnr->further charecteristics ->change document
in this if we select change document field what will be occured , if we deselect thatfield what will be the changes and where will be reflected that changes.
thanks,Hi,
It is used as an Indicator for writing change documents
<b>Use</b>
This flag is used to create change documents for business objects.
You can create a change document object for a business object. This change document object contains the tables in which the data of the business object is stored. Function modules that are called in the corresponding application programs and that log the changes at runtime can be generated from the change document object.
Logging only takes place if the fields whose contents were changed refer to a data element that was flagged as relevant for the change document.
You can go to the maintenance screen for change documents from the initial screen of the ABAP Workbench with Development -> Other tools -> Change documents.
Regards,
Padmam. -
KNA1.CREATED with Event based on Change Documents -- No Receiver
Good morning experts,
I set up a subtype of Object KNA1 ZKNA1 with 2 events CREATED and CHANGED, KNA1 is delegated to ZKNA1.
Additionally, I set up two ansynchronous methods "CREATEASYNCHRON" and "CHANGEASYNCHRONE" in ZKNA1, both are a simple CALL TRANSACTION, these methods should be terminated by the two mentioned events.
I added 2 entries in TA SWEC for triggering the both events when change documents are posted --> works fine, everytime I create or change a customer the systems creates the linked event, the event container is filled with the customer number.
Afterwards, I set up 2 standard tasks for the two mentioned methods with terminating event CREATED and CHANGED, the Instance Linkage was done in TA SWEINST and is active.
My problem now is that the event is triggered correctly, but the tasks are not getting terminated, the event trace also tells me that that there would be no event receiver entered.
Can you tell me what I did wrong? I made this for a lot of other workflows before and everything worked fine, so I don't understand what's the problem...
Thanks for your support!Hi,
I am not sure if this will work...
Simulate 1 event using SWUO...
Under Potential tasks to be terminated... find your task ... right click-> Event Linkage -> Select "Event Linkage activated" ...
and try once more ....
Regards
Gautam -
How to use change document for AUSP table in MM02?
Hi All,
I am working with MM02. When I change the characteristic value in classification view, I want that change to be logged in CDHDR table.
I have created a change document object for AUSP table and generated update program for that. Now that program needs to be called in some <b>badi</b> or <b>exit</b> which can be called upon saving in MM02 after changing the values in classification view.
Can anybody give me some idea where can I call that program.
Any help wud be appreciated.
Regards,
PragyaHi
You have 2 possible solutions to meet this requirement.
Option 1: Implement point # 3 of SAP OSS Note 943559
Option 2: This is a workaround solution to skip standard SAP check for activation of change documents of Classification system and allow entries to be written into CDHDR and CDPOS table through MM01 / MM02 / CL20N tcode
Solution: Implement an implicit enhancement inside include program 'LCLVFF10', at end of subroutine 'FILL_REDUN' i.e. line number '337'.
Here modify the entry of table 'REDUN' where OBTAB = 'MARA' and set the flag 'AEBLGZUORD' equal 'X'. This will activate the change document creation for Change Object 'CLASSIFY' in CDHDR and CDPOS tables.
Sample Code
LOOP AT redun WHERE obtab EQ 'MARA'.
redun-aeblgzuord = 'X'.
ENDLOOP. -
Unable to proceed in change document are not updating in CDHD, CDPOS tables
Hi all,
This is a question related to Change document.
I created one custom Change document object ZBUDGETS.
As I am trying to place a trigger on FMIT (Total Funds Management) table I created a Change document object ZBUDGETS.
I included some of the authorized fields from FMIT table on which we placed the trigger.
And of course all those fields are change document enabled in the data element level. I generation of the update program was completed. And I got the function module zbudgets_write_document along with some include programs and structure.
Everything is fine, But i am unable to get this change document generated information to these tables are CDHDR and CDPOS.
the problem is when I make any expenditure like PO Posting, it will be logging in the FMIT table and the respective fields also updating. With this the Change document object should trigger and it should send the record in CDHDR and CDPOS tables. This is not happening. If the records are getting updated in the CDHDR and CDPOS tables I can use those include programs and function modules in my program to retrieve the changes in FMIT table.
Since I am unable to proceed further since the documents are not updating in CDHDR and CDPOS tables.
PrabhakarCDHDR and CDPOS will not be populated with entries only by creating the change document object.Change documents will be written to CDHDR and CDPOS tables only if the function zbudgets_write_document is called in the transaction which updates FMIT.
You need to find an use exit in the transaction updating FMIT and call the function zbudgets_write_document in that exit.
Refer the below link http://help.sap.com/saphelp_47x200/helpdata/en/2a/fa01b6493111d182b70000e829fbfe/content.htm
-Kiran
*Please reward useful answers -
Regarding Workflow trigerring using change document
Hi all,
I am trying to trigger a workflow using change document object.
I want that to trigger the workflow on the material master change through MM02.
I have created a business object ZBUS1001 and wanted that on change of material master
the custom change document object should call the workflow
I went through all the material avaialable over SDN ,but can not find a change object for change in material master through MM02 for std business object BUS1001.
Please tell me how to find one.
Please reply if any one of you have some solution.Hi,
Thanks for your reply.
I am using an existing change object - MATERIAL_N of Business Object - BUS1001 and the event
BASICMATERIALCHANGED.
I have mentioned the details in the tcode SWEC.
And even in the workflow i have given the start of event as the BUS1001 and event BASICMATERIALCHANGED.
But workflow not called .
Do we need to maintain an entry in SWED?
If yes then in function module column what we need to mention. -
Use of Function CREDITLIMIT_CHANGE does not create change documents
Hello,
I've been using this FM in a customer program for some time, now, but it was called to my attention that no change documents where being kept, aswell as no administrative data.
Can't seem to find any SAP Note regarding this issue.
Is this behaviour expected?
Thank you
Dwas not setting UPDATEFLAG in adtelx
-
Change Document Object ICDTXT_ include name
Hi fellow developers.
What is the purpose of each field in ICDTXT_<include name> when preparing to call the function F<include name>_WRITE_DOCUMENT? For example, I have an IT called ICDTXT_ZCD_CONFIG_CV and this is how I am filling the fields:
UPD_ICDTXT_ZCD_CONFIG_CV = UPD_Z00_CONFIG_CV.
wa_log_info-teilobjid = 'Producto'.
wa_log_info-textart = ' '.
wa_log_info-textspr = sy-langu.
wa_log_info-updkz = UPD_Z00_CONFIG_CV.
append wa_log_info to ICDTXT_ZCD_CONFIG_CV.
I am not sure at all what to set in textart. And teilobjid is the table key as far as I know. But I want to be sure I am doing this correctly.
Thank you for your time.Yes you must call the FM via the generated include in your update program, change document are programmatically managed. in the "SAVE" form use some CALL FUNCTION IN UPDATE TASK to call the FM that updates database and the FM that creates change documents - look at [Update Techniques|http://help.sap.com/saphelp_nw04/helpdata/en/41/7af4cba79e11d1950f0000e82de14a/frameset.htm] and [BC414|http://www.sap.com/services/education]
- without programming you can fill DBTABLOG via SE11 options
- Also look at [Defining Change Document Objects|http://help.sap.com/SAPHELP_nwmobile71/helpdata/EN/2a/fa018f493111d182b70000e829fbfe/frameset.htm] and [Integrating the functionality into the program|http://help.sap.com/SAPHELP_nwmobile71/helpdata/EN/2a/fa01b6493111d182b70000e829fbfe/frameset.htm]
Regards,
Raymond -
Error in multiple operation with change document object for custom table
hi all,
I have developed a change document object for a custom table ZTEST and developed a report program for insertion, updation & deletion..everything works fine if I do only once ie. if I created only 1 entries. If I created 2 new entries , I am getting an Error "DUPREC:POS&Z3RL_TAB&Z3RL_TAB" and EXIT the transaction.
why I am getting this error??? is it not possible to do multiple operation with the change document???
kindly help.
Edited by: JaiKarthik on Apr 7, 2010 6:20 AMLOOP AT ts_mod INTO wa_mod.
READ TABLE <i_itab> INTO <wa_tab> INDEX wa_mod-row.
* Select the existing entries in table Z3RL for change history
SELECT SINGLE * FROM z3rl
INTO wa_z3rl
WHERE vkorg = <wa_tab>+3(4)
AND zzkunnr = <wa_tab>+7(10).
* Move the old entries
IF sy-subrc = 0.
CLEAR ls_z3rl.
ls_z3rl = wa_z3rl.
ENDIF.
* Update the table
MODIFY (viewname) FROM <wa_tab>.
CLEAR wa_z3rl.
wa_z3rl-mandt = <wa_tab>+0(3).
wa_z3rl-vkorg = <wa_tab>+3(4).
wa_z3rl-zzkunnr = <wa_tab>+7(10).
* Populate change tables
CLEAR wa_change.
wa_change-teilobjid = 'Z3RL'.
wa_change-textart = 'TEST_2'.
wa_change-textspr = 'EN'.
wa_change-updkz = 'U'.
APPEND wa_change TO ts_change.
*call the fM to log the values in CDHDR table.
CALL FUNCTION 'Z3RL_WRITE_DOCUMENT'
EXPORTING
objectid = 'Z3RL'
tcode = sy-tcode
utime = sy-uzeit
udate = sy-datum
username = sy-uname
planned_change_number = ' '
object_change_indicator = 'U'
planned_or_real_changes = 'U'
no_change_pointers = 'U'
upd_icdtxt_z3rl= 'U'
n_z3rl= wa_z3rl
o_z3rl = ls_z3rl
upd_z3rl= 'U'
lv_opt = ' '
TABLES
icdtxt_z3rl= ts_change.
CLEAR : wa_mod, <wa_tab>.
ENDLOOP.
Edited by: JaiKarthik on Apr 7, 2010 6:49 AM -
Change documents for customer Z table - serious help wanted
Hi all,
I am no beginner and I don't expect any comments from beginners.
Situation: My customer wants to replace the material valuation transactions MRN1 MRN2 MRN3 due to bad performance and locking problems with own developed programs.
The valuation results will be stored in a customer Z-Table on a monthly base. For auditing and transparency purposes, this Z-table has to get a change object and the update routines will have to write change documents.
Due to the expected size of the new Z-table, it is not advisable to simply switsch on table logging.
In this huge project (and in none I participated!) nobody ever implemented the change document process for a Z-table. <b>BUT EVERYBODY CAN TELL YOU THI IS NO PROBLEM AT ALL.</b>
I read some documentation at SAP and serached for threads or blogs here. I could not find anything desribing that in depth.
So before I start, I'd be happy to get some hints from people who created own change documents and implemented the process. Links to documentation and other helpful pages are also welcome.
If I can keep the process simple, I'd like to create a BLOG on this - because I think, in the future it will get more and more difficult to pass the auditing process with undocumented features and uncontrolled table changes.
TIA.
Regards,
ClemensHi,
Please check this thread.
http://www.sapdevelopment.co.uk/tips/changedoc/cd_createch.htm
Once you create your change document object using generate update pgm option then please check the WRITE document fm.
I have done this long back i am updating CDHDR and CDPOS for 2 table YATT and YATTPLANTS. Here YATT have single record (header table) and YATTPLANTS have multiple records (item table)
function yatt_write_document .
call function 'CHANGEDOCUMENT_OPEN'
exporting
objectclass = 'YATT '
objectid = objectid
planned_change_number = planned_change_number
planned_or_real_changes = planned_or_real_changes
exceptions
sequence_invalid = 1
others = 2.
case sy-subrc.
when 0. "ok.
when 1. message a600 with 'SEQUENCE INVALID'.
when 2. message a600 with 'OPEN ERROR'.
endcase.
if upd_yctc ne space.
call function 'CHANGEDOCUMENT_SINGLE_CASE'
exporting
tablename = 'YATT '
workarea_old = o_yatt
workarea_new = n_yatt
change_indicator = upd_yattc
docu_delete = 'X'
exceptions
nametab_error = 1
open_missing = 2
position_insert_failed = 3
others = 4.
case sy-subrc.
when 0. "ok.
when 1. message a600 with 'NAMETAB-ERROR'.
when 2. message a600 with 'OPEN MISSING'.
when 3. message a600 with 'INSERT ERROR'.
when 4. message a600 with 'SINGLE ERROR'.
endcase.
endif.
if upd_yctcauthplnts ne space.
call function 'CHANGEDOCUMENT_MULTIPLE_CASE'
exporting
tablename = 'YATTPLANTS '
change_indicator = upd_yattplants
docu_delete = 'X'
tables
table_old = yyattplants
table_new = xyattplants
exceptions
nametab_error = 1
open_missing = 2
position_insert_failed = 3
others = 4.
case sy-subrc.
when 0. "ok.
when 1. message a600 with 'NAMETAB-ERROR'.
when 2. message a600 with 'OPEN MISSING'.
when 3. message a600 with 'INSERT ERROR'.
when 4. message a600 with 'MULTIPLE ERROR'.
endcase.
endif.
call function 'CHANGEDOCUMENT_CLOSE'
exporting
objectclass = 'YATT '
objectid = objectid
date_of_change = udate
time_of_change = utime
tcode = tcode
username = username
object_change_indicator = object_change_indicator
no_change_pointers = no_change_pointers
exceptions
header_insert_failed = 1
object_invalid = 2
open_missing = 3
no_position_inserted = 4
others = 5.
case sy-subrc.
when 0. "ok.
when 1. message a600 with 'INSERT HEADER FAILED'.
when 2. message a600 with 'OBJECT INVALID'.
when 3. message a600 with 'OPEN MISSING'.
* WHEN 4. MESSAGE A600 WITH 'NO_POSITION_INSERTED'.
* do not abort, if positions are not inserted!!!
when 5. message a600 with 'CLOSE ERROR'.
endcase.
endfunction.
a®
Maybe you are looking for
-
Hi All, Can any please let me know ,how to remove Excnhage Rate in PO CREATION. Can you please let me know to do any config ?,in which table Exchange Rate will be ..? Thanks. Avinash.
-
Is it posssible for assigning p.o to copmpany code
hi, is it posssible for assigning p.o to copmpany code.if yes which synario it works?? thaks subhasis
-
Insert byte[] into postgres text-field
Hi, i made some tries on using postgresql and jdbc, i noticed that for some reason the postgres jdbc.driver does not convert text from the db correct to UNICODE. The db is in ISO-8859-1. So, i tried to write a workaround to this and was successfull f
-
How to supress Zero in NUMC data type which contains some values as Char.
Hello Friends, Some custom fields have been added in table BUT000 , out of which one field has data type as NUMC.. When i see some of the entries in the that field, it has values like '0000000000000000ENT'. I want to supress Leading zeros of that. i
-
What do you do when your rescue email is no longer accessible?
How do I reset my password and my security questions - if the apple system insists on sending all messages to a rescue email address that is no longer accessible and won't let me change the rescue address?