у нас версия 4.6С
поскольку вся эта штука работает на OLE2, думаю, что будет работать и в 4.0 - попробуй:
FUNCTION TMP_GUI_BROWSE_FOR_FOLDER .
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(WINDOW_TITLE) TYPE  C OPTIONAL
*"             VALUE(INITIAL_FOLDER) TYPE  C OPTIONAL
*"       EXPORTING
*"             VALUE(SELECTED_FOLDER) TYPE  C
*"       EXCEPTIONS
*"              CNTL_ERROR
*"----------------------------------------------------------------------
  IF ORBTYP IS INITIAL.
    PERFORM SET_ORBTYP.
  ENDIF.
  PERFORM COM_INIT.
  IF COM_INIT IS INITIAL.
    RAISE CNTL_ERROR.
  ENDIF.
  CASE ORBTYP.
    WHEN ORB_COM_DEF.
*     needs one 'flush'
       CALL METHOD OF H_COM1 'BrowseForFolder' = SELECTED_FOLDER
         EXPORTING #1 = WINDOW_TITLE
                   #2 = INITIAL_FOLDER.
         IF SY-SUBRC NE 0.
           RAISE CNTL_ERROR.
         ENDIF.
  ENDCASE.
ENDFUNCTION.
подробности:
INCLUDE OLE2INCL.
CONSTANTS: ORB_COM_DEF VALUE 1,
           ORB_SOM_DEF VALUE 2.
DATA: H_COM1 TYPE OLE2_OBJECT.         "// pointer to SAPINFO-Object
DATA: COM_INIT.                        "// init only once
DATA: ORBTYP TYPE I.
FORM SET_ORBTYP.
  ORBTYP = ORB_COM_DEF.
ENDFORM.                    " SET_ORBTYP
FORM COM_INIT.
  IF COM_INIT IS INITIAL.
    CREATE OBJECT H_COM1 'SAPINFO'.
    IF SY-SUBRC <> 0.
      EXIT.
    ENDIF.
    COM_INIT = 'X'.
  ENDIF.
ENDFORM.
вроде ничего не забыл... 
