SRM workflow documentation on configuration
Dear SAP gurus,
Can you please send me a document (config guide) with all the steps on configuring a SRM workflow?
My email ID is [email protected]
Full points will be rewarded.
Thank you in advance.
Best regards,
Jean-Pierre
Hi
As promised, sent detailed documents on your e-mail id.. )
Please confirm.. !!
Regards
- Atul
Similar Messages
-
SRM Workflow configuration step by step guide
Hi,
Can you please send me SRM workflow step by step config guide?
my e-mail ID will be [email protected]
Full points will be rewarded for the same.
Thanks in Advance
Uday.Hi,
Please refer the foll links for the detailed steps:
<b>http://help.sap.com/saphelp_srm50/helpdata/en/58/c14e3c59bfe747e10000000a11402f/frameset.htm</b>
http://help.sap.com/saphelp_srm50/helpdata/en/84/0783f35c1e11d2b403006094b92d37/frameset.htm
http://help.sap.com/saphelp_srm50/helpdata/en/ee/8804050393ea4596330fe181092003/frameset.htm
BR,
Disha.
<b>Pls reward points for useful answers.</b> -
Hi,
Please can I be shred with some documents on configuring SRM workflow from scratch? I tried looking for some docs in SDN and google but hardly could get one. Also tried with help.sap.com but not that detailed on developing the objects, I wish to learn workflow in SRMno difference as per the control flow, for event controlled WFs. thats what is present in 5.0
in 7.0 we have BRF, you park this for now...
just see the standard templates of SRM workflows in SWE2 and read the documentation of the WF in the basic data in SWDD..
there you will find that few WF need few badi to be implemented as must, to determine approvers.. like n step approval n all.. -
Error - The user has no workflow Linkage. Configure workflow.
Hi All,
I am getting following error in transaction Users_gen.
<i><b>'The user has no workflow linkage. Configure workflow'.</b></i>
SAP note says, I need to run transaction BBP_CHECK_USERS and select repair level 2. I followed these instructions but still I am getting this error.
Any idea to resolve this.
Plese advice.
Thanks and Regards
Pras DurafeHi Pras,
you can get rid of this message: nothing important.
It just checks that the user has got a WF relationship: i.e. that there is a manager with the red hat in the org unit.
It should be a warning message, raised after a call of RH_GET_LEADING_POSITION during user check (BBPU_CHECK_EBP_USER), that should retrieves the user's manager.
If you display the long text of the error message, you should get:
<b>Short Text</b>
The user & has no workflow linkage. Configure workflow.
<b>Diagnosis</b>
The user has no workflow linkage. The relationship between position (S) and user (US) does not exist.
<b>System response</b>
In workflow configuration (table T77S0) you can set the indicator WFLOW/CRMUS to 'X'.
<b>Procedure</b>
You can set the indicator as follows:
1. Start transaction code SM30
2. Open table T77S0 (Maintain).
3. Create the following new entry:
Group: WFLOW
Semantic ID: CRMUS
4. Activate by setting the indicator to 'X'.
Important: This function is only available from Basis Release 6.1.
If you set an entry in T77S0 with WFLOW/CRMUS --> X, then this control is by-passed.
This control is brought by note 796742:
SRM 3.0 SP10
SRM 4.0 SP05
For one of my customers, I deleted this message, but I don't remember if I changed the code or if I changed the table entry...
Rgds
Christophe
PS: please reward points for helpfull answers -
Need to know the difference between SRM workflow and Normal Ecc 6.0 Worflow
Hi All,
I have worked on Ecc 6.0 worflow, just wanted to know how is SRM workflow going to be different than the ECC6.0 worflows.
Incase if someone can suggest some links for tutorials for SRM workflow basics.
Thanks to all in advance.
Anu.Hi
In addition to Masa
For every business object we do have one or more work flow templates are available.
In SRM , you can approve via web browsers . very user friendly screens
br
muthu -
How to get the User ID's details in SRM Workflow EBP system
Hi Team
How to get the User ID's details in SRM Workflow EBP system. Example like i have User ID "BTEMPEST" but i want his full name . so please suggst me how to get the full name of user id where it is maintained.
Thanks.
Puneet.Thank you very much muthu.
For your information FM "RSPLPPM_GET_USERDETAILS" is working fine.
Thanks for quick response.
Thanks
Puneet. -
Workorder PR utilizing SRM Workflow - How to ?
We are running ECC 6.0 with SRM 7.0. We have a requirement to utilize the capablities of SRM Workflow to route document approval across multiple approvers, as unlike in ECC we are no longer dependent on just the release strategy.
Is there any recommended approach to get the ECC Work order generated PR to transfer over as SRM Shopping Cart. Aftere the Shopping Cart is approved, the next process would be PO creation.
Looking forward to your answersSolved myself. Can be activated from inside SWDA as well.
-
GTS Experts,
What is the best practice for documenting the configuration settings in GTS? Are there system reports available to control and report this, or is it expected that this information is kept manually in spreadsheets?
Also, what is best practice for system instance cutover, to ensure anyting not on a transport is put in the new system the same as the previous systm. Is there a compare functionality to identify deltas between the instances that need to be addressed?
Thank you!Hi,
as far as i know there is not such report which would download all customizing settings/views into the excel file. Actually, that would be a quite useful mass function.
For your second question, check transactions SCU0 and SCMP. Here you can compare settings between systems connected via RFC.
http://www.sap-img.com/bc005.htm
@Your RFC user would need S_TABU_RFC autorization.
BR,
Gabriel. -
A self documenting DSC Configuration wich contains all Resources
One funny thing with PowerShell is allways: It can document himself.
Inspired by Steven Murawskis video on Desired State Configuration (DSC) I have done a full Blowen full self documenting DSC Configuration:
Not perfect but it works for the first shot...
This code:
$ConfigOut = @"
Configuration Name {
param(
[String]`$Parameter1
# One can evaluate expression
# E.g.: `$AllNodes.Where("Role -eq Web").NodeName
Node ('Node1','Node2','Node3') {
$(
Get-DscResource | ForEach {
"`n`t`t# Call the '$($_.Name)' Resource the Provider`n"
"`t`t$($_.Name) FriendlyName {`n`n"
"`t`t`t# Possible Resource Options`n"
$Ofs = "','"
$_.Properties | ForEach {
"`t`t`t$($_.Name) = '$($_.Values)' # Type:$($_.PropertyType) $(If($_.IsMandatory) {'is Mandatory!'})`n"
$Ofs = ' '
"`t`t}`n"
} # end Node
} # end Configuration
$ConfigOut
Produces this output on my Windows 8.1:
Configuration Name {
param(
[String]$Parameter1
# One can evaluate expression
# E.g.: $AllNodes.Where("Role -eq Web").NodeName
Node ('Node1','Node2','Node3') {
# Call the 'File' Resource the Provider
File FriendlyName {
# Possible Resource Options
DestinationPath = '' # Type:[string] is Mandatory!
Attributes = 'Archive','Hidden','ReadOnly','System' # Type:[string[]]
Checksum = 'CreatedDate','ModifiedDate','SHA-1','SHA-256','SHA-512' # Type:[string]
Contents = '' # Type:[string]
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Force = '' # Type:[bool]
MatchSource = '' # Type:[bool]
Recurse = '' # Type:[bool]
SourcePath = '' # Type:[string]
Type = 'Directory','File' # Type:[string]
# Call the 'Archive' Resource the Provider
Archive FriendlyName {
# Possible Resource Options
Destination = '' # Type:[string] is Mandatory!
Path = '' # Type:[string] is Mandatory!
Checksum = 'CreatedDate','ModifiedDate','SHA-1','SHA-256','SHA-512' # Type:[string]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Force = '' # Type:[bool]
Validate = '' # Type:[bool]
# Call the 'Environment' Resource the Provider
Environment FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Path = '' # Type:[bool]
Value = '' # Type:[string]
# Call the 'Group' Resource the Provider
Group FriendlyName {
# Possible Resource Options
GroupName = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Description = '' # Type:[string]
Ensure = 'Absent','Present' # Type:[string]
Members = '' # Type:[string[]]
MembersToExclude = '' # Type:[string[]]
MembersToInclude = '' # Type:[string[]]
# Call the 'Log' Resource the Provider
Log FriendlyName {
# Possible Resource Options
Message = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
# Call the 'Package' Resource the Provider
Package FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
Path = '' # Type:[string] is Mandatory!
ProductId = '' # Type:[string] is Mandatory!
Arguments = '' # Type:[string]
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
LogPath = '' # Type:[string]
ReturnCode = '' # Type:[UInt32[]]
# Call the 'Registry' Resource the Provider
Registry FriendlyName {
# Possible Resource Options
Key = '' # Type:[string] is Mandatory!
ValueName = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Force = '' # Type:[bool]
Hex = '' # Type:[bool]
ValueData = '' # Type:[string[]]
ValueType = 'Binary','Dword','ExpandString','MultiString','Qword','String' # Type:[string]
# Call the 'Script' Resource the Provider
Script FriendlyName {
# Possible Resource Options
GetScript = '' # Type:[string] is Mandatory!
SetScript = '' # Type:[string] is Mandatory!
TestScript = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
# Call the 'Service' Resource the Provider
Service FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
BuiltInAccount = 'LocalService','LocalSystem','NetworkService' # Type:[string]
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
StartupType = 'Automatic','Disabled','Manual' # Type:[string]
State = 'Running','Stopped' # Type:[string]
# Call the 'User' Resource the Provider
User FriendlyName {
# Possible Resource Options
UserName = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
Description = '' # Type:[string]
Disabled = '' # Type:[bool]
Ensure = 'Absent','Present' # Type:[string]
FullName = '' # Type:[string]
Password = '' # Type:[PSCredential]
PasswordChangeNotAllowed = '' # Type:[bool]
PasswordChangeRequired = '' # Type:[bool]
PasswordNeverExpires = '' # Type:[bool]
# Call the 'WindowsFeature' Resource the Provider
WindowsFeature FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
IncludeAllSubFeature = '' # Type:[bool]
LogPath = '' # Type:[string]
Source = '' # Type:[string]
# Call the 'WindowsProcess' Resource the Provider
WindowsProcess FriendlyName {
# Possible Resource Options
Arguments = '' # Type:[string] is Mandatory!
Path = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
StandardErrorPath = '' # Type:[string]
StandardInputPath = '' # Type:[string]
StandardOutputPath = '' # Type:[string]
WorkingDirectory = '' # Type:[string]
} # end Node
} # end Configuration
Watch:
Steven Murawskis and Joel Bennett: Video on Desired State Configuration (DSC)
http://www.youtube.com/watch?v=EN8eJA9rpXw
hope this helps....
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter |
Facebook |
Google+One funny thing with PowerShell is allways: It can document himself.
Inspired by Steven Murawskis video on Desired State Configuration (DSC) I have done a full Blowen full self documenting DSC Configuration:
Not perfect but it works for the first shot...
This code:
$ConfigOut = @"
Configuration Name {
param(
[String]`$Parameter1
# One can evaluate expression
# E.g.: `$AllNodes.Where("Role -eq Web").NodeName
Node ('Node1','Node2','Node3') {
$(
Get-DscResource | ForEach {
"`n`t`t# Call the '$($_.Name)' Resource the Provider`n"
"`t`t$($_.Name) FriendlyName {`n`n"
"`t`t`t# Possible Resource Options`n"
$Ofs = "','"
$_.Properties | ForEach {
"`t`t`t$($_.Name) = '$($_.Values)' # Type:$($_.PropertyType) $(If($_.IsMandatory) {'is Mandatory!'})`n"
$Ofs = ' '
"`t`t}`n"
} # end Node
} # end Configuration
$ConfigOut
Produces this output on my Windows 8.1:
Configuration Name {
param(
[String]$Parameter1
# One can evaluate expression
# E.g.: $AllNodes.Where("Role -eq Web").NodeName
Node ('Node1','Node2','Node3') {
# Call the 'File' Resource the Provider
File FriendlyName {
# Possible Resource Options
DestinationPath = '' # Type:[string] is Mandatory!
Attributes = 'Archive','Hidden','ReadOnly','System' # Type:[string[]]
Checksum = 'CreatedDate','ModifiedDate','SHA-1','SHA-256','SHA-512' # Type:[string]
Contents = '' # Type:[string]
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Force = '' # Type:[bool]
MatchSource = '' # Type:[bool]
Recurse = '' # Type:[bool]
SourcePath = '' # Type:[string]
Type = 'Directory','File' # Type:[string]
# Call the 'Archive' Resource the Provider
Archive FriendlyName {
# Possible Resource Options
Destination = '' # Type:[string] is Mandatory!
Path = '' # Type:[string] is Mandatory!
Checksum = 'CreatedDate','ModifiedDate','SHA-1','SHA-256','SHA-512' # Type:[string]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Force = '' # Type:[bool]
Validate = '' # Type:[bool]
# Call the 'Environment' Resource the Provider
Environment FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Path = '' # Type:[bool]
Value = '' # Type:[string]
# Call the 'Group' Resource the Provider
Group FriendlyName {
# Possible Resource Options
GroupName = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Description = '' # Type:[string]
Ensure = 'Absent','Present' # Type:[string]
Members = '' # Type:[string[]]
MembersToExclude = '' # Type:[string[]]
MembersToInclude = '' # Type:[string[]]
# Call the 'Log' Resource the Provider
Log FriendlyName {
# Possible Resource Options
Message = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
# Call the 'Package' Resource the Provider
Package FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
Path = '' # Type:[string] is Mandatory!
ProductId = '' # Type:[string] is Mandatory!
Arguments = '' # Type:[string]
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
LogPath = '' # Type:[string]
ReturnCode = '' # Type:[UInt32[]]
# Call the 'Registry' Resource the Provider
Registry FriendlyName {
# Possible Resource Options
Key = '' # Type:[string] is Mandatory!
ValueName = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
Force = '' # Type:[bool]
Hex = '' # Type:[bool]
ValueData = '' # Type:[string[]]
ValueType = 'Binary','Dword','ExpandString','MultiString','Qword','String' # Type:[string]
# Call the 'Script' Resource the Provider
Script FriendlyName {
# Possible Resource Options
GetScript = '' # Type:[string] is Mandatory!
SetScript = '' # Type:[string] is Mandatory!
TestScript = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
# Call the 'Service' Resource the Provider
Service FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
BuiltInAccount = 'LocalService','LocalSystem','NetworkService' # Type:[string]
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
StartupType = 'Automatic','Disabled','Manual' # Type:[string]
State = 'Running','Stopped' # Type:[string]
# Call the 'User' Resource the Provider
User FriendlyName {
# Possible Resource Options
UserName = '' # Type:[string] is Mandatory!
DependsOn = '' # Type:[string[]]
Description = '' # Type:[string]
Disabled = '' # Type:[bool]
Ensure = 'Absent','Present' # Type:[string]
FullName = '' # Type:[string]
Password = '' # Type:[PSCredential]
PasswordChangeNotAllowed = '' # Type:[bool]
PasswordChangeRequired = '' # Type:[bool]
PasswordNeverExpires = '' # Type:[bool]
# Call the 'WindowsFeature' Resource the Provider
WindowsFeature FriendlyName {
# Possible Resource Options
Name = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
IncludeAllSubFeature = '' # Type:[bool]
LogPath = '' # Type:[string]
Source = '' # Type:[string]
# Call the 'WindowsProcess' Resource the Provider
WindowsProcess FriendlyName {
# Possible Resource Options
Arguments = '' # Type:[string] is Mandatory!
Path = '' # Type:[string] is Mandatory!
Credential = '' # Type:[PSCredential]
DependsOn = '' # Type:[string[]]
Ensure = 'Absent','Present' # Type:[string]
StandardErrorPath = '' # Type:[string]
StandardInputPath = '' # Type:[string]
StandardOutputPath = '' # Type:[string]
WorkingDirectory = '' # Type:[string]
} # end Node
} # end Configuration
Watch:
Steven Murawskis and Joel Bennett: Video on Desired State Configuration (DSC)
http://www.youtube.com/watch?v=EN8eJA9rpXw
hope this helps....
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter |
Facebook |
Google+ -
Triggering SRM workflow from a web-based form (HTML)
I am a beginner in SAP, please bear with me.
I have created an online data entry form using html to populate a table in a non-SAP database. I am able to call this form in SAP EP using URL iView.
I want some help on triggering an SRM workflow from this form.
Thanks.Hi Vadim,
I would like to explain the scenario:
1.The form would reside in the SAP Enterprise portal
2.When the form is completed and the "submit" button is clicked, I expect a workflow in SAP SRM to be triggered.
3.The workflow is a developed three-step approval workflow. It was developed using the Hierarchical Approval workflow wizard.
Questions:
1. How can the workflow be triggered when the submit button is clicked?
2. How can the data from the Form be integrated into the workflow and vice versa? -
SRM Workflow error- Error' 9' when calling service ' SO_OBJECT_SEND'
Hi Team,
We are facing problem with SAP SRM Workflow error- Error' 9' when calling service ' SO_OBJECT_SEND' .
Due to this WI is not going to Approver/Requester INBOX and unable to process that WI.
Please advice .
Greatly Appreciated for Help.
Regards
CKHi,
Not sure what '9' is, the exceptions called by the SO_OBJECT_SEND function are as follows:
EXCEPTIONS
ACTIVE_USER_NOT_EXIST = 35
COMMUNICATION_FAILURE = 71
COMPONENT_NOT_AVAILABLE = 01
FOLDER_NOT_EXIST = 06
FOLDER_NO_AUTHORIZATION = 05
FORWARDER_NOT_EXIST = 08
NOTE_NOT_EXIST = 45
OBJECT_NOT_EXIST = 13
OBJECT_NOT_SENT = 15
OBJECT_NO_AUTHORIZATION = 13
OBJECT_TYPE_NOT_EXIST = 17
OPERATION_NO_AUTHORIZATION = 21
OWNER_NOT_EXIST = 22
PARAMETER_ERROR = 23
SUBSTITUTE_NOT_ACTIVE = 31
SUBSTITUTE_NOT_DEFINED = 32
SYSTEM_FAILURE = 72
TOO_MUCH_RECEIVERS = 73
USER_NOT_EXIST = 46
OTHERS = 1000.
Regards,
Jason -
Regarding SRM Workflow !!
Hi,
Does anyone have a soft copy of the SRM workflow technical aspects which goes into the depth of the entire workflows and the data flow in the system.
Please do mail it at [email protected]
Thanks in advance.
With Regards,
Rajesh RajendranHello Rajesh,
Please see SAP Business Workflow. SRM use this technology.
<a href="http://help.sap.com/saphelp_nw04/helpdata/en/66/87210894ea11d2a5ec0060087a79ea/frameset.htm">http://help.sap.com/saphelp_nw04/helpdata/en/66/87210894ea11d2a5ec0060087a79ea/frameset.htm</a>
Regards,
Masa -
Documentation and configuration settings
Hi Experts,
Can any one provide documentation and configuration settings for the following areas.
Planning and budget,
PC Industrial,
Standard Cost Calculation,
Production Variance Analysis
Regards
BaluHI Madhu
I have sent you the Io & Pctr documents to ur mail id. Plz assign points if its helpful.
Regards
Rajaram -
SAP SRM Workflow Options: Winshuttle or ABAP WebDynpro
We are implementing SRM. Our considerations for SAP Workflow are Winshuttle with an MS Sharepoint Site,or,ABAP WebDynpro. Does anyone have any experiences or suggestions that they could share that could help us to make a desicion. Or, another method that is cost efficient and easily supportable?
Thank-You.Hi Tom,
Workflow component is in built in SRM. You donu2019t need any external component for it.
There are 2 types of workflow supported by SAP SRM.
1. Application Controlled Workflow
2. Process Controlled Workflow (BRF)
You can use BRF if you are implementing SRM 5.0 & above.
I think you should explore more on SRM workflows; it will certainly give you insight on workflow implementation.
Regards,
yaniVy
reward if helps -
How can we debug an SRM workflow problem?
Q: How can we debug an SRM workflow problem?
Hi,
In SRM system using transaction SWI6 you can troubleshoot the workflow process.
if you are using N step badi in the workflow process, we can debug the badi BBP_WFL_APPROV_BADI
method GET_REMAING_APPROVERS
if required please take a help of Abap consultant to debug...
Thanks & Regards,
prasad.s
Maybe you are looking for
-
Auto creation of notification for vendor problems
Hi, pls advise how to generate notificatin for vendor problems during goods receipt. can it be possible to generate automatically when there is problem for the vendor for the goods which are subjected to GR. Pls advise.
-
I have an iPad mini, my phone number was avalible for use with iMessage and FaceTime last night and now it's just disappeared. I have tried everything to get it back. My email is there but when people text me it won't go to my ipad? Any suggestions?
-
Hi All, we have created subcotracting stock & maintained Scrap in negative stock in BOM. while receiving material system is doing MVT 545 0 automatically. Problem1: Now i want to inwards scarp at our plant. How can we do. Problem2: if Full o
-
Hi There, is there a way for an admin to determine who created a Wiki page?
-
I bought my macbook pro when it first came out, had to have a screen replaced due to pixel failure 7 months later. Now again im having one fail, then another, and now a cluster has failed. My mac is out of warranty but IM ******, I bought a $2700 Lap