# Business Logic — CRW02702SF01DBean.loadModelData() [167 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.CRW02702SF.CRW02702SF01DBean` |
| Layer | View Bean (Webview data-type bean — part of the X33/Futurity web framework's view-model layer) |
| Module | `CRW02702SF` (Package: `eo.web.webview.CRW02702SF`) |

## 1. Role

### CRW02702SF01DBean.loadModelData()

This method is a **data-type routing dispatcher** that implements the `X33VDataTypeBeanInterface.loadModelData(String key, String subkey)` contract within the Fujitsu Futurity X33 web framework. It serves as a **centralized lookup hub** for the view layer, enabling UI components and data-type beans to dynamically retrieve field values, enabled states, and CSS states by specifying a business-level key name and a property subkey. The method is called iteratively across list rows (e.g., "Option Service Contract Detail View" rows), allowing the framework to render each column's value, enablement flag, or state class without direct bean field access. It handles 13 distinct service contract fields, each supporting either a "value"/"enable"/"state" triple (for enabled fields) or a "value"/"state" pair (for read-only fields). The design pattern employed is a **string-based routing/dispatch pattern** — keys containing Japanese business terms (e.g., "明細インデックス", "オプションサービス名") are matched via `String.equals()`, and subkeys determine which accessor is invoked. This method is a **shared utility** consumed by the parent `CRW02702SFBean` when iterating over data-type bean rows in the "Option Service Contract Detail View" list item. It performs no CRUD operations, no database access, and no service invocations — it is purely a read-through dispatch to the bean's own getter methods.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["loadModel key, subkey"])
    START --> CHECK_NULL{key or subkey is null?}
    CHECK_NULL -->|Yes| RET_NULL(["return null"])
    CHECK_NULL -->|No| SEP{Compute index of '/' in key}
    SEP --> BRANCH[Route by key match]

    BRANCH --> K1["key = \"明細インデックス\""]
    K1 --> S1{subkey compare}
    S1 -->|"value"| G1["getL_detail_index_value"]
    S1 -->|"enable"| G2["getL_detail_index_enabled"]
    S1 -->|"state"| G3["getL_detail_index_state"]
    S1 -->|other| RET_NULL

    K1 --> K2["key = \"オプションサービス名\""]
    K2 --> S2{subkey compare}
    S2 -->|"value"| G4["getL_op_svc_cd_nm_value"]
    S2 -->|"enable"| G5["getL_op_svc_cd_nm_enabled"]
    S2 -->|"state"| G6["getL_op_svc_cd_nm_state"]
    S2 -->|other| RET_NULL

    K2 --> K3["key = \"オプション内容\""]
    K3 --> S3{subkey compare}
    S3 -->|"value"| G7["getL_op_svc_niy_value"]
    S3 -->|"enable"| G8["getL_op_svc_niy_enabled"]
    S3 -->|"state"| G9["getL_op_svc_niy_state"]
    S3 -->|other| RET_NULL

    K3 --> K4["key = \"サブオプション内容\""]
    K4 --> S4{subkey compare}
    S4 -->|"value"| G10["getL_sbop_svc_niy_value"]
    S4 -->|"enable"| G11["getL_sbop_svc_niy_enabled"]
    S4 -->|"state"| G12["getL_sbop_svc_niy_state"]
    S4 -->|other| RET_NULL

    K4 --> K5["key = \"利用状態\""]
    K5 --> S5{subkey compare}
    S5 -->|"value"| G13["getL_op_svc_kei_stat_nm_value"]
    S5 -->|"enable"| G14["getL_op_svc_kei_stat_nm_enabled"]
    S5 -->|"state"| G15["getL_op_svc_kei_stat_nm_state"]
    S5 -->|other| RET_NULL

    K5 --> K6["key = \"利用開始日\""]
    K6 --> S6{subkey compare}
    S6 -->|"value"| G16["getL_svc_staymd_value"]
    S6 -->|"enable"| G17["getL_svc_staymd_enabled"]
    S6 -->|"state"| G18["getL_svc_staymd_state"]
    S6 -->|other| RET_NULL

    K6 --> K7["key = \"解約予定日\""]
    K7 --> S7{subkey compare}
    S7 -->|"value"| G19["getL_rsv_tsta_kibo_ymd_value"]
    S7 -->|"enable"| G20["getL_rsv_tsta_kibo_ymd_enabled"]
    S7 -->|"state"| G21["getL_rsv_tsta_kibo_ymd_state"]
    S7 -->|other| RET_NULL

    K7 --> K8["key = \"利用終了日\""]
    K8 --> S8{subkey compare}
    S8 -->|"value"| G22["getL_svc_endymd_value"]
    S8 -->|"enable"| G23["getL_svc_endymd_enabled"]
    S8 -->|"state"| G24["getL_svc_endymd_state"]
    S8 -->|other| RET_NULL

    K8 --> K9["key = \"オプションサービス契約番号\""]
    K9 --> S9{subkey compare}
    S9 -->|"value"| G25["getL_op_svc_kei_no_value"]
    S9 -->|"state"| G26["getL_op_svc_kei_no_state"]
    S9 -->|other| RET_NULL

    K9 --> K10["key = \"オプションサービスコード\""]
    K10 --> S10{subkey compare}
    S10 -->|"value"| G27["getL_op_svc_cd_value"]
    S10 -->|"state"| G28["getL_op_svc_cd_state"]
    S10 -->|other| RET_NULL

    K10 --> K11["key = \"オプション内容リンク表示フラグ\""]
    K11 --> S11{subkey compare}
    S11 -->|"value"| G29["getL_op_svc_niy_link_dsp_flg_value"]
    S11 -->|"state"| G30["getL_op_svc_niy_link_dsp_flg_state"]
    S11 -->|other| RET_NULL

    K11 --> K12["key = \"行スタイルクラス\""]
    K12 --> S12{subkey compare}
    S12 -->|"value"| G31["getL_line_style_class_value"]
    S12 -->|"state"| G32["getL_line_style_class_state"]
    S12 -->|other| RET_NULL

    K12 --> K13["key = \"行スタイルID\""]
    K13 --> S13{subkey compare}
    S13 -->|"value"| G33["getL_line_style_id_value"]
    S13 -->|"state"| G34["getL_line_style_id_state"]
    S13 -->|other| RET_NULL

    K13 --> RET_NULL

    G1 --> END_NODE(["Return data"])
    G2 --> END_NODE
    G3 --> END_NODE
    G4 --> END_NODE
    G5 --> END_NODE
    G6 --> END_NODE
    G7 --> END_NODE
    G8 --> END_NODE
    G9 --> END_NODE
    G10 --> END_NODE
    G11 --> END_NODE
    G12 --> END_NODE
    G13 --> END_NODE
    G14 --> END_NODE
    G15 --> END_NODE
    G16 --> END_NODE
    G17 --> END_NODE
    G18 --> END_NODE
    G19 --> END_NODE
    G20 --> END_NODE
    G21 --> END_NODE
    G22 --> END_NODE
    G23 --> END_NODE
    G24 --> END_NODE
    G25 --> END_NODE
    G26 --> END_NODE
    G27 --> END_NODE
    G28 --> END_NODE
    G29 --> END_NODE
    G30 --> END_NODE
    G31 --> END_NODE
    G32 --> END_NODE
    G33 --> END_NODE
    G34 --> END_NODE
    RET_NULL --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The **business field identifier** — a human-readable Japanese field name that maps to a specific column/row in the Option Service Contract Detail View (e.g., "明細インデックス" for the detail row index, "オプションサービス名" for the option service name). Each key uniquely identifies one of 13 configurable view fields. Also corresponds to constants in `CRW02702SFConst` such as `L_DETAIL_INDEX_01`, `L_OP_SVC_CD_NM_01`, etc. |
