메뉴 건너뛰기

SAP 한국 커뮤니티

<b>[완료]</b>TABLE CONTROL 관련 질문입니다.

튀밥 2008.12.01 10:26 조회 수 : 1521 추천:2



-----------------------------------------------------------------------------------------------------------


 


지금 M TYPE 프로그램을 공부하고 있습니다.


 


TABLE CONTROL에 행추가, 행삭제, 변경된 내용 저장 이 제가 해야할 것들입니다.


 


자세히 말씀드리자면 아래와 같습니다.


 


첨부한 그림에 보이는 왼쪽의 'P'라는 필드에는 데이터의 상태에 따라 값을 다르게 나타내야 합니다.


 


1.DB에서 불러온 데이터:  ' ' --->공백


 


2.행추가로 등록된 행: 'I'


 


3.데이터 내용을 수정한 행: 'U'


 


4.DB에서 불러온 데이터를 삭제할 경우: 'D'


 


 


또한, 첨부한 그림 파일에 보이는 행추가 버튼(ADDR)과 행삭제 버튼(DELR)이 있습니다.


 


행추가 버튼을 누르게 되면 데이터를 불러온 제일 마지막 행에 행이 추가되어 입력받을 수 있도록 활성화가


 


되어야 합니다.


 


행삭제 버튼을 누르게 되면


 


1.행추가 버튼을 눌러 생성한 행의 경우 바로 삭제.


 


2.DB에서 불러온 데이터는 그림에서 보이는 왼쪽의 'P'라는 필드에 'D'를 나타내어야 됨.


  (저장시에는 삭제된 채로 저장이 되야함.)


 


위와 같은 두가지 경우로 나뉘어 져야 합니다.


 


저 나름대로 자료를 찾아보고 저번에 게시판에 질문을 올려 여러분들이 해주신 답변을 참고하여


 


어느정도 진행을 하였습니다.


 


질문을 말씀드리겠습니다.


 


제가 구현한 것을 바탕으로 3가지 문제점이 발생하였습니다.


 


첫번째, DB에서 읽어온 데이터 삭제시 최초 삭제된 값보다 상위에 위치한 값들은 버튼을 두번 눌러야 'D'가 표시됨.


 


두번째, 행추가로 행을 추가하면 행이 추가되는데 삭제시 행추가된 행의 상위에 위치한 행을 삭제하면


           아래에 있는 것들이 동시에 삭제됨.


 


세번째, ~IO1부분에서 MODIFY_DATA 모듈에 'U'를 집어 넣으면 행추가로 추가된 행을 삭제하려고 할때


           삭제되지 않고'D'로 표시되며, DB에서 불러온 데이터들은 삭제시 'D'로 바뀌지만,


           DB에서 불러온 다른라인의 데이터를 삭제시 전라인은 'U'로 바뀌고 최근 선택했던 라인만 'D'로 표시됨.


 


이 3가지 문제점에 대해서 여러분의 답변 부탁드립니다.


 


혹시나 질문이 이해되지 않으시는 분께서는 댓글로 말씀해주시면 다시 설명드리겠습니다.


 


아래는 소스 코드입니다.


 


 


-----------------------------------------------------------------------------------------------------------


 


PAO 부분


 


PROCESS BEFORE OUTPUT.


  MODULE STATUS_0100.


  MODULE SET_TC_LINES.


  LOOP AT IT_ZSADBLO INTO WA_ZSADBLO
                     WITH CONTROL TC_SADBLO.
  MODULE MARK_SEND.
  ENDLOOP.


 


 


PAI 부분


 


  MODULE EXIT AT EXIT-COMMAND.


  LOOP AT IT_ZSADBLO.
    CHAIN.
      FIELD : MARK,
              WA_ZSADBLO-NAME,
              WA_ZSADBLO-POINT,
              WA_ZSADBLO-AGE,
              WA_ZSADBLO-SAPART,
              WA_ZSADBLO-SEX,
              WA_ZSADBLO-PLACE.


      MODULE MODIFY_DATA ON CHAIN-REQUEST.


    ENDCHAIN.
  ENDLOOP.



  MODULE USER_COMMAND_0100.




 


 


INCLUDE 프로그램들


 


 


~TOP


 


CONTROLS TC_SADBLO TYPE TABLEVIEW
                   USING SCREEN '0100'.


TABLES: ZSADBLO.


DATA: BEGIN OF WA_ZSADBLO,
        POINT(1),
        MARK(1),
        SANUM LIKE ZSADBLO-SANUM,
        NAME LIKE ZSADBLO-NAME,
        AGE LIKE ZSADBLO-AGE,
        SAPART LIKE ZSADBLO-SAPART,
        SEX LIKE ZSADBLO-SEX,
        PLACE LIKE ZSADBLO-PLACE,
      END OF WA_ZSADBLO.


DATA: IT_ZSADBLO LIKE TABLE OF WA_ZSADBLO.



DATA: OK_CODE LIKE SY-UCOMM,
      SAVE_OK LIKE OK_CODE.



DATA: MARK.


DATA: WA_ZSADBLO1 LIKE WA_ZSADBLO.




 






 


 


 


~O01


 


*&---------------------------------------------------------------------*
*&  Include           MZTC_2O01                                        *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'TITLE'.



ENDMODULE.                 " STATUS_0100  OUTPUT



*&---------------------------------------------------------------------*
*&      Module  MARK_SEND  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MARK_SEND OUTPUT.


  MARK = WA_ZSADBLO-MARK.


