λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ§‘‍πŸ’Ό SAP/ABAP

[SAP ABAP] SELECT-OPTIONS λž€? (μ‚¬μš© 예제 포함)

by Jay Din 2024. 7. 16.
728x90
λ°˜μ‘ν˜•

1. SELECT-OPTIONS λž€?

μ˜ˆμ‹œ ν™”λ©΄

 

μ‚¬μš©μžλ‘œλΆ€ν„° 닀쀑 값을 μž…λ ₯λ°›κ±°λ‚˜ λ²”μœ„λ₯Ό μ§€μ •ν•  수 μžˆλŠ” μž…λ ₯ ν•„λ“œλ₯Ό μ •μ˜ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€.

SELECT-OPTIONS λ₯Ό μ‚¬μš©ν•˜λ©΄ νŠΉμ • ν•„λ“œμ— λŒ€ν•΄ μ—¬λŸ¬ κ°’, λ²”μœ„, 포함 및 μ œμ™Έ 쑰건 등을 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

SELECT-OPTIONS ꡬ쑰

SELECT-OPTIONS: s_field FOR db_table-field.
  • s_field: 선택 μ˜΅μ…˜μ˜ μ΄λ¦„μž…λ‹ˆλ‹€.
  • FOR db_table-field: λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ ν•„λ“œμ™€ μ—°κ²°λ©λ‹ˆλ‹€.
  • FOR  λ‹€μŒμ— 데이터 νƒ€μž…μ΄ μ•„λ‹ˆκ³  데이터 였브젝트.

 

2. SELECT-OPTIONS 예제

* 1. SFLIGHT ν…Œμ΄λΈ” μ„ μ–Έ
TABLES: SFLIGHT.

* 2. SELECT-OPTIONS μ„ μ–Έ
SELECT-OPTIONS: S_CARRID FOR SFLIGHT-CARRID,
                S_FLDATE FOR SFLIGHT-FLDATE.

START-OF-SELECTION.

* 3. 쑰회 κ²°κ³Όλ₯Ό μ €μž₯ν•  인터널 ν…Œμ΄λΈ” μ„ μ–Έ
  DATA: LT_FLIGHTS TYPE TABLE OF SFLIGHT,
        LS_FLIGHT  TYPE SFLIGHT.

* 4. λ°μ΄ν„°λ² μ΄μŠ€ 쑰회
  SELECT * FROM SFLIGHT
    INTO TABLE LT_FLIGHTS
    WHERE CARRID IN S_CARRID
    AND FLDATE IN S_FLDATE.

* 5. 쑰회된 데이터 좜λ ₯
  LOOP AT LT_FLIGHTS INTO LS_FLIGHT.
    WRITE: / LS_FLIGHT-CARRID, LS_FLIGHT-CONNID, LS_FLIGHT-FLDATE.
  ENDLOOP.

 

  1. ν…Œμ΄λΈ” μ„ μ–Έ
    • TABLES ꡬ문: SFLIGHT ν…Œμ΄λΈ”μ„ μ„ μ–Έν•©λ‹ˆλ‹€. 이 선언을 톡해 SFLIGHT ν…Œμ΄λΈ”μ˜ λͺ¨λ“  ν•„λ“œλ₯Ό ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν•„λ“œ μ ‘κ·Ό: SFLIGHT ν…Œμ΄λΈ”μ˜ ν•„λ“œ CARRID, FLDATE, CONNID λ“±)λ₯Ό λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. SELECT-OPTIONS μ„ μ–Έ
    • `s_carrid`: SFLIGHT ν…Œμ΄λΈ”μ˜ CARRID ν•„λ“œμ— λŒ€ν•œ 선택 μ˜΅μ…˜μž…λ‹ˆλ‹€. μ‚¬μš©μžλŠ” ν•˜λ‚˜ μ΄μƒμ˜ 항곡사 μ½”λ“œλ₯Ό μž…λ ₯ν•˜κ±°λ‚˜ λ²”μœ„λ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • `s_fldate`: SFLIGHT ν…Œμ΄λΈ”μ˜ FLDATE ν•„λ“œμ— λŒ€ν•œ 선택 μ˜΅μ…˜μž…λ‹ˆλ‹€. μ‚¬μš©μžλŠ” ν•˜λ‚˜ μ΄μƒμ˜ λΉ„ν–‰ λ‚ μ§œλ₯Ό μž…λ ₯ν•˜κ±°λ‚˜ λ²”μœ„λ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. λ³€μˆ˜ μ„ μ–Έ
    • START-OF-SELECTION 이벀트: SELECTION-SCREEN μ—μ„œ μ‚¬μš©μž μž…λ ₯을 받은 ν›„ μ‹€ν–‰λ˜λŠ” μ΄λ²€νŠΈμž…λ‹ˆλ‹€.
    • 인터널 ν…Œμ΄λΈ” μ„ μ–Έ
      • `lt_flights`: 쑰회된 κ²°κ³Όλ₯Ό μ €μž₯ν•  인터널 ν…Œμ΄λΈ”μž…λ‹ˆλ‹€.
      • `ls_flight`: 인터널 ν…Œμ΄λΈ”μ˜ 각 행을 μ €μž₯ν•  μž‘μ—… μ˜μ—­μž…λ‹ˆλ‹€.
  4. 데이터 베이슀 쑰회
    • `SFLIGHT` ν…Œμ΄λΈ”μ—μ„œ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 선택 μ˜΅μ…˜ (`s_carrid`, `s_fldate`)을 쑰건으둜 데이터λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.
    • 쑰회된 κ²°κ³ΌλŠ” 인터널 ν…Œμ΄λΈ” `lt_flights`에 μ €μž₯λ©λ‹ˆλ‹€.
  5. 데이터 좜λ ₯
    • 인터널 ν…Œμ΄λΈ” `lt_flights`의 각 행을 순차적으둜 읽어 `ls_flight` μž‘μ—… μ˜μ—­μ— μ €μž₯ν•©λ‹ˆλ‹€.
    • `ls_flight` μž‘μ—… μ˜μ—­μ— μ €μž₯된 `CARRID`, `CONNID`, `FLDATE` ν•„λ“œλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

S_CARRID 볡수 선택
좜λ ₯ ν™”λ©΄

 

3. SELECT-OPTIONS ν•„λ“œλͺ… λ³€κ²½

ν˜„μž¬ SELECT-OPTIONS의 `S_CARR` 및 `S_FLDATE` ν•„λ“œλͺ…이 κ·ΈλŒ€λ‘œ ν‘œμ‹œλ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이λ₯Ό ν…Œμ΄λΈ” μ„€λͺ…을 μ°Έκ³ ν•˜ 의미 μžˆλŠ” ν•„λ“œλͺ…μœΌλ‘œ λ³€κ²½ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

1) 이동 / ν…μŠ€νŠΈ μš”μ†Œ / 선택 ν…μŠ€νŠΈ

 

2) ν…μŠ€νŠΈ μ„€μ •

 

3) μ‹€ν–‰κ²°κ³Ό

 

 

728x90
λ°˜μ‘ν˜•