스마트폼에 뿌려지는 internal table(이하 g_tab)의 data 중에서 필요한 field만 따로 뽑아서
text 파일(g_item)로 다운 받는 프로그램입니다.
해당 테이블의 핖드에 data가 있든 없든 총 길이 180 자리에 맞게 다운을 받으려고 하는데요.
우선 현 source를 간략히 설명하자면.
*- top -----------------------------------------------------------------------------------------------
data: v_string type string.
data: begin of g_item occurs 0,
field1(20),
field2(20),
field3(20),
field4(20),
field5(20),
field6(20),
field7(20),
field8(20),
field9(20),
end of g_item.
data: begin of downtab occurs 100,
content type string,
end of downtab.
*----------------------------------------------------------------------------------------------------
select 에서 data를 가공하여 g_tab에 최종 data를 갖게 하였습니다.
*----------------------------------------------------------------------------------------------------
loop at g_tab.
move : '17' to g_item-field1,
g_tab-field2 to g_item-field2,
g_tab-field3 to g_item-field3,
space to g_item-field4,
g_tab-field5 to g_item-field5,
g_tab-field6 to g_item-field6,
space to g_item-field7,
space to g_item-field8,
space to g_item-field9.
append g_item.
perform move_downtab using g_item 180. => form move_downtab using p_itab p_len type i.
call method cl_abap_list_utilities=>structure_to display
exporting
endloop. memory_data = p_itab
improting
display_data = downtab-content.
clear v_string.
v_string = downtab-content.
call function 'HR_KR_STRING_ADJUST'
exproting
* codepage_router = '8500'
unicode_string = v_string
string_len = p_len
importing
out_string = downtab-content
exceptions
invalid_codepage = 1
invalid_string = 2
unknown_error = 3
others = 4.
append downtab.
clear downtab.
*----------------------------------------------------------------------------------------------------
이후에
call method cl_gui_fronted_services=>file_save_dialog 와
call method cl_gui_frontend_services=> gui_download를 사용하여 file down load.
*----------------------------------------------------------------------------------------------------
여기에서 질문드리겠습니다.
위의 데이터를 text file로 다운 받아 보면
ex.)
field1| field2| field3| field4| field5| field6| field7| field8| field9|
____17|_______data|_____34245|_________|________34| ........................
위의 field 1의 경우 20으로 잡힌 길이에 17이라는 데이터를 받아올 경우 앞에 18자리의 space 이후 17이라는 data가
들어오고, data가 존재하는 fied3과 field5 사이의 space를 가지는 field4의 경우는 _____ space(20자리)를 가지게 됩니다.
그런데 데이터를 가지는 마지막 field인 field5 이후의 field6, 7, 8, 9의 경우는 space로 주었는데
______17______data_______34245________________________34_______________________________________________
이런 식으로 나오지 않고
______17______data_______34245________________________34 이렇게 끝나버립니다.
space로 잡힌 부분은 해당 길이만큼 space를 갖고 down되어야 한다는데요.
제 실력으로는 해결하기 어려워서 이렇게 질문을 올립니다.
소중한 답변을 기다리겠습니다.ㅠㅠ
* e-abap님에 의해서 게시물 이동되었습니다 (2010-07-07 23:37) * e-abap님에 의해서 게시물 이동되었습니다 (2010-07-07 23:42)
http://www.e-abap.net/zb/bbs/zboard.php?id=ABAPQnA&no=4404
참조하세용~gui_download를 사용하신다고 하셨으니 답변이 될것 같네요...
import parameter 중에 공백 관련 파라메터가 있어욤...링크를 보시면 아실것 같네요...ㅎ