R/3 - XI Idoc Collection Based On Same tRFC Call
We have solution where RSEOUT00 sends idocs out in one tRFC call to a system running Mercator. These idocs represent 1 transaction if you will, and are then mapped into 1 outbound file.
I am trying to figure out what the best option to do this in XI is. The requirement is to not collect based on a deadline, but to collect based on the chunk of idocs that were released online by the user in the same RSEOUT00 transaction.
Is this possible or any suggestions to accomplish this? I do have the flexibility to customize RSEOUT00 (its already custom actually) and have been toying with the idea of sending another message that is an "all are sent" or even something like a control message with a listing of all of the idoc numbers that belong to that group, but have yet to come up with a design that I'm comfortable with as the idocs are all sent asynchronously thorugh tRFC.
Thanks
Peter
Hi Peter,
If we can check the TID of the IDOC then that make your job easy..is it not ?
Because all the IDOCs send in one tRFC call will have the same TID..
Now i am trying to see what is the best way to get that...i checked standard context objects given by SAP ..it doesnot have this TID :(...
I have suggestion ..this will work for sure...however it maynot be the most optimal one...
In the BPM where you are collecting IDOCs...after the recieve..have a mapping from IDOC to a dummy message which will basically return TID....now this mapping should be an ABAP mapping ...now from the ABAP code...query the IDXSNDPOR table and get the TID for the current IDOC and return it..
Back in the BPM, check if this is a new TID or not...if it is new..we can bundle it and stop the collection...
if we have a better way to get the TID.....we can make this better...
Thanks.
Similar Messages
-
IDoc Collection in BPM and Without BPM
Hi All
I'm much confused on IDoc collection for which i require your expertise to clear my doubts. My primary question is based on the context "Multimapping doest work with idocs".
consider the case -> collect files-idoc scenario. <b>Using BPM</b> i need to have
a multimapping scenario. In the <b>transformation step</b> we will have a <b>container</b> element where <b><u>mutiline</u></b> is enabled so that the collected files are <b>transformed into one abs interface</b>. my dopubt arises here when i consider this scenario <b>without bpm</b> that is N:1 mapping (no collection). in this case why this <b>multimapping works in bpm process</b> and <b>not incase of non-bpm scenarios</b>? is it because in bpm the mapping happens in BPE?
pls clarify.
thks
Prabhu<i>>>>>In an N:1 scenario without BPM, how could you send more than one message to your multi-mapping? You can't.</i>
yes we cant as this validation is not supported at abap stack level and N:1 is possibkle without BPM (or i'm missing something here). but this same step with bpm get executed succceffuly. whats the logic behind it
Message was edited by:
Prabhu S -
Need help creating a device collection based on members of a user collection
Hello everyone,
I am working on developing a device collection based on the membership of a user collection. The purpose of the device collection is to provide us with the capability of deploying software to users while the users are logged off their systems.
I would love to use AD security groups but unfortunately that isn't an available approach in this case. I have been experimenting with SQL queries to find the best way to obtain the results I want and the following query works like a champ:
Select SYS.Name0,
v_R_User.Unique_User_Name0
FROM v_R_System AS SYS
JOIN v_UserMachineRelationship ON SYS.Name0=v_UserMachineRelationship.MachineResourceName
JOIN v_R_User ON v_UserMachineRelationship.UniqueUserName=v_R_User.Unique_User_Name0
JOIN v_FullCollectionMembership AS FCM on FCM.ResourceID = v_R_User.ResourceID
JOIN v_Collection AS COLMEM ON COLMEM.CollectionID = FCM.CollectionID
Where FCM.CollectionID = 'cha0000B'
The problem arises when I attempt this same query in SCCM 2012, I don't get any results from this query so of course it won't work to base a Device Collection from. Here is the WQL:
Select SYS.Name,
SMS_R_User.UniqueUserName
FROM SMS_R_System AS SYS
JOIN SMS_UserMachineRelationship ON SYS.Name=SMS_UserMachineRelationship.MachineResourceName
JOIN SMS_R_User ON SMS_UserMachineRelationship.UniqueUserName=SMS_R_User.UniqueUserName
join sms_v_FullCollectionMembership AS FCM on FCM.ResourceID = SMS_R_User.ResourceID
join SMS_v_Collection AS COLMEM ON COLMEM.CollectionID = FCM.CollectionIDwhere FCM.CollectionID = 'cha0000B'
I am hoping that someone will be able to look at my SQL and tell me how I can get the WQL right so I can use this query properly or provide suggestions to accomplish what I need.
Thanks in advance for the assist,
Chris BoltonHi Torsten,
While your suggestion of that link was close, it still went in the direction of using security groups as the basis for device queries and that isn't the direction I am pursuing. I had a colleague look at my original query and he identified
that I had some unnecessary redundancy but that didn't resolve my SQL -> WQL inconsistency. I continued to play with the query and the following SQL also works (and actually works a bit better for my purposes)
select distinct v_R_System.Name0,
v_R_User.Unique_User_Name0
FROM v_R_System
JOIN v_R_User on v_R_User.Full_User_Name0 = v_R_System.User_Name0
JOIN v_UserMachineRelationship ON v_R_System.Name0 = v_UserMachineRelationship.MachineResourceName
JOIN v_FullCollectionMembership on v_R_User.Unique_User_Name0 = v_FullCollectionMembership.SMSID
WHERE v_FullCollectionMembership.CollectionID = 'cha0000b'
however when I translate it to WQL I still am unable to get results (here is the WQL version)
select distinct sms_R_system.Name,
sms_R_User.UniqueUserName
FROM sms_R_system
JOIN SMS_R_User on SMS_R_User.FullUserName = SMS_R_System.UserName
JOIN SMS_UserMachineRelationship ON SMS_R_System.Name = SMS_UserMachineRelationship.MachineResourceName
JOIN SMS_FullCollectionMembership on SMS_R_User.UniqueUserName = SMS_FullCollectionMembership.SMSID
WHERE SMS_FullCollectionMembership.CollectionID = 'cha0000b'
I think I am on the verge of getting this right but it sure seems to be a challenge. Is there a "WQL Workbench" that I could use that is similar to SQL Management Studio inside of which I could test these queries rather than having to use the rather clunky
SCCM "Edit Query Statement" dialog box?
Thanks again,
Chris Bolton -
Dynamic computers collection based on User State Migration associations
At our company, we have a group of computers with the follwoing situation:
User works on machine with WindowsXP, there is already prepared new machine, with Windows 7 installed, and delivered to user. I have prepared 2 task sequences - "State Capture" and "State Restore", both deployed to separate device collections.
Now, what I do is create old/new computer association in the User State Migration tab, add old computer to Capture collection, let the TS complete, add new computer to Restore collection, and let the TS complete. After all these steps user can begin to work
on the new machine with his/her profile and data migrated.
But I would like to speed things a little bit, and allow my
colleagues to perform such "migration" by simply adding computers association. To achieve that, I need to create a query, that would assign computers to collections, based on the existing associations in the User State Migration tab. The problem is,
I fail to find appropriate rule in query wizard. Is it possible at all?
I need computer to be added to Capture collection upon detection of it being source computer in the USM tab, and removed from collection upon finished TS, with the target computer added to Restore collection at the same moment and removed from the collection
upon finished restore TS.
I would greatly appreciate any help or pointing into right direction.Hi,
There is a blog about removing computer from collection after SCCM task sequence. But it is for SCCM 2007. You could have a look on this blog to see if the script can be edited to meet your requirements.
Remove computer association from collection
after SCCM task sequence
Note: Microsoft provides third-party contact information to help you find technical support. This
contact information may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information.
Best Regards,
Joyce
We
are trying to better understand customer views on social support experience, so your participation in this
interview project would be greatly appreciated if you have time.
Thanks for helping make community forums a great place. -
Split Single IDOC into Multiple IDOC's Based on Segment Type
Hi Experts,
I have a scenario IDOC to FILE , Split Single IDOC into Multiple IDOC's based on Segment Type
Outbound:
ZIdocName
Control Record
Data Record
Segment 1
Segment 2
Segment 3
Status Record
I should get output like below
Inbound:
ZIdocName
Control Record
Data Record
Segment 1
Status Record
ZIdocName
Control Record
Data Record
Segment 2
Status Record
ZIdocName
Control Record
Data Record
Segment 3
Status Record
Please suggest me step by step process to achieve this task.
Thanks.Thanks a lot Harish for reply.
I have small doubt. According to your reply , If we have N number of segments in single IDOC with same fields in all segments then for splitting Single IDOC into Multiple IDOC's based on Segment Type we need to duplicate N number of target IDOC tree structure.
Is that possible to Split single IDOC into Multiple IDOC's based on Segment Type using only one Target IDOC structure without duplicating the Target IDOC structure tree. -
Hi We have a custom idoc(Inbound) for posting goods movements...Actually it does goods movements through two seperate BDC calls and returns the material document number in the status.When we process two or more idocs through a batch processing at a same time..the first idoc goes through do the posting corretly but the second and third doesnt do anything but gets 53 status and also picks up the material doc number of the first idoc in status...
Each idoc goes through correctly when processed individually...What might be the problem....?and how it could be corrected...?
Thanks,
LarryHi,
As Manohar said ,the problem is due to variables refresh. One of the variables is setting to success status after processing of the first idoc , i think the same status is transfered to next idoc's also.
follow below steps to identify the problem.
1.Change the partner profile settings to 'Collective method' , then idoc's will be created with 64 status.
2.then put a break point at processing function module.
3.use BD87 or program : RBDAPP01 to process 64 status idoc's , while processing idoc's take more than one 64 status idoc. then you will know the exact problem.due to break point, program will go to debug mode, after processing of the first idoc then start debugging the program with second idoc processing.
Regards
Appana -
Is there a way to create a collection based on the "previous import"?
is there a way to create a collection based on the "previous import"? that would make it easy to mobile sync the last import to my ipad, and do further picking/rejecting while away from my laptop.
well, yes, of course i could do it that way. i guess i wasn't specific enough. is there a way to create a smart collection, with the photos in the "previous import" as members of the smart collection. earlier i mentioned about using this smart collection to mobile sync with my ipad, to do further flagging.
so my intention, use a smart collection to mobile sync with my ipad, and the smart collection to include the photos from my previous import.
i guess another way to ask the question, is there a way to create a smart collection, by using some rule or condition in the smart collection, to automatically include previous import photos.
the documentation says that "previous import" is a collection, even though it shows up in the catalogue side bar section. but i see no way to choose that collection when making a smart collection.
jd -
Using JavaScript need to Sort subsite site collection based on date in descending order
Hi,
Below is my code, where i need to sort the " webCollection
= web.getSubwebsForCurrentUser(null)" web collection based on the web.get_created() in
descending order. How could i do it any suggestions. Also i need it in JavaScript.
<script src="/_layouts/15/sp.runtime.js" type="text/javascript"></script>
<script src="/_layouts/15/SP.js"></script>
<script type="text/javascript">
var context = SP.ClientContext.get_current();
var web = context.get_web();
ExecuteOrDelayUntilScriptLoaded(getWebProperties, "sp.js");
function getWebProperties() {
webCollection = web.getSubwebsForCurrentUser(null);
context.load(webCollection)
//ctx.load(this.web);
context.executeQueryAsync(Function.createDelegate(this, this.onSuccess),
Function.createDelegate(this, this.onFail));
function onSuccess(sender, args) {
//alert('web title:' + this.web.get_title() + '\n ID:' + this.web.get_id()
+ '\n Created Date:' + this.web.get_created());
alert("Number of sites: " + webCollection.get_count());
var webEnumerator = webCollection.getEnumerator();
while (webEnumerator.moveNext()){
var web = webEnumerator.get_current();
alert("Title="+web.get_title() +"\n"+ "Created="+web.get_created());
function onFail(sender, args) {
alert('failed to get list. Error:'+args.get_message());
//getWebProperties();
</script>
Thanks!
MCTS- Please vote and mark posts as answered where appropriate.Hi,
According to your post, my understanding is that you wanted to sort the subsite based on the date in descending order.
You can refer to the following code snippets, it sorts the subsites by the date in descending order.
<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
// When the body is loaded, the onload event handler executes each function whose name is contained in this array.
_spBodyOnLoadFunctionNames.push("callCSOM");
function callCSOM()
$("#Button1").click(function()
ExecuteOrDelayUntilScriptLoaded(RetriveSites, "sp.js");
var currentcontext = null;
var currentweb = null;
function RetriveSites()
currentcontext = new SP.ClientContext.get_current();
currentweb = currentcontext.get_web();
this.subsites = currentweb.get_webs();
currentcontext.load(this.subsites);
currentcontext.executeQueryAsync(Function.createDelegate(this, this.ExecuteOnSuccess),
Function.createDelegate(this, this.ExecuteOnFailure));
function ExecuteOnSuccess(sender, args)
var subsites = '';
var enum1 = this.subsites.getEnumerator();
var siteCreatedTime = '';
var array=new Array();
while (enum1.moveNext())
var site = enum1.get_current();
array.push(new Array(site.get_created(),site.get_title()));
alert(array);
array=sortMethod(array);
alert(array);
function sortMethod(arr) {
var i, j, stop, len = arr.length;
for (i=0; i<len; i=i+1)
for (j=1;j<len - i; j++)
// change the "<" to ">" would be sort by the Ascending.
if (new Date(arr[j-1][0]) < new Date(arr[j][0]))
//swap(j, j+1);
var temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
//alert(new Date(arr[j]));
return arr;
function ExecuteOnFailure(sender, args) {
alert("error");
</script>
<input id="Button1" type="button" value="Run Code"/>
Results:
Sort before:
Sort after:
Thanks,
Jason
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected].
Jason Guo
TechNet Community Support -
How to sort a collection based on their date?
how do i sort a collection based on their respective dates which are in Calendar format?
this is my codes
/** This class is use to sort the call list base on their date
import java.util.*;
public class a implements Comparator
/** compare the objects base on their types
* @obj1 the first object to be compared
* @obj2 the second object to compare with the first object
public int compare(Object obj1, Object obj2)
if (obj1 == obj2)
return 0;
if (obj1 == null || obj2 == null)
return 0;
if (!(obj1 instanceof Call) || !(obj2 instanceof Call))
return 0;
Call lhs = (Call) obj1;
Call rhs = (Call) obj2;
int s = lhs.getDate().compareTo(rhs.getDate());
if (s != 0)
return s;
return 1;
this is the error
a.java:21: cannot resolve symbol
symbol : method compareTo (java.util.Calendar)
location: class java.util.Calendar
int s = lhs.getDate().compareTo(rhs.getDate()); -
What is the difference beween idoc package and idoc collection
Hi friends,
i am unable to understand difference betwen Idoc package and Idoc cillection.
Please give me clear clarification.
Thanks and regards
BhanuHi Bhanu,
Apart from the replies above, in case you're looking for an answer from ECC perspective, here are some inputs: (ECC is considered as sender here)
1. IDoc Collection:
This will collect the IDocs and will not immediately send it to the target system after they are created. Program RSEOUT00 can be later scheduled for these collected IDocs to deliver them to the target. You can treat this as a park and process approach which proves useful in several business scenarios.
This standard link gives more insight:
SAP Library - IDoc Interface/ALE
2. IDoc Packaging:
This defines the number of IDocs to be packed and sent in 1 RFC call (tRFC). If you set is as 20, then 20 IDocs will be sent in 1 tRFC request. This doesn't connote whether the IDocs will be triggered immediately or later, this just talks about the bundling of IDocs per RFC call.
Hope this helps.
Regards,
Abhishek -
IDOC Number based on the output type
Hi,
I have a special requirement where in I need to find the IDOC number generated from the output type .
I have the NAST details and the Invoice number and need to find the IDOC generated for the particular NAST entry.
Is there any table or FM which gives this information in SAP.
Please let me know.
Regards
PraneethAll,
Solved myself.
Used FM WFMC_PROTOCOL_GET to get the IDOC number based on the NAST value.
Regards
Praneeth -
WQL query for collection based on file properties not add remove
Hi
I have an issue where a .exe file does not have the updated version number available in add remove programs. The only way I know to get the version number is to right click the file and view version there.
I need to make a collection based on the information available in properties. Is this possible? How would I write the query?
ThanksHi,
to perform this kind of operation on a .exe file you need to configure software inventory.
Inside the properties just choose to Collect File Details and select a path to scan.
http://technet.microsoft.com/en-us/library/bb633191.aspx and http://technet.microsoft.com/en-us/library/bb632607.aspx -
IDoc number based upon sales data.
Hi Experts,
How to get the IDoc number in case I have sales document number or any other data which is being send in IDoc, any way we can get the IDoc number?
Also help me know the program to process the IDocs in background, I know the t.code bd87 is used to process the idocs, but how to process in background via a batch job.
thanx
GarimaHi,
You may use t.code we09 to get the Idoc number based upon data,
you need to provide the information like Idoc basic type, date range etc to filter the data,
and under "Creteria for search in data records", provide the segment name, search in field and value against you are looking for a Idoc number.
Use following programs to process the IDocs in background:-
RSEOUT00 u2013 Process all selected IDocs (EDI)
RBDAPP01 u2013 Inbound Processing of IDocs Ready for Transfer
Some use full t.code for IDoc processing:-
WE60 u2013 IDoc documentation
BD87 u2013 Inbound IDoc reprocessing
BD88 u2013 Outbound IDoc reprocessing
BDM2 u2013 IDoc Trace
WE19- Testing IDoc.
regards
Vivek. -
Collection-Based For Loop Troubles!
I am trying to compile this code from the book "Beginning Java 2: JDK 5 Edition" by Ivor Horton, using XCode on a Mac with SDK 1.4 (I know that the book is for JDK 5, but I figure that the first 5 chapters or so are going to be basic enough that it won't matter?):
public class StringTokenizing {
public static void main(String[] args) {
String text = "To be or not to be, that is the question.";
String delimiters = "[, .]";
int[] limits = {0, -1};
for(int limit : limits) {
System.out.println("\nAnalysis with limit = " + limit);
String[] tokens = text.split(delimiters, limit);
System.out.println("Number of tokens: " + tokens.length);
for(String token : tokens) {
System.out.println(token);
But, just as with EVERY code involving collection-based for loops -- In this case, the "for(int limit : limits)" statement, etc -- the compiler won't do it. The error points to that line and just says "; expected" as if it has no idea what to do with for loops that are not in the for (x ; x ; x) format...
...Grrrr. This is really starting to make it impossible to follow the examples in the book. Can someone help me?
Thanks!
-mattKay, have you asked a written permission prior to posting that reply
while I was posting my reply hm? I guess you didn't.
kind regards,
Jos (it's all anarchy and chaos overhere ;-)
^
|
+----- slow old sod -
Can I bulk collect based on a date variable?
I'm want to use some sort of Bulk collect to speed up this query inside a PL/SQL block (we're in 10g). I have seen examples of using a FORALL statement but I don't know how to accommodate the variable v_cal_date. My idea is to be able to run the script to update a portion of the table "tbl_status_jjs" based on a date range that I provide. tbl_status_jjs contains a list of dates by minute of the day for an entire year and a blank column to be filled in.
I though of using something like FORALL v_cal_date in '01-apr-2009 00:00:00'..'01-jun-2009 00:00:00' -- somehow need to increment by minute!? ... but that doesn't seem right and i can't find any exmples of a bulk collect based on a date. How do I bulk collect on a date variable? Can I use the date/time from a subset of records from the final table in some sort of cursor?
Thanks
Jason
-- loop through one day by minute of the day and update counts into table
v_cal_date Date :=TO_DATE('01-apr-2005 00:00:00','dd-mm-yyyy hh24:mi:ss');
intX := 1;
WHILE intX <= 1440 LOOP
UPDATE tbl_status_jjs
SET (cal_date, my_count) =
(SELECT v_cal_date,
NVL(SUM(CASE WHEN v_cal_date >= E.START_DT AND v_cal_date < E.END_DT THEN 1 END),0) AS my_count
FROM tbl_data_jjs E
WHERE cal_date = v_cal_date;
v_cal_date := v_cal_date + (1/1440);
intX := intX + 1;
COMMIT;
END LOOP;Here are the two tables. The goal is to find an efficient way to count how many records in tbl_data have a start_dt before and a end_dt after each cal_date in tbl_status.
01-apr-2005 00:05:00 ==> 3
01-apr-2005 00:25:00 ==> 1
DROP TABLE tbl_status;
CREATE TABLE tbl_status
( CAL_DATE DATE,
MY_COUNT NUMBER);
DECLARE
start_date Date :=TO_DATE('01-jan-2006 00:00:00','dd-mm-yyyy hh24:mi:ss');
end_date Date :=TO_DATE('01-jan-2006 01:00:00','dd-mm-yyyy hh24:mi:ss');
BEGIN
INSERT INTO tbl_status (CAL_DATE)
SELECT start_date + ( (LEVEL - 1) / (24 * 60))
FROM dual
CONNECT BY LEVEL <= 1 + ( (end_date - start_date) * (24 * 60) );
END;
DROP TABLE tbl_data;
CREATE TABLE tbl_data
( START_DT DATE,
END_DT DATE);
INSERT INTO tbl_data VALUES (TO_DATE('2006-01-01 00:05:00', 'yyyy-mm-dd hh24:mi:ss'), TO_DATE('2006-01-01 00:15:00', 'yyyy-mm-dd hh24:mi:ss'));
INSERT INTO tbl_data VALUES (TO_DATE('2006-01-01 00:05:00', 'yyyy-mm-dd hh24:mi:ss'), TO_DATE('2006-01-01 00:20:00', 'yyyy-mm-dd hh24:mi:ss'));
INSERT INTO tbl_data VALUES (TO_DATE('2006-01-01 00:05:00', 'yyyy-mm-dd hh24:mi:ss'), TO_DATE('2006-01-01 00:30:00', 'yyyy-mm-dd hh24:mi:ss'));
INSERT INTO tbl_data VALUES (TO_DATE('2006-01-01 00:35:00', 'yyyy-mm-dd hh24:mi:ss'), TO_DATE('2006-01-01 00:40:00', 'yyyy-mm-dd hh24:mi:ss'));
DECLARE
v_cal_date Date :=TO_DATE('01-jan-2006 00:00:00','dd-mm-yyyy hh24:mi:ss');
intX Integer :=1;
BEGIN
WHILE intX <= 60 LOOP
UPDATE tbl_status
SET (cal_date, my_count) =
(SELECT v_cal_date,
NVL(SUM(CASE WHEN v_cal_date >= E.START_DT AND v_cal_date < E.END_DT THEN 1 END),0) AS my_count
FROM tbl_data E
WHERE cal_date = v_cal_date;
v_cal_date := v_cal_date + (1/1440);
intX := intX + 1;
COMMIT;
END LOOP;
END;Edited by: Jason_S on Oct 21, 2009 9:00 AM -- i messed up the years/months .. fixed now
Edited by: Jason_S on Oct 21, 2009 9:13 AM
Maybe you are looking for
-
Upgrade from Vista to Windows 7 with clean install
I want to install Windows 7 on my Equium U-400 laptop with clean install in order to save space in my C drive. The question is how will I restore all Toshiba bundled software that my laptop came with. There is a HDD Recovery folder in the second part
-
Create PDF from two files in sub folder automation
I am looking to create an automation tool that does the following to help save time (the current process takes about 20 min): First, take two specific files (The first page is a single worksheet excel file that is fitted to one page. The second is a
-
When I create a new photo album in Iphoto it adds all my photos in the library
I love my macbook pro but still not fully understanding Iphoto. When I create a new photo album and drag photos over from a disk it seems to add all photos from my library. When I remove them it removes them from all the albums. HELP!
-
Content Categorizer with SiteStudio
Hi all, I need to integrate Content Categorizer with SiteStudio, when i try to check-in some thing from Content server then i get the option to Categorise. But while contributing from SiteStudio on the Assign info form i dont get the Categorise optio
-
HT201263 This iPhone could not be restored. An unknown error occurred (3194)
This iPhone 4 is lockrd by French Orange Telecom. As I leave in the US, I exchanged my old iPhone with my friend thinking I would easily unlock it. Big mistake...Today, I connected to the power to test a wifi connection thru a Access Point, and even