# Business Logic — KKW01021SF01DBean.listKoumokuIds() [11 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW01021SF.KKW01021SF01DBean` |
| Layer | Webview (UI data bean — View/Controller layer) |
| Module | `KKW01021SF` (Package: `eo.web.webview.KKW01021SF`) |

## 1. Role

### KKW01021SF01DBean.listKoumokuIds()

This method serves as a metadata provider for the data-type bean `KKW01021SF01DBean`. It returns a pre-ordered list of Japanese field labels (item names) that represent the columns or display fields used across the service contract management screens in the `KKW01021SF` module. The fields describe service contract records and include identification numbers, change tracking flags, change reasons, and application references.

The method implements a **static factory builder pattern** — it is a `public static` method that constructs and returns a new `ArrayList<String>` each time it is called, ensuring callers receive a fresh list without shared mutable state. It acts as a shared reference within the DBean hierarchy: other DBeans in the application (e.g., `FUW00912SF01DBean`, `FUW00926SF01DBean`, `FUW00959SF01DBean`) delegate to similar `listKoumokuIds()` methods when a dispatch key does not match their own specific fields. This method provides the canonical list for the KKW01021SF module's data view bean.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    STEP1["Create new ArrayList"]

    STEP1 --> STEP2["Add SSPID"]
    STEP2 --> STEP3["Add Service Contract Number"]
    STEP3 --> STEP4["Add Change Classification"]
    STEP4 --> STEP5["Add Change Reason Code"]
    STEP5 --> STEP6["Add Change Reason Memo"]
    STEP6 --> STEP7["Add Application Number"]
    STEP7 --> STEP8["Add Application Detail Number"]
    STEP8 --> END_NODE(["Return koumokuList"])
```

**Processing Description:**

The method follows a linear, sequential builder pattern with no conditional branches. It performs the following steps:

1. **Initialize** — creates a new `ArrayList<String>` instance (`koumokuList`).
2. **Seed fields** — appends 7 Japanese field name strings in a fixed order:
   - `SSPID` — a fixed uppercase identifier (likely a system field).
   - `サービス契約番号` (Service Contract Number) — the primary contract identifier.
   - `異動区分` (Change Classification) — indicates what type of change was made (e.g., addition, modification, cancellation).
   - `異動理由コード` (Change Reason Code) — a coded reason for the change.
   - `異動理由メモ` (Change Reason Memo) — a free-text memo explaining the change.
   - `申込番号` (Application Number) — the application/reference number tied to the change.
   - `申込明細番号` (Application Detail Number) — the line-item detail number within an application.
3. **Return** — returns the fully populated list.

There are no conditionals, loops, or external calls beyond `ArrayList` constructor and `ArrayList.add()`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This method takes no parameters. It is a static factory that returns the canonical field list for this DBean. |

**External State:**

| Source | Description |
|--------|-------------|
| None | This method reads no instance fields or external state. It is fully self-contained and stateless. |

## 4. CRUD Operations / Called Services

This method performs no database or service component operations. It only constructs a local list in memory.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| N/A | (none) | - | - | No CRUD or SC/CBS calls — purely an in-memory list builder with no side effects. |

**Method call analysis:**

| Call | Type | Description |
|------|------|-------------|
| `new ArrayList<String>()` | Constructor | Allocates a new mutable list to hold field name strings |
| `ArrayList.add(String)` | EXEC × 7 | Appends each Japanese field name in fixed display order |

## 5. Dependency Trace

**Callers:** This method is not directly invoked by any caller in the searched codebase. It is a `public static` method that can be referenced by name, but no cross-references were found. Similar `listKoumokuIds()` methods in other modules (e.g., `FUW00912SF01DBean`, `FUW00926SF01DBean`, `FUW00959SF01DBean`) follow the same pattern of returning field name lists for their respective DBeans.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Not found — not called by any traced code | — | — |

**Called from this method:**

| # | Called Method | SC Code | Entity / DB | Operation |
|---|--------------|---------|-------------|-----------|
| 1 | (none — in-memory only) | - | - | No external calls |

## 6. Per-Branch Detail Blocks

This method has no conditional branches, loops, or try-catch blocks. It is a flat linear sequence of statements.

---

**Block 1** — [LINEAR SEQUENCE] `(L486)`

> Creates and populates the field name list, then returns it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<String> koumokuList = new ArrayList<String>();` // Initialize empty list |
| 2 | CALL | `koumokuList.add("SSPID")` // Add system field identifier [L487] |
| 3 | CALL | `koumokuList.add("サービス契約番号")` // Add Service Contract Number [L488] |
| 4 | CALL | `koumokuList.add("異動区分")` // Add Change Classification [L489] |
| 5 | CALL | `koumokuList.add("異動理由コード")` // Add Change Reason Code [L490] |
| 6 | CALL | `koumokuList.add("異動理由メモ")` // Add Change Reason Memo [L491] |
| 7 | CALL | `koumokuList.add("申込番号")` // Add Application Number [L492] |
| 8 | CALL | `koumokuList.add("申込明細番号")` // Add Application Detail Number [L493] |
| 9 | RETURN | `return koumokuList;` // Return the 7-element list [L494] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `SSPID` | Field | System Service Provider ID — a fixed uppercase system-level identifier field |
| `サービス契約番号` (Service Contract Number) | Field | The primary identifier for a service contract in the telecom system |
| `異動区分` (Change Classification) | Field | Distinguishes the type of contract change (e.g., new addition, modification, cancellation) |
| `異動理由コード` (Change Reason Code) | Field | A coded value representing the reason for a contract change |
| `異動理由メモ` (Change Reason Memo) | Field | Free-text memo field providing additional context for the change reason |
| `申込番号` (Application Number) | Field | The application or request number associated with the service contract change |
| `申込明細番号` (Application Detail Number) | Field | The line-item detail number within an application, used for granular tracking |
| DBean | Acronym | Data Bean — a UI-facing bean that carries display metadata and field definitions for webview screens |
| KKW01021SF | Module | A webview module in the telecom service contract management domain (Japanese: KKW = 顧客契約 / Customer Contract) |
| Koumoku | Japanese | 項目 — field / item; used in method name to indicate "list of field names" |
| ArrayList | Technical | Java `java.util.ArrayList` — a resizable-array implementation of the List interface |