| 2 | `subkey` | `String` | The **property accessor type** that determines which aspect of the field is requested: `"value"` returns the display value, `"enable"` returns the enabled/disabled state (Boolean), and `"state"` returns the CSS style class string. Subkey matching is case-insensitive via `equalsIgnoreCase()`. Not all keys support `"enable"` — contract number and service code fields are read-only and only support `"value"` and `"state"`. |

**Instance fields read by this method** (indirectly, via called getters):

| Field Name | Type | Business Description |
|-----------|------|---------------------|
| `l_detail_index_value` | `String` | The current row index value in the detail list (empty string default) |
| `l_detail_index_enabled` | `Boolean` | Whether the detail index field is enabled for editing (default `false`) |
| `l_detail_index_state` | `String` | CSS style class for the detail index field (empty string default) |
| `l_op_svc_cd_nm_value` | `String` | Option service name display value |
| `l_op_svc_cd_nm_enabled` | `Boolean` | Enabled state for option service name |
| `l_op_svc_cd_nm_state` | `String` | CSS state class for option service name |
| `l_op_svc_niy_value` | `String` | Option content/description value |
| `l_op_svc_niy_enabled` | `Boolean` | Enabled state for option content |
| `l_op_svc_niy_state` | `String` | CSS state class for option content |
| `l_sbop_svc_niy_value` | `String` | Sub-option content value |
| `l_sbop_svc_niy_enabled` | `Boolean` | Enabled state for sub-option content |
| `l_sbop_svc_niy_state` | `String` | CSS state class for sub-option content |
| `l_op_svc_kei_stat_nm_value` | `String` | Usage status name (e.g., "Active", "Suspended") |
| `l_op_svc_kei_stat_nm_enabled` | `Boolean` | Enabled state for usage status |
| `l_op_svc_kei_stat_nm_state` | `String` | CSS state class for usage status |
| `l_svc_staymd_value` | `String` | Service start date (YYYY-MM-DD format) |
| `l_svc_staymd_enabled` | `Boolean` | Enabled state for service start date |
| `l_svc_staymd_state` | `String` | CSS state class for service start date |
| `l_rsv_tsta_kibo_ymd_value` | `String` | Planned cancellation date (YYYY-MM-DD format) |
| `l_rsv_tsta_kibo_ymd_enabled` | `Boolean` | Enabled state for planned cancellation date |
| `l_rsv_tsta_kibo_ymd_state` | `String` | CSS state class for planned cancellation date |
| `l_svc_endymd_value` | `String` | Service end/completion date (YYYY-MM-DD format) |
| `l_svc_endymd_enabled` | `Boolean` | Enabled state for service end date |
| `l_svc_endymd_state` | `String` | CSS state class for service end date |
| `l_op_svc_kei_no_value` | `String` | Option service contract number (read-only) |
| `l_op_svc_kei_no_state` | `String` | CSS state class for contract number |
| `l_op_svc_cd_value` | `String` | Option service code (read-only) |
| `l_op_svc_cd_state` | `String` | CSS state class for service code |
| `l_op_svc_niy_link_dsp_flg_value` | `Boolean` | Whether the option content link is displayed |
| `l_op_svc_niy_link_dsp_flg_state` | `String` | CSS state class for the link display flag |
| `l_line_style_class_value` | `String` | Row CSS style class (e.g., "even-row", "odd-row", "highlight") |
| `l_line_style_class_state` | `String` | CSS state class for row style class |
| `l_line_style_id_value` | `String` | Row style ID attribute |
| `l_line_style_id_state` | `String` | CSS state class for row style ID |

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

