We have to update few ZZ description fields in ZAKNA1, which are not part of user interface in XD01/02/03. The available options are such as LSMW, Batch input require code addition through user exit ZXF04U01/ EXIT_SAPMF02D_001.
I would like to use BAPI as we have a plan to use web services. Any idea how to extend the BAPI's such as BAPI_CUSTOMER_CHANGEFROMDATA1 or BAPI_CUSTOMER_CREATEFROMDATA1 using best practice? I donu2019t find any extension structures like other BAPIu2019s have. Without ExtensionIn and ExtensionOut parameters, a BAPI can not be enhanced correct?
The version we are using is ECC 5.0. Any ideas with customer master BAPI will be greatly appreciated.
Just some general comments without having looked at your specific problem. Since you're on ECC 5.0 you cannot use the new [Enhancement Framework|http://help.sap.com/saphelp_nw2004s/helpdata/EN/94/9cdc40132a8531e10000000a1550b0/frameset.htm], which would make such changes more easy...
A rather awkward workaround for extending the BAPI's is sometimes to add append structures to an IMPORT parameter of the BAPI. However, this is a rather dangerous and limited approach, because you might get into trouble depending on where the structures are used (i.e. if you add a field, it might cause harm in other programs that use the structure) and you also have to study the source code to see if you even could utilize those additional fields.
A pretty generic option in lieu of other approaches is to generate a custom wrapper function module around the standard BAPI. Within your custom BAPI you can add the missing fields as parameters, call the standard BAPI and then do the additional updates. The big advantage of such a solution is that
<li>Your change/additional logic is obvious (not hidden in a customer exit or BAdI, which are often harder to find when troubleshooting or changing functionality)</li>
<li>Any changes to the standard BAPI will automatically also take effect in your custom BAPI (since you didn't copy the original one); this excludes of course interface changes, but here you anyhow would have to do something...</li>
Should you have custom fields that are already exposed on the customer maintenance screens via enhancements, then you might want to consider using the wrapper approach, but simply export the additional data to memory, then call the standard BAPI and within the customer/user exits handling the additional fields fill them via an import from memory.
in fact the answer is do not plan to extend BAPI_CUSTOMER_CREATEFROMDATA1 or BAPI_CUSTOMER_CHANGEFROMDATA1.
There is NO BAPI available for maintenance of customer master data or vendor master data. There is unfortunately no Function module too for such maintenance.
Whatever you will find which will look valid is in fact dedicated to other processes.
It might work under some circumstances but there will be difficulties with some data, missing process or checks and even data inconsistencies.
These BAPI have been developped for a very specific case which is the SAP Online Store. They are supported and work fine ONLY in this precise case.
You may have a look to [note 390045|https://service.sap.com/sap/support/notes/390045]
As you are in ECC 5.0, in fact the only valid solution is batch input or idoc processing.
This is explained within [note 384462|https://service.sap.com/sap/support/notes/384462]