Technical Articles
Migrating Service Purchase Orders with S/4HANA Migration Cockpit
Purchase Order Service Item Category is not supported by Migration of Purchase Orders (Only Open) Migration Cockpit object. In order to migrate Service PO object should be enhanced. In this blog post you will learn how to adjust it.
BAPI_PO_CREATE1 is used for PO migration. OSS note 2114353 – BAPI_PO_CREATE1: Template for creating service PO provide you with the sample test records for various business cases. I will use PO with one service line + single account assignment as example.
1 Create new Migration Project. In LTMC t-code fill Name and Mass Transfer ID.
2 Run LTMOM t-code. Open your migration project and create new migration object from Template.
Menu Project – Create Migration Object – From Template
Select Purchase order (only open PO)
Change Object description to Service Purchase order (only open PO). Also switch Names view via menu Settings -> Technical Names On/Off.
3 Adjust source structures. Append new structures below to lower level S_EKPO Item Data.
a – S_ESKL Create Comm. Structure: Acct Assgt Distr. for Service Line fields
Key | Name | Data Type | Length | Decimal Places | Amount Field | Column Header | Group Text | Check Table |
1 | EBELN | CHAR | 10 | 0 | Purchasing Document Number | S_EKPO | ||
1 | EBELP | NUMC | 5 | 0 | Item Number of Purchasing Document | S_EKPO | ||
1 | PCKG_NO | NUMC | 10 | 0 | Package number | |||
1 | LINE_NO | NUMC | 10 | 0 | Line Number | |||
0 | SERNO_LINE | NUMC | 2 | 0 | Seq. Number of Acc. Assignment Specifica | |||
0 | PERCENTAGE | DEC | 4 | 1 | 0 | Percentage for Account Assignment Value | ||
0 | SERIAL_NO | NUMC | 2 | 0 | Sequential Number of Account Assignment |
S_ESKL foreign keys relationship
Field Name | Type of Foreign Relat. | Check Table | Field of Check Table or Literal |
EBELN | Field | S_EKPO | EBELN |
EBELP | Field | S_EKPO | EBELP |
PCKG_NO | Field | S_EKPO | |
LINE_NO | Field | S_EKPO | |
SERNO_LINE | Field | S_EKPO |
b – S_ESLL Lines of Service Package fields
Key | Name | Data Type | Length | Decimal Places | Amount Field | Column Header | Group Text | Check Table |
1 | EBELN | CHAR | 10 | 0 | Purchasing Document Number | S_EKPO | ||
1 | EBELP | NUMC | 5 | 0 | Item Number of Purchasing Document | S_EKPO | ||
1 | PCKG_NO | NUMC | 10 | 0 | Package number | |||
1 | LINE_NO | NUMC | 10 | 0 | Internal line number | |||
0 | EXT_LINE | NUMC | 10 | 0 | Line Number | |||
0 | OUTL_LEVEL | INT1 | 3 | 0 | Hierarchy level of group | |||
0 | OUTL_IND | CHAR | 1 | 0 | Indicator: Outline line | |||
0 | SUBPCKG_NO | NUMC | 10 | 0 | Subpackage number | |||
0 | QUANTITY | QUAN | 13 | 0 | Quantity with Sign | |||
0 | BASE_UOM | UNIT | 3 | 0 | Base Unit of Measure | |||
0 | GR_PRICE | DEC | 23 | 2 | 0 | Gross price | ||
0 | SHORT_TEXT | CHAR | 40 | 0 | Short Text | |||
0 | OVF_TOL | DEC | 3 | 0 | Overfulfillment Tolerance | |||
0 | OVF_UNLIM | CHAR | 1 | 0 | Unlimited Overfulfillment |
S_ESLL foreign keys relationship
Field Name | Type of Foreign Relat. | Check Table | Field of Check Table or Literal |
EBELN | Field | S_EKPO | EBELN |
EBELP | Field | S_EKPO | EBELP |
PCKG_NO | Field | S_EKPO | |
LINE_NO | Field | S_EKPO |
c – add custom field in S_EKPO Item Data fields
Key | Name | Data Type | Length | Decimal Places | Amount Field | Column Header | Group Text | Check Table |
PCKG_NO | NUMC | 10 | 0 | Package number |
4 Set up structure mapping as follow
Target Structure T16_POSERVICES Communication Structure: Create Service Line
Source Structure | Description | Access Type | Mapping Type | Source Cardinality | Target Cardinality | Data Path Type |
S_EKKO | Header Data | Mapping only | 1:1 Relation | 1 | 1 | Not Applicable |
S_EKPO | Item Data | LOOP AT TABLE | 1:1 Relation | 1 | 1 | Default Path |
S_ESLL | Lines of Service Package | LOOP AT TABLE | 1:1 Relation | 1 | 1 | Default Path |
Target Structure T17_POSRVACCESSVALUE Create Comm. Structure: Acct Assgt Distr. for Service Line
Source Structure | Description | Access Type | Mapping Type | Source Cardinality | Target Cardinality | Data Path Type |
S_EKKO | Header Data | Mapping only | 1:1 Relation | 1 | 1 | Not Applicable |
S_EKPO | Item Data | LOOP AT TABLE | 1:1 Relation | 1 | 1 | Default Path |
S_ESKL | Create Comm. Structure: Acct Assgt Distr. for Service Line | LOOP AT TABLE | 1:1 Relation | 1 | 1 | Default Path |
5 Map fields according data in table
Import Parameter | Parameter Value | Rule | Target Field |
Target Structure T16_POSERVICES | |||
SENDERFIELD | S_ESLL-PCKG_NO | MOVE | PCKG_NO |
SENDERFIELD | S_ESLL-LINE_NO | MOVE | LINE_NO |
SENDERFIELD | S_ESLL-EXT_LINE | MOVE | EXT_LINE |
SENDERFIELD | S_ESLL-OUTL_LEVEL | MOVE | OUTL_LEVEL |
SENDERFIELD | S_ESLL-OUTL_IND | MOVE | OUTL_IND |
SENDERFIELD | S_ESLL-SUBPCKG_NO | MOVE | SUBPCKG_NO |
SENDERFIELD | S_ESLL-QUANTITY | MOVE | QUANTITY |
IV_ISOCD_UNIT | S_ESLL-BASE_UOM | CVT_ISOCD_UNIT | UOM_ISO |
SENDERFIELD | S_ESLL-OVF_TOL | MOVE | OVF_TOL |
SENDERFIELD | S_ESLL-OVF_UNLIM | MOVE | OVF_UNLIM |
SENDERFIELD | S_ESLL-GR_PRICE | MOVE | GR_PRICE |
SENDERFIELD | S_ESLL-SHORT_TEXT | MOVE | SHORT_TEXT |
Target Structure T17_POSRVACCESSVALUE | |||
SENDERFIELD | S_ESKL-PCKG_NO | MOVE | PCKG_NO |
SENDERFIELD | S_ESKL-LINE_NO | MOVE | LINE_NO |
SENDERFIELD | S_ESKL-SERNO_LINE | MOVE | SERNO_LINE |
SENDERFIELD | S_ESKL-PERCENTAGE | MOVE | PERCENTAGE |
SENDERFIELD | S_ESKL-SERIAL_NO | MOVE | SERIAL_NO |
Target Structure T02_POITEM | |||
SENDERFIELD | S_EKPO-PCKG_NO | MOVE | PCKG_NO |
Target Structure T03_POITEMX | |||
IV_VALUE | S_EKPO-PCKG_NO | SET_X_IF_NOT_INIT | PCKG_NO |
Save and generate run time object.
6 Run LTMC t-code, open your project choose adjusted migration object and download Template. Populate purchase order data as follow. Empty fields are omitted here.
Header data
EBELN | BUKRS | BSART | LIFNR | EKORG | EKGRP | WAERS |
Key | General Data | |||||
Legacy Purchasing Document Number* | Company Code* | Purchasing Document Type* | Vendor Account Number* | Purchasing Organization* | Purchasing Group | Currency Key(ISO format)* |
Ord_5 | 1710 | NB | 17386001 | 1710 | 001 | USD |
Ord_6 | 1710 | NB | 17386001 | 1710 | 001 | USD |
Item Data
EBELN | EBELP | PSTYP | KNTTP | MATNR | TXZ01 | WERKS | LGORT | MATKL | WEPOS | WEUNB | REPOS | WEBRE | PCKG_NO |
Key | General Data | ||||||||||||
Legacy Purchasing Document Number* | Item Number of Purchasing Document* | Item category | Account assignment category | Material Number | Short Text | Plant | Storage location | Material Group | Indicator: Goods Receipt | Indicator: Goods Receipt, Non-Valuated | Indicator: Invoice receipt | Indicator: GR-Based Invoice Verification | Package number |
Ord_5 | 10 | 9 | P | Material-1 | 1710 | L001 | X | X | X | X | 1 | ||
Ord_6 | 10 | 9 | P | Material-2 | 1710 | L001 | X | X | X | X | 1 |
Account Assignment
EBELN | EBELP | ZEKKN | SAKTO | WBS_ELEMENT |
Key | ||||
Legacy Purchasing Document Number* | Item Number of Purchasing Document* | Sequential Number of Account Assignment* | G/L Account Number | WBS Element |
Ord_5 | 10 | 1 | 65008000 | 00000000000000000255TTO |
Ord_6 | 10 | 1 | 65008000 | 00000000000000000255TTO |
Create Comm. Structure Acct A
EBELN | EBELP | PCKG_NO | LINE_NO | SERNO_LINE | PERCENTAGE | SERIAL_NO |
Purchasing Document Number* | Item Number of Purchasing Document* | Package number* | Line Number* | Seq. Number of Acc. Assignment Specifica | Percentage for Account Assignment Value | Sequential Number of Account Assignment |
Ord_5 | 10 | 2 | 2 | 100 | 1 | |
Ord_6 | 10 | 2 | 2 | 100 | 1 | |
Ord_6 | 10 | 2 | 3 | 100 | 1 | |
Ord_6 | 10 | 2 | 4 | 100 | 1 | |
Ord_6 | 10 | 2 | 5 | 100 | 1 | |
Ord_6 | 10 | 2 | 6 | 100 | 1 |
Lines of Service Package
EBELN | EBELP | PCKG_NO | LINE_NO | EXT_LINE | OUTL_LEVEL | OUTL_IND | SUBPCKG_NO | QUANTITY | BASE_UOM | GR_PRICE | SHORT_TEXT |
Purchasing Document Number* | Item Number of Purchasing Document* | Package number* | Internal line number* | Line Number | Hierarchy level of group | Indicator: Outline line | Subpackage number | Quantity with Sign | Base Unit of Measure | Gross price | Short Text |
Ord_5 | 10 | 1 | 1 | 0 | X | 2 | |||||
Ord_5 | 10 | 2 | 2 | 10 | 0 | 1,00 | PC | 400,20 | Maintenance | ||
Ord_6 | 10 | 1 | 1 | 0 | X | 2 | |||||
Ord_6 | 10 | 2 | 2 | 10 | 0 | 1,00 | PC | 2 000,00 | Job1 August 2020 | ||
Ord_6 | 10 | 2 | 3 | 20 | 0 | 1,00 | PC | 109,00 | Job1 August 2020 | ||
Ord_6 | 10 | 2 | 4 | 30 | 0 | 1,00 | PC | 120,00 | Job1 August 2020 | ||
Ord_6 | 10 | 2 | 5 | 40 | 0 | 1,00 | PC | 130,00 | Job1 August 2020 | ||
Ord_6 | 10 | 2 | 6 | 50 | 0 | 1,00 | PC | 140,55 | Job1 August 2020 |
7 Go throw migration steps. Couple Service Purchase Orders should be created at the and.
Now you have learned how to adjust Purchase Order migration object for Services. The same approach could be used for other service\limit business cases.
Dear Alexey,
Following the logic of Purchase Order migration object I have tried to create a template in Migration Cockpit for Purchase Requisition. Functional module that is used is BAPI_PR_CREATE.
Is this the correct FM?
The Source Structure in LTMOM is as follow:
Header texts
Item Data
Item Address
Account Assignment
Components for Subcontracting
Item texts
Unfortunately there are errors during the load of sample data that I use for test.
Do you have any idea how should be build the Source structure and the Field mapping for this migration object.
Thanks a lot!
BR,
Hello Marina.
Looks like BAPI_PR_CREATE is ok for PR migration object creation. Source structure depends on your business needs and basically should be pretty same as for PO. I suggest to use minimum data just to create a prototype. Please try to use program DMC_MC_MIGOBJ_EXEC_FILE in order to have a look how BAPI data is populated. Based on BAPI return kindly try to figure out what is wrong or missed. One more useful option is to test BAPI via se37. You can easily investigate what data should be populated.
Br,
Alexey.
Hello Alexey,
Thanks for your wonderful blog and it was quite informative. Could you also let me know the steps to be followed to enable LTMC to migrate Framework orders with expected values. With reference to your blog I have added 3 structures ESUH, ESKL and ESLL. But when re-generating the object in LTMOM getting Syntax error in function module /1LT/SRQOLC_100000000000253. Could you please guide me on this
Warm Regards,
Kiran Krapa.
Hello Kiran.
If I have very strange errors in LTMOM I try to change Global Data by typing space. Then save object and Generate Migration Object. If no luck then please go Display Generated Function Group /1LT/SRQOLC_100000000000253 and try to analyze it.
Br,
Alexey.
Hello Alexey,
I tried multiple options. Below is the screenshot of how I appended the structures. But I am getting error while generating the object. Do we also need ESLL structure also to be appended?
Can you please help me in this regard.
Regards,
Kiran Krapa.
Hello Kiran.
Please check structure mapping, S_ESUH keys fields and foreign key relationship..
Br,
Alexey.
Dear Alexey,
I have created Migration object for PR but I have faced following problem. When I want to create two items in one PR document the system created two PR numbers - for each item.
This is what I have in the file:
Type: Text
Length: 80
Type: Number
Length: 5
Type: Text
Length: 4
This is what the system created:
What should be the reason for this. Maybe I missed something.
Best regards, Radoslava
Hello Rodoslava.
You assigned S_EBAN_TEXT to HEADER. For every record in S_EBAN_TEXT new PR will be created. Looks like S_EBAN should be there. Please check it.
Br
Alexey.
Hello Alexey,
Could you please also suggest on the issue I have posted.
Regards,
Kiran Krapa.
Hi Alexey Danshin,
We are migrating the data from SAP ECC to SAP S/4 HANA .We had requirement to migrate the Service contract data .There is no standard template for service contract, even though there is purchase contract standard program in SAP HANA Cockpit .In purchase contract there is no fields for service contract as mentioned below we are looking to load. Please see the field names to load the data .We are looking to load the below fields to load the data with purchase contracts .But in SAP HANA Cockpit in the standard load program of purchase contract the below fields are not available.so please help us to load the data and suggest us load methodology ,please let us more details.
Thanks
srini
Hi Alexey,
Good Day,
I followed your steps and created Service purchase order ,I did same what you did and prepared load file same as like you .I am getting error for ESLL and eskl .Please see the below screenshot for error .let me know what might the issue will. we are using version 1909.Please see the below screen for error screenshot.Please give me solution .
1.S_ESLL Lines of Service Package contains records that do not exist at a higher level in the hierarchy:
2.Legacy Purchasing Document Number '123456789',Item Number of Purchasing Document '10',PACKAGE_NUMBER '',INTERNAL_LINE_NUMBER ''<)>
3.Legacy Purchasing Document Number '123456789',Item Number of Purchasing Document '20',PACKAGE_NUMBER '',INTERNAL_LINE_NUMBER ''<)>
Thanks
srini
Hi Srinivas.
Please check if template S_EKPO Item data spreadsheet contains row Legacy Purchasing Document Number ‘123456789’,Item Number of Purchasing Document ’10’.
br,
Alexey
Hi Alexey,
The data is like that what you said ,still getting error at validate data itself, please see the below screenshot and load file data .
ESKL Error:
1.Sheet S_ESKL Create Comm. Structure: Acct Assgt Distr. f contains incorrect records
2.S_ESKL Create Comm. Structure: Acct Assgt Distr. f contains records that do not exist at a higher level in the hierarchy:
3.Legacy Purchasing Document Number ‘ORD_5′,Item Number of Purchasing Document ’10’,PACKAGE_NUMBER ‘2’,LINE_NUMBER ‘2’,SEQ_NUMB_ACC_ASSIG_SERV_LINE ”
ESSL error:
1.Sheet S_ESLL Lines of Service Package contains incorrect records
5.S_ESLL Lines of Service Package contains records that do not exist at a higher level in the hierarchy:
2.Legacy Purchasing Document Number ‘ORD_5′,Item Number of Purchasing Document ’10’,PACKAGE_NUMBER ‘1’,INTERNAL_LINE_NUMBER ‘1’
3.Legacy Purchasing Document Number ‘ORD_5′,Item Number of Purchasing Document ’10’,PACKAGE_NUMBER ‘2’,INTERNAL_LINE_NUMBER ‘2’
4.Processing of the file cancelled.
Spread sheet data:
Item data spread sheet below:
ESKL SPREAD SHEET DATA BELOW:
ESSL Spread sheet data:
Please let me know the solution for the error please .
Thanks
srini
Hi Srinivas.
Please carefully check chapter 3 Adjust source structures. Append new structures below to lower level S_EKPO Item Data. Looks like something is wrong there.
Br,
Alexey.
Hi Alexey,
What is chapter3 ,When I am creating S_ESLL and S_ESKL I created under S_EKPO structure ,I will check once again and will back to you .Please if any suggestions for me to fix this let me know .Can I share my screen.
Thanks
srini
Hi Alexey,
Please see the screenshot for structures .
Header Data
Header address
Item data
item address
Account Assignment
schedule Line
Components for subcontracting
Item texts
S_ESKL CREATE COMM STRUCTURE
S_ESLL
BAPI SERVICESLON TEXT
The above is my structure sequence please look in to that and suggest me please asap.
Thanks
srini
Hi Srinivas.
You said
Item data spread sheet below:
Is there PCKG_NO?
Br,
Alexey.
Hi Alexey,
Yes there is PCKG_NO:
Type: Text
Length: 10
I added in source system_ekpo and mapped to target system s_ekpo system as well.
Thanks
srini
Hi Alexey,
Even I added set x initial for item data as well .See if structure sequence in source correct and if I did any mistake at s_ekpo item level or esll item level please .
Thanks
srini
Hi Alexey,
Good Day,
I managed to fix the error like "S_ESLL Lines of Service Package contains records that do not exist at a higher level in the hierarchy:" By adding leading zeros for item number like example in S_EKPO item number is looking for values like 00010 format ,so gave it as 00010 and error is fixed and now getting new error like below. Can you please let me know how to fix it please .
In case of account assignment, please enter acc. assignment data for item
Message no. 06436
Diagnosis
An account assignment category has been specified for an item, but no account assignment data has been entered.
Thanks
srini
Hello Srini.
Good to know about the progress. Please check Account Assignment data. In my example I populated WBS element.
Br,
Alexey.
Hi Alexey,
Please see my data in the load file for Account Assignment looks like below:
Type: Text
Length: 80
Type: Number
Length: 5
Type: Number
Length: 2
Enter quantity for multiple account assignment with distribution on quantity basis.
Type: Number
Length: 13
Decimal: 3
Enter percent for multiple account assignment with distribution by percentage.
Type: Number
Length: 3
Decimal: 1
Type: Text
Length: 80
Type: Text
Length: 80
Type: Text
Length: 80
WBS ELEMENT IS empty don’t know why, So do you think if I add WBS element the data will be loaded into sap target system successfully?Why we are using WBS field for PO load.Cant we load without WBS?
Must I add activity number?
Must I add POITEMX (Change Flags – must have entries for all columns that have data)?
Must I add POACCOUNTX (Change Flags – must have entries for all columns that have data)?
Please confirm for me ,will fix it.
Thanks
srini
Hi Alexey,
Added WBS element and tested ,Please see the below errors :
1.PO header data still faulty ( Message no. MEPO002)
2.Purchasing group C02 not defined (please check your input) (Message no. ME011)
Diagnosis
The purchasing group you entered is not defined in table T024.
Procedure
Make sure your entries are correct.
Contact your system administrator if the problem is not solved by this action.
3.In case of account assignment, please enter acc. assignment data for item(Message no. 06436)Diagnosis : An account assignment category has been specified for an item, but no account assignment data has been entered.
Please see my header load file :
Key fields are mandatory and must always be filled with a unique key. If you use internal numbering, you can provide the key of your source system or any other unique key. If you choose external numbering, you have to provide a correct number from the external number range. The key is technically mandatory for the tool to internally connect the records of subordinated sheets with the records of the superordinate sheets.
SAP delivers standard intervals for purchase orders.
NRRNG: 41 From No: 4100000000 To Number: 4199999999 Ext: X
NRRNG: 45 From No: 4500000000 To Number: 4599999999 Ext:
Type: Text
Length: 80
The company code is an organizational unit within financial accounting.
Type: Text
Length: 80
Identifier allowing differentiation between the various kinds of purchasing document in the SAP system. The
purchasing document type controls, for instance, the number assignment of a purchase order, as well as the
selection of the fields to be maintained.
Type: Text
Length: 80
Type: Text
Length: 80
An organizational unit in Logistics, subdividing an enterprise according to the requirements of Purchasing.
A purchasing organization procures materials and services, negotiates conditions of purchase with vendors, and
is responsible for such transactions.
You specify the form of procurement by assigning purchasing organizations to company codes and plants.
Type: Text
Length: 80
Key for a buyer or a group of buyers, who is/are responsible for certain purchasing activities.
Type: Text
Length: 80
Date on which the purchasing document was created.
Type: Date
Key for defining payment terms composed of cash discount percentages and payment periods.
Type: Text
Length: 80
Type: Number
Length: 3
Type: Number
Length: 3
Type: Number
Length: 3
Type: Number
Length: 5
Decimal: 3
Type: Number
Length: 5
Decimal: 3
Type: Text
Length: 80
Type: Number
Length: 9
Decimal: 5
Please suggest me .
Thanks
srini
Hi Srini.
Error message clear said that purchase group C02 is not defined in your system. You could change it to existing one on header data. General suggestion please enter order via me21n manually first to make sure all business data is correct.
br,
Alexey.
Hi Alexey,
Please let me know the errors please .
Thanks
srini
First of all thank you very much for this really helpful tutorial.
I was able to create the service PO object as described by you and was able to create service POs with items and services.
Now, I tried to implement an additional requirement: the limit and commitment fields.
I added S_ESUH below S_EKPO with the following fields:
EBELN
EBELP
PCKG_NO
LIMIT
COMMITMENT
I created the structure mapping:
T14_POLIMITS <<S_EKKO ,S_EKPO ,S_ESUH
S_EKKO Header Data Mapping only
S_EKPO Item Data LOOP AT TABLE
S_ESUH Ext. Services Management: Unpl. Service Limits: Header Data LOOP AT TABLE
I added the field mapping and generated the object. No problem.
It still works if I leave the sheet empty but as soon as I populate it, I get below error:
„No account assignment exists for service line 0000000000“
The ESUH data looks like this (following your example):
What am I missing? I added the line number but it’s not part of the target structure and it didn’t solve the issue.
Your help would be greatly appreciated.
Hello Martin.
Thank you for your feedback. It's important for me to know if my tutorial accurate enough. Concerning you modification looks like besides POLIMITS you have to populate POSRVACCESSVALUES also. Please check out OSS 2114353 - BAPI_PO_CREATE1: Template for creating service PO test case 3 PO with limit data + single account assignment.
Br,
Alexey.
Hello Alexey,
Thank you for your fast reply.
In your article above, you already mention structure POSRVACCESSVALUES:
T17_POSRVACCESSVALUE<<S_EKKO ,S_EKPO ,S_ESKL
and it works for "regular" service POs but as soon as I add T14_POLIMITS, No account assignment exists for service line 0000000000 appears.
Any other idea?
Regards,
Martin
PS: One issue I had was error A FORM already exists with the name"_CONVERT_0001_". This was due to the fact that I didn't create the structure mapping using drag&drop but instead I was simply double-clicking the target structure and added the information there... not a good idea...
Hello Martin.
Did you add extra line like in the table below?
Create Comm. Structure Acct A
Br,
Alexey.
Thank you very much for checking and replying, Alexey,
On tab "Create Comm. Structure Acct A", I had only entries for Package No 2 und Line Number 2, 3, and 4. I hope I will be able to look into this later this week. I did a quick check and got "Upload canceled; field definitions of the upload file are out of date" - so I have to d/l and populate the new template...
This is to confirm that the proposed solution actually worked.
Thank you very much Alexey
Hi Alexey,
thank you very much for this helpful tutorial.
I adapted this solution to my Client requirement , and was able create the PO object with Stock/ non stock Materials including Service items object as described by you.
actually i'm adopting the same logic to the Purchase Req object.
thanks again.
Hi Alexey,,
HAVE YOU GOT A CHANCE TO do the same for task list, i'm performing the same logic with some changes as per the LTMC structure for Task list object (version 1709), but the logic to fill ESKL AND ESLL IS NOT WORKING.
THANKS
Hi Alexey Danshin ,
Good Day,
Can you please let me know how to load the data for Purchase service contracts ,i don't see there is template for purchase service contract in LTMC ,So please let me know like service orders if there is any way to load the data for purchase service contracts.Will be happy if it is LSMW OR LTMC.
Thanks in advance.
Thanks
srini
Thanks
srinivas
Hello Srinivas.
Unfortunately BAPI_CONTRACT_CREATE does not support service or limit items as it is missing structures like POSERVICES or POLIMITS. Please have a look on OSS 1977343 - BAPI_CONTRACT_CREATE for service or limit items.
There are two options:
Br,
Alexey.
Hi Srinivas, just wondering whether you manage to get any solution to this or not? Thanks.
Hi Alexey Danshin, isn't external services something of the past with S/4HANA? why not to migrate the external services master to be part of the new material master?
Hi.
it’s still actual for S/4HANA.
Br,
Alexey.
Hi Alexey, thanks for this blog as the information here helps us to build the LTMC solution for service PO. I have similar question for service contract and I can see that others have also asked the question. Looking at the codes, it looks like we have to activate the business function MM_SFWS_P2PSE. Do you know whether this has licensing implication? The OSS note 1977343 does not clearly indicate that. We attempted to use PurchasingContractERPRequest_V1 in a custom function module but still struggles to map the structure. Are you able to confirm whether we should map S_ESLL to R_ACC0001 at all?
Structure mappings
Hello!
Unfortunately I can't support you regarding licensing. Please contact SAP AG directly. From technical prospective OSS note 1977343 also suggest to consider batch input (BDC) to create service contracts. Probably it could be acceptable and easier in your case.
Br,
Alexey.
Thanks for the response. Unfortunately, we are trying to get away from using BDC. Will keep looking.
Hi Alexey,
Many thanks for your post, it has been very helpful, however I have an error regarding account assignment. I think similar error was reported in a previous comment but sill haven't found a solution.
The error is:
In case of account assignment, please enter acc. assignment data for item(Message no. 06436)Diagnosis : An account assignment category has been specified for an item, but no account assignment data has been entered.
I've followed your steps, and the only difference I see is that i'm not filling WBS because in my scenario it's not being used. Only AUFNR and SAKTO are needed for the account assignment. Can you help me with any idea about this error?
Many thanks for your time
Hi,
found the error, I had a mistake in template, fields packno, subpackno.
Again, thank you for your post. It was really really helpful.
Hi Alexey,
Thank you for the guide.
I have implemented your steps though would like to ask how it would be possible to load aswell a EBELP20 instead of only loading on EBELP10 .
I have enclosed the ESKLtable
And theESLLtable
We found that the EBELP service line data was always the 0010 one eventhough we go to the 0020 service line information. Thus the EBELP 0020 gets aswell filled by the EBELP 0010 information.
How would this be preventable ? What data setup within the excel did I not quite understand ?
Sincerely,
Sebastiaan
Hello Sebastiaan.
Sure. it's possible to have more than single Item in service PO. Please try the data set as follow.
Br,
Alexey.
Item Data
Account Assignment
Create Comm. Structure Acct A
Lines of Service Package
Hi Alexey,
I verified your response and verified the differences in my dataset, the one shown in my question,
I found that the only difference was that indeed my data set contained a few 0's at the EXT_LINE Line Number in ESLL when on package 1. I removed them. And that it has not a WBS element, though this can not have influence due not being mandatory data.
Then I sent it trough and saw what the system reaction was.
I found that the system reacted identically. Thus the system copied the EBELP 0020 to the EBELP 0010.
EKPO
I Enclosed the table of the data
EKKN
Soort: Tekst
Lengte: 80
Soort: Aantal
Lengte: 5
Soort: Aantal
Lengte: 2
Soort: Tekst
Lengte: 80
ESKL
ESLL
What is pretty special is that I see that the nett. price of 0010 and 0020 EBELP are identical of 4100134428 eventhough that it was sent as different amounts, it received the values of EBELP 0010 on 0020. This could be caused by something that causes it to put the values of service lines 0010 EBELP on 0020 EBELP service lines. Or less likely, this be an indicator that there would be an issue with an account assignment?
Then I double checked if I implemented your complete guide if I by accident not made any mistakes. Only difference found was that in the part of your manual: a – S_ESKL Create Comm. Structure: Acct Assgt Distr. for Service Line
That your manual would need most likely a 1 as a value on the SERNO_LINE Key field in order to have your table manual identical to ''S_ESKL foreign keys relationship'' and your pictures provided of ESKL keys, I do understand that most likely the picture is the correct version, which was the version I had implemented, thus with SERNO_LINE should be the fifth key. Your guide was exceptionally clear though, way more extensive than the SAP BAPI_PO_CREATE1 manual https://launchpad.support.sap.com/#/notes/0002114353, for which thank you.
I came to the conclusion that everything was implemented as stated in your manual
I added lastly a picture when giving a unique key in the short text of this very record 4500134428 of the EBELP 0030 and EBELP 0040 to verify what package nr it represented to visualise it in ESLL and in ESKL, and to show how the upload program reacted and what it gave what package nr's. This change of short text on EBELP 0030 and EBELP 0040 was done after the record arrived.

