1.Select条件判断某字段是否包含某字符like '%string%'
SELECT SINGLE change_name INTO lv_change_name FROM Ztable_01
WHERE ato_number = ls_materail-ato_number
AND ( change_name LIKE ‘%AAA%’ OR change_name LIKE ‘%BBB%’ ).
IF sy-subrc EQ 0 AND ( lv_change_name CS ‘AAA’ OR lv_change_name CS ‘BBB’ ).
lv_ato_number =‘记录包含AAA或者BBB’
EXIT.
ELSE.
lv_ato_number =‘记录不包含AAA或者BBB’
ENDIF.
2.判断内表行数DESCRIBE TABLE Ztable Lines LV_Len
DATA: LV_UPLOAD TYPE I,
LV_BUT000 TYPE I.
DESCRIBE TABLE GT_BANK_DATA LINES LV_UPLOAD.
DESCRIBE TABLE GT_BUT000 LINES LV_BUT000.
3.报表中离开处理,停留在当前屏幕,以S类型展示异常信息
IF LV_BUT000 <> LV_UPLOAD.
MESSAGE ‘Excel导入行数与系统存在的员工数不一致’ TYPE ‘S’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.
4.字符串长度按指定长度分隔到2个变量中
Data: LV_LEN TYPE I.
LV_LEN = STRLEN( <WA_BANK_DATA>-BANKN ).
IF LV_LEN > 18 .
CALL FUNCTION ‘TEXT_SPLIT’
EXPORTING
LENGTH = 18
TEXT = <WA_BANK_DATA>-BANKN
-
ELSE.AS_CHARACTER = 'X' IMPORTING LINE = LS_BANKDETAILDATA-BANK_ACCT REST = LS_BANKDETAILDATA-BANK_REF.
LS_BANKDETAILDATA-BANK_ACCT = <WA_BANK_DATA>-BANKN.
ENDIF.
5.定义工作区,插入一个结构定义
TYPES:BEGIN OF ty_result,
field_style TYPE lvc_t_styl,
sel TYPE c,
status(40) TYPE c,
mess TYPE char128,
ctrno_flg TYPE char1,
error_flg TYPE char1.
INCLUDE STRUCTURE ztsd0052 .
TYPES END OF ty_result.
6.获取本地计算机名
7.ABAP参照Select-Optons建立内部结构
DATA:LS_WADAT LIKE LINE OF S_WADAT.
LS_WADAT-SIGN = ‘I’.
LS_WADAT-OPTION = ‘BT’.
LS_WADAT-LOW = LV_DATE_FIRST.
LS_WADAT-HIGH = LV_DATE_LAST.
APPEND LS_WADAT TO S_WADAT.
8.在Sproxy中定义Range类型内表与RFC、程序不一样
TYPES: BEGIN OF TY_DATA2,
SIGN(1),
OPTION(2),
LOW TYPE MCHB-LGORT,
HIGH TYPE MCHB-LGORT,
END OF TY_DATA2.
DATA: LT_LGORT_RANGE TYPE TABLE OF TY_DATA2,
LS_LGORT_RANGE TYPE TY_DATA2.
TYPES: BEGIN OF TY_DATA3,
SIGN(1),
OPTION(2),
LOW TYPE MCHB-WERKS,
HIGH TYPE MCHB-WERKS,
END OF TY_DATA3.
DATA: LT_WERKS_RANGE TYPE TABLE OF TY_DATA3,
LS_WERKS_RANGE TYPE TY_DATA3.
LOOP AT INPUT-MT_SAP_MMIF003_GET_MATERIAL_BA-ITEM INTO DATA(WA_DATA).
MOVE-CORRESPONDING WA_DATA TO LS_INPUT_DATA.
APPEND LS_INPUT_DATA TO LT_INPUT_DATA.
LS_LGORT_RANGE-SIGN = 'I'.
LS_LGORT_RANGE-OPTION = 'EQ'.
LS_LGORT_RANGE-LOW = LS_INPUT_DATA-LGORT.
APPEND LS_LGORT_RANGE TO LT_LGORT_RANGE.
LS_WERKS_RANGE-SIGN = 'I'.
LS_WERKS_RANGE-OPTION = 'EQ'.
LS_WERKS_RANGE-LOW = LS_INPUT_DATA-WERKS.
APPEND LS_WERKS_RANGE TO LT_WERKS_RANGE.
ENDLOOP.
SORT LT_INPUT_DATA BY WERKS LGORT.
DELETE ADJACENT DUPLICATES FROM LT_INPUT_DATA COMPARING ALL FIELDS.
SORT LT_LGORT_RANGE.
DELETE ADJACENT DUPLICATES FROM LT_LGORT_RANGE COMPARING ALL FIELDS.
SORT LT_WERKS_RANGE.
DELETE ADJACENT DUPLICATES FROM LT_WERKS_RANGE COMPARING ALL FIELDS.
IF LT_WERKS_RANGE IS NOT INITIAL AND LT_LGORT_RANGE IS NOT INITIAL. " LT_INPUT_DATA.
SELECT
WERKS
MATNR
CINSM
CLABS
CSPEM
LGORT
CHARG
FROM MCHB INTO CORRESPONDING FIELDS OF TABLE LT_DATA
-
FOR ALL ENTRIES IN LT_INPUT_DATA WHERE WERKS IN LT_WERKS_RANGE "= LT_INPUT_DATA-WERKS AND LGORT IN LT_LGORT_RANGE. ENDIF
9.RFC使用Range内表定义,使用CORRESPONDING映射内表字段值到另外一个内表,获取物料库存例子。
FUNCTION zmm_send_stock .
*"----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*" REFERENCE(INPUT) TYPE ZMT_SAP_MMIF003_GET_MATERIAL_B
*" EXPORTING
*" REFERENCE(OUTPUT) TYPE ZMT_SAP_MMIF003_GET_MATERIAL_1
*"----------------------------------------------------------------------
TYPES:BEGIN OF lty_werks,
werks TYPE ekpo-werks,
END OF lty_werks.
TYPES:BEGIN OF lty_charg,
matnr TYPE mchb-matnr,
charg TYPE mchb-charg,
END OF lty_charg.
DATA:BEGIN OF ls_kchz,
werks TYPE mchb-werks,
matnr TYPE mchb-matnr,
charg TYPE mchb-charg,
lgort TYPE mchb-lgort,
clabs TYPE mchb-clabs, "非限制库存
cinsm TYPE mchb-cinsm, "质检库存
cspem TYPE mchb-cspem, "冻结库存
END OF ls_kchz.
DATA: lt_werks TYPE TABLE OF lty_werks,
lt_charg TYPE TABLE OF lty_charg,
lt_kchz LIKE TABLE OF ls_kchz.
DATA: lrt_werks TYPE RANGE OF mchb-werks.
lrt_werks[] = CORRESPONDING #( input-mt_sap_mmif003_get_material_ba-details[] MAPPING low = werks ).
SORT lrt_werks BY low.
DELETE ADJACENT DUPLICATES FROM lrt_werks COMPARING low.
MODIFY lrt_werks FROM VALUE #( sign = ‘I’
option = ‘EQ’ )
TRANSPORTING sign option WHERE sign = ‘’.
IF lrt_werks[] IS INITIAL.
output-mt_sap_mmif003_get_material_ba-code = ‘E’.
output-mt_sap_mmif003_get_material_ba-desc = ‘入参列表不能为空’.
RETURN.
ENDIF.
"汇总MCHB,MKOL,MSPR三个表的库存数据
SELECT
a~*
FROM zv_mm_kchz AS a
WHERE a~werks IN @lrt_werks
AND NOT EXISTS ( SELECT * FROM mdlg WHERE werks = a~werks AND lgort = a~lgort )
INTO CORRESPONDING FIELDS OF TABLE @lt_kchz.
MOVE-CORRESPONDING lt_kchz[] TO lt_charg[].
SORT lt_charg BY matnr charg.
DELETE ADJACENT DUPLICATES FROM lt_charg COMPARING matnr charg.
IF lt_charg[] IS NOT INITIAL.
SELECT
a~mblnr,
a~mjahr,
a~zeile,
a~matnr,
a~charg,
a~ebeln,
a~ebelp,
b~zzbeskz,
b~zzseller_group,
c~lifnr
FROM mseg AS a
INNER JOIN ekpo AS b
ON a~ebeln = b~ebeln AND a~ebelp = b~ebelp
INNER JOIN ekko AS c
ON a~ebeln = c~ebeln
FOR ALL ENTRIES IN @lt_charg
WHERE a~matnr = @lt_charg-matnr
AND a~charg = @lt_charg-charg
AND a~ebeln <> ‘’
AND a~lifnr > ‘0000009999’
AND a~bwart IN ( ‘101’ )
AND NOT ( b~zzbeskz = ‘’ AND b~zzseller_group = ‘’ AND c~lifnr = ‘’ )
INTO TABLE @DATA(lt_mseg_b).
IF sy-subrc EQ 0.
SORT lt_mseg_b BY matnr charg ebeln ebelp.
ENDIF.
ENDIF.
FREE:lt_charg.
DATA: ls_out TYPE zdt_fp_mmif003_get_material_b3.
SORT lt_kchz BY werks matnr charg lgort.
LOOP AT lt_kchz INTO ls_kchz.
DATA(lv_tabix) = sy-tabix.
CLEAR:ls_out.
ls_out-werks = ls_kchz-werks.
ls_out-matnr = ls_kchz-matnr.
ls_out-menge = ls_kchz-clabs + ls_kchz-cinsm + ls_kchz-cspem.
IF ls_kchz-clabs + ls_kchz-cinsm + ls_kchz-cspem = 0.
DELETE lt_kchz INDEX lv_tabix.
CONTINUE.
ENDIF.
ls_out-cinsm = ls_kchz-cinsm.
ls_out-clabs = ls_kchz-clabs.
ls_out-cspem = ls_kchz-cspem.
ls_out-lgort = ls_kchz-lgort.
ls_out-charg = ls_kchz-charg.
READ TABLE lt_mseg_b INTO DATA(ls_mseg_b) WITH KEY matnr = ls_kchz-matnr
charg = ls_kchz-charg
BINARY SEARCH.
IF sy-subrc EQ 0.
DATA(lv_index) = sy-tabix.
lv_index = lv_index + 1.
READ TABLE lt_mseg_b INTO DATA(ls_a) INDEX lv_index.
IF sy-subrc EQ 0.
IF ls_a-matnr = ls_mseg_b-matnr AND ls_a-charg = ls_mseg_b-charg
AND ls_a-ebeln = ls_mseg_b-ebeln AND ls_a-ebelp = ls_mseg_b-ebelp.
"采购订单+行项目存在多个
ELSE.
"采购订单+行项目只存在一个
ls_out-zzbeskz = ls_mseg_b-zzbeskz.
ls_out-zzseller_group = ls_mseg_b-zzseller_group.
ls_out-lifnr = ls_mseg_b-lifnr.
ENDIF.
ELSE.
"采购订单+行项目只存在一个
ls_out-zzbeskz = ls_mseg_b-zzbeskz.
ls_out-zzseller_group = ls_mseg_b-zzseller_group.
ls_out-lifnr = ls_mseg_b-lifnr.
ENDIF.
CLEAR:lv_index.
ENDIF.
APPEND ls_out TO output-mt_sap_mmif003_get_material_ba-details.
CLEAR:ls_kchz.
ENDLOOP.
FREE:lt_mseg_b,lt_kchz.
IF output-mt_sap_mmif003_get_material_ba-details[] IS NOT INITIAL.
DATA(lv_lines) = lines( output-mt_sap_mmif003_get_material_ba-details[] ).
output-mt_sap_mmif003_get_material_ba-code = ‘S’.
output-mt_sap_mmif003_get_material_ba-desc = ‘获取数据成功!共计’ && lv_lines && ‘条’.
ELSE.
output-mt_sap_mmif003_get_material_ba-code = ‘E’.
output-mt_sap_mmif003_get_material_ba-desc = ‘无符合条件的数据’.
ENDIF.
ENDFUNCTION.
10.判断字符串是否全部是数值
DATA: LS_TEST TYPE STRING.
LS_TEST = ‘0010.1’.
IF CL_ABAP_MATCHER=>MATCHES(
PATTERN = ‘^(-?[1-9]\d*(.\d*[1-9])?)|(-?0.\d*[1-9])$’
TEXT = LS_TEST ) = ABAP_TRUE.
WRITE ‘数字’.
ELSE.
WRITE ‘非数字’.
ENDIF.
-? :负号
[1-9]\d* :整数部分(整数第一位不为0,后面的随意)
.\d*[1-9] :小数部分(小数点最后一位不为0,中间的随意)
0.\d*[1-9] :0.xxxx形式的小数
11.ABAP字符与ASCII码互转
方法一:
report Demotest.
- 1.将字符转成ASCII code
data : c value ‘A’.
field-symbols : type x.
data : rn type i.
assign c to casting.
move to rn.
write rn. -
- 将ASCII code转成字符
data : i type i value 66.
data : x type x.
field-symbols : type c.
move i to x.
assign x to casting type c.
move to c.
write c.
方法二:
字符转ASCII
URL_ASCII_CODE_GET
特点,根据这个算法可以中文转ASCII
互转
HR_KR_STRING_TO_XSTRING (应该就是CHAR-》RAW或者BIN的二进制)
HR_KR_XSTRING_TO_STRING
SO_SOLITAB_TO_SOLIXTAB
SO_SOLIXTAB_TO_SOLITAB
互转
REPORT SAPMZTS3.
DATA: L_S TYPE STRING VALUE ‘a’.
DATA: L_S1 TYPE XSTRING.
DATA: lr_conv_ci TYPE REF TO CL_RPE_CONVERT .
CREATE OBJECT LR_CONV_CI.
L_S1 = ‘42’.
CALL METHOD lr_conv_ci->XSTRING_TO_STRING
EXPORTING
INPUT = L_S1
IMPORTING
OUTPUT = L_S.
WRITE L_S.
CALL METHOD lr_conv_ci->STRING_TO_XSTRING
EXPORTING
INPUT = L_S
IMPORTING
OUTPUT = L_S1.
WRITE L_S1.
- 将ASCII code转成字符
示例:
REPORT z_barry_test_ascii.
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .
START-OF-SELECTION.
CREATE OBJECT l_con.
CALL METHOD l_con->string_to_xstring
EXPORTING
input = ‘ABC’
IMPORTING
output = xstr.
CALL METHOD l_con->xstring_to_string
EXPORTING
input = ‘4261727279’
IMPORTING
output = str.
WRITE / : xstr ,str.
字符转ASCII
URL_ASCII_CODE_GET
特点:根据这个算法可以中文转ASCII
DATA: char_cd(2) TYPE c.
CALL FUNCTION ‘URL_ASCII_CODE_GET’
EXPORTING
trans_char = ‘A’
IMPORTING
char_code = char_cd.
WRITE /: char_cd.
利用cl_rpe_convert字符与ASCII互转
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .
START-OF-SELECTION.
CREATE OBJECT l_con.
CALL METHOD l_con->string_to_xstring
EXPORTING
input = ‘ABC’
IMPORTING
output = xstr.
CALL METHOD l_con->xstring_to_string
EXPORTING
input = ‘426172727942’
IMPORTING
output = str.
WRITE / : xstr ,str.
特殊字符处理 利用类CL_ABAP_CHAR_UTILITIES在字符串中加入tab字符,回车换行符,换页符
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .
START-OF-SELECTION.
CREATE OBJECT l_con.
str = cl_abap_char_utilities=>cr_lf.
CALL METHOD l_con->string_to_xstring
EXPORTING
input = str
IMPORTING
output = xstr.
CALL METHOD l_con->xstring_to_string
EXPORTING
input = ‘4213’
IMPORTING
output = str.
WRITE / : xstr ,str.
12.去掉字符串左右两边空格
(1)方法一:CONDENSE LS_DETAILS-PURCHASE_QTY NO-GAPS.
(2)方法二:SHIFT LS_TEXT LEFT DELETING LEADING SPACE. 去掉左边字符串的
SPLIT LS_TEXT AT ‘’ INTO LS_STRING LS_STRING1. 以’'拆分字符串到变量
13.SWITCH 用法:
当LV_EXIST等于ABAP_TRUE(X)时,设置变量为U,否则为C
LS_DATA_TMP-CRUD_TYPE = SWITCH #( LV_EXIST WHEN ABAP_TRUE THEN ‘U’
ELSE ‘C’ ).
14.大小写转换:
translate l_interfaceid to upper case."字符小写转大写
TRANSLATE l_interfaceid TO LOWER CASE "字符大写转小写
REPORT ZEXAMPLE.
DATA: V_HEAD(10), V_TAIL(10).
PARAMETERS: P_STR(20),
P_DEM.
CALL FUNCTION ‘STRING_UPPER_LOWER_CASE’
EXPORTING
DELIMITER = P_DEM
STRING1 = P_STR
IMPORTING
STRING = P_STR
EXCEPTIONS
NOT_VALID = 1
TOO_LONG = 2
TOO_SMALL = 3
OTHERS = 4.
IF SY-SUBRC EQ 0.
WRITE:/ P_STR.
ELSE.
WRITE:/ ‘ERROR CONVERTING STRING’.
ENDIF.
15.两个字符串连接,中间以空格为分隔符
DATA: LV_DATE_STR TYPE CHAR30,
LV_TIME_STR TYPE CHAR30,
LV_DATE_TIME TYPE CHAR80,
LV_SPACE TYPE CHAR1.
DATA: LV_DATE TYPE SY-DATUM,
LV_TIME TYPE SY-UZEIT.
LV_DATE = SY-DATUM.
LV_TIME = SY-UZEIT.
CONCATENATE LV_DATE(4) ‘/’ LV_DATE+4(2) ‘/’ LV_DATE+6(2) INTO LV_DATE_STR.
CONCATENATE LV_TIME(2) ‘:’ LV_DATE+2(2) ‘:’ LV_DATE+4(2) INTO LV_TIME_STR.
CONCATENATE LV_DATE_STR LV_TIME_STR INTO LV_DATE_TIME SEPARATED BY SPACE.
16.位数和长度:
LV_STR11 = ‘Test000001’.
LV_LEN = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( LV_STR11 ).
WRITE: / LV_STR11.
WRITE LV_LEN.
ILEN = STRLEN( LV_STR11 ).
17.替换字符串
REPLACE ALL OCCURRENCES OF ‘,’
IN lwa_doc_item-part_desc WITH ‘|’.
18.金额负号前置
DATA NUM TYPE P DECIMALS 2. "模拟金额类型
DATA NUM1(10) TYPE C. "定义字符串类型
NUM = ‘-15.25’. "赋值
NUM1 = NUM.
CALL FUNCTION ‘CLOI_PUT_SIGN_IN_FRONT’ "传入值必须要字符型
CHANGING
VALUE = NUM1.
WRITE: / ‘修改前:’,NUM.
WRITE: / ‘修改后:’,NUM1.
改变值必须要是字符型。在字符的转换上,P类型可以直接转C类型,直接赋值就行,不过C类型的长度需要把握好。
19.暴力修改表内容
(1). 一个在SE16里用debug的途径来进行修改
第一步,进入SE16,输入需要修改的表的名字
第二步,在选择屏里输入点选择项来找数据,找你需要修改的那行
第三步,在表的内容输出的界面,在command field里,就是用来输入tcode的那个地方,输入/H,回车,会看到下面有绿色提示,意思是debug on.
第四步,注意,这里需要选择的是LIST的表显示方式,才可以!找到需要修改的那一行,双击来显示,这个时候会进入代码,main program是“SAPLSETB”,source code of 是“LSETBF01”,在25行处.
第五步,在这个if前加个断点,然后把code的值改成‘EDIT’第六步,按F8运行,看到出来的结果是除了key field,其他的字段都可以被修改了,修改后按保存按钮
(2). 使用SE16N实现批量修改的问题?
查询出数据,使用/H,进入调试界面,然后获取:GD-SAPEDIT&&GD-EDIT都修改成X
(3). ECC6.版本 se37–>TRINT_OBJECTS_CHECK_AND_INSERT ---->487行设定断点(IF ct_ko200 IS INITIAL)
在SE38中点修改,会跳到此断点处,将表ct_ko200中内容清空即可。
S4 Hana在295行打断点,清空VT_ko200数据
在SE38中点修改,会跳到此断点处,将表ct_ko200中内容清空即可。
20.弹出对话框显示信息
DATA: GT_RETURN TYPE STANDARD TABLE OF BAPIRET2.
"同一物料编码的数据如果重复出现,用后面的数据覆盖前面的。
READ TABLE gt_ztsd0044 TRANSPORTING NO FIELDS
WITH KEY matnr = gs_ztsd0044-matnr.
IF sy-subrc = 0.
CLEAR: lv_message.
lv_message = |{ TEXT-t13 }|.
REPLACE '&1' IN lv_message WITH gs_ztsd0044-matnr.
PERFORM frm_get_message USING lv_message lv_tabix.
ELSE.
APPEND gs_ztsd0044 TO gt_ztsd0044.
ENDIF.
*处理返回信息
FORM frm_get_message USING uv_message TYPE char200
uv_tabix TYPE i.
APPEND VALUE bapiret2(
type = ‘E’
id = ‘SU’
number = ‘000’
message = uv_message
message_v1 = uv_message(50)
row = uv_tabix
field = ‘MATNR’
) TO gt_return.
ENDFORM.
IF gt_return[] IS NOT INITIAL.
CALL FUNCTION ‘SUSR_DISPLAY_LOG’
EXPORTING
display_in_popup = ‘X’
log_title = ‘错误消息’
TABLES
it_log_bapiret2 = gt_return.
ELSE.
"保存整理好的数据
PERFORM frm_save_data.
ENDIF.
21.判断值是否在域元素规定值内,固定值存在:DOMNAME在DD07T
DATA: WA_DD07T TYPE TYP_DD07T,
IT_DD07T LIKE STANDARD TABLE OF WA_DD07T.
CLEAR: IT_DD07T.
SELECT DOMNAME
DOMVALUE_L
DDTEXT
FROM DD07T
INTO CORRESPONDING FIELDS OF TABLE IT_DD07T
WHERE DOMNAME EQ ‘ZRWLH’.
22.MOD在(100,1000)之间所有能被3整除的偶数
data : sum type i,
max type i value 100.
while max <= 1000.
max = max + 1.
data itmp type i.
itmp = sy-index * 3.
itmp = sy-index mod 2.
if itmp <> 0.
continue.
endif.
sum = sum + sy-index.
endwhile.
write: ‘sum=’, sum.
23.内表结构判断每个字段是否为空(针对行)
方法一:
DATA:REF_TABLE_DES TYPE REF TO CL_ABAP_STRUCTDESCR,
IDETAILS TYPE ABAP_COMPDESCR_TAB WITH HEADER LINE,
XDETAILS TYPE ABAP_COMPDESCR.
FIELD-SYMBOLS: <FS_VALUE> .
DATA: LV_ROWS TYPE N.
-
判断各字段是否为空,为空时报错
SORT GT_SELECT_DATA ASCENDING.
LOOP AT GT_SELECT_DATA INTO GS_SELECT_DATA.
LV_ROWS = SY-TABIX.
REF_TABLE_DES ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( GS_SELECT_DATA ).
IDETAILS[] = REF_TABLE_DES->COMPONENTS[].
LOOP AT IDETAILS INTO XDETAILS WHERE NAME NE ‘TEXT_LINE2’ AND NAME NE ‘TASK_NUM’ AND NAME NE ‘SEL’ AND NAME NE ‘STATUS’ AND NAME NE ‘MESSAGE’ AND NAME NE ‘VBELN_SO’.
ASSIGN COMPONENT XDETAILS-NAME OF STRUCTURE GS_SELECT_DATA TO <FS_VALUE>.
IF <FS_VALUE> IS INITIAL OR <FS_VALUE> <= 0.
CONCATENATE ‘记录行’
LV_ROWS
‘->’
GS_SELECT_DATA-PO_NUMBER
’ ’
GS_SELECT_DATA-AUART
‘有字段为空’
INTO LV_MESSAGE.
EXIT.
ENDIF.
ENDLOOP.
IF LV_MESSAGE IS NOT INITIAL.
EXIT.
ENDIF.
ENDLOOP.
IF LV_MESSAGE IS NOT INITIAL.
MESSAGE LV_MESSAGE TYPE ‘S’ DISPLAY LIKE ‘E’.
EXIT.
ENDIF.
CLEAR: LV_MESSAGE.
方法二:
LOOP AT GT_WEEKS ASSIGNING FIELD-SYMBOL(<WA_WEEKS>).
IF <WA_WEEKS>-WKFLAG = ‘M’.
LV_NUM2 = LV_NUM2 + 1.
ENDIF.LV_NUM1 = LV_NUM1 + 1.
IF <WA_WEEKS>-WKFLAG = ‘M’.
LV_FIELD = ‘MONTH’ && LV_NUM2.
ELSE.
LV_FIELD = ‘MNG’ && LV_NUM1.
ENDIF.
LV_FILDENAME = LV_FIELD.
"数量
ASSIGN COMPONENT LV_FILDENAME OF STRUCTURE LS_ZSMM124 TO <DYN_FIELD>. "数量
IF SY-SUBRC EQ 0.
LV_MENGE = LV_MENGE + <DYN_FIELD>.
ENDIF.ENDLOOP.
IF LV_MENGE <= 0.
CONTINUE.
ENDIF.
24.字符串大小写转换
TRANSLATE:实现字符串转换,OVERLAY:参考字符串对空白字符进行填充.
TRANSLATE c TO UPPER CASE.
TRANSLATE c TO LOWER CASE.
TRANSLATE c USING c1.
25.Concatenate连接字符串换行
CONCATENATE gt_data-resume lv_pa0001-begda ‘-’ lv_pa0001-endda ’ ’ l_str1 l_str2 l_str3 cl_abap_char_utilities=>cr_lf(1) INTO gt_data-resume.