说我没有。 20101105,我需要将它与一系列其他的比较。说20110105,20090105并找到最近的没有。它的。
我不想在整体上比较它,我需要通过解析它来比较每个数字,然后看哪个是最接近的。
有人建议如何做到这一点是SAP ABAP语言吗?
答案 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.
希望它有所帮助。