我有一组值:“ foo”,“ bar”,“ blue”。
我有一个看起来像这样的表:
httpRequest.getHeader("ssl_client_cert");
我希望设置值减去所有可用的my_col值。
[foo,bar,blue]减去[foo,bar]
结果应为“蓝色”。
如何在ABAP中做到这一点?
答案 0 :(得分:4)
您在这里...
REPORT YYY.
TYPES string_table TYPE HASHED TABLE OF string WITH UNIQUE KEY TABLE_LINE.
DATA(gt_set1) = VALUE string_table( ( `foo` ) ( `bar` ) ( `blue` ) ).
DATA(gt_set2) = VALUE string_table( ( `foo` ) ( `bar` ) ).
DATA(gt_set1_except_set2) = FILTER string_table( gt_set1 EXCEPT IN gt_set2 WHERE table_line = table_line ).
但是仅适用于HASHED
和SORTED
表。
答案 1 :(得分:1)
带有标准表的几个其他示例:
data: set type table of string, " initial set
tab type table of string, " you table
res type table of string. " the result
set = value #( ( `foo` ) ( `bar` ) ( `blue` ) ).
tab = value #( ( `foo` ) ( `bar` ) ).
选项1:假设初始设置和制表符是标准表,则可以简单地循环获取初始设置,然后查看表值
在这种情况下,在选项卡表中进行全表搜索-> O(n)进行选项卡搜索
LOOP AT set into data(lv_set).
read table tab from lv_set transporting no fields.
check sy-subrc > 0.
append lv_set to res.
ENDLOOP.
选项2:您可以使用
中所述的临时哈希表SE38->环境-> Performace示例(内部表的交集)
data: htab type hashed table of string with unique key table_line.
htab = tab. " use Hashed table as temporary working table
loop at set into lv_set.
" fast table lookup accessing with unique key O(1)
read table htab from lv_set transporting no fields.
check sy-subrc > 0.
append lv_set to res.
endloop.
free htab.
最诚挚的问候!