'abap - Field "ZCRM_MLS2" is unknown Error

I am getting a error of "Field "ZCRM_MLS2" is unknown." at Line 23. Do you guys have any idea? Thanks in advance.

REPORT zcrm_mls_program2.

DATA: lv_name_surname TYPE zcrm_dt_ml2,
      lv_age          TYPE zcrm_dt_ml1,
      lv_done         TYPE xfeld,
      lt_alldata      TYPE zcrm_mls2,
      ls_data         TYPE zcrm_mls2 .


SELECT * FROM zcrm_mls2
  WHERE done IS INITIAL INTO @lt_alldata.
ENDSELECT.

IF sy-subrc is INITIAL .

  MODIFY zcrm_mls3 FROM lt_alldata.

  LOOP at zcrm_mls2 INTO ls_data.    " <====  line number 23

    ls_data-done = 'X'.
    MODIFY zcrm_mls3 FROM  ls_data.

  ENDLOOP.

ENDIF.


Solution 1:[1]

Just fo fun

REPORT zcrm_mls_program2.
DATA: lt_alldata TYPE STANDARD TABLE OF zcrm_mls2 WITH EMPTY KEY,
      ls_data    TYPE zcrm_mls2.
*----------------------------------------------------------------------*
*1st version
SELECT * FROM zcrm_mls2
  WHERE done = @space INTO @ls_data.
  APPEND ls_data TO lt_alldata.
ENDSELECT.

IF sy-subrc IS INITIAL .
  LOOP AT lt_alldata INTO ls_data.
    ls_data-done = 'X'.
    MODIFY zcrm_mls3 FROM  ls_data.
  ENDLOOP.
  COMMIT WORK.
ENDIF.
*----------------------------------------------------------------------*
*2nd version
SELECT *
  FROM zcrm_mls2
  INTO TABLE @lt_alldata
  WHERE done = @space
.

IF sy-subrc IS INITIAL .
  LOOP AT lt_alldata INTO ls_data.
    ls_data-done = 'X'.
    MODIFY zcrm_mls3 FROM  ls_data.
  ENDLOOP.
  COMMIT WORK.
ENDIF.
*----------------------------------------------------------------------*
*3rd version
SELECT *
  FROM zcrm_mls2
  INTO TABLE @lt_alldata
  WHERE done = @space
.

IF sy-subrc IS INITIAL .
  LOOP AT lt_alldata INTO ls_data.
    ls_data-done = 'X'.
    MODIFY lt_alldata INDEX sy-tabix FROM ls_data .
  ENDLOOP.
  MODIFY zcrm_mls3 FROM TABLE lt_alldata.
  COMMIT WORK.
ENDIF.
*----------------------------------------------------------------------*
*4th version
SELECT *
  FROM zcrm_mls2
  INTO TABLE @lt_alldata
  WHERE done = @space
.

IF sy-subrc IS INITIAL .
  LOOP AT lt_alldata REFERENCE INTO DATA(lps_data).
    lps_data->done = 'X'.
  ENDLOOP.
  MODIFY zcrm_mls3 FROM TABLE lt_alldata.
  COMMIT WORK.
ENDIF.
*----------------------------------------------------------------------*
*5th version
SELECT *
  FROM zcrm_mls2
  INTO TABLE @lt_alldata
  WHERE done = @space
.

IF sy-subrc IS INITIAL .
  MODIFY lt_alldata FROM VALUE #( done = 'X' ) TRANSPORTING done WHERE done = space.
  MODIFY zcrm_mls3 FROM TABLE lt_alldata.
  COMMIT WORK.
ENDIF.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 alezhu