# Business Logic — DKW00301SFBean.removeElementFromListData() [116 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.DKW00301SF.DKW00301SFBean` |
| Layer | Service (Bean / View-Controller Component) |
| Module | `DKW00301SF` (Package: `eo.web.webview.DKW00301SF`) |

## 1. Role

### DKW00301SFBean.removeElementFromListData()

This method is a **centralized list-item removal dispatcher** for the DKW00301SF screen (a service contract inquiry screen in the telecom order management system). It receives a **key** that identifies which data list category the target item belongs to, and an **index** specifying the position of the item to remove.

The method implements a **dispatch/routing pattern**: it inspects the `key` string against a predefined set of business-meaning labels (e.g., "返品抽出条件" — Return Extraction Conditions, "受入先" — Receiver/Recipient, "返品種別" — Return Product Type) and routes the removal operation to the corresponding instance list field. Each label maps to a dedicated `X33VDataTypeList` backing a particular screen section.

If the key starts with `"//"`, the method delegates to its parent class's `removeElementFromListData()`, which handles **common information view lists** shared across multiple screens — these are processed at the **infrastructure (base class) layer**.

The method performs **bounds-checking** on the index before removal to prevent `IndexOutOfBoundsException`, silently ignoring out-of-range requests. It handles **15 distinct data categories** organized across **5 sub-screens** (DKW00301SF01 through DKW00301SF05) plus a shared/common category, making it a shared utility used by the screen's view-binding logic for dynamic list manipulation (e.g., multi-select/deselect patterns).

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["removeElementFromListData key, index"])
    CHECK_NULL["key != null?"]
    DELEGATE["Call super.removeElementFromListData(key, index)"]
    DISPATCH["Key dispatch on String key"]

    BRANCH_A["key equals '返品抽出条件' (Return Extraction Conditions)"]
    BRANCH_B["key equals '受入先' (Receiver/Recipient)"]
    BRANCH_C["key equals '返品種別' (Return Product Type)"]
    BRANCH_D["key equals '型式番号' (Model Number)"]
    BRANCH_E["key equals '検索日付選択' (Search Date Selection)"]
    BRANCH_F["key equals '日付F/R/O/M' (Date F/R/O/M)"]
    BRANCH_G["key equals '日付T/O/M' (Date T/O/M)"]
    BRANCH_H["key equals '承認日F/R/O/M' (Approval Date F/R/O/M)"]
    BRANCH_I["key equals '承認日T/O/M' (Approval Date T/O/M)"]
    BRANCH_J["key equals '検索結果リスト' (Search Result List)"]
    BRANCH_K["key equals '提供種別リスト' (Service Type List)"]
    BRANCH_L["key equals 'CSV用検索結果リスト' (CSV Search Result List)"]
    BRANCH_M["key equals '機器契約区分コード一覧' (Device Contract Category Code List)"]
    BRANCH_N["key equals '機器契約区分名称一覧' (Device Contract Category Name List)"]
    BRANCH_O["key equals '選択検索結果リスト' (Selected Search Result List)"]
    BRANCH_P["No match - default"]

    CHECK_BOUNDS_A["index >= 0 && index < list.size()?"]
    REMOVE_A["i_hmpin_chsht_joken_list.remove(index)"]
    CHECK_BOUNDS_B["index >= 0 && index < list.size()?"]
    REMOVE_B["i_ukeire_sk_list.remove(index)"]
    CHECK_BOUNDS_C["index >= 0 && index < list.size()?"]
    REMOVE_C["i_hmpin_sbt_list.remove(index)"]
    CHECK_BOUNDS_D["index >= 0 && index < list.size()?"]
    REMOVE_D["i_mdl_no_list.remove(index)"]
    CHECK_BOUNDS_E["index >= 0 && index < list.size()?"]
    REMOVE_E["i_search_ymd_choice_list.remove(index)"]
    CHECK_BOUNDS_F["index >= 0 && index < list.size()?"]
    REMOVE_F["i_ymd_sta_list.remove(index)"]
    CHECK_BOUNDS_G["index >= 0 && index < list.size()?"]
    REMOVE_G["i_ymd_end_list.remove(index)"]
    CHECK_BOUNDS_H["index >= 0 && index < list.size()?"]
    REMOVE_H["i_shonin_ymd_sta_list.remove(index)"]
    CHECK_BOUNDS_I["index >= 0 && index < list.size()?"]
    REMOVE_I["i_shonin_ymd_end_list.remove(index)"]
    CHECK_BOUNDS_J["index >= 0 && index < list.size()?"]
    REMOVE_J["search_rslt_list_list.remove(index)"]
    CHECK_BOUNDS_K["index >= 0 && index < list.size()?"]
    REMOVE_K["l_kiki_kei_div_list.remove(index)"]
    CHECK_BOUNDS_L["index >= 0 && index < list.size()?"]
    REMOVE_L["search_rslt_list_csv_list.remove(index)"]
    CHECK_BOUNDS_M["index >= 0 && index < list.size()?"]
    REMOVE_M["kiki_kei_div_cd_list_list.remove(index)"]
    CHECK_BOUNDS_N["index >= 0 && index < list.size()?"]
    REMOVE_N["kiki_kei_div_nm_list_list.remove(index)"]
    CHECK_BOUNDS_O["index >= 0 && index < list.size()?"]
    REMOVE_O["SEARCH_RSLT_LIST_SELECTED_list.remove(index)"]

    NO_OP["No operation - silently ignored"]
    END_NODE(["Return / End"])

    START --> CHECK_NULL
    CHECK_NULL -- "null" --> END_NODE
    CHECK_NULL -- "not null" --> STARTS_SLASH
    STARTS_SLASH["key starts with '//'"] --> DELEGATE
    DELEGATE --> END_NODE
    STARTS_SLASH -- "false" --> DISPATCH
    DISPATCH --> BRANCH_A
    BRANCH_A --> CHECK_BOUNDS_A
    CHECK_BOUNDS_A -- "true" --> REMOVE_A --> END_NODE
    CHECK_BOUNDS_A -- "false" --> END_NODE

    DISPATCH --> BRANCH_B
    BRANCH_B --> CHECK_BOUNDS_B
    CHECK_BOUNDS_B -- "true" --> REMOVE_B --> END_NODE
    CHECK_BOUNDS_B -- "false" --> END_NODE

    DISPATCH --> BRANCH_C
    BRANCH_C --> CHECK_BOUNDS_C
    CHECK_BOUNDS_C -- "true" --> REMOVE_C --> END_NODE
    CHECK_BOUNDS_C -- "false" --> END_NODE

    DISPATCH --> BRANCH_D
    BRANCH_D --> CHECK_BOUNDS_D
    CHECK_BOUNDS_D -- "true" --> REMOVE_D --> END_NODE
    CHECK_BOUNDS_D -- "false" --> END_NODE

    DISPATCH --> BRANCH_E
    BRANCH_E --> CHECK_BOUNDS_E
    CHECK_BOUNDS_E -- "true" --> REMOVE_E --> END_NODE
    CHECK_BOUNDS_E -- "false" --> END_NODE

    DISPATCH --> BRANCH_F
    BRANCH_F --> CHECK_BOUNDS_F
    CHECK_BOUNDS_F -- "true" --> REMOVE_F --> END_NODE
    CHECK_BOUNDS_F -- "false" --> END_NODE

    DISPATCH --> BRANCH_G
    BRANCH_G --> CHECK_BOUNDS_G
    CHECK_BOUNDS_G -- "true" --> REMOVE_G --> END_NODE
    CHECK_BOUNDS_G -- "false" --> END_NODE

    DISPATCH --> BRANCH_H
    BRANCH_H --> CHECK_BOUNDS_H
    CHECK_BOUNDS_H -- "true" --> REMOVE_H --> END_NODE
    CHECK_BOUNDS_H -- "false" --> END_NODE

    DISPATCH --> BRANCH_I
    BRANCH_I --> CHECK_BOUNDS_I
    CHECK_BOUNDS_I -- "true" --> REMOVE_I --> END_NODE
    CHECK_BOUNDS_I -- "false" --> END_NODE

    DISPATCH --> BRANCH_J
    BRANCH_J --> CHECK_BOUNDS_J
    CHECK_BOUNDS_J -- "true" --> REMOVE_J --> END_NODE
    CHECK_BOUNDS_J -- "false" --> END_NODE

    DISPATCH --> BRANCH_K
    BRANCH_K --> CHECK_BOUNDS_K
    CHECK_BOUNDS_K -- "true" --> REMOVE_K --> END_NODE
    CHECK_BOUNDS_K -- "false" --> END_NODE

    DISPATCH --> BRANCH_L
    BRANCH_L --> CHECK_BOUNDS_L
    CHECK_BOUNDS_L -- "true" --> REMOVE_L --> END_NODE
    CHECK_BOUNDS_L -- "false" --> END_NODE

    DISPATCH --> BRANCH_M
    BRANCH_M --> CHECK_BOUNDS_M
    CHECK_BOUNDS_M -- "true" --> REMOVE_M --> END_NODE
    CHECK_BOUNDS_M -- "false" --> END_NODE

    DISPATCH --> BRANCH_N
    BRANCH_N --> CHECK_BOUNDS_N
    CHECK_BOUNDS_N -- "true" --> REMOVE_N --> END_NODE
    CHECK_BOUNDS_N -- "false" --> END_NODE

    DISPATCH --> BRANCH_O
    BRANCH_O --> CHECK_BOUNDS_O
    CHECK_BOUNDS_O -- "true" --> REMOVE_O --> END_NODE
    CHECK_BOUNDS_O -- "false" --> END_NODE

    DISPATCH --> BRANCH_P
    BRANCH_P --> NO_OP
    NO_OP --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The business category label that identifies **which data list** the removal target belongs to. This is a human-readable Japanese string mapping to one of 15 list categories (e.g., "返品抽出条件" maps to return extraction conditions, "受入先" maps to receiver/recipient records). The value is case-sensitive and must match the exact label used by the calling screen component. |
