on 11-21-2011 2:52 PM
Hi Friends,
We have flat file with 400 lines.Can you create multiple IDOCS thru Graphical mapping.
if that is possible please share me the validating details. even i dont have test file for this.
Regards,
Naren
If you want idoc for each record in the flat file then you can go for the following blog ...
refer this [link|https://wiki.sdn.sap.com/wiki/display/XI/File%20to%20Multiple%20IDOC%20Splitting%20without%20BPM]
Please refer file content conversion link in sdn forum or sap help document or below link
http://www.riyaz.net/sap/xipi-file-content-conversion-for-complex-structures/79/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Priyanka,
Thanks for ur reply ....
With your logic we r getting 1 IDOC for 11 detail line items, but it should be 2.
i mean for 10 or less than 10, it should create 1 IDOC, from 11 to 20, 1 more IDOC should be created.
Source:
Flat File having Header, Detail, and Trailer
Target:
IDOC
Regards
Naren
Hi Priyanka,
I have tried with round function as well.it doesn't work.
in my case what ever the value am giving in input 2 that no.of idcos r generating .i have given 10 in input 2.......that 10 IDOCS only generating. if i gv 19, even than 10 idocs are getting generated.
input1: detail>index [1,1]>divide>ceil>split by value change-->idoc
index2: constant[10]
Regards,
Naren
Hi,
I am facing 1 more issue in same logic..
I am getting perfect IDOC's are per above logic.
But
suppose we have 11 records in input file, there are 2 IDOC's
but all segments related to records are appearing in 1st IDOC only.
Nothing is coming in the second IDOC, it is empty.
Please advice, what needs to be done?
Source:
HEADER
DETAIL
TRAILER
Target:
1st IDOC: HEADER, DETAIL and TRAILER is coming for BOTH the IDOC's
2nd IDOC: Empty
Regards
Naren
Hi Narendra,
Try with the below logic to split the records into 2 idocs...please paste your sample input & expected output so tha I can provide you the logic.
formatByExample--->Segment of IDOC
formatByExample:
input1: detail>index 1,1>divide with constant 10>ceil>split by value change-->
index2: Header/detail element
Regards,
Priyanka
Hi Priyanka,
We tested it for 3 Records, 2 IDOC's are on output side, but Header/Detail segments are not coming in second IDOC.
Ideally it should show 1 header, 2 IDOC segment for detail records in 1st IDOC, and same 1 header, and 3rd IDOC segments containing detail records.
Input:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Payroll xmlns:ns0="http://gm.com/xi/GLOBALVIEW/OFS/Payroll/1">
<RECORDS>
<HEADER>
<COMP_CODE>1000</COMP_CODE>
<AC_DOC_NO/>
<FISC_YEAR>2011</FISC_YEAR>
<DOC_TYPE/>
<DOC_DATE>01102011</DOC_DATE>
<PSTNG_DATE>01152011</PSTNG_DATE>
<FIS_PERIOD>01</FIS_PERIOD>
<TRANS_DATE/>
<USERNAME/>
<REF_DOC_NO>239</REF_DOC_NO>
<HEADER_TXT>Payroll US ADP GlobalView</HEADER_TXT>
<BUS_ACT/>
<OBJ_TYPE/>
<REF_DOC_NO_LONG/>
<VATDATE/>
<BILL_CATEGORY/>
<NEG_POSTING/>
<REASON_REV/>
</HEADER>
<DETAIL>
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1001</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FIS_YEAR>2011</FIS_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER>ADP0000001</COSTCENTER>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</DETAIL>
<DETAIL>
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1002</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FIS_YEAR>2011</FIS_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER/>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</DETAIL>
<DETAIL>
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1003</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FIS_YEAR>2011</FIS_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER/>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</DETAIL>
<TRAILER>
<TOTAL_COUNT>4</TOTAL_COUNT>
</TRAILER>
</RECORDS>
</ns0:Payroll>
Output:
<?xml version="1.0" encoding="UTF-8"?>
<ACC_DOCUMENT03><IDOC BEGIN=""><E1BPACHE09 SEGMENT=""><OBJ_TYPE></OBJ_TYPE><BUS_ACT></BUS_ACT><USERNAME></USERNAME><HEADER_TXT>Payroll US ADP GlobalView</HEADER_TXT><COMP_CODE>1000</COMP_CODE><DOC_DATE>01102011</DOC_DATE><PSTNG_DATE>01152011</PSTNG_DATE><TRANS_DATE></TRANS_DATE><FISC_YEAR>2011</FISC_YEAR><FIS_PERIOD>01</FIS_PERIOD><DOC_TYPE></DOC_TYPE><REF_DOC_NO>239</REF_DOC_NO><AC_DOC_NO></AC_DOC_NO><REASON_REV></REASON_REV><REF_DOC_NO_LONG></REF_DOC_NO_LONG><NEG_POSTNG></NEG_POSTNG><BILL_CATEGORY></BILL_CATEGORY><VATDATE></VATDATE></E1BPACHE09><E1BPACGL09 SEGMENT=""><ITEMNO_ACC></ITEMNO_ACC><GL_ACCOUNT>S44600TEST</GL_ACCOUNT><ITEM_TEXT>PArea US/01/2011</ITEM_TEXT><REF_KEY_1></REF_KEY_1><REF_KEY_2></REF_KEY_2><REF_KEY_3></REF_KEY_3><ACCT_TYPE>S</ACCT_TYPE><DOC_TYPE></DOC_TYPE><COMP_CODE>1001</COMP_CODE><FIS_PERIOD>01</FIS_PERIOD><FISC_YEAR>2011</FISC_YEAR><PSTNG_DATE>01152011</PSTNG_DATE><COSTCENTER>ADP0000001</COSTCENTER><PROFIT_CTR></PROFIT_CTR><WBS_ELEMENT></WBS_ELEMENT><ORDERID></ORDERID><TRADE_ID></TRADE_ID></E1BPACGL09><E1BPACGL09 SEGMENT=""><ITEMNO_ACC></ITEMNO_ACC><GL_ACCOUNT>S44600TEST</GL_ACCOUNT><ITEM_TEXT>PArea US/01/2011</ITEM_TEXT><REF_KEY_1></REF_KEY_1><REF_KEY_2></REF_KEY_2><REF_KEY_3></REF_KEY_3><ACCT_TYPE>S</ACCT_TYPE><DOC_TYPE></DOC_TYPE><COMP_CODE>1002</COMP_CODE><FIS_PERIOD>01</FIS_PERIOD><FISC_YEAR>2011</FISC_YEAR><PSTNG_DATE>01152011</PSTNG_DATE><COSTCENTER></COSTCENTER><PROFIT_CTR></PROFIT_CTR><WBS_ELEMENT></WBS_ELEMENT><ORDERID></ORDERID><TRADE_ID></TRADE_ID></E1BPACGL09><E1BPACGL09 SEGMENT=""><ITEMNO_ACC></ITEMNO_ACC><GL_ACCOUNT>S44600TEST</GL_ACCOUNT><ITEM_TEXT>PArea US/01/2011</ITEM_TEXT><REF_KEY_1></REF_KEY_1><REF_KEY_2></REF_KEY_2><REF_KEY_3></REF_KEY_3><ACCT_TYPE>S</ACCT_TYPE><DOC_TYPE></DOC_TYPE><COMP_CODE>1003</COMP_CODE><FIS_PERIOD>01</FIS_PERIOD><FISC_YEAR>2011</FISC_YEAR><PSTNG_DATE>01152011</PSTNG_DATE><COSTCENTER></COSTCENTER><PROFIT_CTR></PROFIT_CTR><WBS_ELEMENT></WBS_ELEMENT><ORDERID></ORDERID><TRADE_ID></TRADE_ID></E1BPACGL09><E1BPACCR09 SEGMENT=""><CURR_TYPE>10</CURR_TYPE><CURRENCY>USD</CURRENCY><AMT_DOCCUR>500.00</AMT_DOCCUR></E1BPACCR09><E1BPACCR09 SEGMENT=""><CURR_TYPE>10</CURR_TYPE><CURRENCY>USD</CURRENCY><AMT_DOCCUR>500.00</AMT_DOCCUR></E1BPACCR09><E1BPACCR09 SEGMENT=""><CURR_TYPE>10</CURR_TYPE><CURRENCY>USD</CURRENCY><AMT_DOCCUR>500.00</AMT_DOCCUR></E1BPACCR09></IDOC><IDOC BEGIN=""><E1BPACHE09 SEGMENT=""></E1BPACHE09></IDOC></ACC_DOCUMENT03>
INPUT
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Payroll xmlns:ns0="http://gm.com/xi/GLOBALVIEW/OFS/Payroll/1">
<RECORDS>
<HEADER>
<COMP_CODE>1000</COMP_CODE>
<AC_DOC_NO/>
<FISC_YEAR>2011</FISC_YEAR>
<DOC_TYPE/>
<DOC_DATE>01102011</DOC_DATE>
<PSTNG_DATE>01152011</PSTNG_DATE>
<FIS_PERIOD>01</FIS_PERIOD>
<TRANS_DATE/>
<USERNAME/>
<REF_DOC_NO>239</REF_DOC_NO>
<HEADER_TXT>Payroll US ADP GlobalView</HEADER_TXT>
<BUS_ACT/>
<OBJ_TYPE/>
<REF_DOC_NO_LONG/>
<VATDATE/>
<BILL_CATEGORY/>
<NEG_POSTING/>
<REASON_REV/>
</HEADER>
<DETAIL>
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1001</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FIS_YEAR>2011</FIS_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER>ADP0000001</COSTCENTER>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</DETAIL>
<DETAIL>
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1002</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FIS_YEAR>2011</FIS_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER/>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</DETAIL>
<DETAIL>
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1003</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FIS_YEAR>2011</FIS_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER/>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</DETAIL>
<TRAILER>
<TOTAL_COUNT>4</TOTAL_COUNT>
</TRAILER>
</RECORDS>
</ns0:Payroll>
OUTPUT
<?xml version="1.0" encoding="UTF-8"?>
<ACC_DOCUMENT03>
<IDOC BEGIN="">
<E1BPACHE09 SEGMENT="">
<OBJ_TYPE/>
<BUS_ACT/>
<USERNAME/>
<HEADER_TXT>Payroll US ADP GlobalView</HEADER_TXT>
<COMP_CODE>1000</COMP_CODE>
<DOC_DATE>01102011</DOC_DATE>
<PSTNG_DATE>01152011</PSTNG_DATE>
<TRANS_DATE/>
<FISC_YEAR>2011</FISC_YEAR>
<FIS_PERIOD>01</FIS_PERIOD>
<DOC_TYPE/>
<REF_DOC_NO>239</REF_DOC_NO>
<AC_DOC_NO/>
<REASON_REV/>
<REF_DOC_NO_LONG/>
<NEG_POSTNG/>
<BILL_CATEGORY/>
<VATDATE/>
</E1BPACHE09>
<E1BPACGL09 SEGMENT="">
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1001</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FISC_YEAR>2011</FISC_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER>ADP0000001</COSTCENTER>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
</E1BPACGL09>
<E1BPACGL09 SEGMENT="">
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1002</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FISC_YEAR>2011</FISC_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER/>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
</E1BPACGL09>
<E1BPACGL09 SEGMENT="">
<ITEMNO_ACC/>
<GL_ACCOUNT>S44600TEST</GL_ACCOUNT>
<ITEM_TEXT>PArea US/01/2011</ITEM_TEXT>
<REF_KEY_1/>
<REF_KEY_2/>
<REF_KEY_3/>
<ACCT_TYPE>S</ACCT_TYPE>
<DOC_TYPE/>
<COMP_CODE>1003</COMP_CODE>
<FIS_PERIOD>01</FIS_PERIOD>
<FISC_YEAR>2011</FISC_YEAR>
<PSTNG_DATE>01152011</PSTNG_DATE>
<COSTCENTER/>
<PROFIT_CTR/>
<WBS_ELEMENT/>
<ORDERID/>
<TRADE_ID/>
</E1BPACGL09>
<E1BPACCR09 SEGMENT="">
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</E1BPACCR09>
<E1BPACCR09 SEGMENT="">
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</E1BPACCR09>
<E1BPACCR09 SEGMENT="">
<CURR_TYPE>10</CURR_TYPE>
<CURRENCY>USD</CURRENCY>
<AMT_DOCCUR>500.00</AMT_DOCCUR>
</E1BPACCR09>
</IDOC>
<IDOC BEGIN="">
<E1BPACHE09 SEGMENT=""/>
</IDOC>
</ACC_DOCUMENT03>
Hi Priyanka,
That Logic Worked, But I used Input1 as what was Input2, and Input2 as what was Input1, in the solution you given.
Detail Records are coming perfectly fine for all IDOC's.
But Problem Now is, Header Segment is appearing in each new IDOC of Output, but Items under that Header Segment is appearing only in 1st IDOC, for rest only Header segment name is coming, no item level records are coming.
Please advice.
Regards,
Naren
great reply..very much helpful
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
2nd part issue
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Priyanka,
Yes, your understanding is perfect on this issue.
That Logic Worked, But I used Input1 as what was Input2, and Input2 as what was Input1, in the solution you given.
Detail Records are coming perfectly fine for all IDOC's.
But Problem Now is, Header Segment is appearing in each new IDOC of Output, but Items under that Header Segment is appearing only in 1st IDOC, for rest only Header segment name is coming, no item level records are coming.
example:
Input: 11 detailed records
Output: 2 IDOC's will Come
and they are coming
1st IDOC is showing HEADER/DETAILS
2nd IDOC is showing HEADER segment but no item level data
No issues with details in second IDOC
3rd IDOC: same as 2nd
But 2 and 3rd IDOC should also contain the same header segment and and ITeams under Header Records, as it was coming for 1st IDOC.
Please advice.
Regards,
Naren
Hi Priyanka,
Yes, your understanding is perfect on this issue.
That Logic Worked, But I used Input1 as what was Input2, and Input2 as what was Input1, in the solution you given.
Detail Records are coming perfectly fine for all IDOC's.
But Problem Now is, Header Segment is appearing in each new IDOC of Output, but Items under that Header Segment is appearing only in 1st IDOC, for rest only Header segment name is coming, no item level records are coming.
example:
Input: 11 detailed records
Output: 2 IDOC's will Come
and they are coming
1st IDOC is showing HEADER/DETAILS
2nd IDOC is showing HEADER segment but no item level data
No issues with details in second IDOC
But 2 IDOC should also contain the same header segment and and ITeams under Header Records, as it was coming for 1st IDOC.
Please advice.
Regards,
Naren
Hi Priyanka,
It did not work
index1: detail >index[1,1>divide[10]>ceil>split by value-->idoc segment
index2: header/detail item
problem is with header records only.
in output IDOC header segment and records under header segment are coming for 1st IDOC,
as below:
For 1st IDOC
<IDOC BEGIN="">
<E1BPACHE09 SEGMENT="">
<OBJ_TYPE/>
<BUS_ACT/>
<USERNAME/>
<HEADER_TXT>Payroll US ADP GlobalView</HEADER_TXT>
<COMP_CODE>1000</COMP_CODE>
<DOC_DATE>01102011</DOC_DATE>
<PSTNG_DATE>01152011</PSTNG_DATE>
<TRANS_DATE/>
<FISC_YEAR>2011</FISC_YEAR>
<FIS_PERIOD>01</FIS_PERIOD>
<DOC_TYPE/>
<REF_DOC_NO>239</REF_DOC_NO>
<AC_DOC_NO/>
<REASON_REV/>
<REF_DOC_NO_LONG/>
<NEG_POSTNG/>
<BILL_CATEGORY/>
<VATDATE/>
</E1BPACHE09>
For Second IDOC:
<IDOC BEGIN="">
<E1BPACHE09 SEGMENT=""/>
no item level fields are coming, and logic is not working for header Item level.
Regards,
Naren
Hi,
For example if you want to map HEADER_TXT field in E1BPACHE09 segment of idoc...follow below logic
useOneasmany--->HEADER_TXT
useOneAsMmany:
input1: HEADER_TXT (source)
input2: detail>index 1,1>divide with constant 10>ceil>split by value change-->collapseContext
input3:detail>index 1,1>divide with constant 10>ceil>split by value change
Regards,
Priyanka
Hi,
You need to analyse the validation rules based on the flat file. There should be some unique header or detail level field that can differentiate the number of idocs you would require.
Say for an eg., if you have only 400 detail lines where you are getting purchase order details, you can match purchase order number as validation rule for idocs.
Regards
Krish
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
84 | |
24 | |
11 | |
9 | |
7 | |
6 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.