11-15-2010 1:31 AM
hi
i am working on triggering IDOC for customer creation/change/deletion and block/unblock.
i need to send complete IDOC(DEBMAS06) using change pointer technique.but with this technique only changed data(delta data) is sent.
can anyone let me know what i need to do so that i can send complete IDOC that is unchanged fields also.
regards
11-15-2010 6:57 AM
Hi Moorthy,
Yes we can send entire data which includes unchaged data also with change pointers.For this you need to customise the RBDMIDOC and do small changes as mentioned in below.I have done for material master and working fine.
Change the report like below three simple steps...
1) -
PARAMETERS: mestyp LIKE tbdme-mestyp OBLIGATORY MATCHCODE OBJECT tbdme.
*-- Begin of INSERT by SRIKANTH D01K924424
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1.
PARAMETERS:
p_full AS CHECKBOX DEFAULT ' '. " Default = Delta, 'X' = Full
SELECTION-SCREEN END OF BLOCK bl1.
*-- End of INSERT
-
2 )
CALL FUNCTION 'ENQUEUE_E_BDCPS'
EXPORTING
mode_bdcps = 'E'
mandt = sy-mandt
cpident =
mestype = mestyp
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc = 1.
MESSAGE e115 WITH mestyp.
ELSEIF sy-subrc = 2 OR sy-subrc = 3.
MESSAGE e156 WITH mestyp.
ENDIF.
Begin of changes by SRIKANTH D01K924424
*-- To populate full data into material master IDOC.
SUBMIT rbdmidox WITH mestyp = mestyp AND RETURN.
IF ( p_full = 'X' ).
PERFORM update_change_pointer_records USING mestyp.
ENDIF.
CALL FUNCTION 'DEQUEUE_ALL'.
SUBMIT rbdmidox WITH mestyp = mestyp AND RETURN.
*-- End of changes
-
3 )
FORM update_change_pointer_records USING
value(ud_mestyp) TYPE edi_mestyp.
define local data
CONSTANTS:
lc_fld_alelisting TYPE fieldname VALUE 'ALELISTING'.
DATA:
lt_bdcpv TYPE STANDARD TABLE OF bdcpv,
ls_bdcp TYPE bdcp,
lt_bdcp TYPE STANDARD TABLE OF bdcp.
Select all not yet processed change pointers
SELECT * FROM bdcpv
INTO TABLE lt_bdcpv
WHERE mestype = ud_mestyp
AND process NE 'X'.
IF sy-subrc EQ 0.
SELECT * FROM bdcp
INTO TABLE lt_bdcp
FOR ALL ENTRIES IN lt_bdcpv
WHERE cpident = lt_bdcpv-cpident.
IF sy-subrc EQ 0 .
CLEAR: ls_bdcp.
ls_bdcp-fldname = lc_fld_alelisting.
MODIFY lt_bdcp FROM ls_bdcp
TRANSPORTING fldname
WHERE ( fldname NE lc_fld_alelisting ).
UPDATE bdcp FROM TABLE lt_bdcp.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.
ENDFORM. " UPDATE_CHANGE_POINTER_RECORDS
The above code will work for your requrement.
Hope your problem will be solved.
Thanks,
Srikanth.A
11-15-2010 10:29 AM
hi
can u tell me how did u insert this code?
using enhancement points?but i am able to see enhancing points int the begining and in the forms....
let me know how can i implement this exactly...
regards
11-18-2010 11:00 AM
Hi Moorthy,
I have created a customer program copying the RBDMIDOC like ZRBDMIDOC and scehdule the report to trigger idocs.
Thanks,
Srikanth.A
06-16-2011 3:39 PM
Hi Srinkanth,
I implemented the same logic in RBDMIDOC for Message Type HRMD_A with Basic Type HRMD_A07 and Extension ZRMD_A07, I, however, still get an IDoc containing only the Infotype changed. Is there anything else I should look out for - in terms of using the sample code you provided?
Regards,
Reuben.
Edited by: REUBEN OLUMESE on Jun 16, 2011 4:41 PM
07-24-2013 12:54 PM
11-15-2010 7:02 AM
Hi,
Well i am looking for same thing. Not sure if there is better alternative to do so (config, etc).
Based on what i have observed, we can create z-fm and attach in the BD60.
The z-fm:
- should have same parameters with fm: "MASTERIDOC_CREATE_SMD_DEBMAS"
- get change pointers, and build the key: "KNA1KEY" type: "BDIKNA1KEY"
- pass sender/ receiver details and the key: "KNA1KEY" into fm: "MASTERIDOC_CREATE_REQ_DEBMAS".
- change pointers' status
*With this approach, only segments with values will be sent out.
Regards,
Tee
09-19-2011 10:02 AM
10-16-2011 4:39 PM
hi muthy,
i am also having the same req. can u please let me know how do u resolove ..pleae