on 11-27-2008 10:05 AM
Hi...
I need one help in mapping.
Below is the input file structure.
Input--
Invoicedate
PODate
PONumber
InvoiceAmount
GRDetails----(0-unbounded)
GRNumber
GRQuantity
POItem
InvocieLineItem -
(0---unbounded)
POItem
POUnit
ItemAmount
ItemNumber
TaxCode
Below is the output file structure.
Output----
(1.....1)
Item--
InvoiceDocumentNumber
POitem
POUnit
RefDocYear
Quanitity
ItemAmount
ItemNumber
Based on the POItem which is in the GRDetails,Invoice Doument Number should get generated.
POItem of both GRDetails and InvoiceLineItem are same.
InvocieDocumentNumber,ItemNumber should change depending on the POItem.
Could you please help me in this mapping issue.
for eg, if we give the details in below format,
Input
InvocieDate---27/11/2008
PODATE----
27/11/2008
InvoiceAmount--100
GRDetails
GRNumber-----GR01
GRQuantity---50
POItem-------00010
InvocieLineItem
POItem-------00010
POUnit-------EA
ItemAmount---20
ItemNumber----0001
TaxCode-----V0
I need to get output as below.
Output----
(1.....1)
Item--
InvoiceDocumentNumber----
000001
POitem----
00010
POUnit----
EA
RefDocYear----
2008
Quanitity----
50
ItemAmount----
2000
ItemNumber----
0001
If i have multiple records like below
Input
InvocieDate---27/11/2008
PODATE----
27/11/2008
InvoiceAmount--100
GRDetails
GRNumber-----GR01
GRQuantity---50
POItem-------00010
GRDetails
GRNumber-----GR02
GRQuantity---40
POItem-------00020
InvocieLineItem
POItem-------00010
POUnit-------EA
ItemAmount---20
ItemNumber----0001
TaxCode-----V0
InvocieLineItem
POItem-------00020
POUnit-------EA
ItemAmount---30
ItemNumber----0002
TaxCode-----V0
I need to get output as below.
Output----
(1.....1)
Item
InvoiceDocumentNumber----
000001
POitem----
00010
POUnit----
EA
RefDocYear----
2008
Quanitity----
50
ItemAmount----
2000
ItemNumber----
0001
Item
InvoiceDocumentNumber----
000002
POitem----
00020
POUnit----
EA
RefDocYear----
2008
Quanitity----
40
ItemAmount----
3000
ItemNumber----
0002
Thanks
Leela
Hi leela,
you cn acheive this with the index function as below
poitem-removecontext-index with value 00001 and increase by 1--invoicnaccountno(target).
hope it helps.
thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Sudhir,
I have tried with the index function. I have given POItem--RemoveContextIndex (initial value00001,increment-1)----Target InvoiceDocNum.
While testing , i am getting the InvoceiDocNum as 1,but not 00001.
Could you please help in this issue.
Regards,
Leela
Edited by: leelaratnam morampudi on Dec 1, 2008 5:56 AM
Hi Raj,
I have done like
POItemRemoveContext-index(initial Value-00001,increment-1)-format('00000')Target(InvoicedocNumber)
if i have only one POITem Item i am getting the value. means
If i have PoItem as 0010, then in target i am getting 000001.
if i have 2 POItems ,like
POItem---0010
POItem--0020
then in target i am getting only one InvocieDocNumber as 000001.
but second one is not cuming.
Source:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_InvoiceApproval xmlns:ns0="http://InvoiceApproval">
<InpurSaveInvoiceRequest>
<InvoiceId/>
<InvoiceNumber/>
<InvoiceRefNumber/>
<VendorCode/>
<Currency/>
<InvoiceDate/>
<PONumber>12/12/2008</PONumber>
<PODate/>
<invoiceAmount/>
<paymentTerms/>
<ApprovalStatus/>
<CreatedBy/>
<CreatedDate/>
<CustomerProcess/>
<PurchaseGroup/>
<PurchaseOrganization/>
<GRDetails>
<GRNumber/>
<GRQuantity>3</GRQuantity>
<POItem>0010</POItem>
</GRDetails>
<GRDetails>
<GRNumber/>
<GRQuantity>4</GRQuantity>
<POItem>0020</POItem>
</GRDetails>
<InvoiceLineItem>
<InvoiceId/>
<POItem>0010</POItem>
<Material/>
<MaterialName/>
<Plant/>
<Quantity/>
<NetPrice/>
<POUnit/>
<ItemAmount>3</ItemAmount>
<ItemNumber/>
<TaxCode/>
<GR_Number/>
<Year/>
</InvoiceLineItem>
<InvoiceLineItem>
<InvoiceId/>
<POItem>0020</POItem>
<Material/>
<MaterialName/>
<Plant/>
<Quantity/>
<NetPrice/>
<POUnit/>
<ItemAmount>2</ItemAmount>
<ItemNumber/>
<TaxCode/>
<GR_Number/>
<Year/>
</InvoiceLineItem>
<InvoiceDoc_Item/>
<HeaderText/>
<CompanyCode/>
<ApprovedBy/>
<ApprovedDate/>
<ModifiedBy/>
<ModifiedDate/>
<IsValidFlag/>
<Remarks/>
<FiscalYear/>
</InpurSaveInvoiceRequest>
</ns0:MT_InvoiceApproval>
Target
<?xml version="1.0" encoding="UTF-8"?>
<ns1:Z_INVOICE_CREATE xmlns:ns1="urn:sap-com:document:sap:rfc:functions">
<HEADERDATA>
<INVOICE_IND>X</INVOICE_IND>
<DOC_DATE></DOC_DATE>
<PSTNG_DATE></PSTNG_DATE>
<REF_DOC_NO></REF_DOC_NO>
<COMP_CODE></COMP_CODE>
<CURRENCY></CURRENCY>
<GROSS_AMOUNT></GROSS_AMOUNT>
<CALC_TAX_IND>X</CALC_TAX_IND>
<PMNTTRMS></PMNTTRMS>
<BLINE_DATE></BLINE_DATE>
<HEADER_TXT></HEADER_TXT>
</HEADERDATA>
<ITEMDATA>
<item>
<INVOICE_DOC_ITEM>00001</INVOICE_DOC_ITEM>
<PO_NUMBER>12/12/2008</PO_NUMBER>
<PO_ITEM>0010</PO_ITEM>
<REF_DOC></REF_DOC>
<REF_DOC_YEAR></REF_DOC_YEAR>
<REF_DOC_IT></REF_DOC_IT>
<TAX_CODE></TAX_CODE>
<ITEM_AMOUNT>3</ITEM_AMOUNT>
<QUANTITY>9</QUANTITY>
<PO_UNIT></PO_UNIT>
</item>
<item>
<PO_ITEM>0020</PO_ITEM>
<REF_DOC></REF_DOC>
<REF_DOC_YEAR></REF_DOC_YEAR>
<REF_DOC_IT></REF_DOC_IT>
<TAX_CODE></TAX_CODE>
<ITEM_AMOUNT>2</ITEM_AMOUNT>
<QUANTITY>8</QUANTITY>
<PO_UNIT></PO_UNIT>
</item>
</ITEMDATA>
</ns1:Z_INVOICE_CREATE>
Hi Sudhir,
Thank u . If i use split by Value then it is working fine.
Problem is the Target InvocieDocNumber length is only 5
so if we give 9 POItem details, it is wrking fine.
POITem-0010
POITem-0020
.
.
.
.
.
POITem-0090
POITem-0100
But see the last POItem---0100.
For that i need to get 00010
Like Below
POITem-0100
POITem-0110
POITem-0120
POITem-0130
.
.
..
.
.
POITem-0200
Can you help in this issue.
Hi Sudhir,
Actually my scenario is like File to RFC scenario using BPM
I am calling Z_Invocie_Create Bapi which is custom BAPI.
For this Bapi, the input structure will be like
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_InvoiceApproval xmlns:ns0="http://InvoiceApproval">
<InpurSaveInvoiceRequest>
<InvoiceId/>
<InvoiceNumber/>
<InvoiceRefNumber/>
<VendorCode/>
<Currency/>
<InvoiceDate/>
<PONumber/>
<PODate/>
<invoiceAmount/>
<paymentTerms/>
<ApprovalStatus/>
<CreatedBy/>
<CreatedDate/>
<CustomerProcess/>
<PurchaseGroup/>
<PurchaseOrganization/>
<GRDetails>
<GRNumber/>
<GRQuantity/>
<POItem/>
</GRDetails>
<InvoiceLineItem>
<InvoiceId/>
<POItem/>
<Material/>
<MaterialName/>
<Plant/>
<Quantity/>
<NetPrice/>
<POUnit/>
<ItemAmount/>
<ItemNumber/>
<TaxCode/>
<GR_Number/>
<Year/>
</InvoiceLineItem>
<InvoiceDoc_Item/>
<HeaderText/>
<CompanyCode/>
<ApprovedBy/>
<ApprovedDate/>
<ModifiedBy/>
<ModifiedDate/>
<IsValidFlag/>
<Remarks/>
<FiscalYear/>
</InpurSaveInvoiceRequest>
</ns0:MT_InvoiceApproval>
In the above structre, there can be Multiple GRDetails and LineItemDetails.
Based on the POItem, the InvoiceDoc number which is in the target should be mapped.
If i use POItem-RemoveContextIndex(00001,1)Concat(Constant(0000),Index)-SplitbyValue---Target
then for the POItem--0100, the InvocieDocNumber is 000010 but it should be 00010
so i have used IFS Boolean function for that.
I am checking the index value. If it is greater that 9, then i am concating with constant 0000 else with constant 000.
but this works till 00099. after that it will cum like 000100 but it should be like 00100
POItemRemoveContext-index(initial Value-00001,increment-1)-format('00000')Target(InvoicedocNumber)
if i have only one POITem Item i am getting the value. means
If i have PoItem as 0010, then in target i am getting 000001.
if i have 2 POItems ,like
POItem---0010
POItem--0020
then in target i am getting only one InvocieDocNumber as 000001.
but second one is not cuming.
Use split by value function before target
POItemRemoveContext-index(initial Value-00001,increment-1)-format('00000')Split(ByValue)--Target
Regards
Raj
Hi Leela,
I'm guessing that you're encountering issues in the nodes InvoiceDocumentNumber and ItemNumber ? Is this correct? Since the solution provided by Sudhir would generate the counting
Regards,
Edited by: dspboys on Nov 27, 2008 2:09 PM
Edited by: dspboys on Nov 27, 2008 2:09 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
88 | |
23 | |
11 | |
9 | |
8 | |
5 | |
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.