2017-12-28 37 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

니스 대답. ENDO. ' 'sy-index'는 간결함으로 인해 – Jagger

+0

Yup @Allen! 덕분에 많은 도움이되었습니다. 그러나 아래의 DO ENDDO 접근 방식을 선호합니다. 내가 이해하기가 훨씬 쉬워. 고마워요! – Czarinaaaaa29