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[]进行处理


本文介绍在SAPQuery中使用ABAP代码的两种方法:一是通过SQ02直接编写并修改最终内表字段;二是利用隐式增强处理内表。文中详细解释了如何在SQ02中编写代码来修改内表字段的具体步骤。
4226

被折叠的 条评论
为什么被折叠?



