Ⅰ. ERP/9. TIP

[SAP ABAP] 고수 같아 보이는 비법 (TIP)

초록활명수 2022. 11. 4. 11:27
728x90

1. TOP에 알파벳, 숫자, 주로 사용하는 변수에 대하여 상수변수화 한다.
*************************************************
* CONSTANTS
*************************************************


CONSTANTS c_bukrs LIKE bkpf-bukrs       VALUE '2100'"회사코드
            c_waers LIKE bkpf-waers       VALUE 'KRW',  "CURRENCY KEY
            c_land1 LIKE t001-land1       VALUE 'KR',   "COUNTRY KEY
            c_ktopl LIKE skat-ktopl       VALUE '1000'"CHART OF ACCOUNTS
            c_kokrs LIKE cskt-kokrs       VALUE '1000'"관리회계영역
            c_kalsm LIKE t007s-kalsm      VALUE 'TAX??',"PROCEDURE
            c_kurst LIKE tcurr-kurst      VALUE 'M'.    "EXCHANGE RATE TYPE


CONSTANTS c_0(1)                        VALUE '0',
            c_1(1)                        VALUE '1',
            c_2(1)                        VALUE '2',
            c_3(1)                        VALUE '3',
            c_4(1)                        VALUE '4',
            c_5(1)                        VALUE '5',
            c_6(1)                        VALUE '6',
            c_7(1)                        VALUE '7',
            c_8(1)                        VALUE '8',
            c_9(1)                        VALUE '9',
            c_10(2)                       VALUE '10',
            c_20(2)                       VALUE '20',
            c_30(2)                       VALUE '30',
            c_40(2)                       VALUE '40',
            c_50(2)                       VALUE '50',
            c_60(2)                       VALUE '60',
            c_70(2)                       VALUE '70',
            c_80(2)                       VALUE '80',
            c_90(2)                       VALUE '90',
            c_100(3)                      VALUE '100',
            c_00(2)                       VALUE '00',
            c_000(3)                      VALUE '000',
            c_a(1)                        VALUE 'A',
            c_b(1)                        VALUE 'B',
            c_c(1)                        VALUE 'C',
            c_d(1)                        VALUE 'D',
            c_e(1)                        VALUE 'E',
            c_f(1)                        VALUE 'F',
            c_g(1)                        VALUE 'G',
            c_h(1)                        VALUE 'H',
            c_i(1)                        VALUE 'I',
            c_j(1)                        VALUE 'J',
            c_k(1)                        VALUE 'K',
            c_l(1)                        VALUE 'L',
            c_m(1)                        VALUE 'M',
            c_n(1)                        VALUE 'N',
            c_o(1)                        VALUE 'O',
            c_p(1)                        VALUE 'P',
            c_q(1)                        VALUE 'Q',
            c_r(1)                        VALUE 'R',
            c_s(1)                        VALUE 'S',
            c_t(1)                        VALUE 'T',
            c_u(1)                        VALUE 'U',
            c_v(1)                        VALUE 'V',
            c_w(1)                        VALUE 'W',
            c_x(1)                        VALUE 'X',
            c_y(1)                        VALUE 'Y',
            c_z(1)                        VALUE 'Z',
          
            c_jpy(3)                      VALUE 'JPY',
            c_usd(3)                      VALUE 'USD',
            c_krw(3)                      VALUE 'KRW',
            
            c_send        TYPE ui_func    VALUE 'SEND',
            c_block       TYPE ui_func    VALUE 'BLOC',
            c_change      TYPE ui_func    VALUE 'CHANGE',
            c_display     TYPE ui_func    VALUE 'DISPLAY',
            c_icon        TYPE iconname   VALUE '@0Z@',
            c_info        TYPE iconquick  VALUE 'CHANGE DATA',
            c_add         TYPE ui_func    VALUE 'ADD',
            c_icon_add    TYPE iconname   VALUE '@17@',
            c_info_add    TYPE iconquick  VALUE 'ADD DATA',
            c_del         TYPE ui_func    VALUE 'DELETE',
            c_icon_del    TYPE iconname   VALUE '@18@',
            c_info_del    TYPE iconquick  VALUE 'DELETE DATA',
            c_koart_d     TYPE koart      VALUE 'D'"고객
            c_koart_k     TYPE koart      VALUE 'K'"거래처

            c_ztrkey(2)                   VALUE '30',
            c_land_kr     TYPE land1      VALUE 'KR',
            c_suc(1)                      VALUE 'S',
            c_err(1)                      VALUE 'E',


           C_ICON_GREEN(4)      VALUE '@08@',
            C_ICON_YELLOW(4)     VALUE '@09@',
            C_ICON_RED(4)        VALUE '@0A@',
            C_ICON_LED_GREEN(4)  VALUE '@5B@',
            C_ICON_LED_RED(4)    VALUE '@5C@',
            C_ICON_LED_YELLOW(4VALUE '@5D@'.


DATA gv_execute_mode    TYPE ui_func.
CONSTANTS gc_create     TYPE ui_func VALUE 'CREATE'.
CONSTANTS gc_change     TYPE ui_func VALUE 'CHANGE'.
CONSTANTS gc_display    TYPE ui_func VALUE 'DISPLAY'.
CONSTANTS gc_delete     TYPE ui_func VALUE 'DELETE'.
CONSTANTS gc_modify     TYPE ui_func VALUE 'MODIFY'.
CONSTANTS gc_insert     TYPE ui_func VALUE 'INSERT'.
CONSTANTS gc_append     TYPE ui_func VALUE 'APPEND'.
CONSTANTS gc_upload     TYPE ui_func VALUE 'UPLOAD'.
CONSTANTS gc_download   TYPE ui_func VALUE 'DOWNLOAD'.

 

 


*=======================================================================
* Field-Symbol
*=======================================================================
FIELD-SYMBOLS <FS_FIELD>,
                <FS_FIELD1>,
                <FS_FIELD2>,
                <FS_FIELD3>,
                <FS_FIELDX>.

*=======================================================================
* Macro
*=======================================================================
DEFINE __SET_ER_TIMESTAMP.
  &1-ERDAT    SY-DATUM.
  &1-ERZET    SY-UZEIT.
  &1-ERNAM    SY-UNAME.
END-OF-DEFINITION.

DEFINE __SET_AE_TIMESTAMP.
  &1-AEDAT    SY-DATUM.
  &1-AEZET    SY-UZEIT.
  &1-AENAM    SY-UNAME.
END-OF-DEFINITION.

DEFINE __CONV_EXIT_INPUT.
  GV_FNAME |{ 'CONVERSION_EXIT_' }{ &1 }{ '_INPUT' }|.
  CALL FUNCTION GV_FNAME
    EXPORTING
      INPUT  &2
    IMPORTING
      OUTPUT &3
    EXCEPTIONS
      OTHERS 1.
END-OF-DEFINITION.

DEFINE __CONV_EXIT_OUTPUT.
  GV_FNAME |{ 'CONVERSION_EXIT_' }{ &1 }{ '_OUTPUT' }|.
  CALL FUNCTION GV_FNAME
    EXPORTING
      INPUT  &2
    IMPORTING
      OUTPUT &3
    EXCEPTIONS
      OTHERS 1.
END-OF-DEFINITION.

DEFINE __APPEND_RANGES.
  CLEAR &1.
  &1-SIGN   &2.
  &1-OPTION &3.
  &1-LOW    &4.
  &1-HIGH   &5.
  APPEND &1.
END-OF-DEFINITION.

DEFINE __SET_ER_TIMESTAMP.
  &1-ERDAT    SY-DATUM.
  &1-ERZET    SY-UZEIT.
  &1-ERNAM    SY-UNAME.
END-OF-DEFINITION.

DEFINE __SET_AE_TIMESTAMP.
  &1-AEDAT    SY-DATUM.
  &1-AEZET    SY-UZEIT.
  &1-AENAM    SY-UNAME.
END-OF-DEFINITION.

DEFINE __CONVERT_INTERNAL_WGT.

  CLEAR &2.

  CALL FUNCTION 'CATS_NUMERIC_INPUT_CHECK'
    EXPORTING
      INPUT            &1
    IMPORTING
      OUTPUT           &2
    EXCEPTIONS
      NO_NUMERIC       1
      OTHERS           2.

  IF SY-SUBRC <> 0.
    &2 &1.
  ENDIF.

  CONDENSE &2 NO-GAPS.

END-OF-DEFINITION.

DEFINE __MODIFY_CELL.
  CALL METHOD &1->MODIFY_CELL
             EXPORTING
               I_ROW_ID    &2
               I_FIELDNAME &3
               I_VALUE     &4.
END-OF-DEFINITION.

DEFINE __POPUP_CONFIRM_MSG.

  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      titlebar              &1
      text_question         &2
*     text_button_1         = lv_text_button_1
*     text_button_2         = lv_text_button_2
      default_button        '1'
      display_cancel_button 'X'
    IMPORTING
      answer                &3.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

END-OF-DEFINITION.

 

2. X 대신 ABAP_TRUE 사용

 

3. 조건에 따라 필드 바꿔야 할 경우, 조건 문 대신 structure에 값 넣고 modify --- where 조건----

 gs_bseg-icon = icon_message_warning_small.
MODIFY gt_bseg FROM gs_bseg TRANSPORTING icon
                              WHERE bukrs = <ls_bseg>-bukrs
                                AND belnr = <ls_bseg>-belnr
                                AND gjahr = <ls_bseg>-gjahr
                                AND hkont = <ls_bseg>-hkont
                                AND kunnr = <ls_bseg>-kunnr
                                AND lifnr = <ls_bseg>-lifnr
                                AND augdt IS INITIAL
                                AND ( ( stored = space AND bdiff <> 0 )
                                    OR ( stored = abap_true AND bdiff2 <> 0 ) ).
  gs_bseg-icon = icon_yellow_light.
  MODIFY gt_bseg FROM gs_bseg TRANSPORTING icon
                              WHERE bukrs = <ls_bseg>-bukrs
                                AND belnr = <ls_bseg>-belnr
                                AND gjahr = <ls_bseg>-gjahr
                                AND icon <> icon_message_warning_small
                                AND icon <> icon_red_light
                                AND augdt IS INITIAL
                                AND ( ( stored = space AND bdiff <> 0 )
                                    OR ( stored = abap_true AND bdiff2 <> 0 ) ).
  <ls_bseg>-icon = icon_red_light.

 

728x90