ALV 조회, 변경 mode

1826 단어 abapALVALV

1. 라디오 버튼 생성

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: r_r RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND m1.
SELECTION-SCREEN POSITION 3.  "텍스트 시작위치
SELECTION-SCREEN COMMENT (8) TEXT-r01 FOR FIELD r_r. "텍스트 길이

PARAMETERS: r_u RADIOBUTTON GROUP g1.
SELECTION-SCREEN POSITION 15.
SELECTION-SCREEN COMMENT (11) TEXT-r02 FOR FIELD r_u.
SELECTION-SCREEN END OF LINE.

2. ALV 모드

ALV가 화면에 뿌려지기 전에 이 로직을 타야하므로 set_table_for_first_display 전에 perform문을 입력한다.

FORM edit .
  IF r_r = 'X'. "조회일때
    CALL METHOD g_alv->set_ready_for_input
      EXPORTING
        i_ready_for_input = 0.
  ELSE.
    CALL METHOD g_alv->set_ready_for_input
      EXPORTING
        i_ready_for_input = 1.
  ENDIF.
ENDFORM.

3. 필드 카탈로그 edit 속성 사용

필드 카탈로그를 구성하는 구문에서 편집할 필드에 edit 속성을 사용한다.

  gs_fieldcat-fieldname = 'MAKTX'.
  gs_fieldcat-coltext = '자재명'.
  gs_fieldcat-just = 'C'.
  gs_fieldcat-edit = 'X'.
  APPEND gs_fieldcat TO gt_fieldcat.  CLEAR: gs_fieldcat.

4. SAVE 버튼 비활성화

조회일 경우엔 변경할 데이터가 없으므로 저장 버튼이 필요가 없다. 변경일 경우에만 SAVE 버튼을 활성화해준다.

FORM edit .
  DATA: BEGIN OF ls_extab,
          fcode TYPE c LENGTH 10,
        END OF ls_extab,
        lt_extab LIKE TABLE OF ls_extab.

  IF r_r = 'X'. 
    ls_extab-fcode = 'SAVE'.    " 조회일때 SAVE 버튼 비활성화
    APPEND ls_extab TO lt_extab.
    SET PF-STATUS 'S100' EXCLUDING lt_extab.
  ENDIF.
ENDFORM.

좋은 웹페이지 즐겨찾기