ABAP实现本地文件夹的判断与创建

&---------------------------------------------------------------------
*& 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值