Idoc from R3 46C to XI lost without error.
Hi all,
I'am sending Idoc from SAP R3 4.6C to XI.
These are specific ones.
On R3 side, the sent Idocs are in status 03 (no error in SM58).
On XI side, i don't see any Idoc in IDX5.
Where can I found them ?
Kind regards,
Franck Vidil.
Hi,
After you hit the IDOC From R/3, you can just see the Chequered flag in MONI.
Parlelly you can see it in IDX5 also
Be sure that the Interface is in Active state.
How you are sending from r/3 to xi, using WE19 or using any Backgroung job schedule???
Regards
Seshagiri
Edited by: N V Seshagiri on Feb 8, 2008 1:33 PM
Similar Messages
-
Unable to import IDoc from ECC to PI 7.1(ESR)
Hi,
I am creating an IDoc to File scenario in PI7.1 . I am trying to import the MATMAS IDoc from ECC to PI 7.1.So under the SWCV -> Imported Objects - > Wizard to import IDod/RFC opens -> I enter the ECC system login details -> But when I expand the IDoc node here,I find no IDoc from ECC ,moreover it throws me an error " component should be attached to some frame or dialog"
Can you please suggest me as what is going wrong.
Thanks,
VenuHi all,
I am using PI 7.3
When I Import object and passing parameter like application server, system number, uid and password.
I got this error
Unable to establish connection to R/3 system servertm_TM9_06 (system=00, client=001)
Troubleshooting information:
Is the target system online?
Check the connection data; server name and group fields are case-sensitive
Tips for administrators (see configuration guide for details):
Does the user have sufficient authorization in the target system?
Is the target system configured correctly in etc/services?
See error logs for details
Please help me. -
How do I restore addresses from archive file or time machine without iCloud overriding?
I recently had an issue with my address book contacts. About 90% of the contacts disappeared, then synched through iCloud to my iphone and ipad.....so nearly all my contacts were lost on all devices. I have both time machine and an address book archive file.
When I tried restoring from time machine, the iCloud synching saw it as an older version of the file and went to the deleted contacts version....i.e. I was right back where I started.
When I tried importing from the address book archive, the same thing happened.....iCloud saw the imported version as an older copy of the contacts file and deleted out everything I had just imported.
The only way I was able to get the contacts back was to go to time machine (with address book application open), select all the contacts, copy them, cancel out of time machine, and then paste the contacts into the current version of address book.....I guess the system sees that as a "new" version of the contact and doesn't overrite it. Problem is that it doesn't carry over all the different groups that way, and I have to move addresses into the groups all over again....kinda time consuming.
Any ideas on how to import from archive or restore from time machine (the normal way) without iCloud synching overriding the "older" and desired version of the file? Address book doesn't have any option to "override current contacts with imported ones".....
Thanks.Try this:
Turn off your internet connection completely: check it's really off.
Import your backup into Address Book.
Select all your contacts.
From the File menu choose Export>vCard and save the file somewhere convenient.
Now turn the internet connection back on. Your contacts will disappear from Address Book again.
From the File menu choose 'Import' and select the file you exported to.
Hopefully this contacts list will stay in place: wait until it's synced to iCloud and check that it's on the website and syncs to your Phone. -
I have allowed my iTunes Match subscription to expire, because of a limited data plan so can't listen to music outside my house. My music files were removed from my computer and are inaccessible without renewing the subscription. How do I get them back?
Hi,
I presume you deleted the original files as match would not have done so. Do you have a back up. If so, restore your music from that. If not, your will have lost all your music as this needed to be on your hard drive when you unsubscribed.
Jim -
How do I move/copy contacts from Entourage to iCloud Address Book without creating duplicates? Address Book on Mac, iCloud, iPhone and iPad is now empty
Thank you for letting me know!
Going to give it a go. Had a back up of all my clients files stupidly not my software as I have the originals disks. Just realised that amongst the software is ibiz and have lost al my accounting and billing files for the last 7 years want to cry so losing my contacts now will really tip me over the edge!
Fingerscrossed this works! -
Unable top convert the status of idoc from 03 to 12
Hi experts,
I am working on idoc scenario on ECC6.0.I am pushing the idoc from R/3 system to PI7.0.I have done all the prerequisites involved to pushing idoc-----
maintain Rfc destinations,maintain port,partner profile,distribution model....
But when i am pushing the reduced idoc from sender it's showing the status 03.when i am running RBDMOIND in se38 still it is not getting converted into 12.
kindly help me how can I convert the status from 03 to 12.
Thanks in advance.
Regards,
Naresh.KHi Naresh
you have to create the service. Create first the technical system and the business system in the SLD. Look for the right "Logical System" (Transation SALE in R3).
In the Integration Builder Directory go to "Environment/Clear SLD Data" and create the service by "Objects/Service without party/Business System/Assign Business System".
Hope this will solve your Querry
Thanks !!
Questions are welcome here!!
<b>Also mark helpful answers by rewarding points </b>
Regards
Abhishek Agrahari -
Want to transfer data via idocs from one R/3 to different R/3
Hi!!
May i hav nay step by step pdf which gives the complete flow of how to transfer idocs from from one R/3 to different R/3.
Though i have the basics steps but some where I m stuck.
Also I have two doubts::
1.Is thr Any relation bw port name and Logical System name?Can they be same.??I hav kept Logical System name as SAPE60 AND PORT name also as SAPE60(in e60) and SAPEI6(in ei6) servers respectively.
2.Should the Logical System names be maintained same in both the servers??
Kindly respond .
Helpful answers will be rewarded points!!!Hi Deepika ,
See the Example scenarios
MASTER DATA TRANSFERMATION BETWEEN 2 DIFF CLIENTS
For this scenario Client 800 is the Sender and 810 is the receiving system
1. Creating Logical Systems
o Login using 800 client
o Go to T. Code SALE
o Expand Sending and Receiving Systems
o Expand Logical Systems
o Click on Define Logical System
o Click on New Entries
o Create STUD_S, STUD_R Logical Systems
o Save and come back
o Assign the STUD_S Logical System to client 800
o Assign the STUD_R Logical System to client 810
2. Creating the RFCs
o Go to T. Code SM59
o Expand R/3 Connections
o Enter RFC Name as STUD_S
o Connection Type as 3
o Language as EN
o Client as 800
o User as SAPUSER
o PWD as abap
o Target host as sap
o Click on Remote logon button to test the RFC
o Enter RFC Name as STUD_R
o Connection Type as 3
o Language as EN
o Client as 800
o User as SATISH
o PWD as abap
o Target host as sap
o Click on Remote logon button to test the RFC
3. Creating the Message Type
o Go to T. Code WE81
o Click on change, continue
o Click on New Entries button
o Give message type as ZBAPI_STUD_MAS and description
o Save and back
4. Creating the Segment
o Go to T. Code WE31
o Give segment name as ZBAPI_STUD_SEG
o Enter Short Text
o Enter the Field Name and Data Element in the text boxes
o Save, continue,
o Click on Edit -> Set Release.
5. Creating the Basic IDOC Object
o Go to T. code WE30
o Give obj. name as ZBAPI_STUD_IDOC
o Click on create
o Select create new radio button, give description and continue
o Select the IDOC obj name and click on create button
o Enter the segment name which is create earlier
o Select the check box if you want to make the segment mandatory
o Enter 1 in minimum number 99999 in maximum number, continue
o Save and back
o Click on Edit -> Set Release
6. Creating Customer Distribution Model
o Go to T. Code BD64
o Click on change and Create model view button
o Enter the short text and Technical name as ZSTUDENT
o Select the model and click on Add Message Type Button
o Give the Sender as STUD_S,
o Receiver as STUD_R,
o Message Type as ZBAPI_STUD_MAS
o Select the model view & click on Environment -> Generate Partner Profiles
o Select Transfer IDOC Immediately and Trigger Immediately radio buttons
o Click on Execute
o You should get a list in green color which means it executed successfully.
o Back to main screen, select the model view
o Click Edit->Model view->Distribute
o Click on continue
o You should get a list saying model view is distributed successfully.
7. Checking the Port
o Go to T. Code WE21
o Expand Transactional RFC
o Find the port from the list which is created using BD64 for STUD_R (Receiving system) RFC Destination.
8. Checking the Partner Profiles.
o Go to T. Code WE20
o Expand Partner Type LS
o Select the Partner profile STUD_R
o Double click on Message Type ZBAPI_STUD_MAS in Outbound parmtrs.
o Check Receiver Port is assigned correctly
o Check the Basic type as your Basic IDOC object.
9. Assigning the Message Type to Basic IDOC Object
o Go to T. Code WE82
o Click on Change & continue, New Entries button
o Give the Message type as ZBAPI_STUD_MAS
o Give Basic Type as ZBAPI_STUD_IDOC
o Release as 46C
o Save and back
10. Creating Inbound Function Module (Posting Program)
o Go to T. Code SE37
o Create a function Module IDOC_INPUT_ZBAPI_STUD_MAS
o Set the Processing type as Remote Enabled Module and mode as start immed, in Attributes Tab.
o Import Parameters
INPUT_METHOD LIKE BDWFAP_PAR-INPUTMETHD
MASS_PROCESSING LIKE BDWFAP_PAR-MASS_PROC
NO_APPLICATION_LOG LIKE SY-DATAR
MASSSAVEINFOS LIKE MASSSAVINF
o Export Parameters
WORKFLOW_RESULT LIKE BDWF_PARAM-RESULT
APPLICATION_VARIABLE LIKE BDWF_PARAM-APPL_VAR
IN_UPDATE_TASK LIKE BDWFAP_PAR-UPDATETASK
CALL_TRANSACTION_DONE LIKE BDWFAP_PAR-CALLTRANS
o Tables
IDOC_CONTRL LIKE EDIDC
IDOC_DATA LIKE EDIDD
IDOC_STATUS LIKE BDIDOCSTAT
RETURN_VARIABLES LIKE BDWFRETVAR
SERIALIZATION_INFO LIKE BDI_SER
o Exceptions
WRONG_FUNCTION_CALLED
o Source Code
DATA: FIRST_TRANC LIKE MARA_UEB-TRANC,
ZBAPI_STUD_SEG like zbapi_stud.
DATA: ZBAPI_STUD LIKE ZBAPI_STUD.
DATA: I_ZBAPI_STUD LIKE ZBAPI_STUD.
DATA: C_TRUE VALUE 'X'.
DATA: C_FALSE VALUE ' '.
DATA: BEGIN OF T_IDOC_ROLLNO OCCURS 0,
DOCNUM LIKE EDIDC-DOCNUM,
ROLLNO LIKE ZBAPI_STUD-ROLLNO,
END OF T_IDOC_ROLLNO.
DEFINE APPEND_RESFIELDS.
PERFORM APPEND_RES_FIELDS TABLES T_MFIELDRES
T_RES_FIELDS
USING &1
COUNTER-D_IND.
END-OF-DEFINITION.
DATA: I_MARA_UEB LIKE MARA_UEB.
DATA: I_ZSTUD_UEB LIKE ZBAPI_STUD.
DATA: I_MAKT_UEB LIKE MAKT_UEB.
DATA: I_MARC_UEB LIKE MARC_UEB.
DATA: I_MARD_UEB LIKE MARD_UEB.
DATA: I_MFHM_UEB LIKE MFHM_UEB.
DATA: I_MARM_UEB LIKE MARM_UEB.
DATA: I_MEAN_UEB LIKE MEA1_UEB.
DATA: I_MBEW_UEB LIKE MBEW_UEB.
DATA: I_STEU_UEB LIKE STEU_UEB.
DATA: I_STEUMM_UEB LIKE STEUMM_UEB.
DATA: I_MLGN_UEB LIKE MLGN_UEB.
DATA: I_MLGT_UEB LIKE MLGT_UEB. " //br010797 neu zu 4.0
DATA: I_MPGD_UEB LIKE MPGD_UEB.
DATA: I_MPOP_UEB LIKE MPOP_UEB.
DATA: I_MVEG_UEB LIKE MVEG_UEB.
DATA: I_MVEU_UEB LIKE MVEU_UEB.
DATA: I_MVKE_UEB LIKE MVKE_UEB.
DATA: I_MPRW_UEB LIKE MPRW_UEB.
DATA: I_LTX1_UEB LIKE LTX1_UEB.
DATA: HELP_MARC_UEB LIKE MARC_UEB.
DATA: T_MARA_UEB LIKE MARA_UEB OCCURS 0.
DATA: T_MAKT_UEB LIKE MAKT_UEB OCCURS 0.
DATA: T_MARC_UEB LIKE MARC_UEB OCCURS 0.
DATA: T_MARD_UEB LIKE MARD_UEB OCCURS 0.
DATA: T_MFHM_UEB LIKE MFHM_UEB OCCURS 0.
DATA: T_MARM_UEB LIKE MARM_UEB OCCURS 0.
DATA: T_MEAN_UEB LIKE MEA1_UEB OCCURS 0.
DATA: T_MBEW_UEB LIKE MBEW_UEB OCCURS 0.
DATA: T_STEU_UEB LIKE STEU_UEB OCCURS 0.
DATA: T_STEUMM_UEB LIKE STEUMM_UEB OCCURS 0.
DATA: T_MLGN_UEB LIKE MLGN_UEB OCCURS 0.
DATA: T_MLGT_UEB LIKE MLGT_UEB OCCURS 0. " //br010797 neu zu 4.0
DATA: T_MPGD_UEB LIKE MPGD_UEB OCCURS 0.
DATA: T_MPOP_UEB LIKE MPOP_UEB OCCURS 0.
DATA: T_MVEG_UEB LIKE MVEG_UEB OCCURS 0.
DATA: T_MVEU_UEB LIKE MVEU_UEB OCCURS 0.
DATA: T_MVKE_UEB LIKE MVKE_UEB OCCURS 0.
DATA: T_MPRW_UEB LIKE MPRW_UEB OCCURS 0.
DATA: T_LTX1_UEB LIKE LTX1_UEB OCCURS 0.
Internal fields/ tables
DATA: FLAG_ERROR_HAPPENED.
DATA: flag_material_exists. "//br210397 zu 4.0 keine Verwendung mehr
DATA: FLAG_EXIT_TO_BE_DONE.
DATA: HELP_TABIX LIKE SY-TABIX.
DATA: HELP_TRANC LIKE MARA_UEB-TRANC.
DATA: HELP_ALAND LIKE STEU_UEB-ALAND.
DATA: HELP_VKORG LIKE MVKE-VKORG.
DATA: HELP_WERKS LIKE T001W-WERKS.
DATA: HELP_LFDNR LIKE STEU_UEB-LFDNR.
DATA: LAST_MARC_TRANC LIKE MARA_UEB-TRANC.
DATA: LAST_MLGN_TRANC LIKE MARA_UEB-TRANC. " //br010797 neu zu 4.0
DATA: LAST_TEXT_TRANC LIKE MARA_UEB-TRANC.
DATA: CURRENT_TABIX LIKE SY-TABIX.
DATA: GENERAL_SUBRC LIKE SY-SUBRC.
DATA: HELP_FACTOR TYPE P DECIMALS 3.
DATA: USER_SEGMENTS LIKE EDIDD OCCURS 0 WITH HEADER LINE. " insert
DATA: CUST_SEGMENT LIKE EDIDD.
DATA: I_MFIELDRES LIKE MFIELDRES.
DATA: I_MERRDAT LIKE MERRDAT.
DATA: I_EDIDD LIKE EDIDD.
" //br neu zu 3.1g
DATA: T_RES_FIELDS LIKE DELFIELDS OCCURS 0 WITH HEADER LINE.
DATA: T_MFIELDRES LIKE MFIELDRES OCCURS 0.
DATA: T_MERRDAT LIKE MERRDAT OCCURS 0.
DATA: T_EDIDD LIKE EDIDD OCCURS 0.
DATA: BEGIN OF t_matnr OCCURS 0, "//br210397 zu 4.0
matnr LIKE mara-matnr, " wird nicht mehr verwendet
END OF t_matnr. "
DATA: BEGIN OF COUNTER,
TRANC LIKE MARA_UEB-TRANC,
D_IND LIKE MARA_UEB-D_IND,
END OF COUNTER.
DATA: BEGIN OF t_idoc_tranc OCCURS 0, " 4.0
docnum LIKE edidc-docnum, "
tranc LIKE mara_ueb-tranc, "
END OF t_idoc_tranc. "
DATA T_IDOC_TRANC LIKE MATIDOCTRANC OCCURS 0 WITH HEADER LINE."
DATA: FLAG_FITS.
DATA: APPLICATION_SUBRC LIKE SY-SUBRC.
DATA FLAG_MUSS_PRUEFEN LIKE SY-DATAR.
DATA MAX_ERRORS LIKE T130S-ANZUM. " 4.0
note 419281
DATA : FLG_MASS.
CLEAR : FLG_MASS.
FIELD-SYMBOLS: . " 4.0
ALE-distribution unity : IDOC status set by locking "note0361838
data: "note0361838
it_dsp_idocstat like bdidocstat "note0361838
occurs 0 with header line. "note0361838
Initialize data - general
REFRESH T_MFIELDRES.
REFRESH T_IDOC_TRANC.
REFRESH T_IDOC_TRANC. "JH/02.02.98/4.0C KPr100004993
REFRESH t_idoc_tranc_segment. " //br 40 : unnötig
REFRESH matnr_tranc. " -"-
REFRESH t_matnr.
COUNTER-TRANC = 1.
COUNTER-D_IND = 1.
REFRESH T_MARA_UEB.
REFRESH T_MAKT_UEB.
REFRESH T_MARC_UEB.
REFRESH T_MARD_UEB.
REFRESH T_MFHM_UEB.
REFRESH T_MARM_UEB.
REFRESH T_MEAN_UEB.
REFRESH T_MBEW_UEB.
REFRESH T_STEU_UEB.
REFRESH T_STEUMM_UEB.
REFRESH T_MLGN_UEB.
REFRESH T_MLGT_UEB. " //br010797 neu zu 4.0
REFRESH T_MPGD_UEB.
REFRESH T_MPOP_UEB.
REFRESH T_MVEG_UEB.
REFRESH T_MVEU_UEB.
REFRESH T_MVKE_UEB.
REFRESH T_MPRW_UEB.
REFRESH VKORG_ALAND.
REFRESH WERKS_ALAND.
CLEAR APPLICATION_SUBRC.
REFRESH T_MERRDAT.
Check if right function is called
READ TABLE IDOC_CONTRL INDEX 1.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
IF IDOC_CONTRL-IDOCTP <> 'ZBAPI_STUD_IDOC'.
RAISE WRONG_FUNCTION_CALLED.
ENDIF.
ENDIF.
LOOP AT IDOC_CONTRL.
Initialize data - per IDOC
t_idoc_tranc-docnum = counter-tranc.
T_IDOC_TRANC-DOCNUM = IDOC_CONTRL-DOCNUM.
T_IDOC_TRANC-FIRST_TRANC_IDOC = COUNTER-TRANC + 2.
APPEND T_IDOC_TRANC.
Select segments which belong to IDOC
REFRESH T_EDIDD.
LOOP AT IDOC_DATA WHERE DOCNUM = IDOC_CONTRL-DOCNUM.
APPEND IDOC_DATA TO T_EDIDD.
ENDLOOP.
BUSINESS TRANSACTION EVENT (header / data) "note0388000
call function 'OPEN_FI_PERFORM_MGV00200_E' "note0388000
exporting "note0388000
idoc_header = idoc_contrl "note0388000
FLG_APPEND_STATUS = 'X' "note0388000
tables "note0388000
(DEL) idoc_data = idoc_data "note0388000 note0418561
idoc_data = t_edidd "note0418561
idoc_status = idoc_status "note0388000
exceptions "note0388000
others = 1. "note0388000
if sy-subrc = 1. "note0388000
continue. "note0388000
endif. "note0388000
Within one IDOC: loop through data segments:
Prepare internal tables for the current material
LOOP AT T_EDIDD INTO IDOC_DATA.
Transform from CoreData to Normal Data if necesary
CASE IDOC_DATA-SEGNAM.
WHEN 'E1MARAC'.
*--COMMENTED BY SATISH
PERFORM MOVE_E1MARAC_TO_E1MARAM USING IDOC_DATA.
WHEN 'E1MAKTC'.
PERFORM MOVE_E1MAKTC_TO_E1MAKTM USING IDOC_DATA.
*--COMMENTES ENDED BY SATISH
WHEN 'ZBAPI_STUD_SEG'.
PERFORM MOVE_E1MARAC_TO_E1MARAM USING IDOC_DATA.
CLEAR I_ZBAPI_STUD.
Second: Move E1MARAC into E1MARAM
I_ZBAPI_STUD = IDOC_DATA-SDATA.
Third: Move E1MARAM back into IDOC-line
IDOC_DATA-SDATA = I_ZBAPI_STUD.
IDOC_DATA-SEGNAM = 'ZBAPI_STUD_SEG'.
ENDCASE.
CURRENT_TABIX = SY-TABIX.
COUNTER-D_IND = COUNTER-D_IND + 1.
COUNTER-TRANC = COUNTER-TRANC + 2.
CASE IDOC_DATA-SEGNAM.
WHEN 'ZBAPI_STUD_SEG'.
Initialize data - per material
COUNTER-D_IND = 1.
FIRST_TRANC = COUNTER-TRANC.
interpret segment
ZBAPI_STUD_SEG = IDOC_DATA-SDATA.
MOVE-CORRESPONDING ZBAPI_STUD TO I_ZSTUD_UEB.
T_IDOC_ROLLNO-DOCNUM = IDOC_CONTRL-DOCNUM.
T_IDOC_ROLLNO-ROLLNO = I_ZSTUD_UEB-ROLLNO.
APPEND T_IDOC_ROLLNO.
ENDCASE.
if not ZBAPI_STUD_SEG is initial.
ZBAPI_STUD-MANDT = ZBAPI_STUD_SEG-MANDT.
ZBAPI_STUD-ROLLNO = ZBAPI_STUD_SEG-ROLLNO.
ZBAPI_STUD-FNAME = ZBAPI_STUD_SEG-FNAME.
ZBAPI_STUD-LNAME = ZBAPI_STUD_SEG-LNAME.
INSERT ZBAPI_STUD FROM ZBAPI_STUD_SEG.
COMMIT WORK.
ENDIF.
*-- ALE ditribution unity : update IDOC status "note03618
LOOP AT it_dsp_idocstat. "note036
LOOP AT IDOC_STATUS WHERE DOCNUM = it_dsp_idocstat. "note036
DELETE idoc_status INDEX sy-tabix. "note036
ENDLOOP. "note036
APPEND it_dsp_idocstat TO idoc_status. "note036
ENDLOOP. "note036
*--GENERATING THE IDOC STATUS
PERFORM HANDLE_ERROR_EXT " //br40
TABLES "
IDOC_CONTRL "
IDOC_STATUS "
RETURN_VARIABLES "
T_MERRDAT "
T_IDOC_TRANC "
T_IDOC_ROLLNO "JH/4.0C/KPr100004993
USING "
GENERAL_SUBRC "
NO_APPLICATION_LOG "
MASSSAVEINFOS "wk/40c
CHANGING "
WORKFLOW_RESULT. "
PERFORM HANDLE_ERROR
TABLES
IDOC_CONTRL
IDOC_STATUS
RETURN_VARIABLES
T_MERRDAT
T_IDOC_ROLLNO "JH/4.0C/KPr100004993
USING
APPLICATION_SUBRC
CHANGING
WORKFLOW_RESULT.
SORT T_IDOC_ROLLNO BY ROLLNO. "note 315124
React on general error
DATA: I_MERRDAT LIKE MERRDAT.
IF GENERAL_SUBRC <> 0.
I_MERRDAT-MSGTY = 'E'.
I_MERRDAT-MSGID = SY-MSGID.
I_MERRDAT-MSGNO = SY-MSGNO.
I_MERRDAT-MSGV1 = SY-MSGV1.
I_MERRDAT-MSGV2 = SY-MSGV2.
I_MERRDAT-MSGV3 = SY-MSGV3.
I_MERRDAT-MSGV4 = SY-MSGV4.
APPEND I_MERRDAT TO T_MERRDAT.
ENDIF.
LOOP AT T_MERRDAT INTO I_MERRDAT
WHERE MSGTY = 'S' "success
OR MSGTY = 'D' "dummy
OR MSGTY = 'I' "Information " //br011097 zu 3.1I
OR MSGTY = 'H' "dummy " 4.0
OR MSGTY = 'W'. "warning
DELETE T_MERRDAT.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDFUNCTION.
*& Form handle_error_ext
FORM HANDLE_ERROR_EXT
TABLES
IDOC_CONTRL STRUCTURE EDIDC
IDOC_STATUS STRUCTURE BDIDOCSTAT
RETURN_VARIABLES STRUCTURE BDWFRETVAR
T_MERRDAT STRUCTURE MERRDAT
IDOC_TRANC STRUCTURE MATIDOCTRANC
JH/02.02.98/4.0C KPr100004993 (Anfang)
T_IDOC_ROLLNO STRUCTURE T_IDOC_ROLLNO
JH/02.02.98/4.0C KPr100004993 (Ende)
USING
GENERAL_SUBRC LIKE SY-SUBRC
NO_APPLICATION_LOG LIKE SY-DATAR
MASSSAVEINFOS LIKE MASSSAVINF
CHANGING
WORKFLOW_RESULT LIKE BDWF_PARAM-RESULT.
DATA FLAG_ERROR_HAPPENED.
DATA I_MERRDAT LIKE MERRDAT.
DATA IDOC_INDEX_2_SUBRC LIKE SY-SUBRC.
DATA AL_HANDLES TYPE BAL_T_LOGH. "//br99
SORT T_IDOC_ROLLNO BY ROLLNO. "note 315124
React on general error
IF GENERAL_SUBRC <> 0.
REFRESH T_MERRDAT.
i_merrdat-tranc = 0. " //br261197
READ TABLE IDOC_TRANC INDEX 1. " zu 40b
I_MERRDAT-TRANC = IDOC_TRANC-FIRST_TRANC_IDOC. "
I_MERRDAT-MSGTY = 'E'.
I_MERRDAT-MSGID = SY-MSGID.
I_MERRDAT-MSGNO = SY-MSGNO.
I_MERRDAT-MSGV1 = SY-MSGV1. I_MERRDAT-MSGV2 = SY-MSGV2.
I_MERRDAT-MSGV3 = SY-MSGV3. I_MERRDAT-MSGV4 = SY-MSGV4.
APPEND I_MERRDAT TO T_MERRDAT.
ENDIF.
DATA: C_TRUE,
C_FALSE VALUE 'X'.
If error happened ==> Rollback whole work....
LOOP AT T_MERRDAT INTO I_MERRDAT WHERE MSGTY NA 'SDHWI'.
EXIT.
ENDLOOP.
IF SY-SUBRC = 0.
FLAG_ERROR_HAPPENED = C_TRUE.
ROLLBACK WORK.
ELSE.
FLAG_ERROR_HAPPENED = C_FALSE.
ENDIF.
Set IDOC status
two cases:
single IDOC-processing: ==> error can be written in IDOC status
package processing ==> anononymous "package error" for all IDOCs
READ TABLE IDOC_CONTRL INDEX 2.
IDOC_INDEX_2_SUBRC = SY-SUBRC.
IF SY-SUBRC = 0.
IF 1 = 2. "//br40
MESSAGE E051(B1). "
ENDIF. "
CLEAR I_MERRDAT.
I_MERRDAT-MSGID = 'B1'.
I_MERRDAT-MSGTY = 'E'.
I_MERRDAT-MSGNO = '051'.
ENDIF.
IF IDOC_INDEX_2_SUBRC NE 0 OR FLAG_ERROR_HAPPENED = C_FALSE.
Nur in diesen Fällen wird Application Log geschrieben
Delete all Successes and Dummy records from t_merrdat
DELETE t_merrdat WHERE msgty = 'S' "success " testweise
OR msgty = 'D'. "dummy "
LOOP AT T_MERRDAT INTO I_MERRDAT WHERE MSGTY = 'D'. "
I_MERRDAT-MSGTY = 'S'. "
MODIFY T_MERRDAT FROM I_MERRDAT. "
ENDLOOP. "
ENDIF.
WORKFLOW_RESULT = 0.
LOOP AT IDOC_CONTRL.
Set IDOC status
CLEAR IDOC_STATUS.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IF FLAG_ERROR_HAPPENED = C_FALSE.
Application log
PERFORM WRITE_APPL_LOG TABLES IDOC_TRANC
T_MERRDAT
IDOC_STATUS
USING IDOC_CONTRL
FLAG_ERROR_HAPPENED
NO_APPLICATION_LOG
MASSSAVEINFOS
AL_HANDLES.
idoc_status-status = '53'. "OK!
APPEND idoc_status.
JH/02.02.98/4.0C KPr100004993 (Anfang)
Fill Return variables
CLEAR RETURN_VARIABLES.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
RETURN_VARIABLES-WF_PARAM = 'Processed_IDOCs'.
APPEND RETURN_VARIABLES.
Verknüpfungseintrag anlegen
READ TABLE T_IDOC_ROLLNO WITH KEY ROLLNO = IDOC_CONTRL-DOCNUM
BINARY SEARCH.
IF SY-SUBRC = 0.
RETURN_VARIABLES-DOC_NUMBER = T_IDOC_ROLLNO-ROLLNO.
RETURN_VARIABLES-WF_PARAM = 'Appl_Objects'.
APPEND RETURN_VARIABLES.
ENDIF.
JH/02.02.98/4.0C KPr100004993 (Ende)
ELSE.
IF IDOC_INDEX_2_SUBRC NE 0.
Application Log
PERFORM WRITE_APPL_LOG TABLES IDOC_TRANC
T_MERRDAT
IDOC_STATUS
USING IDOC_CONTRL
FLAG_ERROR_HAPPENED
NO_APPLICATION_LOG
MASSSAVEINFOS
AL_HANDLES.
ELSE.
IDOC_STATUS-MSGID = I_MERRDAT-MSGID.
IDOC_STATUS-MSGTY = I_MERRDAT-MSGTY.
IDOC_STATUS-MSGNO = I_MERRDAT-MSGNO.
IDOC_STATUS-MSGV1 = I_MERRDAT-MSGV1.
IDOC_STATUS-MSGV2 = I_MERRDAT-MSGV2.
IDOC_STATUS-MSGV3 = I_MERRDAT-MSGV3.
IDOC_STATUS-MSGV4 = I_MERRDAT-MSGV4.
IDOC_STATUS-STATUS = '51'. "ERROR!
APPEND IDOC_STATUS.
ENDIF.
Fill Return variables
CLEAR RETURN_VARIABLES.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
return_variables-wf_param = c_wf_par_processed_idocs.
RETURN_VARIABLES-WF_PARAM = 'Error_IDOCs'.
APPEND RETURN_VARIABLES.
WORKFLOW_RESULT = 99999.
ENDIF.
APPEND idoc_status.
ENDLOOP.
IF NO_APPLICATION_LOG IS INITIAL.
CALL FUNCTION 'BAL_DB_SAVE' "//br99
EXPORTING
I_IN_UPDATE_TASK = ' '
I_SAVE_ALL = ' '
I_T_LOG_HANDLE = AL_HANDLES.
EXCEPTIONS
LOG_NOT_FOUND = 1
SAVE_NOT_ALLOWED = 2
NUMBERING_ERROR = 3
OTHERS = 4.
CALL FUNCTION 'BAL_GLB_MEMORY_REFRESH' "//br99
EXPORTING
I_AUTHORIZATION =
I_REFRESH_ALL = ' '
I_T_LOGS_TO_BE_REFRESHED = AL_HANDLES.
EXCEPTIONS
NOT_AUTHORIZED = 1
OTHERS = 2
ENDIF.
ENDFORM. " handle_error
Save, check and activate
11. Assigning the Inbound Function Module to Basic Type & Message Type
o Go to T. Code WE57
o Click on change, continue, continue and New Entries Button
o Enter the Module as IDOC_INPUT_ZBAPI_STUD_MAS
o Type as F
o Basic Type as ZBAPI_STUD_IDOC
o Message Type as ZBAPI_STUD_MAS.
o Direction as 2
o Save and back
Now Login in 810 client
12. Assigning the Inbound Function Module in ALE Table
o Go to T. Code BD51
o Click on continue, New Entries button
o Give the Inbound Function Module IDOC_INPUT_ZBAPI_STUD_MAS
o Give Input t. as 0 (zero)
o Save and back
13. Creating Process Code
o Go to T. Code WE42
o Click on Change, New Entries Button
o Give Process Code name as ZSTUD, give Description & Save
o Select Processing with ALE Services Radio button
o Select Processing by Function Module Radio button
o Click the ALE Table (arrow Icon) in Identification
o Give the Function Module Name ZIDOC_INPUT_ZBAPI_STUD_MAS
o Give maximum number of repeats 0
o Save and back, back
o Select the process code from the list & click on Logical Messages Icon
o Give the Message Type as ZBAPI_STUD_MAS
o Save & Back, Save & Back, Save & Back
14. Changing the Customer Distribution model in Receiving system
o Go to T. Code BD64
o Click on change and Create model view button
o Select the model view & click on Environment -> Generate Partner Profiles
o Select Transfer IDOC Immediately and Trigger Immediately radio buttons
o Click on Execute
o You should get a list in green color which means it executed successfully.
15. Assigning the Process Code to Message Type in Receiving System
o Go to T. Code WE20
o Expand Partner Type LS
o Select the Partner Profile STUD_S
o Double click on Message Type ZBAPI_STUD_MAS in Inbound parmtrs.
o Give the Process Code as ZSTUD
o Click on Trigger Immediately Radio button
o Save & Back
o Save & Back
16. Creating the Selection Program (Outbound Program)
Login in client 800.
Go to T. Code SE38
Create a Report Program as ZSTUD_SEND with the following code
REPORT ZSTUD_SEND
NO STANDARD PAGE HEADING.
TABLES: ZBAPI_STUD.
DATA: IT_STUD LIKE ZBAPI_STUD OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.
SELECT-OPTIONS: S_ROLLNO FOR ZBAPI_STUD-ROLLNO.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN:BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-H02.
PARAMETERS: P_MESTYP LIKE EDIDC-MESTYP,
P_RCVPRN LIKE TBDLST-LOGSYS.
SELECTION-SCREEN:END OF BLOCK B2.
SELECTION-SCREEN:END OF BLOCK B1.
START-OF-SELECTION.
PERFORM CREATE_STUDENT.
PERFORM CREATE_IDOC.
*& Form CREATE_STUDENT
sending student
FORM CREATE_STUDENT.
SELECT * FROM ZBAPI_STUD
INTO TABLE IT_STUD
WHERE ROLLNO IN S_ROLLNO.
ENDFORM. " CREATE_STUDENT
*& Form CREATE_IDOC
IDOC Creation
FORM CREATE_IDOC.
DATA : IMAS_DATA LIKE EDIDD OCCURS 10 WITH HEADER LINE,
IMAS_CON LIKE EDIDC OCCURS 10 WITH HEADER LINE,
ICOM_CON LIKE EDIDC OCCURS 10 WITH HEADER LINE.
IMAS_CON-RCVPRT = 'LS'.
IMAS_CON-RCVPRN = P_RCVPRN.
IMAS_CON-IDOCTP = 'ZBAPI_STUD_IDOC'.
IMAS_CON-MESTYP = P_MESTYP.
IMAS_CON-DIRECT = 1.
APPEND IMAS_CON.
LOOP AT IT_STUD.
IMAS_DATA-SEGNAM = 'ZBAPI_STUD_SEG'.
IMAS_DATA-SDATA = IT_STUD.
APPEND IMAS_DATA.
ENDLOOP.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL = IMAS_CON
OBJ_TYPE = ''
CHNUM = ''
TABLES
COMMUNICATION_IDOC_CONTROL = ICOM_CON
MASTER_IDOC_DATA = IMAS_DATA
EXCEPTIONS
ERROR_IN_IDOC_CONTROL = 1
ERROR_WRITING_IDOC_STATUS = 2
ERROR_IN_IDOC_DATA = 3
SENDING_LOGICAL_SYSTEM_UNKNOWN = 4
OTHERS = 5
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK.
LOOP AT ICOM_CON.
WRITE :/ 'IDOC: ', ICOM_CON-DOCNUM, 'CREATED SUCCESSFULLY'.
ENDLOOP.
ENDFORM. " CREATE_IDOC
17. Transferring the student records from 800 to 810 client
Execute Report Program ZSTUD_SEND
Give the Range of Roll Nos to Transfer
Give Message Type as ZBAPI_STUD_MAS
Give Receiver Logical system as STUD_R
Execute
You should get the IDOC Number
Take the IDOC Number and go to T. Code WE05 & Execute
In Outbox you can see the IDOC Status
Select the status record in left side window
Double click on the Status record in right side window
You can see the Control Record, Data Record and Status Records for that IDOC
If the ICON is green and the status code is 3, it means the IDOC is passed to PORT Successfully.
Now Login in 810 client
Go to T. Code WE05 & Execute
You can see the status record in left side window
If the status no is 53 and color is green, it means the IDOC is Posted to Application successfully.
You can see the Log Information by double clicking on the status record in right side window.
Now in left side window, you can see the Control Record, Data Record & Status Record of the IDOC
Now go to T. Code SE16
Give the table name ZBAPI_STUD & press F7
See the contents of the table
The table is updated with the students records transferred from 800 client with our selection program.
Reward if useful
Thanks
Jagadeesh.G -
Hi. I clicked some snaps from my iphone and post that without copying it i restored the iphone with all apps etc available from the backup taken. How do i get back the photos which were clicked earlier. Is there a way to get it back?? Please help
Yes i had not taken back up before restoring it. However i was just going through some links on the net and there is a software available for MAC to retrieve such lost data. But the point is will the said software work on iphone as the OS is not MAC..
Will have to give a try to this. If successful will share it with all. Anyone else has any idea about this please so share. -
Creating JCo IDoc from flat file structure
Hi,
I need to send an IDoc into SAP using JCo.
The input to my program is a string containing lines representing a flat file idoc, e.g.
Line 1="EDI_DC40 2 ORDERS04.."
Line 2="E1EDK01 00000100000001 USD..."
Line 3="E1EDK14 0000030000000...."
Is there a simple way to use JCo to create & send the IDoc?
i.e.
1) If I use JCo and RFC IDOC_INBOUND_ASYNCHRONOUS, what would be all the steps/calls to SAP (create TID, call IDOC_INBOUND_ASYNCHRONOUS, confirm TID..?)
And can IDOC_INBOUND_ASYNCHRONOUS be called using the flat file structures (without having to map to all the JCo ParameterList fields)? Since the flat file structures are in the format required by the RFC, just in one long string.
Line 1=>IDOC_CONTROL_REC_40
Lines 2..n=>IDOC_DATA_REC_40
2) Similarly, if I were to use JCo plus the JCO IDoc library, is there a way to pass the flat file structures without having to do all the mapping to segment fields?
3) Other options..?
I want to use ALE to SAP, not files, even though the input is in the flat file structure.Your reply gives a link to the general JCo documentation.
It doesn't give ideas on how to call an RFC or IDoc from JCO without mapping each and every field from a flat file structure.
I'm looking for a way to do something like this:
Function IDOC_INBOUND_ASYNCHRONOUS has table parameters
IDOC_CONTROL_REC_40 STRUCTURE EDI_DC40
IDOC_DATA_REC_40 STRUCTURE EDI_DD40
Since I have the flat file representation of the IDoc, the first line should overlay exactly onto the EDI_DC40 structure. And the subsequent lines should overlay onto EDI_DD40. (all fields in this RFC are strings)
However JCO and JCO IDoc library seem very strongly typed, so it looks like I would have to map each field from the flat file structure to a field in the JCO Function or JCO IDoc object.
This could be done in a generic way using the function/idoc metadata, however there would still be some overhead.
Is there a way to get round this, and build the function/idoc treating its parameters as one long string? -
Error sending IDoc from ERP to PI 7.4 Java Only (stuck in SM58)
Hi specialists
I'm trying to send an IDoc to our new PI 7.4 Java Only.
Because of some authorization issues I changed the RFC Destination <blabla> on PI (nwa) pointing to the ERP system.
Now the IDoc is stuck in SM58 (tRFC queue) and I get this error message:
The IDoc Destination <blabla> was changed. Refresh the destination instance with
Meldungsnr. SR053
Anyone able to tell me where to do this refresh? I'm new to PI 7.4 Java Only and could not find useful answers on SCN and other internet sources.
Thanks a lot in advance for any hints.
RenaudHi Iñaki
Great document btw... didn't stumble uppon this before. Thanks.
I carefully went through it but nothing I tried helped.
The RFC destination (PI -> ERP) is working fine.
The resource adapter (inboundRA) is configured correctly. I can confirm, that the connection test of the RFC-Destination inside ERP (ERP -> PI) is successful.
BUT still: sending an IDoc from ERP to PI fails with this message in SM58:
The IDoc Destination <destinationName> was changed. Refresh the destination instance with
Meldungsnr. SR053
This seems to happen every time after one changes some settings in the destination specified in the inboundRA property "destinationName".
So my question still is: how / where do I refresh this destination instance on a PI 7.4 Java Stack Only??? I mean without having to restart the whole PI instance...
Best regards
Renaud -
JDBC to Idoc mapping - create multiple Idocs from 1 JDBC input
I am importing data using JDBC and I want to put the data in an IDoc on a SAP system. my data is about 100,000 rows, but my Idoc (ZIDOC) is defined as 1-35,000 for the segments. I have followed Ossnote 814393, and also set up my Interface Mapping to use my JDBC source and the Idoc as the target. In my Message Mapping, i use the source as my JDBC Message Type, and the target is my External Definition Idoc (changed to be 1 to unbounded).
My incoming JDBC mapping is:
JDBCinput (1:1)
-row (0...Unbounded)
-part (1:1)
-unit (1:1)
-type (1:1)
my outgoing Idoc (from external definition) is:
ZIDOC (1:1)
-IDOC (1...Unbounded)
-Begin (required)
-EDI_DC40 (1:1)
-Zsegment (1...35,000)
-part (1:1)
-unit (1:1)
-type (1:1)
I currently map JDBCinput = ZIDOC and IDOC, row = Zsegment, and the rest of the rows match.
When I use this mapping, my first 35,000 rows from my JDBC input gets mapped to ZIDOC with 35,000 segments, but the remaining 65,00 rows from my JDBC input just seem to be lost, as only this one ZIDOC is created. I would expect to see 3 Idocs created, 2 with 35,000 segments each, and the 3rd Idoc created with 30,000 segments.
Does anyone know what I need to change to get this mapping to work and create the extra needed Idocs? Can this be done with out using a BPM?
Any guidance?
Thanks
JakeHI,
Just try out with context change and check if it works
In this type of case, it is easy to use Java mapping so that you can generate target structures as you like.
Hope this helps,
Regards,
moorthy -
IDOCs from XI into R/3 waiting in queues
all,
I have a file to IDOC scenario. Based on filters, the file can create 2 types of IDOCs "A" and "B" and then sent via BPM (due to another filter) to R/3 using 2 IDOC channels
The challenge is, somehow the IDOCs alternate as "A" , "B" in SAP_ALE_XI_nnnnn queues on R/3 visible in the WEINBQUEUE tcode and when an IDOC "A" is in error, it holds up the whole queue.
This transaction was not meant to be EOIO nor is it set anywhere?
How can I get them to process in parallel without acting serial ?
mHi,
I have worked on scenarios where IDocs are sent from XI in tRFC mode...
I assume in your case it is qRFC..right?
My earlier answer pertains to tRFC...
How are you sending it usinf qRFC ? logically if the partner profile setting is process later , then the idoc from the qRFC inbound queue should keep this in 64. Then the RBDAPP01 just reprocesses it later. It is a disconnected process and does not affect the inbound idoc queue.
Thanks. -
Receiving idocs from multiple systems
I got to receive two different idocs from two differnt systems and both are to be mapped to one target structre. Is this scenario is possible without using BPM ? If so coupld you plz advise the design ? Is there any literature which talks abt this scenario ?
thanks
kumarHi Kumar,
Your scenarios look like n:1,like more than one sender .
You can implement your scenarios using BPM very easily.
Uisng BPM you can colect IDOCS from SAP system you can send.
Please search in sdn blogs you wil find it,
if you are unable to find let me know i will give u the links.
Regards,
Raj -
Re-triggering Idocs from SAP Communication layer
Hi,
Our webmethods middleware went down for 4 hours. We are trying to see if there is a quick way to retrigger Idocs from SAP for around 3000 doc (various doc, PO, SO, Delivery, Shipment etc). Trying to see if we can change the status in SAP and retrigger (without writing a program). Is there a way to do it. Any pointers would be useful.
Thanks,
AnandThere is no quick way to resend IDocs that have already passed. I worked at a client in the past that had written a custom program to change the status of an IDoc. The report program had a similar selection screen to WE05, but current status and new status as parameters. The program would retrieve IDocs based on the selection criteria and update EDIDC-STATUS to '30'. You can then resend the IDocs using RSEOUT00.
You do not need to modify EDIDS. -
How to send IDOC from nonSAP to SAP
Hi ;
I need to send IDOC from nonSAP to SAP. I have experience it with XI and BC..but now I need sending IDOC to SAP directl without these tools..
Can you explain it via sample? (I know already how to create port , define LP from we20,we21 ).
Firstly Do I need to create a RFC destination ? and I want to send IDOC as XML by HTML post method..Which port must I send?
Must this port point to this RFC?
Thanks.Hi,
Here you have to generate an IDOC and convert into XML format and put at required server
third party will accept the IDOC XML not the IDOC.
Just check with ur third party in which format the data is accepted.
if its IDOC XML then u can use the file receiver adapter and place the IDOC XML file on 3rd party folder.
You use the IDoc adapter to have IDocs (intermediate documents) processed by the Integration Engine. IDocs from SAP systems Release 3.1x or higher are supported. You can also use the IDoc adapter to connect non-SAP systems to the Integration Engine.
The IDoc adapter converts the IDocs to IDoc XML format so that they can be processed by the Integration Server pipeline.
You can also transfer XML in IDoc format received from the Integration Server to connected systems. The Integration Server pipeline must convert the received XML to IDoc XML, and then transfer this IDoc XML to the IDoc adapter. The IDoc adapter converts the IDoc XML to native IDoc format and sends the IDoc to the identified receiver system using the standard IDoc interface.
Regards,
Shamma
Maybe you are looking for
-
How to get ALL validate-errors while insert xml-file into xml_schema_table
How to get all validate-errors while using insert into xml_schema when having a xml-instance with more then one error inside ? Hi, I can validate a xml-file by using isSchemaValid() - function to get the validate-status 0 or 1 . To get a error-output
-
Flex 4: Custom ScrollBar not working in Custom DropDownList
Hello, I'm having an odd issue that I just cannot figure out. I have a custom DropDownList .as component (to pass color values) and a custom skin. In this skin I am using a custom Scroller (same AS file component with mxml skin). When I use this conf
-
Hello Experts, I am new in oracle forms and I am using Oracle forms 11.1.2.2.0 with weblogic 10.3.6 generic at windows 7 64 bit. My java version is jdk1.7.0_51. I have a database table say as ITEM_MASTER.This table has 20 columns.Now
-
Ever since I upgraded to XP Pro my I get extra noise when playing from any sound source, .WAV, MIDI file, mp3 or even a CD when is playing in the background. Noise usually happens on say moving a window or scolling i.e. just about all the time, proce
-
Enterprise Structure-Company Code/Customer Master
Hey Friends, I have a question here. Consider that there is a production system ABC. Within ABC When I go to the company code transaction within the Financial accounting, I see a list of lot of company codes existing. Also I saw that not all the comp