ABAP AS文件目录动态创建

2024-05-28 16:20

本文主要是介绍ABAP AS文件目录动态创建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        项目上需要将附件上传得到ABAP AS的文件系统上,文件需要按照上传日期存放在 YYYY\MM对应的目录下,所以我们需要动态的创建文件夹,以应对不同月份的所需的新文件夹。以下便是使用ABAP在 AS上创建文件夹的code:

class ZCL_FILE_SYSTEM_UTIL definitionpublicfinalcreate public .public section.class-methods CHECK_DIRECTORY_EXISTimporting!IV_DIR type STRINGreturningvalue(RV_EXIST) type ABAP_BOOL .class-methods CREATE_DIRECTORYimporting!IV_CREATE_DIR type STRINGreturningvalue(RV_SUCCESS) type ABAP_BOOL .
protected section.
private section.types:TY_SEPARATOR(1)  type c .class-data GC_SEPARATOR_SLASH type TY_SEPARATOR value '/' ##NO_TEXT.class-data GC_SEPARATOR_BACKSLASH type TY_SEPARATOR value '\' ##NO_TEXT.
ENDCLASS.CLASS ZCL_FILE_SYSTEM_UTIL IMPLEMENTATION.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_FILE_SYSTEM_UTIL=>CHECK_DIRECTORY_EXIST
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_DIR                         TYPE        STRING
* | [<-()] RV_EXIST                       TYPE        ABAP_BOOL
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD check_directory_exist.
**********************************************************************
* 检查目录是否存在
**********************************************************************DATA:lv_dir      TYPE sxpgcolist-parameters,lv_status   TYPE extcmdexex-status,lv_exitcode TYPE extcmdexex-exitcode,lt_protocol TYPE  TABLE OF btcxpm.lv_dir = iv_dir.
* 调用SM69中定义的OS命令CALL FUNCTION 'SXPG_COMMAND_EXECUTE'EXPORTINGcommandname                   = 'ZLS'additional_parameters         = lv_dirIMPORTINGstatus                        = lv_statusexitcode                      = lv_exitcodeTABLESexec_protocol                 = lt_protocolEXCEPTIONSno_permission                 = 1command_not_found             = 2parameters_too_long           = 3security_risk                 = 4wrong_check_call_interface    = 5program_start_error           = 6program_termination_error     = 7x_error                       = 8parameter_expected            = 9too_many_parameters           = 10illegal_command               = 11wrong_asynchronous_parameters = 12cant_enq_tbtco_entry          = 13jobcount_generation_error     = 14.IF sy-subrc EQ 0 AND lv_status EQ 'O' AND lv_exitcode EQ '0'.rv_exist = abap_true.ELSE.rv_exist = abap_false.ENDIF.ENDMETHOD.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_FILE_SYSTEM_UTIL=>CREATE_DIRECTORY
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_CREATE_DIR                  TYPE        STRING
* | [<-()] RV_SUCCESS                     TYPE        ABAP_BOOL
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD create_directory.
**********************************************************************
* 在AS上创建目录
**********************************************************************DATA:lv_dir      TYPE string,lv_para     TYPE sxpgcolist-parameters,lv_status   TYPE extcmdexex-status,lv_exitcode TYPE extcmdexex-exitcode,lt_protocol TYPE  TABLE OF btcxpm.DATA:lv_separator TYPE string." 目录分隔符DATA:lt_dir TYPE TABLE OF string.IF check_directory_exist( iv_dir = iv_create_dir ) EQ abap_false." 目录不存在* 判断分隔符IF iv_create_dir CS gc_separator_slash.lv_separator = gc_separator_slash.ELSE.lv_separator = gc_separator_backslash.ENDIF.* 逐级检查目录SPLIT iv_create_dir AT lv_separator INTO TABLE lt_dir.CLEAR lv_dir.LOOP AT  lt_dir INTO DATA(ls_dir).IF ls_dir eq ''.CONTINUE.ENDIF.lv_dir = |{ lv_dir }{ lv_separator }{ ls_dir }|.
* 检查目录是否存在IF  check_directory_exist( iv_dir = lv_dir ) EQ abap_false." 不存在,则创建lv_para = lv_dir.
** 调用SM69中定义的 OS 命令CALL FUNCTION 'SXPG_COMMAND_EXECUTE'EXPORTINGcommandname                   = 'ZMKDIR'additional_parameters         = lv_paraIMPORTINGstatus                        = lv_statusexitcode                      = lv_exitcodeTABLESexec_protocol                 = lt_protocolEXCEPTIONSno_permission                 = 1command_not_found             = 2parameters_too_long           = 3security_risk                 = 4wrong_check_call_interface    = 5program_start_error           = 6program_termination_error     = 7x_error                       = 8parameter_expected            = 9too_many_parameters           = 10illegal_command               = 11wrong_asynchronous_parameters = 12cant_enq_tbtco_entry          = 13jobcount_generation_error     = 14.IF  sy-subrc EQ 0 AND lv_status EQ 'O' AND lv_exitcode EQ '0'." 创建成功ELSE." 创建失败rv_success = abap_false.EXIT.ENDIF.ELSE." 存在,则继续检查下级目录ENDIF.ENDLOOP.IF sy-subrc EQ 0 AND lv_status EQ 'O' AND lv_exitcode EQ '0'.rv_success = abap_true.ELSE.rv_success = abap_false.ENDIF.ELSE." 目录存在,直接返回成功rv_success = abap_true.ENDIF.ENDMETHOD.ENDCLASS.

