如何拆分一系列数字并将其与SAP ABAP中的另一组数字进行比较?

时间:2015-05-28 09:44:24

标签: sap abap

说我没有。 20101105,我需要将它与一系列其他的比较。说20110105,20090105并找到最近的没有。它的。

我不想在整体上比较它,我需要通过解析它来比较每个数字,然后看哪个是最接近的。

有人建议如何做到这一点是SAP ABAP语言吗?

2 个答案:

答案 0 :(得分:0)

一般情况下,您应该提及更多信息。例如,数字真的是整数吗?然后,您可以将它们放入内部表格中,对所有这些内容进行排序是查找与实际扫描相关的任何“最近”数字的最简单方法。这就像整数在排序中工作一样,它们按照数字排序,我的朋友。但是如果你想要它在字符方面(真正没有意义,如果数字是整数)我在do循环中给你一些这个字符比较的帮助,把较小的字符串长度作为迭代器计数器。我省略了别的,这是你的“家庭作业”。 :-D

  DATA:
    lv_length1  TYPE i,
    lv_length2  TYPE i,
    lv_cnt      TYPE i,
    lv_teststr1 TYPE string VALUE '123456',
    lv_teststr2 TYPE string VALUE '1235'.

lv_length1 = strlen( lv_teststr1 ).
lv_length2 = strlen( lv_teststr2 ).

IF lv_length1 GE lv_length2.
  DO lv_length2 TIMES.
    IF lv_teststr2+lv_cnt(1) NE lv_teststr1+lv_cnt(1).
      BREAK-POINT.
    ENDIF.
    ADD 1 TO lv_cnt.
  ENDDO.
ENDIF.

在这种情况下,计数器变量也是第一个不匹配的字符的索引。这可以完成工作。 我现在正在编码和测试。

答案 1 :(得分:0)

我不知道我是否理解但也许这有帮助。

report  znearest.

data lv_value(8) type n.

parameters p_value(8) type n. " ---------> The value
select-options s_values for lv_value. " -> The list

start-of-selection.

data: wa like line of s_values,
      lv_dif(8) type n,
      lv_nearest(8) type n,
      lv_nearest_dif(8) type n,
      lv_first type c.

loop at s_values into wa.
  lv_dif = abs( p_value - wa-low ). " Calculate the difference

  if lv_first is initial.
    lv_nearest_dif = lv_dif.
    lv_first = 'X'.
  endif.

  if lv_dif le lv_nearest_dif. " Compare the differences
    lv_nearest = wa-low.
    lv_nearest_dif = lv_dif.
  endif.
endloop.

write: 'The nearest from', p_value, 'is', lv_nearest.

希望它有所帮助。