Use of Lines Of & BASE in VALUE- Internal Table
LINES OF – can be used to transfer specific line of the source ITAB into the target ITAB with VALUE construct.
Where as BASE can be used in addition with other internal table row to build up the target internal table. In such a case the row of the BASE internal table is transferred to the target internal table first and then the additional rows are inserted to the target internal table.
With simple VALUE construct – lt_scarr1 contains 5 rows.
With LINES OF – lt_scarr2 contains same 5 rows as of lt_scarr1.
With LINES OF and additional two rows – lt_scarr3 contains 7 rows.
With LINES OF specified from and to position and additional two rows – lt_scarr4 contains 5 rows.
With BASE lt_scarr1 and additional 3 rows – lt_scarr4 contains 8 rows.
With BASE lt_scarr1, LINES OF lt_scarr1 and additional 3 rows – lt_scarr6 contains 13 rows.
Code Snippet:
DATA(lt_scarr1) = VALUE scarr_tab( ( mandt = sy–mandt carrid = ’11’ carrname = ’11 Carrier’ currcode = ‘EUR’ url = ’11Carrier.com’ )
( mandt = sy–mandt carrid = ’22’ carrname = ’22 Carrier’ currcode = ‘EUR’ url = ’22Carrier.com’ )
( mandt = sy–mandt carrid = ’33’ carrname = ’33 Carrier’ currcode = ‘EUR’ url = ’33Carrier.com’ )
( mandt = sy–mandt carrid = ’44’ carrname = ’44 Carrier’ currcode = ‘EUR’ url = ’44Carrier.com’ )
( mandt = sy–mandt carrid = ’55’ carrname = ’55 Carrier’ currcode = ‘EUR’ url = ’55Carrier.com’ ) ).
DATA(lt_scarr2) = VALUE scarr_tab( ( LINES OF lt_scarr1 ) ). ” Same as -> lt_scarr2 = lt_scarr1.
DATA(lt_scarr3) = VALUE scarr_tab( ( LINES OF lt_scarr1 )
( mandt = sy–mandt carrid = ’66’ carrname = ’66 Carrier’ currcode = ‘EUR’ url = ’66Carrier.com’ )
( mandt = sy–mandt carrid = ’77’ carrname = ’77 Carrier’ currcode = ‘EUR’ url = ’77Carrier.com’ ) ).
DATA(lt_scarr4) = VALUE scarr_tab( ( LINES OF lt_scarr1 FROM 2 TO 4 )
( mandt = sy–mandt carrid = ’66’ carrname = ’66 Carrier’ currcode = ‘EUR’ url = ’66Carrier.com’ )
( mandt = sy–mandt carrid = ’77’ carrname = ’77 Carrier’ currcode = ‘EUR’ url = ’77Carrier.com’ ) ).
* BASE is used to transfer the lines of LT_SCARR1 into LT_SCARR2 before other three lines are insterted
DATA(lt_scarr5) = VALUE scarr_tab( BASE lt_scarr1
( mandt = sy–mandt carrid = ’66’ carrname = ’66 Carrier’ currcode = ‘EUR’ url = ’66Carrier.com’ )
( mandt = sy–mandt carrid = ’77’ carrname = ’77 Carrier’ currcode = ‘EUR’ url = ’77Carrier.com’ )
( mandt = sy–mandt carrid = ’88’ carrname = ’88 Carrier’ currcode = ‘EUR’ url = ’88Carrier.com’ ) ).
DATA(lt_scarr6) = VALUE scarr_tab( BASE lt_scarr1
( LINES OF lt_scarr1 )
( mandt = sy–mandt carrid = ’66’ carrname = ’66 Carrier’ currcode = ‘EUR’ url = ’66Carrier.com’ )
( mandt = sy–mandt carrid = ’77’ carrname = ’77 Carrier’ currcode = ‘EUR’ url = ’77Carrier.com’ )
( mandt = sy–mandt carrid = ’88’ carrname = ’88 Carrier’ currcode = ‘EUR’ url = ’88Carrier.com’ ) ).