μ΄ κΈμ γClean ABAP – A Style Guide for Developersγ μμ (written by Klaus Haeuptle, Florian Hoffmann, Rodrigo Jordão, Michel Martin, Anagha Ravinarayan, Kai Westerholz) μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. ν΄λΉ λ΄μ©μ μ’ λ μ½κ³ μ΄ν΄ν μ μλλ‘ μμ½/μ 리 λ° κ°μΈμ μΈ μ견μ λΆμ¬ μ¬κ΅¬μ±ν ν¬μ€ν μ λλ€.

λͺ¨λ νλ‘κ·Έλλ° μΈμ΄μμλ λ³μλ μ€κ° κ²°κ³Όλ₯Ό μ μ₯νκ³ μ¬μ¬μ©νκΈ° μν ν΅μ¬ μμμ΄λ€. μ΄ κΈμμλ ABAPμμ λ³μ μ μΈμ μ΄λ»κ² κΉλνκ² ν μ μλμ§ μμ보λλ‘ νμ.
β λ³μ μ μΈμ μ½λ μλ¨μ΄ μλ μ¬μ©νλ μμΉμ μ μΈνμ.
ABAPμμλ μ ν΅μ μΌλ‘ μ½λμ 맨 μμ νμν λ³μλ₯Ό 미리 μ μΈνμλ€. μ΄ λ°©λ²μ λͺ¨λ λ³μλ₯Ό νλμ λ³Ό μ μλ€λ μ₯μ κ³Ό μ½λκ° μ λλ λλμ μμ§λ§, μ½λκ° κΈΈμ΄μ§λ©΄ μ΄ λ³μκ° μ΄λμ μ΄λ»κ² μ°μ΄λμ§ κΈ°μ΅νκΈ° μ΄λ €μμ§λ€λ λ¨μ μ΄ μλ€. μ₯κΈ°κ° μ μ§λ³΄μλ νλ‘κ·Έλ¨μ 보κ²λλ©΄ μ¬μ©νμ§ μμ λ³μλ€μ΄ κ·Έλλ‘ λ¨μμλ κ²½μ°λ μ’ μ’ λ³΄κ² λλ€.
β μΈλΌμΈ μ μΈμ νμ©νμ.
ABAP 7.40λΆν°λ μΈλΌμΈ λ³μ μ μΈμ΄ λμ λμλ€. μΈλΌμΈ μ μΈμ λ³μλ₯Ό μ¬μ©νλ κ·Έ μ리μμ λ°λ‘ μ μΈνλ λ°©μμ΄λ€.
μΈλΌμΈ μ μΈμ νλ©΄ λ€μκ³Ό κ°μ μ₯μ μ΄ μλ€.
- μ½λ κ°λ μ± μ¦κ°: μ½λμ νλ¦μ μ½κΈ° μ½κ² λ§λ λ€.
- 볡μ‘μ± κ°μ: λ³μ νμ μ μΌμΌμ΄ μμ§ μμλ λλ€.
- λΆνμν μ μΈ μ κ±°: μ°μ§ μλ λ³μλ₯Ό 미리 μ μΈν νμκ° μλ€.
DATA lv_total TYPE i.
lv_total = 100. "μ ν΅ λ°©μ
DATA(lv_total) = 100. "μΈλΌμΈ μ μΈ λ°©μ
λ λ°©μ λͺ¨λ κ°μ κ²°κ³Όλ₯Ό λ΄μ§λ§, μΈλΌμΈ λ°©μμ μ½κΈ° μ½κ³ μ μ§λ³΄μκ° νΈλ¦¬νλ€.
β IF λ¬Έ κ°μ λΆκΈ° λ‘μ§ μ€κ°μ μΈλΌμΈμ μ μΈνμ§ λ§μ.
쑰건문 μμμ λ³μλ₯Ό μ μΈνλ©΄ κ°λ μ±μ΄ λ¨μ΄μ§κ³ , λλ²κΉ μ νΌλμ μ€ μ μλ€.
β Bad Case
IF condition = abap_true.
DATA(result) = 'YES'.
ELSE.
result = 'NO'. "
ENDIF.
β Good Case
DATA(result) TYPE string.
IF condition = abap_true.
result = 'YES'.
ELSE.
result = 'NO'.
ENDIF.
β μ μΈλ¬Έμ 무쑰건 λ¬Άμ§( " : " Chaining ) λ§μ.
β Bad Case
DATA: lv_user_name TYPE string,
lv_user_age TYPE i,
lv_sales_order TYPE vbeln,
lv_sum_total TYPE i.
β Good Case
DATA: lv_user_name TYPE string,
lv_user_age TYPE i.
DATA lv_sales_order TYPE vbeln.
DATA lv_sum_total TYPE i.
λ³΄ν΅ μ μΈλ¬Έμ λ¬Άλ Chaining λ°©μμ μ μλ λ³μλ€μ΄ λ Όλ¦¬μ μΌλ‘ κ΄λ ¨μ΄ μμμ μ¬μ©λλ κ²μΌλ‘, 무쑰건 μ μΈμ λ¬Άμμ κ²½μ° λ³μλ€μ΄ κ΄λ ¨λμ΄ μλ€κ³ μλͺ» μ΄ν΄ ν μ μκΈ° λλ¬Έμ, μ¬λ§νλ©΄ κ°λ³μ μΌλ‘ μ μΈνλ κ²μ΄ μ’λ€.
β LOOP μμμμ λ³μ μ μΈ ASSIGNING FIELD-SYMBOLμ μ¬μ©νμ.
λ€μμ μ ν΅μ μΈ ABAP 루ν λ°©μμ΄λ€. LOOP INTOλ ν μ΄λΈμμ ν μ€μ© μ½μ΄μ€κ³ , μ½μ κ°μ 볡μ¬ν΄μ λ³μμ λ΄κ²λλ€. μ¬μ€ νμ μλ λ°μ΄ν° 볡μ¬κ° μΌμ΄λκΈ° λλ¬Έμ μ±λ₯ μΈ‘λ©΄μμ λΉν¨μ¨μ μ΄λ€. λν μΈν°λ ν μ΄λΈμ λ°μ΄ν° μκ° λ§κ³ μ»¬λΌ μλ λ§μ κ²½μ° LOOPμ μ±λ₯μ νκ° μκΈΈ μλ μλ€.
DATA lt_mara TYPE TABLE OF mara.
DATA ls_mara TYPE mara.
DATA lv_matnr TYPE mara-matnr.
LOOP AT lt_mara INTO ls_mara.
"IF 쑰건μ
lv_matnr = ls_mara-matnr.
ENDLOOP.
μ΄λ²μ ν΄λ¦°μ½λ λ°©μμΈ ASSIGNING FIELD-SYMBOL(<fs>)μ μ¬μ©νλ κ²μΌλ‘, λ³΅μ¬ λμ ν μ΄λΈμ ν μ€μ μ§μ μ°Έμ‘°νλ€.
LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(<fs_mara>).
"IF 쑰건μ
lv_matnr = <fs_mara>-matnr.
ENDLOOP.
- μ±λ₯ ν₯μ: λ³΅μ¬ μμ΄ μ§μ μ°Έμ‘°νλ―λ‘ λΉ λ₯΄λ€.
- λ°μ΄ν° λ³κ²½ μ©μ΄: λ³λμ MODIFYꡬ문 μμ΄ λ³κ²½ κ°μ΄ λ°λ‘ λ°μλλ€.
- κ°λ μ± κ°μ : λ³μ μ μΈκ³Ό λμμ μ¬μ©νμ¬ νλ¦μ΄ μμ°μ€λ½λ€.
- μ μ§λ³΄μ μ©μ΄: νμν κ³³μμλ§ λ³μ μ μΈ, λΆνμν μ μ μ μΈ κ°μνλ€.