This method performs **zero CRUD operations** and calls **no external services, CBS, or DAOs**. It is a pure in-memory dispatch to its own bean's getter methods.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `CRW02702SF01DBean.getL_detail_index_enabled` | CRW02702SF01DBean | - | Reads `l_detail_index_enabled` field — returns enabled state for the detail row index |
| R | `CRW02702SF01DBean.getL_detail_index_state` | CRW02702SF01DBean | - | Reads `l_detail_index_state` field — returns CSS state class for the detail row index |
| R | `CRW02702SF01DBean.getL_detail_index_value` | CRW02702SF01DBean | - | Reads `l_detail_index_value` field — returns the detail row index display value |
| R | `CRW02702SF01DBean.getL_line_style_class_state` | CRW02702SF01DBean | - | Reads `l_line_style_class_state` field — returns CSS state class for row style class |
| R | `CRW02702SF01DBean.getL_line_style_class_value` | CRW02702SF01DBean | - | Reads `l_line_style_class_value` field — returns the row CSS style class value |
| R | `CRW02702SF01DBean.getL_line_style_id_state` | CRW02702SF01DBean | - | Reads `l_line_style_id_state` field — returns CSS state class for row style ID |
| R | `CRW02702SF01DBean.getL_line_style_id_value` | CRW02702SF01DBean | - | Reads `l_line_style_id_value` field — returns the row style ID value |
| R | `CRW02702SF01DBean.getL_op_svc_cd_nm_enabled` | CRW02702SF01DBean | - | Reads `l_op_svc_cd_nm_enabled` field — returns enabled state for option service name |
| R | `CRW02702SF01DBean.getL_op_svc_cd_nm_state` | CRW02702SF01DBean | - | Reads `l_op_svc_cd_nm_state` field — returns CSS state class for option service name |
| R | `CRW02702SF01DBean.getL_op_svc_cd_nm_value` | CRW02702SF01DBean | - | Reads `l_op_svc_cd_nm_value` field — returns the option service name display value |
| R | `CRW02702SF01DBean.getL_op_svc_cd_state` | CRW02702SF01DBean | - | Reads `l_op_svc_cd_state` field — returns CSS state class for option service code |
| R | `CRW02702SF01DBean.getL_op_svc_cd_value` | CRW02702SF01DBean | - | Reads `l_op_svc_cd_value` field — returns the option service code display value |
| R | `CRW02702SF01DBean.getL_op_svc_kei_no_state` | CRW02702SF01DBean | - | Reads `l_op_svc_kei_no_state` field — returns CSS state class for contract number |
| R | `CRW02702SF01DBean.getL_op_svc_kei_no_value` | CRW02702SF01DBean | - | Reads `l_op_svc_kei_no_value` field — returns the option service contract number |
| R | `CRW02702SF01DBean.getL_op_svc_kei_stat_nm_enabled` | CRW02702SF01DBean | - | Reads `l_op_svc_kei_stat_nm_enabled` field — returns enabled state for usage status |
| R | `CRW02702SF01DBean.getL_op_svc_kei_stat_nm_state` | CRW02702SF01DBean | - | Reads `l_op_svc_kei_stat_nm_state` field — returns CSS state class for usage status name |
| R | `CRW02702SF01DBean.getL_op_svc_kei_stat_nm_value` | CRW02702SF01DBean | - | Reads `l_op_svc_kei_stat_nm_value` field — returns the usage status name display value |
| R | `CRW02702SF01DBean.getL_op_svc_niy_enabled` | CRW02702SF01DBean | - | Reads `l_op_svc_niy_enabled` field — returns enabled state for option content |
| R | `CRW02702SF01DBean.getL_op_svc_niy_link_dsp_flg_state` | CRW02702SF01DBean | - | Reads `l_op_svc_niy_link_dsp_flg_state` field — returns CSS state class for link display flag |
| R | `CRW02702SF01DBean.getL_op_svc_niy_link_dsp_flg_value` | CRW02702SF01DBean | - | Reads `l_op_svc_niy_link_dsp_flg_value` field — returns the link display flag value |
| R | `CRW02702SF01DBean.getL_op_svc_niy_state` | CRW02702SF01DBean | - | Reads `l_op_svc_niy_state` field — returns CSS state class for option content |
| R | `CRW02702SF01DBean.getL_op_svc_niy_value` | CRW02702SF01DBean | - | Reads `l_op_svc_niy_value` field — returns the option content display value |
| R | `CRW02702SF01DBean.getL_rsv_tsta_kibo_ymd_enabled` | CRW02702SF01DBean | - | Reads `l_rsv_tsta_kibo_ymd_enabled` field — returns enabled state for planned cancellation date |
| R | `CRW02702SF01DBean.getL_rsv_tsta_kibo_ymd_state` | CRW02702SF01DBean | - | Reads `l_rsv_tsta_kibo_ymd_state` field — returns CSS state class for planned cancellation date |
| R | `CRW02702SF01DBean.getL_rsv_tsta_kibo_ymd_value` | CRW02702SF01DBean | - | Reads `l_rsv_tsta_kibo_ymd_value` field — returns the planned cancellation date display value |
| R | `CRW02702SF01DBean.getL_sbop_svc_niy_enabled` | CRW02702SF01DBean | - | Reads `l_sbop_svc_niy_enabled` field — returns enabled state for sub-option content |
| R | `CRW02702SF01DBean.getL_sbop_svc_niy_state` | CRW02702SF01DBean | - | Reads `l_sbop_svc_niy_state` field — returns CSS state class for sub-option content |
| R | `CRW02702SF01DBean.getL_sbop_svc_niy_value` | CRW02702SF01DBean | - | Reads `l_sbop_svc_niy_value` field — returns the sub-option content display value |
| R | `CRW02702SF01DBean.getL_svc_endymd_enabled` | CRW02702SF01DBean | - | Reads `l_svc_endymd_enabled` field — returns enabled state for service end date |
| R | `CRW02702SF01DBean.getL_svc_endymd_state` | CRW02702SF01DBean | - | Reads `l_svc_endymd_state` field — returns CSS state class for service end date |
| R | `CRW02702SF01DBean.getL_svc_endymd_value` | CRW02702SF01DBean | - | Reads `l_svc_endymd_value` field — returns the service end date display value |
| R | `CRW02702SF01DBean.getL_svc_staymd_enabled` | CRW02702SF01DBean | - | Reads `l_svc_staymd_enabled` field — returns enabled state for service start date |
| R | `CRW02702SF01DBean.getL_svc_staymd_state` | CRW02702SF01DBean | - | Reads `l_svc_staymd_state` field — returns CSS state class for service start date |
| R | `CRW02702SF01DBean.getL_svc_staymd_value` | CRW02702SF01DBean | - | Reads `l_svc_staymd_value` field — returns the service start date display value |

