SAP Query里写自定义ABAP代码
主要有2种方式:
1.SQ02里输入对应的信息集增加代码,详细使用可参考下列URL:
http://www.erpfixers.com/blog/2016/9/12/using-abap-coding-in-sap-standard-query
https://blogs.sap.com/2015/11/20/building-an-sap-query-with-abap-code/
http://www.baidusap.com/abap/query/922
比如需要修改最终内表里的某个字段,步骤如下:
1>SQ02编写代码
选择结束(在清单后)即为数据ALV已经赋值,还未输出
,相当于end-of-selection
Query里的显示内表统一为%G00[],通过指针指向该内表
各个字段均通过指针修改,本例实现取物料主数据描述长文本替换到内表的规格字段,具体代码如下:
field-symbols: type table.
field-symbols: <g00_wa> type any.
field-symbols: <fs_matnr> type mara-matnr.
field-symbols: <fs_ltext> type zwlltext-ltext.
data:lv_str type string.
data:lv_tdname type thead-tdname,
lv_object type thead-tdobject value ‘MATERIAL’,
lv_id type thead-tdid value ‘GRUN’,
lv_langu type thead-tdspras value ‘1’,
lt_tline like tline occurs 0 with header line.
data:lv_text type string.
lv_str = ‘%G00[]’.
assign (lv_str) to .
"物料长文本
loop at assigning <g00_wa>.
clear:lt_tline[],lv_text.
assign component ‘MAST-MATNR’ of structure <g00_wa>
to <fs_matnr>.
if <fs_matnr> is assigned.
lv_tdname = <fs_matnr>.
call function ‘READ_TEXT’
exporting
client = sy-mandt
id = lv_id
language = lv_langu
name = lv_tdname
object = lv_object
ARCHIVE_HANDLE = 0
LOCAL_CAT = ’ ’
IMPORTING
HEADER =
tables
lines = lt_tline
exceptions
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
others = 8
.
assign component ‘ZWLLTEXT-LTEXT’ of structure <g00_wa>
to <fs_ltext>.
if <fs_ltext> is assigned.
loop at lt_tline.
concatenate lv_text lt_tline-tdline into lv_text.
endloop.
<fs_ltext> = lv_text.
endif.
endif.
endloop.
2>生成代码
3>执行SQ01查看效果
2.在下列函数中使用隐式增强,并且加上TCODE限制,对内表dtab[]进行处理