1、检查字符串是否全部为数字
<span style="font-size:18px;">**使用正则表达式检查是否为数字,如果返回X,则全部为数字
* DATA:MATCHER TYPE REF TO CL_ABAP_MATCHER.
* DATA:MATCH TYPE C LENGTH 1.
* MATCHER = CL_ABAP_MATCHER=>CREATE( PATTERN = '\d+'
* TEXT = WA_BSIK1-ZUONR ).
* MATCH = MATCHER->MATCH( ).
if match = 'X',则表示全部为数字</span>
2、将字符格式转换为金额
<span style="font-size:18px;">**使用正则表达式检查是否为数字,如果返回X,则全部为数字
* DATA:MATCHER TYPE REF TO CL_ABAP_MATCHER.
* DATA:MATCH TYPE C LENGTH 1.
* MATCHER = CL_ABAP_MATCHER=>CREATE( PATTERN = '\d+'
* TEXT = WA_BSIK1-ZUONR ).
* MATCH = MATCHER->MATCH( ).
if match = 'X',则表示全部为数字</span>
函数名:UNITS_STRING_CONVERT
作用:根据当前用户的金额显示方式,将带有分隔符的金额(字符型)转换为P类型的数值。例如:将“1,000.123”转换为 1000.123
(我一开始的时候是用replace将逗号替换掉,然后直接赋值给一个数值型的变量.但是通用性不太好)
先说说sap的数字显示的三种方式:
1. 小数点是逗号,分隔符是句号
2.小数点是句号,分隔符是逗号 N,NNN.NN
3.小数点是逗号,分隔符是空格 N NNN,NN
系统以哪种方式显示,存储在用户表USR01的DCPFM字段,值分别是"空"
调用函数的时候将这个字段将作为其中的一个输入参数.函数会根据当前显示转换.
例如:
DATA:
SELECT
CALL
*
*
3、replace 处理*号
DATA: g_maktx TYPE makt-maktx.
PARAMETERS: p_maktx TYPE makt-maktx.
g_maktx = p_maktx.
REPLACE ALL OCCURRENCES OF '*' IN g_maktx WITH '%'.
SELECT matnr
maktx
INTO TABLE it_data UP TO 20 ROWS
FROM makt
WHERE maktx LIKE g_maktx.
4、字符串处理
1.对一个日期字符串进行修改赋值:
data:g_aktiv TYPE anla-aktiv.
g_aktiv+0(4) = p_gjahr.
g_aktiv+4(2) = p_peraf.
g_aktiv+6(2) = '01'.
2.对一个字符串赋值:将取出来的月份赋值到一个字符串当中
DATA: g_month TYPE c LENGTH 2.
CLEAR wa_lnran.
LOOP AT gt_lnran INTO wa_lnran.
g_month = wa_lnran-bzdat+4(2).
IF g_month <> p_peraf.
DELETE TABLE gt_lnran FROM wa_lnran.
ENDIF.
ENDLOOP.
3.字符串位置判断
DATA:L_STR(50).
MOVE 'WELCOME TO SAP WORLD' TO L_STR.
SEARCH L_STR FOR 'SAP'.
IF SY-SUBRC = 0.
WRITE: SY-FDPOD."返回要查找的字符串最开始出现的位置
ENDIF.
4.字符串的截取+
DATA: L_STR(50) TYPE C VALUE 'WELCOME TO SAP WORLD'.
DATA: L_STR1 TYPE C LENGTH 10.
L_STR1 = L_STR(10)."截取字符串前10位数
L_STR1 = L_STR + 5(10)."从字符串第5位数开始截取,共截取10位数
5.获取字符串的长度-STRLEN
DATA: L_STR(50) TYPE C VALUE 'WELCOME TO SAP WORLD'.
DATA: LEN TYPE C.
LEN = STRLEN(L_STR).
6.字符串合并-CONCATENATE INTO
DATA: L_STR1(10) TYPE C VALUE 'WELCOME',
L_STR2(10) TYPE C VALUE 'TO',
L_STR3(10) TYPE C VALUE 'SAPWORLD',
L_RES TYPE STRING .
CONCATENATE L_STR1 L_STR2 L_STR3 INTO L_RES.
CONCATENATE L_STR1 L_STR2 L_STR3 INTO L_RES SEPARATED BY ''."合并时加上指定的字符
CONCATENATE L_STR1 L_STR2 L_STR3 INTO L_RES RESPECTING BLANKS."合并时保留前后空格
7.字符串拆分-SPLIT... AT... INTO...
DATA: L_STR1(10) TYPE C,
L_STR2(10) TYPE C,
L_STR3(10) TYPE C.
DATA: STR(50) TYPE C VALUE 'WELCOME TO MY SAP WORLD'.
SPLIT STR AT SPACE INTO L_STR1 L_STR2 L_STR3."L_STR3的值为MY SAP WORLD.
8.按条件转换replace 'SAP' with 'ERP' INTO STR.
9.大小写转换
TRANSLATE STR TO UPPER CASE.
TRANSLATE STR TO LOWER CASE.
5.检查select-options里边是否有*:
检查select-options里边是否有*:
data: k type string,
l type i.
find '*' in section offset 1 of s_matnr."1表示第一次出现
if sy-subrc = 0.
l = strlen(s_matnr-low).
l = l - 1.
concatenate s_matnr-low(l) '%' into k.
SELECT MATNR XCHPF INTO TABLE ITAB_MATNR FROM MARC
WHERE WERKS IN S_WERKS
AND MATNR LIKE k
AND XCHPF = ''.