ABAP获得目录下符合条件的文件名

*&---------------------------------------------------------------------*

*& Report ZTEST

*&

*&-------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT ZLALITEST.

tables:vbak,lips,vttp,vttk.

 

data:begin of itab occurs 0,

 f(256),

end of itab.

 

data:begin of file_list occurs 0,

 name(90),

end of file_list.

 

data:begin of itab_show occurs 0,

 tpbez like vttk-tpbez,

 tknum like vttp-tknum,

 vbeln like lips-vbeln,

 matnr like lips-matnr,

 lfimg like lips-lfimg,

end of itab_show.

 

data:begin of itab_out occurs 0,

 vbeln(20),

end of itab_out.

 

ranges r_vbeln for vbak-vbeln.

 

data: t_list like epsfili occurs 0 withheader line.

data: w_dir like epsf-epsdirnam.

data: len1 type i.

data: len2 type i.

data: len3 type i.

data:str type string.

 

parameters: p_path1 like rlgrap-filenameobligatory default '\\fs01\temp\lali\del\',

           p_path2 like rlgrap-filename obligatory default '\\fs01\temp\lali\rmalist\',

           p_format(5) default '.txt'.

parameters: r_ship radiobutton group rad1default 'X',

           r_deli radiobutton group rad1,

           r_get_b radiobutton group rad1.

 

w_dir = p_path1.

 

call function 'EPS_GET_DIRECTORY_LISTING'

  exporting

   dir_name = w_dir

*  FILE_MASK = '*.TXT'

*  IMPORTING

*  DIR_NAME =

*  FILE_COUNTER =

*  ERROR_COUNTER =

 tables

   dir_list = t_list

 exceptions

   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

   others                 = 8.

 

len1 = strlen( p_format ).

 

loop at t_list.

 len2 = strlen( t_list-name ).

  iflen2 >= len1.

   len2 = len2 - len1.

 endif.

* len2 = len2 - 1.

  str= t_list-name+len2(len1).

 translate str to upper case.

  ifstr = p_format.

   file_list-name = t_list-name.

   append file_list.

 endif.

endloop.

 

data temp_str(256).

 

loop at file_list.

  concatenatep_path1 file_list-name into temp_str.

* open dataset temp_str for input in text mode encoding non-unicode withsmart linefeed.

 open dataset temp_str for input in text mode encoding utf-8 with smartlinefeed.

  do.

   read dataset temp_str into itab .

   if sy-subrc <> 0.

     exit.

     close dataset temp_str.

   endif.

   append itab.

 enddo.

 loop at itab.

   r_vbeln-sign = 'I'.

   r_vbeln-option = 'EQ'.

   r_vbeln-low = itab-f.

   append r_vbeln.

 endloop.

  ifr_ship = 'X' and not r_vbeln is initial .

   perform get_rma_number using 'SHIPMENT'.

 elseif r_deli = 'X'.

   perform get_rma_number using 'del'.

 elseif r_get_b = 'X' and not r_vbeln is initial.

   perform get_system_menge.

 endif.

 concatenate 'RMANO_LIST_' file_list-name into file_list-name.

 concatenate p_path2 file_list-name into temp_str.

* open dataset temp_str for output in text mode encoding non-unicode withsmart linefeed.

 open dataset temp_str for output in text mode encoding utf-8 with smartlinefeed.

 

 loop at itab_out.

   transfer itab_out-vbeln to temp_str.

 endloop.

 close dataset temp_str.

endloop.

*&---------------------------------------------------------------------*

*& Form GET_RMA_NUMBER

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_0245 text

*----------------------------------------------------------------------*

form get_rma_number using sign.

  ifsign = 'SHIPMENT'.

   select distinct c~bstnk

     into table itab_out

     from vttp as a inner join

     lips as b on a~vbeln = b~vbeln inner join

     vbak as c on b~vgbel = c~vbeln

     where tknum in r_vbeln.

 elseif sign = 'del' and not r_vbeln is initial.

   select distinct b~bstnk

     into table itab_out

     from lips as a inner join

     vbak as b on a~vgbel = b~vbeln

     where a~vbeln in r_vbeln.

 endif.

endform. " GET_RMA_NUMBER

*&---------------------------------------------------------------------*

*& Form GET_SYSTEM_MENGE

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

form get_system_menge.

 data menge like lips-lfimg.

 

 select c~tpbez a~tknum b~vbeln b~matnr b~lfimg

   into table itab_show

   from vttk as c inner join vttp as a

   on c~tknum = a~tknum

   inner join lips as b on a~vbeln = b~vbeln

   where tpbez in r_vbeln.

 

 format color 4.

 write:(30) 'CLRID',

       (30) 'SHIPMENT',

       (30) 'DELIVERY',

       (30) 'MATERIAL',

       (30) 'QTY'.

 sort itab_show by tpbez.

 menge = 0.

 loop at itab_show.

   write:(30) itab_show-tpbez,

         (30) itab_show-tknum,

         (30) itab_show-vbeln,

         (30) itab_show-matnr,

         (30) itab_show-lfimg.

 

   menge = menge + itab_show-lfimg.

 

   at end of tpbez .

     write:(120) 'TOTAL:',

           (30) menge.

     menge = 0.

   endat.

 endloop.

endform. " GET_SYSTEM_MENGE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值