| 2 | `index` | `int` | The zero-based position of the item to remove within the target list. If the index is out of range (negative or >= list size), the operation is silently ignored with no exception thrown. |

**Instance fields read by this method:**

| Field Name | Type | Business Description |
|------------|------|---------------------|
| `i_hmpin_chsht_joken_list` | `X33VDataTypeList` | List of return extraction conditions (DKW00301SF02 sub-screen, item ID: `i_hmpin_chsht_joken`) |
| `i_ukeire_sk_list` | `X33VDataTypeList` | List of receiver/recipient records (DKW00301SF01 sub-screen, item ID: `i_ukeire_sk`) |
| `i_hmpin_sbt_list` | `X33VDataTypeList` | List of return product types (DKW00301SF02 sub-screen, item ID: `i_hmpin_sbt`) |
| `i_mdl_no_list` | `X33VDataTypeList` | List of model numbers (DKW00301SF03 sub-screen, item ID: `i_mdl_no`) |
| `i_search_ymd_choice_list` | `X33VDataTypeList` | List of search date selections (DKW00301SF02 sub-screen, item ID: `i_search_ymd_choice`) |
| `i_ymd_sta_list` | `X33VDataTypeList` | List of date start values (DKW00301SF04 sub-screen, item ID: `i_ymd_sta`) |
| `i_ymd_end_list` | `X33VDataTypeList` | List of date end values (DKW00301SF04 sub-screen, item ID: `i_ymd_end`) |
| `i_shonin_ymd_sta_list` | `X33VDataTypeList` | List of approval date start values (DKW00301SF04 sub-screen, item ID: `i_shonin_ymd_sta`) |
| `i_shonin_ymd_end_list` | `X33VDataTypeList` | List of approval date end values (DKW00301SF04 sub-screen, item ID: `i_shonin_ymd_end`) |
| `search_rslt_list_list` | `X33VDataTypeList` | List of search results (DKW00301SF05 sub-screen, item ID: `search_rslt_list`) |
| `l_kiki_kei_div_list` | `X33VDataTypeList` | List of service categories (DKW00301SF02 sub-screen, item ID: `l_kiki_kei_div`) |
| `search_rslt_list_csv_list` | `X33VDataTypeList` | List of CSV export search results (DKW00301SF05 sub-screen, item ID: `search_rslt_list_csv`) |
| `kiki_kei_div_cd_list_list` | `X33VDataTypeList` | List of device contract category codes |
| `kiki_kei_div_nm_list_list` | `X33VDataTypeList` | List of device contract category names |
| `SEARCH_RSLT_LIST_SELECTED_list` | `X33VDataTypeList` | List of selected search results (DKW00301SF05 sub-screen, item ID: `SEARCH_RSLT_LIST_SELECTED`) |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| D | `super.removeElementFromListData` | (Base Class — DKW00301SF common data handling) | In-memory lists | When `key` starts with `"//"`, delegates to parent class to remove elements from common/shared information lists |
| D | `i_hmpin_chsht_joken_list.remove(index)` | DKW00301SFBean | In-memory list `i_hmpin_chsht_joken_list` | Removes a return extraction condition entry from the DKW00301SF02 sub-screen list |
| D | `i_ukeire_sk_list.remove(index)` | DKW00301SFBean | In-memory list `i_ukeire_sk_list` | Removes a receiver/recipient entry from the DKW00301SF01 sub-screen list |
| D | `i_hmpin_sbt_list.remove(index)` | DKW00301SFBean | In-memory list `i_hmpin_sbt_list` | Removes a return product type entry from the DKW00301SF02 sub-screen list |
| D | `i_mdl_no_list.remove(index)` | DKW00301SFBean | In-memory list `i_mdl_no_list` | Removes a model number entry from the DKW00301SF03 sub-screen list |
| D | `i_search_ymd_choice_list.remove(index)` | DKW00301SFBean | In-memory list `i_search_ymd_choice_list` | Removes a search date selection entry from the DKW00301SF02 sub-screen list |
| D | `i_ymd_sta_list.remove(index)` | DKW00301SFBean | In-memory list `i_ymd_sta_list` | Removes a date start value entry from the DKW00301SF04 sub-screen list |
| D | `i_ymd_end_list.remove(index)` | DKW00301SFBean | In-memory list `i_ymd_end_list` | Removes a date end value entry from the DKW00301SF04 sub-screen list |
| D | `i_shonin_ymd_sta_list.remove(index)` | DKW00301SFBean | In-memory list `i_shonin_ymd_sta_list` | Removes an approval date start value entry from the DKW00301SF04 sub-screen list |
| D | `i_shonin_ymd_end_list.remove(index)` | DKW00301SFBean | In-memory list `i_shonin_ymd_end_list` | Removes an approval date end value entry from the DKW00301SF04 sub-screen list |
| D | `search_rslt_list_list.remove(index)` | DKW00301SFBean | In-memory list `search_rslt_list_list` | Removes a search result entry from the DKW00301SF05 sub-screen list |
| D | `l_kiki_kei_div_list.remove(index)` | DKW00301SFBean | In-memory list `l_kiki_kei_div_list` | Removes a service category entry from the DKW00301SF02 sub-screen list |
| D | `search_rslt_list_csv_list.remove(index)` | DKW00301SFBean | In-memory list `search_rslt_list_csv_list` | Removes a CSV export search result entry from the DKW00301SF05 sub-screen list |
| D | `kiki_kei_div_cd_list_list.remove(index)` | DKW00301SFBean | In-memory list `kiki_kei_div_cd_list_list` | Removes a device contract category code entry |
| D | `kiki_kei_div_nm_list_list.remove(index)` | DKW00301SFBean | In-memory list `kiki_kei_div_nm_list_list` | Removes a device contract category name entry |
| D | `SEARCH_RSLT_LIST_SELECTED_list.remove(index)` | DKW00301SFBean | In-memory list `SEARCH_RSLT_LIST_SELECTED_list` | Removes a selected search result entry from the DKW00301SF05 sub-screen list |

