λ κ±°μμ μΈν°νμ΄μ€ ꡬνμ μλλ°© μͺ½μμ base64λ‘ μΈμ½λ©ν΄μ μ£Όκ±°λ λ°κΈ°λ₯Ό μμ²νλ κ²½μ°κ° μλ€. Base64κ° λ¬΄μμΈμ§ μ΄λ»κ² μ¬μ©λλμ§μ λν΄ μμ보λλ‘ νμ.
1. Base64λ 무μμΈκ°?
Base64λ λ°μ΄λ리 λ°μ΄ν°λ₯Ό ν μ€νΈ λ°μ΄ν°λ‘ λ³ννλ μΈμ½λ© λ°©μμ΄λ€. 0κ³Ό 1λ‘ κ΅¬μ±λ λ°μ΄λ리 λ°μ΄ν°λ₯Ό μ¬λμ΄ μ½μ μ μλ λ¬Έμ(AZ, az, 0~9, +, /)λ‘ λ³νν΄ μ£Όλ κ²μ΄λ€.
- 3λ°μ΄νΈ(24λΉνΈ) → 4κ°μ 6λΉνΈ λΈλ‘ → 4λ¬Έμλ‘ λ³ν
- λ³νλ κ²°κ³Όλ μλ³Έλ³΄λ€ μ½ 33% 컀μ§μ§λ§, ν μ€νΈ μμ€ν μμλ μμ νκ² λ€λ£° μ μλ€.
μ¦, μ΄λ―Έμ§, νμΌ, λ°μ΄λ리 λ°μ΄ν°λ₯Ό "ν μ€νΈμ²λΌ μμ νκ² μ μ‘νκ±°λ μ μ₯" ν μ μλλ‘ λ³ννλ κ³Όμ μ΄ Base64μ΄λ€.
2. Base64λ μ΄λ€ κ²½μ°μ μ¬μ©λ κΉ?
| μ¬μ© μ¬λ‘ | μ€λͺ |
| νμΌ μ μ‘ | SAP μμ€ν μμ μΈλΆ μλ²λ‘ PDF, μ΄λ―Έμ§ νμΌμ μ μ‘ν λ |
| API ν΅μ | μΈλΆ REST API νΈμΆ μ, Authorization ν€λ λ±μ μ¬μ© |
| DB μ μ₯ | λ°μ΄λ리 λ°μ΄ν°λ₯Ό ν μ€νΈλ‘ λ³ννμ¬ λ°μ΄ν°λ² μ΄μ€μ μ μ₯ |
| μ΄λ©μΌ μ μ‘ | 첨λΆνμΌμ Base64λ‘ μΈμ½λ©νμ¬ λ©μΌμ ν¬ν¨ |
3. Base64μ μ₯μ
| νλͺ© | μ€λͺ |
| μμ€ν νΈνμ± | λͺ¨λ νλ«νΌμμ λ¬Έμ μμ΄ μ²λ¦¬ κ°λ₯ (ν μ€νΈ κΈ°λ°) |
| μμ μ± | λ°μ΄ν° μμ€ μμ΄ μ μ‘ κ°λ₯ |
| νμ€ν | μΉ, λ©μΌ, ν΅μ νλ‘ν μ½ λ± λ€μν κ³³μμ νμ€ μ§μ |
| κ°κ²°μ± | μΈμ½λ©/λμ½λ© λ‘μ§μ΄ κ°λ¨νμ¬ λΉ λ₯΄κ² ꡬν κ°λ₯ |
4. ABAPμμ Base64 μΈμ½λ©/λμ½λ© λ°©λ²
1) Function Module μ¬μ© (SCMS_BASE64_ENCODE_STR, SCMS_BASE64_DECODE_STR)
βΆ Base64 μΈμ½λ© ( xstring → string )
DATA: lv_raw TYPE xstring, "κΈ°μ‘΄ λ°μ΄νΈ νμ μ λ°μ΄λ리 λ°μ΄ν°
lv_base64 TYPE string.
CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
EXPORTING
input = lv_raw
IMPORTING
output = lv_base64.
βΆ Base64 λμ½λ© ( string → xstring )
DATA: lv_base64 TYPE string, "base64λ‘ μΈμ½λ©λ λ°μ΄ν°
lv_raw TYPE xstring.
CALL FUNCTION 'SCMS_BASE64_DECODE_STR'
EXPORTING
input = lv_base64
IMPORTING
output = lv_raw.
2) ν΄λμ€ μ¬μ© (CL_HTTP_UTILITY )
ν΄λμ€λ₯Ό ν΅ν μΈμ½λ©/λμ½λ© μ¬μ©νλ©΄ μ½λκ° ν¨μ¬ κΉλν΄μ§κ³ κ°λ μ±μ΄ μ’μμ§λ€.
βΆ Base64 μΈμ½λ© ( xstring → string )
DATA(lv_base64) = cl_http_utility=>encode_x_base64( lv_raw ).
βΆ Base64 λμ½λ© ( string → xstring )
DATA(lv_raw) = cl_http_utility=>decode_x_base64( lv_base64 ).
μΆκ°λ‘ CL_ABAP_CODEPAGE ν΄λμ€λ‘λ λ³ν κ°λ₯νλ€.( Method : convert_from, convert_to )
π‘λ°μ΄λ리 λ°μ΄ν°λ₯Ό μΈν°λ ν μ΄λΈλ‘ κ°μ§κ³ μλ κ²½μ° νμ SCMS_BINARY_TO_XSTRING μ μ¬μ©νμ¬ xstringμΌλ‘ λ³νμ΄ κ°λ₯νλ€.
5. Base64 μΈμ½λ©ν λ μ£Όμν μ
β Base64 λ°μ΄ν° κΈΈμ΄ κ³μ° 곡μ
- Base64 λ°μ΄ν° κΈΈμ΄ = ((μλ³Έ κΈΈμ΄ + 2) / 3) * 4
- λ°μ΄ν° ν¬κΈ°κ° μ½ 33% μ¦κ°
- λλ νμΌ μ μ‘ μ λ°μ΄ν° ν¬κΈ° μ΄κ³Ό μ£Όμ νμ ( μ΄λ©μΌ μ μ‘ κ°μ κ²½μ° μ©λ μ ν μ²΄ν¬ νμ )
β Base64 ν¨λ©(Padding) μ²λ¦¬
- ν¨λ©(Padding) μ²λ¦¬λ μ
λ ₯ λ°μ΄ν°μ κΈΈμ΄κ° 3λ°μ΄νΈμ λ°°μκ° μλ λ λ°μ
- Base64 λ λ°μ΄νΈ(24λΉνΈ) λ¨μλ‘ μ²λ¦¬νμ¬, μ΄λ₯Ό 4κ°μ Base64 λ¬Έμλ‘ μΈμ½λ©νλ―λ‘ κ²°κ³Όλ νμ 4μ λ°°μ κΈΈμ΄κ° λμ΄μΌ ν¨.
- λΆμ‘±ν κ²½μ° '=' λ¬Έμλ‘ ν¨λ© μΆκ° (ex: 2λ°μ΄νΈ λ¨μ κ²½μ°: 'TQ==', 1λ°μ΄νΈ λ¨μ κ²½μ° 'TWE=' )
- ABAPμ νμ€ μΈμ½λ© κΈ°λ₯μ μλ ν¨λ© μ²λ¦¬λ¨
β Base64 μ€λ°κΏ(Line Break) λ¬Έμ
- κΈ°λ³Έμ μΌλ‘ μ€λ°κΏ μμ΄ κΈ΄ λ¬Έμμ΄λ‘ μμ±
- μΌλΆ ꡬν μμ€ν μ 76μλ§λ€ μ€λ°κΏ μꡬ (MIME νμ€)
- ABAP κΈ°λ³Έ μΈμ½λ©μ μ€λ°κΏ μμ΄ μ²λ¦¬ (νλ API νμ€μ μ ν©)
βΉοΈ κ°μ΄ μ½μΌλ©΄ μ’μ ν¬μ€ν
ABAP Byte νμ κ³Ό Hexadecimal(16μ§μ) κ΄κ³
ABAPμμ λ°μ΄ν° νμ μ μ΄μΌκΈ°ν λ μΈ κ°μ§λ‘ λΆλ₯ν μ μλ€. Character νμ (λ¬Έμν), Numeric νμ (μ«μν), κ·Έλ¦¬κ³ Byte νμ μ΄λ€. λλΆλΆμ μ λ¬Έμλ€μ λ¬Έμνκ³Ό μ«μν νμ μλ μ΅μνμ§λ§, "Byte
twossun.tistory.com