How to solve the problem of different length for the same field
Scenario
In table LFBK, the field BANKN is of length 18.
In table TIBAN, the field BANKN is of length 35.
The problem arises when we have a For All Entries like below:
SELECT *
FROM tiban
INTO TABLE lt_tiban
FOR ALL ENTRIES IN lt_lfbk
WHERE banks EQ lt_lfbk–banks
AND bankl EQ lt_lfbk–bankl
AND bankn EQ lt_lfbk–bankn
AND bkont EQ lt_lfbk–bkont.
The yellow line will result in an error because the size of TIBAN-BANKN is bigger than LFBK-BANKN.
Solution
A solution would be to create a new structure and add a new field with length 35:
1. Create a type.
BEGIN OF ty_lfbk_new.
include TYPE lfbk.
TYPES:
bankn35 TYPE tiban–bankn,
END OF ty_lfbk_new.
2. Create a new structure and table with the new type.
DATA: ls_lfbk_new TYPE ty_lfbk_new,
lt_lfbk_new TYPE STANDARD TABLE OF ty_lfbk_new.
3. Fill the new field BANKN35 with the data LS_LFBK-BANKN.
LOOP AT lt_lfbk INTO ls_lfbk.
ls_lfbk_new = ls_lfbk.
ls_lfbk_new–bankn35 = ls_lfbk–bankn.
APPEND ls_lfbk_new to lt_lfbk_new.
ENDLOOP.
4. In the Select statement, use the new table LT_LFBK_NEW for FOR ALL ENTRIES.
SELECT *
FROM tiban
INTO TABLE lt_tiban
FOR ALL ENTRIES IN lt_lfbk_new
WHERE banks EQ lt_lfbk_new–banks
AND bankl EQ lt_lfbk_new–bankl
AND bankn EQ lt_lfbk_new–bankn35
AND bkont EQ lt_lfbk_new–bkont.