**CRUD Summary:** This method performs **exclusively Delete (D)** operations on **in-memory** `X33VDataTypeList` collections. It does **not** invoke any SC (Service Component) or CBS (business logic component) for database operations. It is a pure **view-state mutation** method.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Internal — DKW00301SFBean | `DKW00301SFBean.removeElementFromListData` (self-referenced by other methods in DKW00301SFBean) | In-memory list removal |
| 2 | DKW00301SF01DBean | `DKW00301SF01DBean.removeElementFromListData` (override, calls super) | Delegates to DKW00301SFBean |
| 3 | DKW00301SF02DBean | `DKW00301SF02DBean.removeElementFromListData` (override, calls super) | Delegates to DKW00301SFBean |
| 4 | DKW00301SF03DBean | `DKW00301SF03DBean.removeElementFromListData` (override, calls super) | Delegates to DKW00301SFBean |
| 5 | DKW00301SF05DBean | `DKW00301SF05DBean.removeElementFromListData` (override, calls super) | Delegates to DKW00301SFBean |

**Note:** The method is called by other internal methods within `DKW00301SFBean` and overridden in sub-screen beans (DKW00301SF01D–05D) which delegate back to the parent. It is primarily invoked by the screen's view-binding framework or internal logic when the user removes items from multi-select list controls across the different sub-screens of the DKW00301SF service contract inquiry flow.

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(key != null)` (L2865)

> Null-guard: if the key is null, the method returns immediately without any operation. This is a defensive check preventing NPE on the subsequent string operations.

| # | Type | Code |
|---|------|------|
| 1 | SET | — |
| 2 | RETURN | (implicit return — null key causes early exit) |

**Block 2** — [IF] `(key starts with "//")` — `[COMM_KEY_PREFIX="//"]` (L2868)

> Common information view list detection: if the key starts with `"//"`, it identifies this as a **shared/common information** list item (共通情報ビューのリスト). The actual list processing is delegated to the base class (`super.removeElementFromListData`), which handles common data lists shared across multiple screens at the infrastructure layer.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `super.removeElementFromListData(key, index)` // Delegate to parent class for common/shared info list removal [共通情報ビューのリストは基底クラスで処理] |

**Block 3** — [ELSE-IF] `(key.equals("返品抽出条件"))` — `[RETURN_EXTRACTION_CONDITIONS="返品抽出条件"]` (L2872)

> Return Extraction Conditions list: This corresponds to the **DKW00301SF02** sub-screen's multi-select item "返品抽出条件" (item ID: `i_hmpin_chsht_joken`). This list holds the return extraction filter criteria that the user has built up through the screen interaction.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_hmpin_chsht_joken_list.size()` // Range check [指定のインデックスが現在のリストの範囲内なら] |
| 2 | EXEC | `i_hmpin_chsht_joken_list.remove(index)` // Remove element at index from return extraction conditions list |

