안녕하세요?
프로그램을 개발하다, 참 아이러니한 부분을 발견하게 되어서 질문을 올립니다.
로직상의 문제는 아니구요,
프로그램을 간단히 설명을 드리자면,
텍스트 파일을 받아 업로드하여 ALV형태로 데이터를 뿌려주는 간단한 프로그램인데요,
화면에 출력된 ALV상의 데이터를 수정이 가능하게 하기 위하여,
수정 그리고 저장 버튼을 만들었는데,
수정버튼을 누르면, 그림에 나타난 것처럼 버튼 클릭하기 전처럼 데이터 전체가 나타나는 것이 아니라,
갑자기 소숫점으로 변해버리더라구요.
물론, 데이터가 없어진것이 아닌것은 아는데, 필드 길이가 줄어드는것인지 갑자기 변해버려서,
도통 이유를 모르겠더라구요.
참고로, 텍스트 파일에서 업로드된 데이터는 인터널 테이블 안에 Char형태로 받았구요,
ALV 레이아웃 속성에서도, 다음과 같은
DATA : gs_layout TYPE lvc_s_layo.
gs_layout-cwidth_opt = 'X'.
필드길이를 최적화한 옵션을 사용했습니다. 물론, 필드캣에서의 속성에서 길이는 지정해주지 않았습니다.
수정버튼은, 수정이 가능하게끔 체크된 라인을 활성화하여 열어주는 기능이구요,
저장버튼은, 수정이 된 데이터를 비활성화 해주는 기능일뿐이지, DB를 제어하는 기능은 아닙니다.
선배님들의 조언을 구하고자 이렇게 질문을 드립니다.
댓글 4
-
기빵
2009.06.25 00:39
-
신동욱
2009.06.25 01:04
우선, 기빵님의 답변 감사드립니다 ^^
말씀하신대로 로직을 적용해본 결과 에러메세지가 발생해서 송구스럽지만 좀 더 질문을 드립니다.
The obligatory parameter "IT_FIELDCATALOG" had no value assigned to it 과,
The obligatory parameter "IS_LAYOUT" had no value assigned to it. 이란 메세지가 발생하는데,
이를 해결하려면 선언부에 어떤 변수를 선언해야 하는건가요?
말씀하신대로 CALL METHOD g_grid->refresh_table_display(저는 g_grid를 참조,g_grid TYPE REF TO cl_gui_alv_grid) 하였습니다만,
해결방법을 좀 더 찾아봐야할것 같아요.
-
기빵
2009.06.25 01:08
제가 쓰는건 이렇게 사용하고있습니다.
gs_stbl-row = 'X'. "행기준 안정적 최신표시
gs_stbl-col = 'X'. "열기준 정적 최신표시
CALL METHOD gs_alv_grid->refresh_table_display
EXPORTING
is_stable = gs_stbl.
CALL METHOD gs_alv_grid->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = gt_fieldcat[].
CALL METHOD gs_alv_grid1->set_frontend_layout
EXPORTING
is_layout = gs_layout. -
신동욱
2009.06.25 01:28
답변 정말 감사드립니다. 기빵님 ^^
제가 예전에 했던 고민을 하시는군요....
버튼 이벤트 후에 pbo에서 alv를 refresh를 할텐데요
그때 기본적으로 CALL METHOD gs_alv_grid->refresh_table_display만 하셨을꺼 같네요...
CALL METHOD gs_alv_grid->set_frontend_fieldcatalog와 CALL METHOD gs_alv_grid->set_frontend_layout를 같이 써보세요.