Cza*_*a29 3 sap abap concatenation function-module
我们如何连接动态工作区的字段?这个想法在下面的代码中:
LOOP AT lt_final INTO DATA(ls_final).
CONCATENATE ls_final-field1
ls_final-field2
ls_final-field3
ls_final-field4
ls_final-field5
INTO ls_attachment SEPARATED BY lc_tab. "lc_tab is horizontal tab
APPEND ls_attachment TO lt_attachment.
CLEAR: ls_attachment.
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)
(此代码将用于发送电子邮件附件.)现在,我的问题是,上面代码中的内部表是一个动态内部表,因此我不确定将有多少字段和字段名称.
如何连接字段?任何想法,请帮助..
LOOP AT <dynamic_table> INTO DATA(ls_final).
CONCATENATE ls_final-(?)
ls_final-(?)
ls_final-(?)
ls_final-(?)
ls_final-(?)
"or more fields insert here depending on dynamic table
INTO ls_attachment SEPARATED BY lc_tab. "lc_tab is horizontal tab
APPEND ls_attachment TO lt_attachment.
CLEAR: ls_attachment.
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)
FIELD-SYMBOLS: <lv_field> TYPE ANY.
LOOP AT lt_final
ASSIGNING FIELD-SYMBOL(<ls_final>).
DO.
ASSIGN COMPONENT sy-index
OF STRUCTURE <ls_final>
TO <lv_field>.
IF sy-subrc EQ 0.
IF sy-index EQ 1.
ls_attachment = <lv_field>.
ELSE.
ls_attachment = ls_attachment && lc_tab && <lv_field>.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)
我希望它是自我解释,但是:您可以使用系统变量(sy-index),它由SAP自动递增.在第一步中,只是复制值,没有任何东西可以连接(否则在字符串的开头会有一个不必要的lc_tab).