**Block 4** — [ELSE-IF] `(key.equals("受入先"))` — `[RECEIVER="受入先"]` (L2881)

> Receiver/Recipient list: This corresponds to the **DKW00301SF01** sub-screen's multi-select item "受入先" (item ID: `i_ukeire_sk`). This list holds the receiver/recipient records that have been accumulated during screen interaction.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_ukeire_sk_list.size()` // Range check [指定のインデックスが現在のリストの範囲内なら] |
| 2 | EXEC | `i_ukeire_sk_list.remove(index)` // Remove element at index from receiver list |

**Block 5** — [ELSE-IF] `(key.equals("返品種別"))` — `[RETURN_PRODUCT_TYPE="返品種別"]` (L2890)

> Return Product Type list: This corresponds to the **DKW00301SF02** sub-screen's multi-select item "返品種別" (item ID: `i_hmpin_sbt`). This list holds the return product type filter values.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_hmpin_sbt_list.size()` // Range check |
| 2 | EXEC | `i_hmpin_sbt_list.remove(index)` // Remove element at index from return product type list |

**Block 6** — [ELSE-IF] `(key.equals("型式番号"))` — `[MODEL_NUMBER="型式番号"]` (L2899)

> Model Number list: This corresponds to the **DKW00301SF03** sub-screen's multi-select item "型式番号" (item ID: `i_mdl_no`). This list holds the model number filter values the user has selected.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_mdl_no_list.size()` // Range check |
| 2 | EXEC | `i_mdl_no_list.remove(index)` // Remove element at index from model number list |

