There are several issues with your call
ls_item_control-chg_delqty = ls_lips_tab-lfimg.
Have you looked at the actual data type of the chg_delqty? How can it take the quantity? It is a single character boolean field, if it is X then the change happens.
IF lt_return IS INITIAL.
This will always be initial. You are looking at the header line here which is an obsolete way of using internal tables. If you want to check if there is anything in the internal table do either one of the following (depending on your system)
IF lt_return[] IS INITIAL. or IF lines( lt_return ) > 0. "ABAP 7.4 and greater
This does not account for the fact that several BAPIs do send success messages and other warnings in the return too. So, using that you will be bailing even if there is a Success message. You need to be looking for Error messages specifically.
"Pre- 7.4 READ TABLE lt_return WITH KEY type = 'E'. or LOOP AT lt_return WHERE type = 'E'. " > 7.4 IF lines( lt_return[ type = 'E' ] ) > 0.
Add comment