**Summary:** All 34 method calls are internal read (R) operations against the bean's own protected fields. No external SC, CBS, DAO, or database access occurs.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:CRW02702SF | `CRW02702SFBean.listData` -> `CRW02702SF01DBean.loadModelData(key, subkey)` | `getL_detail_index_value [R] in-memory field` |
| 2 | Screen:CRW02702SF | `CRW02702SFBean.addListDataInstance` -> iterates rows -> `CRW02702SF01DBean.loadModelData(key, subkey)` | `getL_op_svc_cd_nm_value [R] in-memory field` |
| 3 | Framework (X33) | `X33VDataTypeBeanInterface` contract -> Framework calls `CRW02702SF01DBean.loadModelData(key, subkey)` directly on each row bean instance during view rendering | `getL_svc_endymd_value [R] in-memory field` |

**Caller details:**
- **`CRW02702SFBean.java`** (lines 1219-1221, 1268-1273): The parent bean references `CRW02702SF01DBean` as a data-type bean class for the "Option Service Contract Detail View" (オプションサービス契約一覧照会明细) list item (`ekk0351b002cbsmsg1list`). It creates `CRW02702SF01DBean` instances for each row and calls `loadModelData(key, subkey)` to populate column values during data initialization and list population.
- **X33 Framework**: The X33/Futurity framework invokes `loadModelData(String, String)` through the `X33VDataTypeBeanInterface` contract. During view rendering, the framework iterates over the list of `CRW02702SF01DBean` row instances and calls `loadModelData` for each column/key combination, enabling the view layer to dynamically bind data to HTML form fields.