**Block 7** — [ELSE-IF] `(key.equals("検索日付選択"))` — `[SEARCH_DATE_SELECTION="検索日付選択"]` (L2908)

> Search Date Selection list: This corresponds to the **DKW00301SF02** sub-screen's multi-select item "検索日付選択" (item ID: `i_search_ymd_choice`). This list holds date selection options used for filtering search queries.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_search_ymd_choice_list.size()` // Range check |
| 2 | EXEC | `i_search_ymd_choice_list.remove(index)` // Remove element at index from search date selection list |

**Block 8** — [ELSE-IF] `(key.equals("日付F/R/O/M"))` — `[DATE_FROM_TO_OMIT="日付F/R/O/M"]` (L2917)

> Date From/To/Omit list: This corresponds to the **DKW00301SF04** sub-screen's multi-select item "日付F/R/O/M" (item ID: `i_ymd_sta`). This list holds the start date values for the date range filter (F/R/O/M = From/Range/Omit/M).

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_ymd_sta_list.size()` // Range check |
| 2 | EXEC | `i_ymd_sta_list.remove(index)` // Remove element at index from date start list |

**Block 9** — [ELSE-IF] `(key.equals("日付T/O/M"))` — `[DATE_TO_OMIT="日付T/O/M"]` (L2926)

> Date To/Omit list: This corresponds to the **DKW00301SF04** sub-screen's multi-select item "日付T/O/M" (item ID: `i_ymd_end`). This list holds the end date values for the date range filter (T/O/M = To/Omit/M).

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_ymd_end_list.size()` // Range check |
| 2 | EXEC | `i_ymd_end_list.remove(index)` // Remove element at index from date end list |

