위화면은 alv와 버튼 클릭시 나오는 스크린 화면인데요
스크린창에서 wr과 etc 라는 두 필드를 입력하고 저장하려고 합니다.
type-m 쪽은 알겠는데 alv쪽 저장,입력 관련은 좀 난해하네요
또한 저장한 후에 위에 버튼에 '저정완료' 라는 문구가 나타나게 하려고합니다.
어떻게 해야할까요? 아래는 관련 소스부분입니다.
책의 소스를 참고해서 해본건데 안되네요
MODULE USER_COMMAND_0300 INPUT.
save_ok_code = ok_code.
clear OK_CODE.
case save_ok_code.
when 'SAVE'.
PERFORM save_data.
when 'ENTR' OR 'ESC'.
set screen 0. leave screen.
endcase.
ENDMODULE.
----------------------------------------------------------------------------------
FORM SAVE_DATA .
if t_flag = 'I'.
insert zoutput.
concatenate t_wr1 t_wr2 t_wr3 t_wr4 into zoutput-wr.
CONCATENATE y_etc1 y_etc2 y_etc3 y_etc4 into zoutput-etc.
if sy-subrc = 0.
message e001.
endif.
endif.
ENDFORM.
--------------------------------------------------------------
METHOD HANDLE_BUTTON_CLICK.
READ TABLE GT_ZOUTPUT into wa INDEX ES_ROW_NO-ROW_ID.
CHECK SY-SUBRC IS INITIAL.
CALL SCREEN 300 STARTING AT 10 10.
CASE ES_col_id-FIELDNAME.
WHEN 'PA'.
wa-PA = '작업완료'.
MODIFY GT_ZOUTPUT from wa INDEX ES_ROW_NO-ROW_ID TRANSPORTING PA .
endcase.
endmethod.
댓글 4
-
버미!
2010.10.26 17:37
-
특정단어
2010.10.26 19:06
음.. 고생이 많으시네요.
딱 보니까 업력에 비해 과중한 업무가 주어져서 스트레스에 돌아버리기 직전인... 그런 상황이군요.
ABAP이 event-driven 형식이니까 event 순서를 기반으로 개략적인 순서도를 그릴 수 있겠죠.
유정a 님의 이 화면 스토리는 대강 알고 있고..
1. Start-of-selection: 그리드 데이터 쿼리.
- 쿼리에 사용되는 itab에 레코드의 상태를 대표할 수 있는 flag 필드를 지정하시던가.. 아니면 지금처럼 wr 및 etc 필드를 그대로 상태값으로 이용할 수도 있겠네요.
2. 그리드 화면 PBO: PBO는 Process Before Output 이죠. 말 그대로 화면에 뭔가를 보여주기 전에, 얘가 사전작업을 하는겁니다.
- 특정 레코드에 진료내역에 대한 텍스트가 담겨있다면 PBO 단계에서 체크해서 버튼 텍스트를 바꿔주어야합니다.
- 예를 들면, wr과 etc가 모두 비어있다면 진료내역이 저장되지 않은 상태로 봐서, 버튼 텍스트를 [소견서 작성]으로 하고, 뭔가 텍스트가 들어있다면 [저장완료]로 해주는 작업 등이죠.
3. PAI: 진료내역 popup의 저장버튼 처리.
- 프로그램이 전반적으로 어떤 저장방식을 이용하도록 할 것인 지 먼저 정의해야겠죠.
- ALV가 따로 [저장]버튼을 가지고 있도록 처리하고, 이 저장버튼을 누르면 모든(또는 특정한) 레코드가 "실제로" 저장되게 구현할 것인지, 아니면 ALV에서 일어나는 모든 사용자 입력행위(popup 에서 텍스트를 입력하고 저장하는 행위도 포함)가 그대로 DB에 반영되도록 할 것인 지...를 정해야 할 것입니다.
4. 다시 PBO: ALV에 표시될 itab에 뭔가 변화가 있었다면, PBO단계에서 버튼 텍스트는 알아서 변할겁니다.
* 참고로, 버미님 의견과 같이 진료내역은 long text를 이용하는 편이 좋아 보입니다. 여기에 필요한 정보를 좀 드리죠.
keyword: SE75, cl_gui_textedit, function READ_TEXT/SAVE_TEXT
http://forums.sdn.sap.com/thread.jspa?messageID=1689995
http://wiki.sdn.sap.com/wiki/display/profile/2007/09/18/Playing+With+Text+Editor
-
특정단어
2010.10.26 19:09
부연설명:
지금처럼 HANDLE_BUTTON_CLICK 에 버튼 텍스트를 바꾸는 작업을 할 게 아니라, PBO 단계에 버튼 텍스트를 적절히 변경하는 로직을 추가하시라는 의견입니다.
-
유정a
2010.10.27 02:35
롱텍스트부분은 계속 찾고 있었는데 감사합니다
이제 적용까지는 됬네요
어렵게 개발하시네요..
내용을 보니 둘 다 일반 텍스트를 입력하고 그것을 저장하려는 것 같네요...
Long Text를 이용하시는 것이 간단할 거 같구요..
모듈프로그램이나 레포트 프로그램이나 입력, 저장하는 부분은 동일하게 움직입니다. 다를 거 없구요..
그리고 버튼이 V , X, 저장 이렇게 3개가 있는 데 저장이 완료되면 "정상적으로 저장이 되었습니다'
이런 문구가 나오기를 원하시는 거 아닌가요?
아님 저장이라는 텍스트를 저장완료라는 텍스트로 변경을 하고 싶은 건가요?