운영 서버에서 개발서버로 data를 넘기는데요...
작은테이블들은 넘어가는데...mara같은 큰 테이블들은 덤프가나네요...
--------------------------------------------------------------------------------
FIELD-SYMBOLS: <lt_table> TYPE table,
<ls_line> TYPE ANY.
CREATE DATA l_gen_table_01 TYPE TABLE OF (i_tabname).
ASSIGN l_gen_table_01->* TO <lt_table>.
CREATE DATA l_gen_line_01 LIKE LINE OF <lt_table>.
ASSIGN l_gen_line_01->* TO <ls_line>.
REFRESH: <lt_table>.
LOOP AT it_temp INTO ls_temp.
CLEAR: <ls_line>.
<ls_line>+3 = ls_temp+3. <- 요부분에서 덤프 발생
APPEND <ls_line> TO <lt_table>.
ENDLOOP.
---------------------------------------------------------------------------------
it_temp 는 스트링으로 char 10000자리로 선언했습니다.
방법이 없을까요? 소스이해하는게 힘드시면...더 올릴께요...
댓글 4
-
아밥 잭
2010.09.06 20:15
-
맑은하늘
2010.09.06 21:30
두 개의 구조가 모두 c-type 이라면 가능하겠지만 그렇지 않을 경우 type 변환오류가 발생할 것 같네요
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = ls_temp+3
IMPORTING
ex_container = <ls_line>+3.
한번 써보시겠어요?
데이터 확인이 안되서 테스트를 해볼수가 없지만 custom include (CI_XXXX) 사용할 때
문자+숫자 혼합구조일 경우에 적용하는 건데요. 잘 될지 모르겠네요. ^^;
-
아~밥
2010.09.06 21:31
char 255 까지만 값이 들어오고 짤리네요...
255이상 인식하게 할 수 있는 방법이 없을까요?
-
맑은하늘
2010.09.07 01:19
잘 들어오는 것 같은데요..^^;;
아래는 테스트 소스입니다.
아마도 화면에 보여지는게 255라서 그렇게 보여지시는 것 같네요.
(테스트 조건 : 필드크기 10000, 실제 문자열크기는 7,803, 소스문잘열과 변환결과문자열을 리스트로 출력하여 비교함.)
CONSTANTS C_ALPHA TYPE C LENGTH 26 VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
DATA LS_STRING TYPE C LENGTH 10000.
DATA LS_RESULT TYPE C LENGTH 10000.
DATA LV_POS TYPE I VALUE 3.
DO 300 TIMES.
LS_STRING+LV_POS = C_ALPHA.
ADD 26 TO LV_POS.
ENDDO.
LV_POS = STRLEN( LS_STRING ).
WRITE : / 'Source length = ', LV_POS.
LV_POS = 0.
DO 60 TIMES.
WRITE / LS_STRING+LV_POS(130).
ADD 130 TO LV_POS.
ENDDO.
CALL METHOD CL_ABAP_CONTAINER_UTILITIES=>FILL_CONTAINER_C
EXPORTING
IM_VALUE = LS_STRING+3
IMPORTING
EX_CONTAINER = LS_RESULT+3.
LV_POS = STRLEN( LS_RESULT ).
WRITE : / 'Result length = ', LV_POS.
LV_POS = 0.
DO 60 TIMES.
WRITE / LS_RESULT+LV_POS(130).
ADD 130 TO LV_POS.
ENDDO.
안녕하세요.
일단, 전체 소스가 없어서 흐름은 잘 모르겠습니다만,
<ls_line>+3 = ls_temp+3. 이 부분은 틀린것 같습니다.
field-symbols에서 offset을 사용하려면 정확하게 offset과 length를 명시해야합니다.
에를들어
<ls_line>+3(*) = ls_temp+3. => 4번째부터 끝까지.
<ls_line>+3(2) = ls_temp+3. => 4번째부터 2자리 즉, 4,5번
님께서 몇번째부터 몇자리를 넣고 싶으신지 원하는 것을 적어주세요.
감사합니다.