**Block 10** — [ELSE-IF] `(key.equals("承認日F/R/O/M"))` — `[APPROVAL_DATE_FROM_TO_OMIT="承認日F/R/O/M"]` (L2935)

> Approval Date From/To/Omit list: This corresponds to the **DKW00301SF04** sub-screen's multi-select item "承認日F/R/O/M" (item ID: `i_shonin_ymd_sta`). This list holds the start approval date values.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_shonin_ymd_sta_list.size()` // Range check |
| 2 | EXEC | `i_shonin_ymd_sta_list.remove(index)` // Remove element at index from approval date start list |

**Block 11** — [ELSE-IF] `(key.equals("承認日T/O/M"))` — `[APPROVAL_DATE_TO_OMIT="承認日T/O/M"]` (L2944)

> Approval Date To/Omit list: This corresponds to the **DKW00301SF04** sub-screen's multi-select item "承認日T/O/M" (item ID: `i_shonin_ymd_end`). This list holds the end approval date values.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < i_shonin_ymd_end_list.size()` // Range check |
| 2 | EXEC | `i_shonin_ymd_end_list.remove(index)` // Remove element at index from approval date end list |

**Block 12** — [ELSE-IF] `(key.equals("検索結果リスト"))` — `[SEARCH_RESULT_LIST="検索結果リスト"]` (L2953)

> Search Result List: This corresponds to the **DKW00301SF05** sub-screen's multi-select item "検索結果リスト" (item ID: `search_rslt_list`). This list holds the search result entries displayed to the user.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < search_rslt_list_list.size()` // Range check |
| 2 | EXEC | `search_rslt_list_list.remove(index)` // Remove element at index from search result list |

**Block 13** — [ELSE-IF] `(key.equals("提供種別リスト"))` — `[SERVICE_CATEGORY_LIST="提供種別リスト"]` (L2962)

> Service Category List: This corresponds to the **DKW00301SF02** sub-screen's multi-select item "提供種別リスト" (item ID: `l_kiki_kei_div`). This list holds the service category filter values.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < l_kiki_kei_div_list.size()` // Range check |
| 2 | EXEC | `l_kiki_kei_div_list.remove(index)` // Remove element at index from service category list |

**Block 14** — [ELSE-IF] `(key.equals("CSV用検索結果リスト"))` — `[CSV_SEARCH_RESULT_LIST="CSV用検索結果リスト"]` (L2971)

