Hello Uwe
I know that this is an old thread but I see that many users keep posting questions here.
MRP does not run at batch level and it does not carry out any kind of check for the batch expiration date. I think that the easiest way to exclude expired batches from MRP is using BAdI MD_CHANGE_MRP_DATA. With method CHANGE_MDPSX_MARD of this BAdI you can manipulate the stocks and exclude the expired batches.
See the following document with an example of this BAdI:
Making an element not relevant to MRP or MD04 using BAdI MD_CHANGE_MRP_DATA
BR
Caetano