ENDMODULE.                 " MARK_SEND  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  SET_TC_LINES  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE SET_TC_LINES OUTPUT.


  DESCRIBE TABLE IT_ZSADBLO LINES TC_SADBLO-LINES.


ENDMODULE.                 " SET_TC_LINES  OUTPUT



 


 


 


~I01


 


*&---------------------------------------------------------------------*
*&  Include           MZTC_2I01                                        *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT INPUT.


  CASE OK_CODE.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN 'CANCEL'.
      LEAVE TO SCREEN 0.
  ENDCASE.



ENDMODULE.                 " EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.


  CASE OK_CODE.


    WHEN 'PLAY'.
      CLEAR OK_CODE.
      SELECT *
        INTO CORRESPONDING FIELDS OF TABLE IT_ZSADBLO
        FROM ZSADBLO.


        CLEAR OK_CODE.


    WHEN 'SAVE'.



    WHEN 'ADDR'.
      CLEAR WA_ZSADBLO.
      WA_ZSADBLO-POINT = 'I'.
      INSERT WA_ZSADBLO INTO TABLE IT_ZSADBLO.


      CLEAR OK_CODE.


    WHEN 'DELR'.


      LOOP AT IT_ZSADBLO INTO WA_ZSADBLO WHERE MARK = 'X'.
        IF WA_ZSADBLO-POINT = ''.
          WA_ZSADBLO-POINT = 'D'.



        ELSEIF WA_ZSADBLO-POINT = 'U'.
          WA_ZSADBLO-POINT = 'D'.



        ELSEIF WA_ZSADBLO-POINT = 'I'.
          DELETE IT_ZSADBLO WHERE MARK = 'X'.



        ENDIF.
        MODIFY IT_ZSADBLO FROM WA_ZSADBLO INDEX SY-TABIX.


      ENDLOOP.


      IF SY-SUBRC <> 0.
        MESSAGE S018.
      ENDIF.


 


  ENDCASE.


ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  MODIFY_DATA  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MODIFY_DATA INPUT.


  LOOP AT IT_ZSADBLO INTO WA_ZSADBLO1.
    CLEAR WA_ZSADBLO1-MARK.
    MODIFY IT_ZSADBLO FROM WA_ZSADBLO1.
  ENDLOOP.


  WA_ZSADBLO-MARK = MARK.


  WA_ZSADBLO-POINT = 'U'.


  MODIFY IT_ZSADBLO FROM WA_ZSADBLO
                    INDEX TC_SADBLO-CURRENT_LINE.


ENDMODULE.                 " MODIFY_DATA  INPUT


 


 


 


 


------------------------------------------------------------------------------------------------------------

번호 제목 글쓴이 날짜 조회 수
2748 [요청]SAP 내에 파일이 어디에 저장되는 지 궁금해서 질문올립니다. [3] 아밥걸 2008.12.02 1497
2747 <b>[완료]</b>수정가능 속성이 일부분 있는 GRID REFRESH 방법이 궁금합니다. [2] 또길 2008.12.02 1588
2746 <b>[완료]</b>특정한 법인의 코드가 들어갔을때 그 법인에 필요하지 않는 REASON코드는 보이지 않도록 하는방법좀 없을까요?? 쭈니 2008.12.02 1291
2745 <b>[완료]</b>테이블 컨트롤 특정필드 활성화에 관한 질문입니다. [7] file 튀밥 2008.12.02 2926
2744 [요청]파일명 더블클릭하면 파일 바로 뜰 수있게 하는방법 있을까요?? [2] 아밥걸 2008.12.01 1185
2743 [요청]다급합니다 도와주십시요 클래스 이벤트관련 문의사항입니다. [1] 기본도없는초보 2008.12.01 1229
2742 [요청]Class 사용하여 ALV Grid 띄워줄때 질문입니다. [6] im 해성 2008.12.01 1431
2741 <b>[완료]</b>PARAMETERS로 선언된 변수값이 특정이벤트에선 보이지 않습니다. [4] abap 2008.12.01 1497
» <b>[완료]</b>TABLE CONTROL 관련 질문입니다. [2] file 튀밥 2008.12.01 1521
2739 [요청]alv트리에서 노트 클릭시 옵티마이저 이벤트 관련해서 문의드립니다. 기본도없는초보 2008.12.01 1826
2738 [요청]넷위버 7.0 트라이버젼 라이센스 등록에 관해(급질문) [1] file 앙리 2008.12.01 1291
2737 <b>[완료]</b>Easy abap 교책 242 Macro 질문입니다. [4] abap 2008.11.30 1495
2736 <b>[완료]</b>ALV 조회 후 Export / Local File 클릭 시 에러 [2] file 다크호스 2008.11.29 3969
2735 <b>[완료]</b>정말 간단한 질문이 있습니다. (program package 생성) [2] 레지 2008.11.29 1097
2734 <b>[완료]</b>두개의 레코드를 하나의 레코드로 머지하려면 어떤 방법이 있는지요? [2] 기쁨 2008.11.28 1412
2733 [요청]한스크린에 그리드가 여러개 일때 더블클릭 이벤트 처리 문의 [1] file Norton 2008.11.28 1357
2732 <b>[완료]</b>단위에 관한 질문하나만 할께요~ [3] Gerrard 2008.11.28 974
2731 [요청]혹시 이러한 문제를 보았으요? F4 help에 관한 문제 입니다. [6] file im 해성 2008.11.28 1035
2730 [요청]클래스 컨스트럭터매개변수에대해서 궁금합니다 [2] 기본도없는초보 2008.11.28 1385
2729 질문이 있습니다. [4] 해우소 2008.11.28 1128