메뉴 건너뛰기

SAP 한국 커뮤니티



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


 


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


 


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


 


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


 


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


 


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


 


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


 


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


 


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


 


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


 


 


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


 


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


 


되어야 합니다.


 


행삭제 버튼을 누르게 되면


 


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


 


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


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


 


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


 


저 나름대로 자료를 찾아보면서 진행하고 있는데 어려움이 따르네요..ㅜㅜ


 


여러분들의 답변 부탁드리겠습니다.


 


 


아래는 소스코드입니다.


 


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


 


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 부분


 


PROCESS AFTER INPUT.


  MODULE EXIT AT EXIT-COMMAND.


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


      MODULE MODIFY_DATA ON CHAIN-REQUEST.


    ENDCHAIN.
  ENDLOOP.



 


 


INCLUDE 프로그램들


 


 


~TOP


 


PROGRAM  SAPMZTC_2                                                   .


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.


  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.
  MODIFY IT_ZSADBLO FROM WA_ZSADBLO
                    INDEX TC_SADBLO-CURRENT_LINE.


ENDMODULE.                 " MODIFY_DATA  INPUT


 


 


 


 


 


 


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