No external screens, batches, or CBS components call this method directly. It is exclusively an internal data-type bean contract method used by the `CRW02702SF` web screen's list rendering pipeline.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key == null || subkey == null)` (L496-498)

> Early-exit guard: If either the field key or property subkey is null, return null immediately. This prevents NullPointerException in subsequent string operations.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `key == null || subkey == null` |
| 2 | RETURN | `return null` |

**Block 2** — [SET] `(Compute separator index)` (L500)

> Compute the index of the "/" separator character within the key. This value is stored but never used — it appears to be dead code or legacy artifact.

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/")` // unused variable — dead code |

**Block 3** — [IF] `(key.equals("明細インデックス"))` [L_DETAIL_INDEX_01="明細インデックス"] (L503)

> Handle the detail row index field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_detail_index_value()` // returns detail index display value |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` [ENABLE="enable"] |
| 4 | CALL | `return getL_detail_index_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` [STATE="state"] |
| 6 | CALL | `return getL_detail_index_state()` // returns CSS state class string |

**Block 4** — [ELSE-IF] `(key.equals("オプションサービス名"))` [L_OP_SVC_CD_NM_01="オプションサービス名"] (L514)

> Handle the option service name field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_op_svc_cd_nm_value()` // returns option service name |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_op_svc_cd_nm_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_op_svc_cd_nm_state()` // returns CSS state class string |

