다음은 화면 Data를 저장하는 Source code의 일부입니다.
FORM save_data .
DATA : lt_ztmmi012 LIKE ztmmi012 OCCURS 0 WITH HEADER LINE,
lv_uzeit LIKE sy-uzeit,
lt_rows TYPE lvc_t_row,
ls_rows TYPE lvc_s_row.
GET RUN TIME FIELD lv_uzeit.
LOOP AT gt_row INTO ls_rows.
READ TABLE gt_itab INDEX ls_rows-index.
IF gt_itab-verpr IS INITIAL.
MOVE-CORRESPONDING gt_itab TO lt_ztmmi012.
lt_ztmmi012-sobkz = 'K'.
lt_ztmmi012-erdat = sy-datum.
lt_ztmmi012-erzet = lv_uzeit.
lt_ztmmi012-ernam = sy-uname.
APPEND lt_ztmmi012. CLEAR lt_ztmmi012.
ENDIF.
ENDLOOP.
MODIFY ztmmi012 FROM TABLE lt_ztmmi012.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
MESSAGE s003.
gv_screenmode = 0.
ELSE.
ROLLBACK WORK.
MESSAGE e023.
gv_screenmode = 1.
ENDIF.
ENDFORM. " SAVE_DATA
위 Source Code 중에 마지막 부분 "MODIFY ztmmi012 FROM TABLE lt_ztmmi012." 부분을
Debugging 걸어보면 Data가 lt_ztmmi012에 있고 Modify 실행 후의 sy-subrc 값을 보면
제대로 결과가 나타나는데(sy-subrc = 0) 실제로 실행 후 ztmmi012 table을 SE16에서 보면
table 내에 data가 저장되지 않는 것은 무슨이유일까요? 답변 부탁 드립니다.
댓글 5
-
버미!
2011.01.12 06:56
lt_ztmmi012 키 값을 확인해 보세요.. -
시쿠릿가더
2011.01.12 18:23
인터널 테이블의 바디 부분을 modify 해주는 것이니
MODIFY ztmmi012 FROM TABLE lt_ztmmi012[].
이렇게 해주면 될겁니다.
-
gogo
2011.01.12 18:51
MOVE-CORRESPONDING gt_itab TO lt_ztmmi012. => 이부분에서 gt_itab가 ztmmi012의 키필드 값을 빠짐없이 담고 있는지 보셔야 될거 같네요.
참고로 시쿠릿가더님 MODIFY ztmmi012 FROM TABLE lt_ztmmi012[]. => 여기서는 TABLE 구문이 []을 대신 하기때문에 굳이 []할 필요없습니다.
-
JG
2011.01.12 19:38
MODIFY 후 SUBRC가 0이 나왔다면... (변경 OR 신규 생성이 된 상태)
WELLORG님이 데이터 조회를 잘 못 하신게 아닌가 싶습니다.
LT_ZTMMI012에 담긴 데이터 값과 테이블 조회시 사용하신 값이 같은지 확인 해보시면 어떨까 싶습니다.
-
wellorg
2011.01.13 02:09
Excel Upload하여 화면에 보여준 후 선택된 Item에 대해 위 Source Code를 통해 Table에 저장하는 프로그램으로, 분석결과 Excel Data Upload 직후 MATNR, LIFNR과 같은 Key Field들에 대해 Input Conversion을 해야 했는데, 이런 변환을 안 했기때문에 발생한 오류였습니다. 여러가지 도움의 말씀을 주신 분들에 대해 감사드립니다.