Copyright 2022 - BV TallVision IT

When you've reported your list output, it may just be handy to hang on to this output for later reference. Simple concept: reporting output is set up as a list that is added to until the last WRITE statement is done. When another WRITE statement is executed after the list display is actually displayed, a new "list" is created. 

Colors in the list as well as lines, symbols and/or icons are all part of the list. The list can be picked up "as a whole" (function module SAVE_LIST) and the resulting object can be stored. Stored objects can then be retrieved and displayed again (function module DISPLAY_LIST). First of all, list output needs to be populated. Try for example WRITE: / 'Hej dude!' color 7.. When the output is prepared, the following routine can be called to save a list in to table INDX:

* Global data definition:
types: begin of work_tracker_type,
         requestor like sy-uname,
         create_date like sy-datum,
         create_time like sy-uzeit,
       end of work_tracker_type.
data: i_LISTOBJECT type table of ABAPLIST, 
      wa_work_tracker type work_tracker_type.

*-------------------------------------------------------
form store_list_output.

  CALL FUNCTION 'SAVE_LIST'
    TABLES
      LISTOBJECT = i_LISTOBJECT.

* Some information to be stored with the list
  wa_work_tracker-requestor = sy-uname.
  wa_work_tracker-create_date = sy-datum.
  wa_work_tracker-create_time = sy-uzeit.

* Export the selection parameters to the database
  export wa_work_tracker
         i_LISTOBJECT
      to database indx(ZZ) id wa_work_tracker. "tracker info also key

* Message: List output for the process run was saved
  message s999(zzz).

endform.      
*-------------------------------------------------------   

Export to database has wonderful on-line documentation that needs to be studied... Now retrieving the stored list output:

*-------------------------------------------------------
form display_list_output. "Display ALL

  data: i_SRTFD type table of INDX_SRTFD with header line. 

  select SRTFD from indx into table i_SRTFD
    where RELID eq 'ZZ'.
  if sy-subrc ne 0.
* Message: No work to be processed found (table INDX, area ZZ)
    message s999(zzz).
  else. 

    loop at i_SRTFD. 
*-------------------------------------------------------
      import i_LISTOBJECT
        from database indx(ZZ) id i_SRTFD.
*-------------------------------------------------------
      if sy-subrc eq 0.
        CALL FUNCTION 'DISPLAY_LIST'
          EXPORTING
            FULLSCREEN = 'X'
          TABLES
            LISTOBJECT = i_LISTOBJECT.
      endif. 
    endloop.
  endif. 
endform. 
*-------------------------------------------------------

Important note: SAVE_LIST is not suitable for saving lists produced during background processing.