場景:
使用者一般ctrl+c複製alv資料到excel處理,如果有負數的數值,負號在數值的後面,excel不認識,要費勁巴拉的乙個個改正,苦不堪言!
本程式功能:
在alv複製資料後,直接更改剪貼簿裡面的資料,把負號提到前面,然後直接在excel貼上就可以了。如果有逗號作為千分位符,也一併去掉。
程式邏輯:
獲取剪貼簿資料後,根據製表符分割字段,如果字段包含
0123456789,.-之外的字元,說明不是數值,跳過;否則,判斷最後的乙個字元是不是負號「-」,如果不是,跳過;如果是負號,則把這個負號挪到數值前面,同時把裡面的千分位符去掉,例如:23,345.58- 變成 -23345.58。依次處理所有行,處理完畢把處理過的資料再貼上到剪貼簿,就可以直接在excel貼上了。
把事務碼放到收藏夾裡面,使用者只要雙擊一下就ok了。
比如複製了這樣的資料:
使用前:
使用後:
源**如下:
report zfront_sign no standard page heading.
data : lt_clip type table of char4000 with header line,
lt_out type table of char4000 with header line,
lt_flds type table of string with header line,
len type i,
flag.
start-of-selection.
call method cl_gui_frontend_services=>clipboard_import
importing
data = lt_clip
exceptions
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
others = 4.
if lt_clip is initial.
message s000(oo) with 'no data' display like 'e'.
return.
endif.
loop at lt_clip.
clear : lt_flds,lt_out.
split lt_clip at %_horizontal_tab into table lt_flds.
len = strlen( lt_clip ) - 1.
if len > 0 and lt_clip+len(1) = %_horizontal_tab.
endif.
loop at lt_flds.
len = strlen( lt_flds ) - 1.
if len > 0 and lt_flds co ' 0123456789,.-' and lt_flds+len(1) = '-'.
translate lt_flds using '- '.
translate lt_flds using ', '.
concatenate '-' lt_flds into lt_flds.
condense lt_flds no-gaps.
flag = 'x'.
endif.
concatenate lt_out %_horizontal_tab lt_flds into lt_out.
endloop.
shift lt_out.
endloop.
if flag = 'x'.
call function 'clpb_export'
tables
data_tab = lt_out
exceptions
clpb_error = 1
others = 2.
if sy-subrc = 0.
message s000(oo) with 'success'.
else.
message s000(oo) with 'error' display like 'e'.
endif.
else.
message s000(oo) with 'no data'.
endif.
abap獲取日期 ABAP 日期時間函式
hr jp month begin end date call function hr jp month begin end date exportingiv date 20160615 importingev month begin date zbegda 2016.06.01 ev month ...
ABAP新語法 ABAP去空格(JOIN時 )
注意 ltrim rtrim 在其他語言是去空,這裡可以去空格,還可去a 去b 因此要多乙個引數告訴去什麼 另外 replace bseg zuonr a b 語法也可用,把a替換成b 問題是 b不能用空白 select bseg sgtxt 票據號ztfi005 zpjdh ztfi005 zpj...
abap獲取日期 ABAP常用日期函式總結
importing e date lastdate.e end of month e days of i date 其中,lastdate 為上月最後一天。firstday 是上月第一天 concatenate lastdate 6 01 into firstday.當天是當年的第幾周 date g...