Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Abapteur Note

ALV EDIT 모드 전환 본문

SAP/ABAP

ALV EDIT 모드 전환

아밥추어 2024. 3. 10. 23:23

ALV EDIT 모드에 관한 포스팅이다.

ALV는 보통 DISPLAY와 EDIT 모드를 정한다. 

 

말 그대로 DISPLAY 모드는 조회용 화면이고, EDIT 모드는 수정용 화면이다.

 

조회 모드
수정모드


1. 필드 카탈로그의 EDIT 필드에 체크해준다.

FORM SET_ALV_FIELDCAT_0100 .



  REFRESH GT_FIELDCAT.
  CLEAR GS_FIELDCAT.

  GS_FIELDCAT-FIELDNAME = 'NAME'.
  GS_FIELDCAT-COLTEXT   = '이름'.
  GS_FIELDCAT-OUTPUTLEN = '15'.
  GS_FIELDCAT-JUST      = 'C'.
  GS_FIELDCAT-KEY = ABAP_ON.
  GS_FIELDCAT-EDIT = ABAP_ON.
  APPEND GS_FIELDCAT TO GT_FIELDCAT.


  CLEAR GS_FIELDCAT.

  GS_FIELDCAT-FIELDNAME = 'AGE'.
  GS_FIELDCAT-COLTEXT   = '나이'.
  GS_FIELDCAT-OUTPUTLEN = '3'.
  GS_FIELDCAT-JUST      = 'C'.
  GS_FIELDCAT-EDIT      = ABAP_ON.

  APPEND GS_FIELDCAT TO GT_FIELDCAT.

  CLEAR GS_FIELDCAT.

  GS_FIELDCAT-FIELDNAME = 'MAJOR'.
  GS_FIELDCAT-COLTEXT   = '전공'.
  GS_FIELDCAT-OUTPUTLEN = '15'.
  GS_FIELDCAT-JUST      = 'C'.
  GS_FIELDCAT-EDIT      = ABAP_ON.

  APPEND GS_FIELDCAT TO GT_FIELDCAT.

  CLEAR GS_FIELDCAT.

  GS_FIELDCAT-FIELDNAME = 'ADRESS'.
  GS_FIELDCAT-COLTEXT   = '주소'.
  GS_FIELDCAT-OUTPUTLEN = '30'.
  GS_FIELDCAT-JUST      = 'C'.
  GS_FIELDCAT-EDIT      = ABAP_ON.

  APPEND GS_FIELDCAT TO GT_FIELDCAT.

  CLEAR GS_FIELDCAT.

  GS_FIELDCAT-FIELDNAME = 'SKILL'.
  GS_FIELDCAT-COLTEXT   = '스킬'.
  GS_FIELDCAT-OUTPUTLEN = '20'.
  GS_FIELDCAT-JUST      = 'C'.
  GS_FIELDCAT-EDIT      = ABAP_ON.

  APPEND GS_FIELDCAT TO GT_FIELDCAT.

ENDFORM.

 

2. SET_TABLE_FOR_FIRST_DISPLAY 메소드 이전에 미리 SET_READY_FOR_INPUT 활용

SET_READY_FOR_INPUT를 통해 수정모드를 열고 닫을 수 있다.

 

0 : INPUT 불가

1 : INPUT 가능

 

* SET_READY_FOR_INPUT을 미리 지정하지 않으면 필드 카탈로그의 EDIT 설정에 이해 수정 모드로 화면이 띄워진다.

FORM DISPLAY_ALV_0100 .

  CALL METHOD GO_ALV_GRID->SET_READY_FOR_INPUT
    EXPORTING
      I_READY_FOR_INPUT = 0.                " Ready for Input Status



  CALL METHOD GO_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      IS_VARIANT      = GS_VARIANT             " Layout
      I_SAVE          = GV_SAVE                " Save Layout
      I_DEFAULT       = 'X'                    " Default Display Variant
      IS_LAYOUT       = GS_LAYOUT              " Layout
    CHANGING
      IT_OUTTAB       = GT_INFO                " Output Table
      IT_FIELDCATALOG = GT_FIELDCAT            " Field Catalog
    EXCEPTIONS
      OTHERS          = 1.
  IF SY-SUBRC <> 0.
    MESSAGE 'ALV GRID 메소드 호출 실패' TYPE 'W'.
  ENDIF.



  CALL METHOD GO_ALV_GRID->SET_TOOLBAR_INTERACTIVE.



ENDFORM.

 

3. USER COMMAND PAI에 체크값 지정

체크값을 통해 화면을 전환한다.

이를 통해 조회모드에서 열 추가를 못하게 한다거나, 조회 화면을 수정 화면으로 전환시킨다.

 WHEN 'EDIT_MODE'.

   IF GV_CHECK = ''.
      GV_CHECK = 1.
   ELSE.
      CLEAR GV_CHECK.
   ENDIF.

   PERFORM EDIT_MODE.

 

4. 체크값을 통해 SET_READY_FOR_INPUT 다시 지정  

FORM EDIT_MODE.

  IF GV_CHECK = ''.
    CALL METHOD GO_ALV_GRID->SET_READY_FOR_INPUT
      EXPORTING
        I_READY_FOR_INPUT = 0.                " Ready for Input Status

  ELSE.
    CALL METHOD GO_ALV_GRID->SET_READY_FOR_INPUT
      EXPORTING
        I_READY_FOR_INPUT = 1.                " Ready for Input Status
  ENDIF.


ENDFORM.

 

3번에 의하여  EDIT 버튼을 누름으로써 GV_CHECK에 값이 1로 들어온다.

GV_CHECK 1인 경우에는 수정 모드이니 SET_READY_FOR_INPUT을 이용하여 수정 모드가 가능하게 변경해준다.


 

EDIT 모드로 전환은 간단한 편이다.

다만, 이후에 포스팅할 저장에서 살짝 복잡해진다.

 

이 포스트의 EDIT 모드인 경우 데이터를 수정해도 인터널 테이블에는 곧바로 반영되지 않는다.

 

이를 해결하려면 ENTER을 누르거나 혹은 데이터가 수정되면 인터널 테이블에 반영되도록 해야하는데 이는 다음에 포스팅할 SAVE에서 다루겠다.

'SAP > ABAP' 카테고리의 다른 글

리스트 박스  (0) 2024.06.07
셀렉트 스크린 제어(SCREEN)  (0) 2024.06.07
컬럼 트리(Column 트리)  (0) 2024.02.01
심플 트리 (SIMPLE TREE)  (2) 2024.01.25
BDC  (0) 2023.12.31