这是与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.
再一次,我不会按照自己的方式设置,如果我相信它会更好,我会完全转向另一种方法。
答案 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.