`ScanForWalletTransactions()` has the following comment about its return value:

```
 * Returns null if scan was successful. Otherwise, if a complete rescan was not
 * possible (due to pruning or corruption), returns pointer to the most recent
 * block that could not be scanned.
```

This is not strictly true. If `abortrescan` is called, then `ScanForWalletTransactions()` will return `nullptr`, even though the scan wasn't successful to the tip.

This in turn causes a minor bug in `importmulti`, where the call doesn't return the correct error and warning about potentially not finding transactions if `abortrescan` was called.

I think the correct fix is for `ScanForWalletTransactions()` to inform the caller that the rescan was aborted.
if (pindex == pindexStop) {
                break;
            }
            {
                auto locked_chain = chain().lock();
                pindex = chainActive.Next(pindex);
                progress_current = GuessVerificationProgress(chainParams.TxData(), pindex);
                if (pindexStop == nullptr && tip != chainActive.Tip()) {
                    tip = chainActive.Tip();
                    
                    progress_end = GuessVerificationProgress(chainParams.TxData(), tip);
                }
            }
        }
        ShowProgress(strprintf("%s " + _("Rescanning..."), GetDisplayName()), 100); 
        if (pindex && fAbortRescan) {
            WalletLogPrintf("Rescan aborted at block %d. Progress=%f\n", pindex->nHeight, progress_current);
            return ScanResult::USER_ABORT;
        } else if (pindex && ShutdownRequested()) {
            WalletLogPrintf("Rescan interrupted by shutdown request at block %d. Progress=%f\n", pindex->nHeight, progress_current);
            return ScanResult::USER_ABORT;
        }
    }
    if (failed_block) {
        return ScanResult::FAILURE;
    } else {
        return ScanResult::SUCCESS;
    }
}
void CWallet::ReacceptWalletTransactions()