> CSV Export Search Result List: This corresponds to the **DKW00301SF05** sub-screen's multi-select item "CSV用検索結果リスト" (item ID: `search_rslt_list_csv`). This list holds the search results prepared for CSV export.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < search_rslt_list_csv_list.size()` // Range check |
| 2 | EXEC | `search_rslt_list_csv_list.remove(index)` // Remove element at index from CSV search result list |

**Block 15** — [ELSE-IF] `(key.equals("機器契約区分コード一覧"))` — `[DEVICE_CONTRACT_CATEGORY_CODE_LIST="機器契約区分コード一覧"]` (L2980)

> Device Contract Category Code List: This list holds the device contract category code values (item ID: `kiki_kei_div_cd_list`).

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < kiki_kei_div_cd_list_list.size()` // Range check |
| 2 | EXEC | `kiki_kei_div_cd_list_list.remove(index)` // Remove element at index from device contract category code list |

**Block 16** — [ELSE-IF] `(key.equals("機器契約区分名称一覧"))` — `[DEVICE_CONTRACT_CATEGORY_NAME_LIST="機器契約区分名称一覧"]` (L2989)

> Device Contract Category Name List: This list holds the device contract category name values (item ID: `kiki_kei_div_nm_list`).

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < kiki_kei_div_nm_list_list.size()` // Range check |
| 2 | EXEC | `kiki_kei_div_nm_list_list.remove(index)` // Remove element at index from device contract category name list |

**Block 17** — [ELSE-IF] `(key.equals("選択検索結果リスト"))` — `[SELECTED_SEARCH_RESULT_LIST="選択検索結果リスト"]` (L2998)

> Selected Search Result List: This corresponds to the **DKW00301SF05** sub-screen's multi-select item "選択検索結果リスト" (item ID: `SEARCH_RSLT_LIST_SELECTED`). This list holds the search results that have been specifically selected by the user.

| # | Type | Code |
|---|------|------|
| 1 | IF | `index >= 0 && index < SEARCH_RSLT_LIST_SELECTED_list.size()` // Range check |
| 2 | EXEC | `SEARCH_RSLT_LIST_SELECTED_list.remove(index)` // Remove element at index from selected search result list |

**Block 18** — [ELSE] `(no match)` (L3007)

> Default case: if the key does not match any of the 15 defined categories, the method performs **no operation**. This is a silent no-op — no exception is thrown, and no logging occurs. Unknown keys are simply ignored.

