2017-12-28 42 views
1

動的作業領域の項目を連結するにはどうすればよいですか?アイデアは、以下のコードである:SAP動的構造の項目を連結する

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. 

(このコードは、電子メールの添付ファイルを送信するために使用されます。)さて、私の問題は、上記のコードでは、内部テーブルは、動的内部テーブルがあり、それゆえ私はないですいくつのフィールドがそこにあるのか、フィールド名も確認してください。

どのようにフィールドを連結しますか?任意のアイデア、お手伝いをしてください。

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. 

答えて

4
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. 

私はそれが自己説明であると思いますが、: あなたは、システム変数(SY-インデックス)を使用することができ、それがSAPによって自動的にインクリメントされます。 最初のステップでは、値をコピーするだけです。まだ連結するものはありません(そうでなければ、文字列の先頭に不要なlc_tabがあります)。

+0

ありがとう@JozsefSzikszai!これは私の問題を解決し、理解しやすくなりました。 – Czarinaaaaa29

3

あなたの構造をインデックスで読んでください。

data : 
    lv_attachment type string. 
    lv_index type i value 1. 
field-symbols: 
      <lv_value> type any. 

while 1 = 1. 
    assign component lv_index of structure ls_final to <lv_value>. 
    if sy-subrc <> 0. 
     exit. 
    endif. 
    concatenate lv_attachment <lv_value> into lv_attachment separated by lc_tab. 
    lv_index = lv_index + 1. 
endwhile. 

希望します。

+1

私は「DO」を好きですが、いい回答です。 ENDO。 'シンプルさのために 'sy-index'と表示されます。 – Jagger

+0

Yup @Allen!これは、多くの助け、ありがとう。しかし、私は以下のDO ENDDOアプローチを好む。理解するのがずっと簡単です。どうもありがとう! – Czarinaaaaa29

関連する問題