&---------------------------------------------------------------------
*& Report ZTESTSC021 文件夹的判断与创建
*& 简单的测试程序,仅供参考。
&---------------------------------------------------------------------
*& created by xuesc on 2019-05-16
*&
&---------------------------------------------------------------------
REPORT ztestsc021 NO STANDARD PAGE HEADING.
*定义结构类型 Define the structure’s type
*保存文件夹路径
DATA: BEGIN OF folder OCCURS 0,
dire TYPE localfile,
END OF folder.
*保存文件夹路径识别符号
DATA:BEGIN OF sign OCCURS 0 ,
sig TYPE c,
END OF sign.
** 定义变量与内表 Define the variants and Internal tables **
DATA:status TYPE c.
** 选择屏幕 Customize the selection-screen **
SELECTION-SCREEN BEGIN OF BLOCK xuesc WITH FRAME TITLE text-001.
PARAMETERS: p_data TYPE localfile. "用于上载/下载的本地文件
SELECTION-SCREEN END OF BLOCK xuesc.
** 执行程序事件 Executing the program’s events **
INITIALIZATION.
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM sub_process-data.
END-OF-SELECTION.
&---------------------------------------------------------------------
*& Form SUB_PROCESS-DATA
&---------------------------------------------------------------------
FORM sub_process-data .
CLEAR:folder[],sign[],status.
*&新增文件夹路径识别符号,如果没有相关符号则辨别为无效路径
sign-sig = ‘/’.
APPEND sign.
sign-sig = ‘/’.
APPEND sign.
SEARCH p_data FOR sign.
*&判断文件夹路径字符串是否有效,无效则提示错误并退出
IF sy-subrc <> 0.
MESSAGE w000(su) WITH ‘文件夹路径错误,退出’.
EXIT.
ELSE.
*&检查该文件夹路径是否已存在
PERFORM checkdir USING p_data CHANGING status.
IF status = 1.
MESSAGE w000(su) WITH ‘文件夹路径已存在’.
EXIT.
ENDIF.
ENDIF.
SPLIT p_data AT sign INTO TABLE folder.
READ TABLE folder INDEX 1.
p_data = folder-dire. "内表的第一行为盘符
*&循环读取文件夹字符,检查该路径是否存在,若不存在则创建
LOOP AT folder.
IF sy-tabix > 1.
CONCATENATE p_data ‘/’ folder-dire INTO p_data.
PERFORM checkdir USING p_data CHANGING status.
IF status = 0.
PERFORM createdir USING p_data.
ENDIF .
ENDIF.
ENDLOOP.
ENDFORM. " SUB_PROCESS-DATA
&---------------------------------------------------------------------
*& Form CHECKDIR
&---------------------------------------------------------------------
& 调用函数检查路径是否存在,若存在函数返回 1 ,否则返回 0 。
&---------------------------------------------------------------------
FORM checkdir USING p_p_data TYPE localfile
CHANGING p_status TYPE c.
CALL FUNCTION ‘WS_QUERY’
EXPORTING
filename = p_p_data
query = ‘DE’
IMPORTING
return = p_status
EXCEPTIONS
inv_query = 1
no_batch = 2
frontend_error = 3
OTHERS = 4.
ENDFORM. " CHECKDIR
&---------------------------------------------------------------------
*& Form CREATEDIR
&---------------------------------------------------------------------
FORM createdir USING p_p_data TYPE localfile.
CALL FUNCTION ‘GUI_CREATE_DIRECTORY’
EXPORTING
dirname = p_p_data
EXCEPTIONS
failed = 1
OTHERS = 2.
WRITE: / ‘已经给你创建了一个文件夹:’,p_p_data.
ENDFORM. " CREATEDIR