Ⅰ. ERP/9. TIP

[ABAP_TIP] 데이터 저장할때 조금 더 안정적이고 효율적인 코드

초록활명수 2024. 1. 26. 09:55
728x90

나는 사실 아래처럼 코딩해왔었음.. 다 때려넣어..


    WHEN 'SAVE'.
      PERFORM save_data.

 

근데 많은 프로그램이 이렇게 하길래 나도 바꿔보려고 정리함.
"저장 전에 데이터 체크 (있는지~ 저장해도 되는지~ 저장하면 안될 경우 GV_EXIT에 X처리)

       PERFORM PRE_CHECK_SAVE_DATA.
        CHECK GV_EXIT IS INITIAL.

        PERFORM POPUP_TO_CONFIRM USING TEXT-PT1
                                       TEXT-QT1.
        CHECK GV_ANSWER EQ '1'.

*   저장하는 perform
        PERFORM SAVE_DATA_REQ.

 

 

FORM popup_to_confirm USING pv_title
                            pv_quest.

  "-- call popup
  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      titlebar       = pv_title                "TEXT-PT1
*     DIAGNOSE_OBJECT             = ' '
      text_question  = pv_quest                "TEXT-QT1
*     TEXT_BUTTON_1  = 'Ja'(001)
*     ICON_BUTTON_1  = ' '
*     TEXT_BUTTON_2  = 'Nein'(002)
*     ICON_BUTTON_2  = ' '
*     DEFAULT_BUTTON = '1'
*     DISPLAY_CANCEL_BUTTON       = 'X'
*     USERDEFINED_F1_HELP         = ' '
*     START_COLUMN   = 25
*     START_ROW      = 6
*     POPUP_TYPE     =
*     IV_QUICKINFO_BUTTON_1       = ' '
*     IV_QUICKINFO_BUTTON_2       = ' '
    IMPORTING
      answer         = gv_answer
*   TABLES
*     PARAMETER      =
    EXCEPTIONS
      text_not_found = 1
      OTHERS         = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " POPUP_TO_CONFIRM

 

저장하는 소스는 Try 문에 넣기 약속

TRY .

      "__ 입력 데이터
      INSERT zsdt123  FROM TABLE lt_123.

      MESSAGE s000 WITH TEXT-s01.

    CATCH cx_sy_open_sql_error INTO DATA(lr_error).
      ROLLBACK WORK.
      MESSAGE s000 WITH lr_error->get_text( ) DISPLAY LIKE 'E'.
      gv_exit = abap_true. EXIT.
  ENDTRY.
728x90