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

νλ‘κ·Έλλ° μΈμ΄μμ Boolean κ°μ κ°μ₯ κΈ°λ³Έμ μΈ λ°μ΄ν° νμ μ€ νλμ΄λ€. λ¨μν μ°Έ(True) λλ κ±°μ§(False)μ νννλ μ΄ κ°μ μ½λμ νλ¦μ μ μ΄νλ 쑰건문μμ ν΅μ¬ μν μ νλ€. ABAPμμ Boolean κ°μ μ΄λ»κ² μ¬μ©ν μ μλμ§, κ·Έλ¦¬κ³ μ΄λ€ μ μ μ£Όμν΄μΌ νλμ§ μμμ ν¨κ» μμ보μ.
1. ABAP μμ μ¬μ©λλ boolean νμ
- ABAP_BOOL : " ABAP " TYPE GROUPμ μ μλ νμ
- ABAP_BOOLEAN : ABAP DICTIONARY μ Elementλ‘ μ μλ νμ
2κ°μ§ νμ λͺ¨λ CHAR1μ΄λ©°, κΈ°λ³Έμ μΌλ‘ 'X' λλ ' '(곡백)μ ν΅ν΄ μ°Έ/κ±°μ§μ νννλ€. νμ¬λ ABAP_BOOLEANμ λ§μ΄ μ¬μ©νκ³ μλ μΆμΈμ΄λ€.
2. BOOELAN μ μ¬μ©λλ μμ
"ABAP" TYPE GROUPμ 보면 BOOLEANμ κ΄λ ¨λ μμλ₯Ό νμΈν μ μλ€.

| μμμ΄λ¦ | κ° | μ€λͺ |
| abap_true | 'X' | μ°Έ |
| abap_false | ' ' | κ±°μ§ (곡백μ΄λ©°, μ΄κΈ°κ°κ³Ό λμΌ) |
| abap_undefined | '-' | μ μλμ§ μμ μν (λͺ¨νΈν μνλ₯Ό ννν λ μ¬μ©) |
π‘ ν΄λ¦° ABAP κ°μ΄λλΌμΈμμλ abap_undefined μ¬μ©μ κΆμ₯νμ§ μλλ€. μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμ΄κΈ° μν΄ abap_trueμ abap_falseλ§ μ¬μ©νλ κ²μ΄ μ’λ€.
3. BOOELAN μ μ¬λ°λ₯Έ μ¬μ©λ²
β κ°μ μ§μ λΉκ΅νμ§ λ§κ³ , μμλ₯Ό μ¬μ©νμ
β Bad Case
IF lv_error_flag = 'X'.
β Good Case
IF lv_error_flag = abap_true.
β IS INITIAL λμ abap_falseλ₯Ό μ¬μ©νμ.
β Bad Case
IF lv_error_flag IS INITIAL.
β Good Case
IF lv_error_flag = abap_false.
IS INITIALμ 곡백 μ¬λΆλ₯Ό νμΈνμ§λ§, Boolean λ§₯λ½μμλ abap_falseκ° μλ―Έμ μΌλ‘ λ μ ννλ€.
π‘λ¨μν True/Falseκ° μλ κ²½κ³ , μ€λΉ, μ±κ³΅, μ¬μ²λ¦¬ κ°μ ꡬ체μ μΈ μ¬λ¬ μνλ₯Ό κ°μ§λ€λ©΄ Boolean λ³΄λ€ μ΄κ±°ν(enumeration)μ μ¬μ©νλ κ²μ΄ ν¨μ¬ λͺ ννλ€.
4. ABAPμμ κ°λ¨ν 쑰건μ XSDBOOLλ‘ λ κΉλνκ² μ²λ¦¬νμ.
Boolean κ°μ λ€λ£° λ κ°μ₯ ννκ² λ°μνλ ν¨ν΄μ "쑰건μ λ°λΌ μ°Έ λλ κ±°μ§μ λ³μμ ν λΉ"νλ μ½λμ΄λ€. κ·Έλ°λ° μ΄ λ¨μν μμ μ΄ μκ°λ³΄λ€ λΆνμνκ² μ₯ν©ν΄μ§ μ μλ€.
β Bad Case
IF log_messages IS INITIAL.
has_entries = abap_false.
ELSE.
has_entries = abap_true.
ENDIF.
μ΄ μ½λκ° νλ¦° 건 μλμ§λ§, 쑰건 νλλ§ νλ¨νλ λ° μ½λκ° λ무 κΈΈλ€. νΉν λ°λ³΅μ μΌλ‘ μ΄λ° ν¨ν΄μ΄ λ±μ₯νλ©΄ μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ΄ λ¨μ΄μ§κ² λλ€.
β Good Case
DATA(has_entries) = XSDBOOL( log_messages IS NOT INITIAL ).
ABAPμμλ XSDBOOL ν¨μλ₯Ό μ 곡ν΄μ μμ κ°μ΄ ν¨μ¬ κ°λ¨νκ³ μ§κ΄μ μΌλ‘ μ½λλ₯Ό μμ±ν μ μλ€.
- abap_bool νμ μΌλ‘ μλ λ³νλκΈ° λλ¬Έμ λ³λμ νμ μ μΈμ΄ νμ μμ
- κ°λ μ± ν₯μ: 쑰건μμ΄ λ°λ‘ 보μ
- μ½λκ° μ§§κ³ λͺ ν
π‘ ABAP 7.40 μ΄μμμλ COND μμ μ¬μ©ν΄ 쑰건μ λ°λΌ κ°μ λ°νν μ μμ§λ§, νμ μ λͺ μμ μΌλ‘ μ μ΄μΌ νκ³ , falseμ ν΄λΉνλ κ°μ μλ΅νλ©΄ μ΄κΈ°κ°μΈ 곡백(abap_false)μ΄ μλμΌλ‘ ν λΉλλ€.