按数据类型动态修改内部表值

时间:2017-03-13 18:50:52

标签: abap

这是与the one I posted last week类似的问题。

我有一个基于字典结构的内部表格,其格式类似于以下内容:

+---------+--------+---------+--------+---------+--------+-----+
| column1 | delim1 | column3 | delim2 | column5 | delim3 | ... |
+---------+--------+---------+--------+---------+--------+-----+
| value1  | |      | value 1 | |      | value 1 | |      | ... |
| value2  | |      | value 2 | |      | value 2 | |      | ... |
| value3  | |      | value 3 | |      | value 3 | |      | ... |
+---------+--------+---------+--------+---------+--------+-----+

delim*列的类型都是delim,非分隔符列的输入无关紧要(假设它们都不是delim类型。)

此表中的数据在单个语句中获得:

SELECT * FROM <table_name> INTO CORRESPONDING FIELDS OF TABLE <internal_table_name>.

因此,我有一个完整的表,除了分隔符值,它由选择屏幕上的用户输入决定(也就是说,我们不能总是依赖它们,,或任何其他常见的分隔符) 。

我想找到一种方法,将delim类型的所有值动态设置为每行的某个输入。

显然,我可以对分隔符名称进行硬编码并在表格中循环设置所有这些名称,但这不是动态的。不幸的是,我无法继续a simple API

我尝试了什么(这不起作用,这是一种如此糟糕的技术,让我感觉很脏,只是写它):

DATA lt_fields TYPE TABLE OF rollname.
SELECT fieldname FROM dd03l
           INTO TABLE lt_fields
                WHERE tabname  = '<table_name>'
                  AND as4local = 'A'
                  AND rollname = 'DELIM'.
LOOP AT lt_output ASSIGNING FIELD-SYMBOL(<fs>).
  LOOP AT lt_fields ASSIGNING FIELD-SYMBOL(<fs2>).
    <fs>-<fs2> = '|'.
  ENDLOOP.
ENDLOOP.

再一次,我不会按照自己的方式设置,如果我相信它会更好,我会完全转向另一种方法。

1 个答案:

答案 0 :(得分:0)

虽然我仍然相信你用整个方法咆哮着错误的树,但你在这里和上一个问题中都指出了in the right direction

ASSIGN COMPONENT <fs2> OF STRUCTURE <fs> TO FIELD-SYMBOL(<fs3>). " might just as well continue with the write-only naming conventions
IF sy-subrc = 0.
  <fs3> = '|'.
ENDIF.