у нас версия 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.
вроде ничего не забыл...