这篇关于ABAP AS文件目录动态创建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1011074

相关文章

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

Mysql8在centos下的文件目录更换问题

解决mysql8更换数据文件目录的受限问题,临时或永久关闭selinux即可。具体见这篇文章。 https://blog.csdn.net/qq_17641711/article/details/81262866

ABAP CURSOR游标的应用1

【应用场景】BW模块定时增量抽取SAP的销售案场收款单的业务主数据 【关键语法】 FUNCTION ZBWFM_ZTSD0011 .*"----------------------------------------------------------------------*"*"本地接口:*"  IMPORTING*"     VALUE(I_REQUNR) TYPE  SRSC

Linux【2】文件目录-ls进阶

目录 ls 组合使用:ls -lha​编辑  ls  通配符 ls .是隐藏文件 ls -a可以显示所有文件包括隐藏文件 ls- l列表形式,详细信息 ls -l -h 大小更详细 组合使用:ls -lha  ls  通配符 *任意长度 ?一个字符 带扩展名 可选from【】

TokuDB7.5.7-2.4.2TokuDB的几个文件目录

tokudb_data_dir TokuDB表的(的数据文件)存放位置,默认在MySQL的data目录下(datadir)(tokudb表的结构文件也在datadir目录下) tokudb_log_dir TokuDB的redo log目录,默认放在MySQL的data目录下(datadir)(undo log在datadir,binlog有log_bin指定) tokudb_tmp_di

Linux【3】文件目录进阶

目录 cd 回到家目录 在最近两次目录来回切花 相对路径:从当前位置开始,前面没有/ or ~ mkdir rm 不可恢复 删除目录 -f  有则删,无也不报错 ls通配符仍适用!【批量删除】    cd 回到家目录 cd cd ~ 在最近两次目录来回切花 cd - 相对路径:从当前位置开始,前面没有/ or ~ 绝对路径:/:根目录开始 ~:家目录开

shell系列------查看storage下有没有某个文件目录

如果某个分区mount成功,那么storage下会长出两个目录文件来,那么用脚本怎么实现呢,如下代码即可 #!/system/bin/sh   //要注意不同的解释器需要不同的sh num=`ls /storage | wc -l`  //wc是为了获取文件里的行数 if [ $num -gt 2 ] then echo "1" else echo "0" fi

ABAP Dialog Radio Button

额.妈了个巴子,整了一天,才发现,原来Dialog 的Radio Button 是要右键去设置组的 我就说为什么不行咧 误区:我以为是属性那里的组去设置的

ABAP OOALV 颜色COLOR设置

文章目录 行颜色、列颜色、单元格颜色设置COLOR行颜色设定实现过程运行结果 列颜色的设置实现过程运行结果 设置单元格颜色完成过程运行结果1运行结果2 行颜色、列颜色、单元格颜色设置COLOR 行颜色设定 参考文章:https://blog.csdn.net/Leo520liang/article/details/138697189 实现过程 TYPES: BEG

Android静态安全检测 - Content Provider文件目录遍历漏洞

Content Provider文件目录遍历漏洞 - openFile方法 一、API 1. ContentProvider.openFile(Uri uri, String mode) 2. 第一参数:指向被打开的目标文件 3. 第二参数:文件的访问模式     r 表示只读(read-only)     rw 表示读写(read and write)