Selection-screen 버튼 그리기

이 버튼은 GUI Status 버튼과 다르게 구현된다. 하지만 GUI Status 버튼보다 더 단순하다.

버튼 그리기

라디오 버튼처럼 selection-screen에서 그려준다.

TABLES: sscrfields.

SELECTION-SCREEN BEGIN OF BLOCK B4.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 80.
SELECTION-SCREEN PUSHBUTTON (8) BTN_TEXT USER-COMMAND BUT1 MODIF ID sc2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B4.

POSITION 버튼이 그려질 (가로) 위치를 잡아준다.
USER-COMMAND BUT1 버튼에 대한 로직을 구현할때 사용한다. WHEN 'BUT1'
라디오 버튼이 개별 입력 라디오 버튼이 선택됐을때만 보여지게 할 것이기 때문에 라디오 버튼과 동일한 MODIF ID를 부여한다.



INITIALIZATION

버튼 텍스트를 지정한다.

INITIALIZATION.
  btn_text = '저장'.


AT SELECTION-SCREEN

 AT SELECTION-SCREEN.
  PERFORM set_fkey.
FORM set_fkey.
DATA: ls_pdata TYPE zmp_tmat.

  CASE sscrfields-ucomm.
    WHEN 'BUT1'.
      MOVE s_maktx-low TO ls_pdata-maktx.
      MOVE s_mtart-low TO ls_pdata-mtart.
      MOVE s_matkl-low TO ls_pdata-matkl.
      MOVE s_brgew-low TO ls_pdata-brgew.
      MOVE s_gewei-low TO ls_pdata-gewei.
      MOVE s_netpr-low TO ls_pdata-netpr.
      MOVE s_netwr-low TO ls_pdata-netwr.
      MOVE s_waers-low TO ls_pdata-waers.

      CASE ls_pdata-mtart.
        WHEN 'FERT'.
          CALL FUNCTION 'NUMBER_GET_NEXT'
            EXPORTING
              nr_range_nr = '01'
              object      = 'ZMP_TMAT' "SNUM에서 생성한 넘버레인지
            IMPORTING
              number      = ls_pdata-matnr. "체번할 필드
        WHEN 'ROH'.
          CALL FUNCTION 'NUMBER_GET_NEXT'
            EXPORTING
              nr_range_nr = '02'
              object      = 'ZMP_TMAT' "SNUM에서 생성한 넘버레인지
            IMPORTING
              number      = ls_pdata-matnr.
      ENDCASE.

      IF ls_pdata-ernam  IS INITIAL.
        ls_pdata-erdat = sy-datum.
        ls_pdata-ernam = sy-uname.
        ls_pdata-erzet = sy-uzeit.
      ENDIF.

      INSERT zmp_tmat FROM ls_pdata.

      IF sy-subrc = 0.
        MESSAGE s016(pn) WITH '저장되었습니다'.
        COMMIT WORK.
      ELSE.
        MESSAGE s016(pn) WITH '저장 중 오류가 발생했습니다'
        DISPLAY LIKE 'E'.
        ROLLBACK WORK.
        EXIT.
      ENDIF.
  ENDCASE.
ENDFORM.

MOVE TO 구문을 사용해 사용자가 개별 입력한 데이터를 변수로 옮겨담는다. 자재번호와 생성일, 생성자, 생성시간은 넘버레인지와 SY변수를 사용해 자동으로 넣어준다. 이후 변수를 DB에 새로 삽입한다.

쉽게 말해 버튼을 클릭하면 사용자가 입력한 값이 DB에 새로 추가되는 기능이다.

APPEND와 INSERT의 차이
append는 리스트 마지막 위치에 원하는 값을 삽입하고 insert는 원하는 위치에 원하는 값을 삽입한다.

좋은 웹페이지 즐겨찾기