anchor.diff:                                                iv_username = cv_username
                                                 iv_password = cv_password ) = abap_true.
   
  -          " Get a 2FA token (app/sms)
  -          CALL FUNCTION 'POPUP_GET_STRING'
  -            EXPORTING
  -              label = 'Two factor auth. token'
  -            IMPORTING
  -              value = lv_2fa_token
  -              okay  = lv_use_2fa.
  -          IF lv_use_2fa = abap_false.
  -            lcx_exception=>raise( 'Authentication cancelled' ).
  -          ENDIF.
  +          lv_2fa_token = popup_token( ).
   
             " Delete an old access token if it exists
             li_authenticator->delete_access_tokens( iv_url       = iv_url
  
positive.code:   METHOD use_2fa_if_required.
      DATA: li_authenticator TYPE REF TO lif_2fa_authenticator,
            lv_2fa_token     TYPE string,
            lv_use_2fa       TYPE abap_bool,
            lv_access_token  TYPE string,
            lx_ex            TYPE REF TO cx_root.
  
  
negative.code:                                         WITH UNIQUE KEY table_line READ-ONLY.
    PROTECTED SECTION.
    PRIVATE SECTION.
      CLASS-METHODS:
        popup_token
          RETURNING VALUE(rv_token) TYPE string
          RAISING lcx_exception.
  ENDCLASS.
  
  CLASS lcl_2fa_authenticator_registry IMPLEMENTATION.
  