There is no reason for your select to not return data on syntactical grounds.
There are two possible reasons for your lack of data. Both require you to supply more information than you've supplied.
1. Simply - you get no data because the data in the database doesn't match the data in so_werk, so_budat, so_arbpl. The only way for anyone to help you is to know the contents of your table and the contents of your select option.
2. Itab doesn't contain any fields with the names supplied. The fact that you use a table alias (~a) makes the code less readable, but shouldn't affect the way it works. The only way to help you, is if you give us the definition of itab1. (Which is a TERRIBLE name for an internal table).