FM EPS_GET_DIRECTORY_LISTING中FILE_MASK的通配符是什么

2020-08-23 00:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


正好1个字符的通配符是'?'。

示例:带有掩码????????。STA,我得到以下文件:

BWMDAACW .STA

BWMDAADW.STA

BWMDAAEW.STA

BWMDAAFW.STA

BWMDAAGW.STA

( 所有以.STA结尾的文件,.STA之前有8个字符)

但是"任何字符"的通配符是什么

我尝试了* .STA,但结果为

test1

test2

test3

test4

y5c01

(所有文件名均精确到5个字符)

带有* STA,结果为

IBAN

PBCL

rfbi

stxh

stxl

(所有文件名均使用4个字符)

(结果与* 123相同或 * XYZ !!!)

和BW *,结果为

BWMDAACW.STA

BWMDAADW.STA

BWMDAAEW.STA

BWMDAAFW.STA

BWMDAAGW.STA

符合预期,但*似乎仅在掩码末尾是"任何字符"的正确通配符; 它不是掩码的最后一个字符时,似乎无法按预期工作。

这似乎很奇怪! 通配符有哪些规则? (我现在是4.7)

提前谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


正好1个字符的通配符是'?'。

示例:带有掩码????????。STA,我得到以下文件:

BWMDAACW .STA

BWMDAADW.STA

BWMDAAEW.STA

BWMDAAFW.STA

BWMDAAGW.STA

( 所有以.STA结尾的文件,.STA之前有8个字符)

但是"任何字符"的通配符是什么

我尝试了* .STA,但结果为

test1

test2

test3

test4

y5c01

(所有文件名均精确到5个字符)

带有* STA,结果为

IBAN

PBCL

rfbi

stxh

stxl

(所有文件名均使用4个字符)

(结果与* 123相同或 * XYZ !!!)

和BW *,结果为

BWMDAACW.STA

BWMDAADW.STA

BWMDAAEW.STA

BWMDAAFW.STA

BWMDAAGW.STA

符合预期,但*似乎仅在掩码末尾是"任何字符"的正确通配符; 它不是掩码的最后一个字符时,似乎无法按预期工作。

这似乎很奇怪! 通配符有哪些规则? (我现在是4.7)

提前谢谢

付费偷看设置
发送
7条回答
悻福寶寶
1楼 · 2020-08-23 01:06.采纳回答

我知道以下语句在我的一个程序中不起作用:

连接" CNTR"。 分隔'。' 将'ABC''。*'转换为遮罩。

尝试一下:

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/abap%2b-%2breport%2bto%2bexecute%2bos-commands

希望有帮助

Andreas

宇峰Kouji
2楼-- · 2020-08-23 01:07

请使用FM'TRINT_SPLIT_FILE_AND_PATH'进行Split。 您将获得文件路径和文件名,甚至可以在文件名中使用通配符。 然后在FM'EPS_GET_DIRECTORY_LISTING'中传递导出参数。 您将使用通配符文件名将所有文件放在文件路径中。