Sincerely,
Sebastiaan
Hi Alexey,
In order to have similar testing ground, between your and our backend LTMOM, and the frontend results of File Transfer LTMC , we decided to yesterday create an entirely new project from scratch. We have implemented the requested changes of your "Migrating Service Purchase Orders with S/4HANA Migration Cockpit" Forum to our newly created project and then implemented the exact data that you informed us about. Please ignore our last post, since this post is more interesting in setup, since now we have identical backend LTMOM and use now identical Data input.
We found that it has identical results as out last test. The issue is thus that the services of EBELP 0020 are copied on the Service line of EBELP 0010. EBELP 0020 has in of itself no issues on its Service Line. Additionally we found that the Nett price was identical between both item levels eventhough they should have been different. (might resolve itself once the main issue: that the Service line on EBELP 0020 doesnt get copied on EBELP 0010)
Do you know what could have caused this issue ? I have included all important data: my output, mappings, mapping keys, input data, and ESLL & ESKL Package SE16H Table.
Output :
I have enclosed the setup below of the mappings:

T16_POSERVICES
We did need to use the BASE_UOM field due to the UOM_ISO having errors if we apply it. Though this can not have been the cause.
T17_POSRVACCESSVALUE
T02_POITEM
T03_POITEMX
Could the issue be caused by a key mapping that would need to be different ?
ESKL
ESLL



