两组值之差

时间:2019-02-27 14:03:34

标签: sap abap

我有一组值:“ foo”,“ bar”,“ blue”。

我有一个看起来像这样的表:

httpRequest.getHeader("ssl_client_cert");

我希望设置值减去所有可用的my_col值。

[foo,bar,blue]减去[foo,bar]

结果应为“蓝色”。

如何在ABAP中做到这一点?

2 个答案:

答案 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 ).

但是仅适用于HASHEDSORTED表。

答案 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.

最诚挚的问候!