目录
1、双重表赋值
ls_data = VALUE #( head = VALUE #( ( mblnr = ls_header-mblnr
mjahr = ls_header-mjahr )
) ).
ls_data-head[ lines( ls_data-head ) ]-item = lt_item.
2、不同结构表赋值
lt_item = CORRESPONDING #( DEEP is_input-data-item[] ).
3、转18位物料
lv_matnr = CONV wty_matnr18( |{ ls_alv-tl_matnr ALPHA = IN }| ).
lv_matnr = |{ lv_mantr1 WIDTH = 18 ALIGN = RIGHT PAD = '0' }|.
4、去空格
replace( val = CONV rspos( lv_tabix ) sub = ` ` with = `` )
5、获取内表符合条件的行数
DATA(lv_lines2) = REDUCE i( INIT x = 0 FOR gs_tabkp IN gt_tab WHERE ( chk = abap_true ) NEXT x = x + 1 )
6、更改内表指定的某个值字段
MODIFY _t_purchasereq FROM VALUE #( banfn = l_banfn ) TRANSPORTING banfn WHERE banfn_o = is_purchasereq-banfn_o.
7、判断内表包含
IF line_exists( gt_display[ box = 'X' icon = icon_led_red ] ).
MESSAGE '选中内容存在错误数据,不可导入' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
8、增删前导0
DATA(ls_in_matnr) = |{ ls_matnr ALPHA = IN }|. " '000000000015000042'.
DATA(gs_out_matnr) = |{ gs_matnr ALPHA = OUT }|."'15000042'
9、 是否判断
COND #( WHEN LS_OUT-MESSAGE =SPACE THEN LS_RETURN-MESSAGE ELSE |{ LS_OUT-MESSAGE }/{ LS_RETURN-MESSAGE }| ).
10、拼接字符强制各字符占有原位数
CONCATENATE lv_matnr abap_true abap_true INTO ls_bapiparexx-valuepart1 RESPECTING BLANKS.
11、自适应赋值 部分字段
lt_list = CORRESPONDING #( _t_alv_9003 MAPPING zscx = zscx wemng = wemng ).
12、具有符合条件的数据丢进新表
lt_temp = VALUE #( FOR wa IN _t_alv_9000 WHERE ( sel = abap_true ) ( wa ) ) .
13、数值的处理
lv_weeks = round( val = lv_days dec = 0 mode = cl_abap_math=>round_up ) " 前 1.5 转后 2.0
LV_QTY = |Quantity: { im_record-psmng SIGN = LEFT }|. " 转换前:原500- 转换后: -500
LV_QTY = |Quantity: { im_record-psmng SIGN = RIGHT }|. " 转换前:原500- 转换后:500-
LV_QTY = |Quantity: { im_record-psmng DECIMALS = 2 }|. " 转换前:原500 转换后:500.00
LV_QTY = |Quantity: { im_record-psmng CURRENCY = 'USD' }|. " 转换前:原500 转换后:500
14、取制定X-N列的值
DO lv_tabix TIMES. "计算循环次数(M-5+1)
ASSIGN COMPONENT sy-index + 4 OF STRUCTURE <fs_tab> TO FIELD-SYMBOL(<val>). "从第5列开始
IF sy-subrc = 0 AND <val> IS ASSIGNED.
<fs_tab>-plnmg = <fs_tab>-plnmg + <val>.
ENDIF.
ENDDO.
15、 取内表指定行
DATA(ls_safe_copy) = gt_table[ 2 ].