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.