**Block 5** — [ELSE-IF] `(key.equals("オプション内容"))` [L_OP_SVC_NIY_01="オプション内容"] (L525)

> Handle the option content/description field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_op_svc_niy_value()` // returns option content description |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_op_svc_niy_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_op_svc_niy_state()` // returns CSS state class string |

**Block 6** — [ELSE-IF] `(key.equals("サブオプション内容"))` [L_SBOP_SVC_NIY_01="サブオプション内容"] (L536)

> Handle the sub-option content field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_sbop_svc_niy_value()` // returns sub-option content description |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_sbop_svc_niy_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_sbop_svc_niy_state()` // returns CSS state class string |

**Block 7** — [ELSE-IF] `(key.equals("利用状態"))` [L_OP_SVC_KEI_STAT_NM_01="利用状態"] (L547)

> Handle the usage status name field (e.g., service active, suspended, terminated). Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_op_svc_kei_stat_nm_value()` // returns usage status name |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_op_svc_kei_stat_nm_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_op_svc_kei_stat_nm_state()` // returns CSS state class string |

**Block 8** — [ELSE-IF] `(key.equals("利用開始日"))` [L_SVC_STAYMD_01="利用開始日"] (L558)

> Handle the service start date field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_svc_staymd_value()` // returns service start date (YYYY-MM-DD) |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_svc_staymd_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_svc_staymd_state()` // returns CSS state class string |

**Block 9** — [ELSE-IF] `(key.equals("解約予定日"))` [L_RSV_TSTA_KIBO_YMD_01="解約予定日"] (L569)

> Handle the planned cancellation date field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_rsv_tsta_kibo_ymd_value()` // returns planned cancellation date |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_rsv_tsta_kibo_ymd_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_rsv_tsta_kibo_ymd_state()` // returns CSS state class string |

**Block 10** — [ELSE-IF] `(key.equals("利用終了日"))` [L_SVC_ENDYMD_01="利用終了日"] (L580)

> Handle the service end/completion date field. Supports value, enable, and state property access.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_svc_endymd_value()` // returns service end date (YYYY-MM-DD) |
| 3 | CHECK | `subkey.equalsIgnoreCase("enable")` |
| 4 | CALL | `return getL_svc_endymd_enabled()` // returns Boolean enabled state |
| 5 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 6 | CALL | `return getL_svc_endymd_state()` // returns CSS state class string |

**Block 11** — [ELSE-IF] `(key.equals("オプションサービス契約番号"))` [L_OP_SVC_KEI_NO_01="オプションサービス契約番号"] (L591)

> Handle the option service contract number field. **Read-only field — only supports value and state (no enable subkey).**

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_op_svc_kei_no_value()` // returns contract number |
| 3 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 4 | CALL | `return getL_op_svc_kei_no_state()` // returns CSS state class string |
| 5 | CHECK | falls through to no match → continues to next else-if |

**Block 12** — [ELSE-IF] `(key.equals("オプションサービスコード"))` [L_OP_SVC_CD_01="オプションサービスコード"] (L601)

> Handle the option service code field. **Read-only field — only supports value and state (no enable subkey).**

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_op_svc_cd_value()` // returns service code |
| 3 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 4 | CALL | `return getL_op_svc_cd_state()` // returns CSS state class string |
| 5 | CHECK | falls through to no match → continues to next else-if |

**Block 13** — [ELSE-IF] `(key.equals("オプション内容リンク表示フラグ"))` [L_OP_SVC_NIY_LINK_DSP_FLG_01="オプション内容リンク表示フラグ"] (L611)

> Handle the option content link display flag field. **Read-only field — only supports value and state.** The value field returns a Boolean (link visibility flag), not a String.

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_op_svc_niy_link_dsp_flg_value()` // returns Boolean link flag |
| 3 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 4 | CALL | `return getL_op_svc_niy_link_dsp_flg_state()` // returns CSS state class string |
| 5 | CHECK | falls through to no match → continues to next else-if |

