I had a thought one day to use a code saved in database table for easy change of some calculation rules and I've prepared code to run SE38 like editor for such code. Maybe some of you also had such need, so today I will explain briefly how to do this. I will use FM 'EDITOR_TABLE_WITH_STATUS' to display an editor which you know from SE38/SE80 , 'SAPGUI_SET_FUNCTIONCODE' for setting OK_CODE for editor, 'PRETTY_PRINTER' to make our code looks readable. I will also use one trick that allows you to assign data which is available in calling program but not in our function. But before we need to prepare our own GUI status with some basic buttons like 'Patern' or 'Pretty Printer'.

After we create status we can create the ABAP code:
report editor_test.
data: ft_code type standard table of string.
data: fs_code type char255.
data: fs_zparm type zparm.
data: f_table type string.
data: f_fieldname type string.
data: f_msg(120) type c.
data: g_prog(8) type c. "temporary program name
data: g_okcode type sy-ucomm.
data: f_changed type c.
start-of-selection.
fs_code = 'PROGRAM DYNAMIC_FORMS.'.
append fs_code to ft_code.
fs_code = 'form test changing f_string type string.'.
append fs_code to ft_code.
fs_code = 'f_string = sy-uname.'.
append fs_code to ft_code.
fs_code = 'endform.'.
append fs_code to ft_code.
call function 'RS_NAVIGATION_BREAK'.
call function 'EDITOR_TABLE_WITH_STATUS'
 exporting
*   DISPLAY                  = ' '
*   NAME                     = ' '
   program                  = sy-repid
   callback_usercom         = 'UCOMM'
   callback_set_pfkey       = 'SET_PF'
   title_text               = 'Our test editor'
 importing
   changed                  = f_changed
*   SUBRC                    = SUBRC
  tables
    content                  = ft_code
          .
*&---------------------------------------------------------------------*
*&      Form  set_pf
*&---------------------------------------------------------------------*
form set_pf ."using EDITORMODE.
  set pf-status 'OUR_GUISTATUS'.
  if g_okcode = 'ED_INS_FRA'. "Insert Pattern
    call function 'SAPGUI_SET_FUNCTIONCODE'
      exporting
        functioncode           = 'ED_INS_FRAME'
      exceptions
        function_not_supported = 1
        others                 = 2.
    if sy-subrc <> 0.
    endif.
  elseif g_okcode = 'PRETTY'.
    "set dummy okcode to avoid messages "Function not found"
    call function 'SAPGUI_SET_FUNCTIONCODE'
    exporting
      FUNCTIONCODE                 = 'DUMY'
    exceptions
      FUNCTION_NOT_SUPPORTED       = 1
      others                       = 2.
    if sy-subrc <> 0.
    endif.
  endif.
endform.                    "set_pf
*&---------------------------------------------------------------------*
*&      Form  ucomm
*&---------------------------------------------------------------------*
form ucomm .
  field-symbols: <editor> type ref to cl_wb_editor.
  data: fo_source type ref to cl_wb_source.
  data: ft_sourcetab type standard table of char255.
  data: ft_sourcetab_pretty type standard table of char255.
  data: f_editor type string.
  f_editor = '(SAPLS38E)ABAP_EDITOR'.
  assign (f_editor) to <editor>.
  move sy-ucomm to  g_okcode.
  sy-ucomm = 'DUMY'.
  case g_okcode.
    when 'PRETTY'.
      data: line  type i.
      <editor>->get_source_instance( importing source_object = fo_source ).
      fo_source->get_source_tab( importing source = ft_sourcetab[] ).
      call function 'PRETTY_PRINTER'
        exporting
          inctoo                        = space
*       IMPORTING
*         INDENTATION_MAYBE_WRONG       = INDENTATION_MAYBE_WRONG
        tables
          ntext                         = ft_sourcetab_pretty[]
          otext                         = ft_sourcetab[]
       exceptions
         enqueue_table_full            = 1
         include_enqueued              = 2
         include_readerror             = 3
         include_writeerror            = 4
         others                        = 5
                .
      if sy-subrc <> 0.
      endif.
      fo_source->set_source_tab( exporting source = ft_sourcetab_pretty[]
                                not_actualize_control = 'X' ).
      <editor>->visualize_source( ).
  endcase.
  suppress dialog.
endform.                    "ucomm
And here is our result :-)

You should take care about saving function but that should not be a problem as you already seen in the code how to get the table with the code to local table. You can also add more functions for example: 'Where used list' (FM 'RS_TOOL_ACCESS') or syntax check (SYNTAX-CHECK).
When you have your final code you can then generate a temporary program from it using syntax found below and then call dynamically your forms created there.
generate subroutine pool ft_code name g_prog message f_msg.
Have fun!



