When UE has new data arrived in to its buffer then its sends an SR upon receiving the SR eNB sends a grant (can be big / small depends on various factors). In case the received grant is smaller than the data UE has in its buffer UE fills the data based on the grant size it received (should take into account mac header & CE size's too) & then for the remaining data it reports in BSR either Short or Long depending on the number & type of bearers it has.
When eNB receives this BSR it know that UE still has some data in its buffer to transmit so it sends another grant (this grant can accommodate all or a part of UE's data in the buffer ) based on this UE either sends & BSR report saying Zero meaning it doesn't have any data in its buffer or the remaining data