**Block 14** — [ELSE-IF] `(key.equals("行スタイルクラス"))` [L_LINE_STYLE_CLASS_01="行スタイルクラス"] (L621)

> Handle the row CSS style class field (e.g., alternating row styles). **Read-only field — only supports value and state.**

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_line_style_class_value()` // returns CSS class string |
| 3 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 4 | CALL | `return getL_line_style_class_state()` // returns CSS state class string |
| 5 | CHECK | falls through to no match → continues to next else-if |

**Block 15** — [ELSE-IF] `(key.equals("行スタイルID"))` [L_LINE_STYLE_ID_01="行スタイルID"] (L631)

> Handle the row style ID field. **Read-only field — only supports value and state.**

| # | Type | Code |
|---|------|------|
| 1 | CHECK | `subkey.equalsIgnoreCase("value")` |
| 2 | CALL | `return getL_line_style_id_value()` // returns row style ID |
| 3 | CHECK | `subkey.equalsIgnoreCase("state")` |
| 4 | CALL | `return getL_line_style_id_state()` // returns CSS state class string |
| 5 | CHECK | falls through to no match → continues to next else-if |

**Block 16** — [RETURN] `(L638)`

> Default fallback: No key matched any of the 13 known fields. Return null to indicate the field is unrecognized.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null` // no matching key found |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `l_detail_index` | Field | Detail row index — the sequential position of a row within the Option Service Contract Detail View list |
| `l_op_svc_cd_nm` | Field | Option service name — the display name of an optional add-on service attached to the main contract |
| `l_op_svc_niy` | Field | Option content — the descriptive text or details of the selected option service |
| `l_sbop_svc_niy` | Field | Sub-option content — nested option details, i.e., additional optional features within an option service |
| `l_op_svc_kei_stat_nm` | Field | Usage status name — the current operational state of the service (e.g., "利用中" active, "停止中" suspended) |
| `l_svc_staymd` | Field | Service start date — the date when the option service begins (YYYY-MM-DD) |
| `l_rsv_tsta_kibo_ymd` | Field | Planned cancellation date — the requested date for service termination/cancellation (YYYY-MM-DD) |
| `l_svc_endymd` | Field | Service end date — the date when the option service ends or is scheduled to end (YYYY-MM-DD) |
| `l_op_svc_kei_no` | Field | Option service contract number — the unique contract identifier for the option service line item |
| `l_op_svc_cd` | Field | Option service code — the system-assigned code identifying the option service type |
| `l_op_svc_niy_link_dsp_flg` | Field | Option content link display flag — Boolean flag indicating whether a hyperlink to option details is displayed |
| `l_line_style_class` | Field | Row CSS style class — the CSS class applied to a list row for visual styling (e.g., alternating row colors) |
| `l_line_style_id` | Field | Row style ID — the HTML id attribute for a list row, used for DOM-level styling or scripting |
| `key` | Parameter | Business field identifier — a Japanese-language key mapping to a specific view field in the contract detail list |
| `subkey` | Parameter | Property accessor type — specifies whether to retrieve "value" (display data), "enable" (editability), or "state" (CSS class) |
| CRW02702SF | Screen | Option Service Contract Detail View — the web screen displaying a list of option services attached to a main contract |
| X33VDataTypeBeanInterface | Framework | Fujitsu Futurity X33 framework interface that data-type beans implement for per-row data loading in list views |
| X33VViewBaseBean | Framework | Base bean class providing common view-layer functionality in the X33 web framework |
| X31CBaseBean | Framework | Lower-level base bean providing common field getter/setter and update tracking functionality |
| X33SException | Framework | Runtime exception type for X33 framework business logic errors |
| EKK0351B002CBSMSG1LIST | Constant | List item key for "Option Service Contract Detail View" — used to instantiate CRW02702SF01DBean row beans |
| `indexOf("/")` | Code | String method to find the separator index — appears to be dead code as `separaterPoint` is never used after assignment |
