anchor.diff:  
       CLASS-METHODS view
         IMPORTING iv_html TYPE string.
  -
  -    CLASS-METHODS: css
  -      RETURNING VALUE(rv_html) TYPE string.
   
   ENDCLASS.                    "lcl_gui DEFINITION
   
  
positive.code: 
      CREATE OBJECT go_user.
  
      ro_html->add( lcl_gui=>header( ) ).
      ro_html->add( render_menu( ) ).
  
      TRY.
  
negative.code: 
    ENDMETHOD.
  
    METHOD on_event.
  
      DATA: lx_exception TYPE REF TO lcx_exception.
  
  
      TRY.
          gi_page->on_event(
            iv_action      = action
            iv_frame       = frame
            iv_getdata     = getdata
            it_postdata    = postdata
            it_query_table = query_table ).
        CATCH lcx_exception INTO lx_exception.
          ROLLBACK WORK.
          MESSAGE lx_exception->mv_text TYPE 'S' DISPLAY LIKE 'E'.
      ENDTRY.
  
    ENDMETHOD.                    "on_event
  
    METHOD back.
  
      DATA: lv_index TYPE i.
  
  
      lv_index = lines( gt_stack ).
  
      IF lv_index = 0.
        r_exit = 'X'.
        RETURN.
      ENDIF.
  
      READ TABLE gt_stack INDEX lv_index INTO gi_page.
      ASSERT sy-subrc = 0.
  
      DELETE gt_stack INDEX lv_index.
      ASSERT sy-subrc = 0.
  
      render( ).
  
    ENDMETHOD.
  
    METHOD call_page.
  
      IF NOT go_html_viewer IS BOUND.
        startup( ).
      ENDIF.
  
      IF NOT gi_page IS INITIAL.
        APPEND gi_page TO gt_stack.
      ENDIF.
  
      set_page( ii_page ).
  
    ENDMETHOD.
  
    METHOD set_page.
  
      gi_page = ii_page.
      render( ).
  
    ENDMETHOD.
  
    METHOD startup.
  
      DATA: lt_events TYPE cntl_simple_events,
            ls_event  LIKE LINE OF lt_events.
  
  
      CREATE OBJECT go_html_viewer
        EXPORTING
          parent = cl_gui_container=>screen0.
  
      CLEAR ls_event.
      ls_event-eventid = go_html_viewer->m_id_sapevent.
      ls_event-appl_event = abap_true.
      APPEND ls_event TO lt_events.
      go_html_viewer->set_registered_events( lt_events ).
  
      SET HANDLER lcl_gui=>on_event FOR go_html_viewer.
  
    ENDMETHOD.                    "init
  
    METHOD render.
  
      view( gi_page->render( )->mv_html ).
  
    ENDMETHOD.
  
    METHOD view.
  
      DATA: lt_data TYPE TABLE OF text200,
            lv_html TYPE string,
            lv_url  TYPE text200.
  
  
      lv_html = iv_html.
  
      WHILE strlen( lv_html ) > 0.
        IF strlen( lv_html ) < 200.
          APPEND lv_html TO lt_data.
          CLEAR lv_html.
        ELSE.
          APPEND lv_html(200) TO lt_data.
          lv_html = lv_html+200.
        ENDIF.
      ENDWHILE.
  
      go_html_viewer->load_data(
        IMPORTING
          assigned_url = lv_url
        CHANGING
          data_table   = lt_data ).
  
      go_html_viewer->show_url( lv_url ).
  
    ENDMETHOD.                    "view
  
  ENDCLASS.                    "lcl_gui IMPLEMENTATION
  
  CLASS lcl_persistence_user DEFINITION FINAL.
  
    PUBLIC SECTION.
      METHODS constructor
        IMPORTING iv_user TYPE xubname DEFAULT sy-uname.
  
      METHODS set_username
        IMPORTING iv_username TYPE string
        RAISING   lcx_exception.
  
      METHODS get_username
        RETURNING VALUE(rv_username) TYPE string
        RAISING   lcx_exception.
  
      METHODS set_email
        IMPORTING iv_email TYPE string
        RAISING   lcx_exception.
  
      METHODS get_email
        RETURNING VALUE(rv_email) TYPE string
        RAISING   lcx_exception.
  
      METHODS is_hidden
        IMPORTING iv_key           TYPE lcl_persistence_repo=>ty_repo-key
        RETURNING VALUE(rv_hidden) TYPE abap_bool
        RAISING   lcx_exception.
  
      METHODS hide
        IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
        RAISING   lcx_exception.
  
      METHODS unhide
        IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
        RAISING   lcx_exception.
  
    PRIVATE SECTION.
      CONSTANTS c_type_user TYPE lcl_persistence_db=>ty_type VALUE 'USER'.
  
      DATA: mv_user TYPE xubname.
  
      TYPES:
        ty_repo_hidden_tt
          TYPE STANDARD TABLE OF lcl_persistence_repo=>ty_repo-key
          WITH DEFAULT KEY.
  
      TYPES: BEGIN OF ty_user,
               username    TYPE string,
               email       TYPE string,
               repo_hidden TYPE ty_repo_hidden_tt,
             END OF ty_user.
  
      METHODS from_xml
        IMPORTING iv_xml         TYPE string
        RETURNING VALUE(rs_user) TYPE ty_user
        RAISING   lcx_exception.
  
      METHODS to_xml
        IMPORTING is_user       TYPE ty_user
        RETURNING VALUE(rv_xml) TYPE string.
  
      METHODS read
        RETURNING VALUE(rs_user) TYPE ty_user
        RAISING   lcx_exception.
  
      METHODS update
        IMPORTING is_user TYPE ty_user
        RAISING   lcx_exception.
  
  ENDCLASS.
  
  CLASS lcl_gui_page_super DEFINITION ABSTRACT.
    PUBLIC SECTION.
      INTERFACES lif_gui_page ALL METHODS ABSTRACT.
  
    PROTECTED SECTION.
      METHODS header
        RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
  
      METHODS footer
        RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
  
      METHODS get_logo_src
        RETURNING VALUE(rv_src) TYPE string.
  
    PRIVATE SECTION.
      METHODS: styles
        RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
  
  ENDCLASS.
  
  CLASS lcl_gui_page_super IMPLEMENTATION.
  
    METHOD header.
  
      CREATE OBJECT ro_html.
  
      ro_html->add( '<html>' ).
      ro_html->add( '<head>' ).
      ro_html->add( '<title>abapGit</title>' ).
      ro_html->add( styles( ) ).
      ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ).
      ro_html->add( '</head>' ).
      ro_html->add( '<body>' ).
  
    ENDMETHOD.                    "render_head
  
    METHOD footer.
  
  