Data Input:
EKKO
EKPO
ADRC_2
EKKN
Type: Text
Length: 80
Type: Number
Length: 5
Type: Number
Length: 2
Enter quantity for multiple account assignment with distribution on quantity basis.
Type: Number
Length: 13
Decimal: 3
Enter percent for multiple account assignment with distribution by percentage.
Type: Number
Length: 3
Decimal: 1
Type: Text
Length: 80
Type: Text
Length: 80
Type: Text
Length: 80
ESKL
ESLL
Type: Number
Length: 3
Type: Text
Length: 1
Type: Number
Length: 10
Sincerely,
Sebastiaan
Hello Sebastiaan.
Please try to set different ESLL-EXT_LINE values.
ESLL
Type: Number
Length: 3
Type: Text
Length: 1
Type: Number
Length: 10
Hey Alexey,
We implemented recommended changes. though sadly currently not the outcome we desired.
The issue is the identical one. The Service line of EBELP 0020 is aswell on EBELP 0010.

ESLL Data input
ESLL & ESKL overview
I tested aswell with the internal line LINE_NO 30 & LINE_NO 40
I found that When the Internal Line nr is changed to different values, that the key does not work anymore and that both EBELP 0010 and EBELP 0020 receive both service lines. This is an interesting case since this shows that in this case it does add both service lines though no difference between the both EBELP 0010 and 0020 is present. This shows an issue in the key compositions ?
ESLL & ESKL
Sincerely,
Sebastiaan
Hello Sebastiaan.
I tested in my environment. I realized that package numbers should be unique within PO. Please try this way.
Br,
Alexey.
S_EKPO
S_ESKL
S_ESLL
Hi Alexey,
We tested your test data, It does work to have unique EBELP 0010 and EBELP 0020 service lines, which is a great leap of progress. As expected the Net Price is resolved in this instance automatically. Though currently we are looking in to having them as well each EBELP 0010 and EBELP 0020 to have ≥ 2 service lines. We are looking in to that option currently.


