When we're reporting a speech, we're narrating things that happened
or were said in the past. So, the speech will go one tense back.
In
reported speech, we add a reporting verb (usually 'said'), the subject
changes in narration ('he', 'she' or 'they') and the related words also
change.
Option D: For reporting the speech of the shopkeeper, 'I'
changes to 'he'. 'Have' is in the
simple present, it changes to 'had', the simple past verb.
So, the corrected reported speech for the sentence "Sorry, I have only big bottles." is:
'The shopkeeper apologetically said that he had only big bottles.'
The word 'sorry' directly addresses the listener and the word 'apologetically' is the indirect format, by describing the manner in which the person spoke.
Hence option D is correct.
Option A: 'I' has not been changed to 'he', and the present tense verb 'have' has not changed to the past tense 'had'.
Option B: 'Have' has not been changed to the past 'had', 'has' is still in the present tense.
Option C: 'I' has not been changed to 'he', so the meaning of the speech changes.
Hence these options A, B and C are incorrect.