示例:

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S32 {color:#3399FF; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }

数据:p_file类型的c长度125.
数据:v_filepath类型,epsf-epsdirnam,
v_str类型,epsf-epsfilnam, epsfili的i_dir类型标准表。

呼叫功能' TRINT_SPLIT_FILE_AND_PATH'
导出
全名= p_file
导入
stripped_name = v_str
file_path = v_filepath
例外情况
x_error = 1
OTHERS =2。
IF sy -subrc =0。
调用功能'EPS_GET_DIRECTORY_LISTING'
导出
dir_name = v_filepath
file_mask = v_str
*导入
* DIR_NAME =
* FILE_COUNTER =
* ERROR_COUNTER =

dir_list = i_dir []
例外情况
invalid_eps_subdir = 1
sapgparam_failed = 2
build_directory_failed = 3
no_authorization = 4
read_directory_failed = 5
> too_many_read_errors = 6
空目录列表= 7
其他= 8

IF sy-subrc <> 0.
*在此处实施适当的错误处理
ENDIF。

> ENDIF。

三十六小时_GS
3楼-- · 2020-08-23 01:11
 CONSTANTS DAYS1980 TYPE I VALUE 3652。
 数据:线长TYPE i VALUE 0。
 数据:linelength1 TYPE i VALUE 0。

 数据:文本TYPE字符串。

 数据:带有标题行的DLIST之类的EPSFILI发生次数为0,

       DPATH之类的EPSF-EPSDIRNAM,
       像EPSF-EPSFILNAM这样的PFILE,
       MDATE SY-DATUM,
       MTIME SY-UZEIT,
       POINT_IN_TIME TYPEI。

 数据:发生FATTR的次数为0,
           FILE_NAME喜欢EPSF-EPSFILNAM,
           像EPSF-EPSFILSIZ这样的FILE_SIZE,
           像EPSF-EPSFILOWN这样的FILE_OWNER,
           像EPSF-EPSFILMOD这样的FILE_MODE
           像EPSF-EPSFILTYP这样的FILE_TYPE,
           FILE_MTIME(12),
       FATTR结束。


 参数P_PATH(50)C型默认'/TMP'小写字母。
 参数P_FILE(50)C型默认''小写字母。

 DPATH = P_PATH。
 PFILE = P_FILE。

 通话功能" EPS_GET_DIRECTORY_LISTING"
      出口
           DIR_NAME = DPATH
 * FILE_MASK = PFILE
      桌子
           DIR_LIST = DLIST
      例外情况
           INVALID_EPS_SUBDIR = 1
           SAPGPARAM_FAILED = 2
           BUILD_DIRECTORY_FAILED = 3
           NO_AUTHORIZATION = 4
           READ_DIRECTORY_FAILED = 5
           TOO_MANY_READ_ERRORS = 6
           EMPTY_DIRECTORY_LIST = 7
           其他= 8。
 破坏开发人员。
 如果SY-SUBRC EQ 0。
   在列表中循环播放。

   linelength = STRLEN(DLIST-NAME)。
     线长=线长-3。

   linelength1 = STRLEN(P_FILE)。
     linelength1 = linelength1-3。


   如果DLIST-NAME + linelength(3)= P_FILE + linelength1(3)。


     通话功能'EPS_GET_FILE_ATTRIBUTES'

          出口

               FILE_NAME = DLIST-NAME
               DIR_NAME = DPATH
          输入
               FILE_SIZE = FATTR-FILE_SIZE
               FILE_OWNER = FATTR-FILE_OWNER
               FILE_MODE = FATTR-FILE_MODE
               FILE_TYPE = FATTR-FILE_TYPE
               FILE_MTIME = FATTR-FILE_MTIME
          例外情况
               READ_DIRECTORY_FAILED = 1
               READ_ATTRIBUTES_FAILED = 2
               其他= 3。


     如果SY-SUBRC EQ 0。
       FATTR-FILE_NAME = DLIST-NAME。
       追加脂肪。
     万一。
     万一。
   结局。
   按FILE_NAME排序FATTR。
   环在FATTR。
     POINT_IN_TIME = FATTR-FILE_MTIME。
     通话功能" POINT_IN_TIME_CONVERT"
          出口
               POINT_IN_TIME = POINT_IN_TIME
          输入
               DATE = MDATE
               时间= MTIME
          例外情况
               其他= 1。
     从MDATE减去DAYS1980。
     写:/FATTR-FILE_NAME,
              FATTR-FILE_SIZE,
              MDATE,
              MTIME。
   结局。
 万一。
 

编辑:kk.adhvaryu,2010年9月25日下午12:08

nice_wp
4楼-- · 2020-08-23 01:24

感谢您的回答。 我已经尝试过您的解决方案,并且可以使用,但是我仍在等待我的问题的答案。 没有此功能的文档。 有人知道在这种情况下可能使用的通配符吗?

亦是此间程序员
5楼-- · 2020-08-23 01:05

我遇到了同样的问题。 这是我找到的解决方案。 希望对您有所帮助。

数据:my_cnt输入i。

数据:WA_FILE_TABLE TYPE FILE_INFO,

FILE_INFO的标签类型标准表。

my_str = p_path1。

调用方法cl_gui_frontend_services => directory_list_files

导出

目录= file_path

FILTER ='* .TXT'

  • FILES_ONLY =

  • DIRECTORIES_ONLY =

更改

file_table =选项卡

计数= my_cnt。

此致

Abel G。

南山jay
6楼-- · 2020-08-23 01:03

嗨,

我的问题是应用服务器而不是演示服务器。

我通过以下方法解决了 使用系统命令(CALL'SYSTEM'ID'COMMAND'...),但如果有关构建文件名掩码的方法的文档可用,则应使用EPS_GET_DIRECTORY_LISTING函数。

DafaDDDa
7楼-- · 2020-08-23 01:22

pl检查上述我发布的报告

一周热门 更多>