Current steps attempted :

EKPO
ESKL


ESLL
This did not work, as well attempted initially with the internal line number in this layout. This gave the identical outcome as above
-Extra info for other readers: please note that it is best to copy paste data from tables of this Forum in an excel since this gives at times more correct numbers compared to the visual presentation without copy pasting-
Sincerely,
Sebastiaan
Hi Alexey,
I would like to inform that we found a way to have the more than one service line within one EBELP



ESLL
ESKL
EKPO
Sincerely,
Sebastiaan
Hi All,
For those interested in resolving the issue of the error message: "A FORM already exists with the name "_CONVERT_0001_". "
This is resolvable with the following guide. https://www.youtube.com/watch?v=2JOXYG34OGA He was able to explain me what simple steps there were to take in order to resolve this issue.
Sincerely,
Sebastiaan
Hi all,
For those interested in having an Information rule on your Service Line in File Transfer LTMC,
this works with following information :
Source Structures :
On your S_ESLL add following:
Name Data Type Length Column Header
INFORM CHAR 1 Information Rule
Field Mapping :
T16_POSERVICES
S_ESLL Inform <= Move (S_ESLL-Inform)
Data input example :
Result:
Sincerely,
Sebastiaan
Добрый день, можно поличить у вас нескоторую короткую консультацию по скайп Liudmila Yushkevich (Ashapir@mail.ru)
Hello Aleksey,
Do you have any solution for error: The overall limit is allowed only for enhanced limit items ?
I am trying to migrate open PO with K and B and I get this error.
Thank you in advance,
danielaT
Good morning,
Following your blog we are trying to create service POs with LMTC, but I received an error when I try to “Generate Runtime Object” in LTMOM:
Send below the excel files .xml and the details of the tcode LTMOM:
And than the structure T16 and T17
Could you tell me how to fix the error to generate the object correctly?
Thank you so much.
Hello Andrea.
Please try the following.
Br, Alexey.
August 17, 2020 at 10:50 am
Hello Kiran.
If I have very strange errors in LTMOM I try to change Global Data by typing space. Then save object and Generate Migration Object. If no luck then please go Display Generated Function Group /1LT/SRQOLC_100000000000253 and try to analyze it.
Br,
Alexey.
Hy Alexey Thank you for your answer now works!
I have another problem with LTMOM\LTMC.
I added other two fields in LTMOM structures S_ESLL and S_EKPO:
When I load the service order in LTMC the following error message appears: The activity number 3000015 does not exist
But activity number 3000015 exist. I try to create a PO with ME21N with same activity and works:
Which is the problem?
Thank you so much
Please try to pass 000000000003000015.
Ehi Alexey.
now works for all type of PO.
THX a lot.
Per favore.
Hi Alexey,
thank you very much for this very helpful tutorial / blog. I successfully implemented this project for our customer and generally it works fine! I have an additional question.
I want to migrate the actual quantity too. I added the fields "ESLL-ACT_MENGE" (Actual Quantity) and " ESLL-ACT_ WERT"(Actual Value) to source structure and mapped the values by "MOVE-rule"
my problem is, the values were not migrated to target. Is there any chance to migrate this value to the target?
Thank you in advance
Carsten
Hi Guys.
I'm searching something like this blog without goal.
TOPIC: Migrating Service Purchase Agreement with S/4HANA Migration Cockpit.
Can you help me ?
THX a lot.