| # | Type | Code |
|---|------|------|
| 1 | — | (implicit: nothing executed for unrecognized key) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `返品抽出条件` | Field (Japanese) | Return Extraction Conditions — filter criteria used to extract records for products being returned. Part of the DKW00301SF02 sub-screen search filters. |
| `受入先` | Field (Japanese) | Receiver/Recipient — the party that receives the service or product. Stored in the DKW00301SF01 sub-screen's receiver list. |
| `返品種別` | Field (Japanese) | Return Product Type — the type/category of the returned product. Used in DKW00301SF02 sub-screen filter. |
| `型式番号` | Field (Japanese) | Model Number — the equipment/model identifier for a product. Managed in the DKW00301SF03 sub-screen. |
| `検索日付選択` | Field (Japanese) | Search Date Selection — date selection options for search queries. DKW00301SF02 sub-screen filter. |
| `日付F/R/O/M` | Field (Japanese) | Date From/Range/Omit/M — the start date values for a date range filter. The F/R/O/M indicates From/Range/Omit/Multi selection modes. DKW00301SF04 sub-screen. |
| `日付T/O/M` | Field (Japanese) | Date To/Omit/M — the end date values for a date range filter. T/O/M indicates To/Omit/Multi selection modes. DKW00301SF04 sub-screen. |
| `承認日F/R/O/M` | Field (Japanese) | Approval Date From/Range/Omit/M — the start date of the approval period filter. DKW00301SF04 sub-screen. |
| `承認日T/O/M` | Field (Japanese) | Approval Date To/Omit/M — the end date of the approval period filter. DKW00301SF04 sub-screen. |
| `検索結果リスト` | Field (Japanese) | Search Result List — the list of search results displayed to the user. DKW00301SF05 sub-screen. |
| `提供種別リスト` | Field (Japanese) | Service Category List — list of service types/categories available for selection. DKW00301SF02 sub-screen. |
| `CSV用検索結果リスト` | Field (Japanese) | CSV Export Search Result List — search results prepared for CSV file export. DKW00301SF05 sub-screen. |
| `機器契約区分コード一覧` | Field (Japanese) | Device Contract Category Code List — list of device contract category codes. |
| `機器契約区分名称一覧` | Field (Japanese) | Device Contract Category Name List — list of device contract category display names. |
| `選択検索結果リスト` | Field (Japanese) | Selected Search Result List — search results specifically selected by the user from the search result list. DKW00301SF05 sub-screen. |
| `i_hmpin_chsht_joken` | Item ID | Internal item ID for the Return Extraction Conditions list field (DKW00301SF02). |
| `i_ukeire_sk` | Item ID | Internal item ID for the Receiver/Recipient list field (DKW00301SF01). |
| `i_hmpin_sbt` | Item ID | Internal item ID for the Return Product Type list field (DKW00301SF02). |
| `i_mdl_no` | Item ID | Internal item ID for the Model Number list field (DKW00301SF03). |
| `i_search_ymd_choice` | Item ID | Internal item ID for the Search Date Selection list field (DKW00301SF02). |
| `i_ymd_sta` | Item ID | Internal item ID for the Date F/R/O/M (start date) list field (DKW00301SF04). |
| `i_ymd_end` | Item ID | Internal item ID for the Date T/O/M (end date) list field (DKW00301SF04). |
| `i_shonin_ymd_sta` | Item ID | Internal item ID for the Approval Date F/R/O/M (start date) list field (DKW00301SF04). |
| `i_shonin_ymd_end` | Item ID | Internal item ID for the Approval Date T/O/M (end date) list field (DKW00301SF04). |
| `search_rslt_list` | Item ID | Internal item ID for the Search Result List field (DKW00301SF05). |
| `l_kiki_kei_div` | Item ID | Internal item ID for the Service Category List field (DKW00301SF02). |
| `search_rslt_list_csv` | Item ID | Internal item ID for the CSV Export Search Result List field (DKW00301SF05). |
| `kiki_kei_div_cd_list` | Item ID | Internal item ID for the Device Contract Category Code List. |
| `kiki_kei_div_nm_list` | Item ID | Internal item ID for the Device Contract Category Name List. |
| `SEARCH_RSLT_LIST_SELECTED` | Item ID | Internal item ID for the Selected Search Result List field (DKW00301SF05). |
| `X33VDataTypeList` | Class | A typed collection class from the KOPTEC framework that stores `X33VDataTypeBeanInterface` objects. Used throughout the view bean layer to manage list data for screen controls. |
| `X33VDataTypeBeanInterface` | Interface | The interface implemented by data beans stored in `X33VDataTypeList`. Provides data loading methods like `loadModelData(String key, String field)`. |
| `X33SException` | Exception | The KOPTEC framework's checked exception class for view/controller layer exceptions. Declared by this method. |
| `DKW00301SF` | Module | A telecom service contract inquiry screen module. Part of the KOPTEC web framework for handling service orders and contract management. |
| `DKW00301SF01` | Sub-screen | First sub-screen of DKW00301SF — handles receiver/recipient (受入先) data entry. |
| `DKW00301SF02` | Sub-screen | Second sub-screen of DKW00301SF — handles return conditions, return product types, search date selections, and service categories. |
| `DKW00301SF03` | Sub-screen | Third sub-screen of DKW00301SF — handles model number (型式番号) data entry. |
| `DKW00301SF04` | Sub-screen | Fourth sub-screen of DKW00301SF — handles date range and approval date filters. |
| `DKW00301SF05` | Sub-screen | Fifth sub-screen of DKW00301SF — handles search results display, CSV export, and selected results. |
| `"//"` | Constant | Common information view list prefix. Keys starting with this pattern identify shared/common information lists that are managed at the base class (super) level rather than by this subclass. |
| F/R/O/M | Abbreviation | From / Range / Omit / Multi — date selection mode identifiers used in the screen's date filter UI. |
| T/O/M | Abbreviation | To / Omit / Multi — date selection mode identifiers used in the screen's date filter UI. |
