Code: Alles auswählen.
DATA: ld_text TYPE string.
DATA: lr_catch TYPE REF TO cx_hcs_directory_access_error.
TRY.
      CALL METHOD cl_hcs_directory_access=>directory_exists
        EXPORTING
          i_name   = pp_filepath
        RECEIVING
          r_exists = lv_r_exists.
    CATCH cx_hcs_directory_access_error INTO lr_catch.
      ld_text = lr_catch->get_text( ).
ENDTRY.jocoder hat geschrieben: ↑02.04.2020 14:17Das mit dem Aufruf get_longtext() oder get_text() hat nichts mit der Fehlerursache zu tun.
Der Fehler hat vermutlich eher damit zu tun, dass die C-Funktion C_DIR_READ_FINISHED nicht ordnungsgemäß abgeschlossen wurde. Was liefert denn ein Breakpoint vor der C-Funktion C_DIR_READ_START (Variablen l_errno, l_errmsg)?
Code: Alles auswählen.
...
    CATCH cx_hcs_directory_access_error INTO l_exception.
      IF l_exception->textid <> cx_hcs_directory_access_error=>directory_could_not_be_read.
        RAISE EXCEPTION TYPE cx_hcs_directory_access_error
          EXPORTING
            previous      = l_exception
            directoryname = i_name.
      ENDIF
...
Code: Alles auswählen.
...
    when 2 or " Cannot use that pattern.
         3 or " Internal error.
         4.   " Last dir scan has not be finished.
      l_subrc = sy-subrc.
      raise exception type cx_hcs_directory_access_error
        exporting
          textid        = cx_hcs_directory_access_error=>internal_error
          internalerror = l_subrc
          errno         = l_errno
          errmsg        = l_errmsg.
..
* oder bei :
    call 'C_DIR_READ_NEXT' id 'TYPE'   field l_type        "#EC CI_CCALL
                           id 'NAME'   field l_name
                           id 'LEN'    field l_len
*                           ID 'OWNER'  FIELD l_owner
                           id 'MTIME'  field l_mtime
*                           ID 'MODE'   FIELD l_mode
                           id 'ERRNO'  field l_errno
                           id 'ERRMSG' field l_errmsg.
    case sy-subrc.
      when 1.   " No more slots available.
        exit.
      when 3.   " Internal error.
          l_subrc = sy-subrc + 10.
          raise exception type cx_hcs_directory_access_error
            exporting
              textid        = cx_hcs_directory_access_error=>internal_error
              internalerror = l_subrc
              errno         = l_errno
              errmsg        = l_errmsg.
...