his property defines whether – during the initialization of a BAdI object using GET BADI– just one implementation needs to be selected through the specified filter values, or whether an arbitrary number of implementations (or no implementation at all) can be selected.
If more than one implementation is selected at GET BADI for a BAdI provided for single use, the exception cx_badi_multiply_implemented is triggered. If no implementation is found, the exception cx_badi_not_implemented is triggered.
You can define whether a BAdI is to be provided for single or multiple use. In the standard version, a BAdI is provided for single use, but a multiple use can also be selected.
In the case of a multiple use, there is a general restriction – in addition to the general restriction regarding variable attributes – that the BAdI methods must not have any EXPORTING or RETURNING parameters. The reason for this is that, if you have a call with CALL BADI, the methods of all the object plug-ins referenced by the BAdI object are called and that there is no definition regarding from which of the implementations a returned value will actually come. CHANGING parameters, on the other hand, are allowed since these are changed by all the calling methods, one after the other, so that a method can also access the parameter changed in a previous method.