2008 Aug 15 2:15 PM
Does anyone have experience of copying the standard QORD VMS action and continuing to utilise the standard (VELO and /DBM/VM) FMu2019s, or subsequent standard actions (especially) from the EXECUTE_FURTHER_ACTIONS method (BAdI)?
There appear to be many references throughout the FMu2019s to the standard action names such as QORD in particular which can result in challenging issues when integrating standard and non standard actions. I would be keen to hear of any experiences (especially good practices) in this area.
2008 Aug 15 4:12 PM
Hello,
as I didn't replace a standard action (e. g. QORD) by another one, there's some extend of uncertainty in my reply.
In my opinion, the usage of the string "QORD" or "gc_aba_qord" in standard DBM coding does not directly refer to the name of the action but to the action document type (sometimes also refered to as "ABA" or "action document category").
Please have a look at the documents attached to notes 903913 as well as 903914 and scan them for the term "action document type" or "action document category". Hopefully you find some explanation there.
In standard SAP actions, the action name and the ABA are the same. In your case it's "QORD". While a customer can rename actions (e. g. by customizing using the VMS alias concept or by replacing function modules with Z function modules), the ABA is supposed to remain unchanged.
The link between a purchase order and a vehicle is stored in table VLCPORDER. The field ACTDOCTYPE is filled with ABA "QORD" by the SAP standard action QORD. You need to make sure when replacing the standard QORD action by your own one that your action still uses the same ABA as standard SAP.
By doing so the subsequent standard actions like QINV are able to read the correct purchase order for a vehicle by using the ABA "QORD" to access VLCPORDER.
As mentioned at the beginning, I didn't test this so I can't guarantee if it works that way in case of all actions but that's at least the original concept that led to the introduction of the ABAs in VMS.
Kind regards,
Steffen
2008 Aug 18 1:55 PM
Hi Steffen,
Thank-you for your detailed reply and information - as mentioned we are operating a copy of QORD (ZORD) and I think part of the issue is perhaps making the distinction between the action name and the ABA (action document category) which might have seemed synonymous to me at least. Could I just enquire as to whether you have any further information on that mapping and how it is determined?
In our customer ZORD scenario we are executing the FM VELO10_ORD1_EXECUTE from method EXECUTE_FURTHER_ACTIONS (BAdI VLC_EXECUTE_ACTION) in order to create a purchase order. We are passing in the vehicle data and setting the ABA_ORD1_IV parameter to that of ACTION_TO_BE_PERFORMED_IV (i.e. ZORD). It would be okay for us to pass in QORD at that point however this may have to be hard coded unless we could dynamically determine it (or perhaps it would okay from what you are saying?). The reason we didnu2019t pass QORD in previously was because we are running QORD as standard alongside ZORD and wanted to distinguish between the two in the history and any messages that were issued.
When the PO is created, field ACTDOCTYPE in table VLCPORDER is filled with ZORD although that value is not one of the specified single value entries behind the domain VLC_ACTDOCTYPE (we could add it I guess using our own customer fixed value append).
I should add that everything is actually working ok at the moment (not yet UATu2019d however) but I have just been concerned about whether what we have done is ok or not u2013 specifically in terms of future releases/patches etc and from a best practice perspective.
Kind regards, David
2008 Aug 18 3:24 PM
Hello David,
in my opinion you should put "QORD" and not "ZORD" into parameter "ABA_ORD1_IV". By the way, the purpose of the ABA is to provide something on which you can hard code.
At least in the vehicle history you don't loose the possibility to distinguish QORD from ZORD as the history (table VLCHISTORY) does display the action name and description, not the ABA.
In VLCPORDER, you should write "QORD", via the ABA. I don't know though why you're able to put "ZORD" there, despite the definition of the domain VLC_ACTDOCTYPE.
In case you keep on putting "ZORD" into "ABA_ORD1_IV", I assume that subsequent standard actions like "QINV" won't work correctly any more.
Kind regards,
Steffen