# Business Logic — KKW00128SF01DBean.listKoumokuIds() [29 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA16601SF.KKW00128SF01DBean` |
| Layer | Bean / View Data (Webview data holder within `eo.web.webview` package) |
| Module | `KKA16601SF` (Package: `eo.web.webview.KKA16601SF`) |

## 1. Role

### KKW00128SF01DBean.listKoumokuIds()

This method serves as the **data-type bean metadata provider** for the KKA16601SF screen module — it returns a predefined, ordered list of field name identifiers (項目名) that the web view layer uses to render table columns, form fields, or dropdown choices for the service contract change/disposition screen. The field names are written in Japanese and cover the full set of data points displayed for a single service contract line item: service contract number, disposition classification and reason, optional service contract number, application reference numbers, specific IT item metadata, pop-up mode indicator, service code and pricing hierarchy codes (group, course, plan), pre-change snapshots of service and pricing codes, discount auto-application exclusion flag, and external system code.

The method implements a **static factory pattern** — it requires no instance state or external dependencies, returning a freshly constructed `ArrayList<String>` each time. It is a **shared utility** consumed by the parent bean class `KKW00128SFBean` (via delegation) and by any derived DBean subclasses, enabling consistent column ordering across the screen's data table rendering pipeline. There are no conditional branches or external calls; the method's sole responsibility is to enumerate all displayable fields in a fixed order that matches the UI's expected presentation sequence.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["listKoumokuIds()"])
    STEP1["Initialize: koumokuList = new ArrayList<String>()"]
    STEP2["Add: SSSID"]
    STEP3["Add: サービス契約番号"]
    STEP4["Add: 異動区分"]
    STEP5["Add: 異動理由コード"]
    STEP6["Add: 異動理由メモ"]
    STEP7["Add: オプションサービス契約番号"]
    STEP8["Add: 処理区分"]
    STEP9["Add: 申請番号"]
    STEP10["Add: 申請明細番号"]
    STEP11["Add: 特定IT項目名"]
    STEP12["Add: 特定IT項目値"]
    STEP13["Add: ポップアップモード"]
    STEP14["Add: 異動区分選択画面遷移パターン"]
    STEP15["Add: サービスコード"]
    STEP16["Add: 料金グループコード"]
    STEP17["Add: 料金コースコード"]
    STEP18["Add: 料金プランコード"]
    STEP19["Add: 変更前サービスコード"]
    STEP20["Add: 変更前料金グループコード"]
    STEP21["Add: 変更前料金コースコード"]
    STEP22["Add: 変更前料金プランコード"]
    STEP23["Add: 割引自動適用対象外フラグ"]
    STEP24["Add: 外部システムコード (ANK-2693-00-00 ADD)"]
    END_RETURN["Return: koumokuList"]

    START --> STEP1
    STEP1 --> STEP2
    STEP2 --> STEP3
    STEP3 --> STEP4
    STEP4 --> STEP5
    STEP5 --> STEP6
    STEP6 --> STEP7
    STEP7 --> STEP8
    STEP8 --> STEP9
    STEP9 --> STEP10
    STEP10 --> STEP11
    STEP11 --> STEP12
    STEP12 --> STEP13
    STEP13 --> STEP14
    STEP14 --> STEP15
    STEP15 --> STEP16
    STEP16 --> STEP17
    STEP17 --> STEP18
    STEP18 --> STEP19
    STEP19 --> STEP20
    STEP20 --> STEP21
    STEP21 --> STEP22
    STEP22 --> STEP23
    STEP23 --> STEP24
    STEP24 --> END_RETURN
```

**Processing description:**
1. **Initialization** — Create a new empty `ArrayList<String>` called `koumokuList`.
2. **Sequential population** — Add 23 Japanese-language field identifiers to the list in fixed order, each representing a display column for the service contract data table.
3. **Return** — Return the populated `ArrayList<String>`.

No conditional logic, no external method calls, no branching. The method is a straight-line sequential append sequence.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This method takes no parameters. It is a stateless factory that returns the full field definition list regardless of context. |

The method does not read any instance fields or depend on external state. It is a pure constant-producing function.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | (none) | - | - | This method performs no data access. It only constructs and returns an in-memory list of display field identifiers. No SC (Service Component) or CBS (Common Business Service) calls are made. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW00128SF | `KKW00128SFBean.listKoumokuIds(String key)` -> delegate based on key prefix -> `KKW00128SF01DBean.listKoumokuIds()` | None (metadata-only, no DB access) |
| 2 | Screen:KKW00128SF | `KKW00128SFBean` constructor / field initialization -> references `KKW00128SF01DBean.listKoumokuIds()` | None |

**Notes:**
- The parent bean `KKW00128SFBean` contains a `listKoumokuIds(String key)` method that dispatches based on the `key` prefix. When `key` starts with `/` and has length > 2, it delegates to `super.listKoumokuIds(key)`. Otherwise, the `KKW00128SF01DBean.listKoumokuIds()` static method is called directly by derived DBeans (e.g., `KKW00128SF02DBean`, `KKW00128SF03DBean`, etc.) for metadata retrieval.
- The broader `KKA16601SF` module contains 25+ DBean subclasses, many of which define their own `listKoumokuIds()` method following the same pattern.

## 6. Per-Branch Detail Blocks

> This method has no conditional branches. The entire method body is a single sequential block.

**Block 1** — [SEQUENCE] `(no condition)` (L1283)

> Initialize and populate the field name list. The method executes exactly these 23 add operations in order, with no branching.

| # | Type | Code |
|---|------|------|
| 1 | SET | `koumokuList = new ArrayList<String>()` // Initialize empty list for field identifiers |
| 2 | EXEC | `koumokuList.add("SSSID")` // SSSID — System Screen ID (unique screen identifier) |
| 3 | EXEC | `koumokuList.add("サービス契約番号")` // Service Contract Number — the primary contract identifier |
| 4 | EXEC | `koumokuList.add("異動区分")` // Disposition Classification — indicates change type (add, modify, cancel) |
| 5 | EXEC | `koumokuList.add("異動理由コード")` // Disposition Reason Code — codes why a change was made |
| 6 | EXEC | `koumokuList.add("異動理由メモ")` // Disposition Reason Memo — free-text reason for the change |
| 7 | EXEC | `koumokuList.add("オプションサービス契約番号")` // Optional Service Contract Number — linked optional service contract ID |
| 8 | EXEC | `koumokuList.add("処理区分")` // Processing Classification — operational processing type |
| 9 | EXEC | `koumokuList.add("申請番号")` // Application Number — reference number for the change application |
| 10 | EXEC | `koumokuList.add("申請明細番号")` // Application Detail Number — sub-line item reference within the application |
| 11 | EXEC | `koumokuList.add("特定IT項目名")` // Specific IT Item Name — custom IT field identifier for the line item |
| 12 | EXEC | `koumokuList.add("特定IT項目値")` // Specific IT Item Value — the value assigned to the specific IT item |
| 13 | EXEC | `koumokuList.add("ポップアップモード")` // Pop-up Mode — flag indicating whether a pop-up dialog is active |
| 14 | EXEC | `koumokuList.add("異動区分選択画面遷移パターン")` // Disposition Classification Selection Screen Transition Pattern — navigation mode for the disposition classification choice screen |
| 15 | EXEC | `koumokuList.add("サービスコード")` // Service Code — the current service type code (e.g., FTTH, Mail, ENUM) |
| 16 | EXEC | `koumokuList.add("料金グループコード")` // Pricing Group Code — groups services into billing tiers |
| 17 | EXEC | `koumokuList.add("料金コースコード")` // Pricing Course Code — specific pricing course within a group |
| 18 | EXEC | `koumokuList.add("料金プランコード")` // Pricing Plan Code — the specific billing plan |
| 19 | EXEC | `koumokuList.add("変更前サービスコード")` // Pre-Change Service Code — the service code before modification (for audit/change tracking) |
| 20 | EXEC | `koumokuList.add("変更前料金グループコード")` // Pre-Change Pricing Group Code — pricing group before modification |
| 21 | EXEC | `koumokuList.add("変更前料金コースコード")` // Pre-Change Pricing Course Code — pricing course before modification |
| 22 | EXEC | `koumokuList.add("変更前料金プランコード")` // Pre-Change Pricing Plan Code — pricing plan before modification |
| 23 | EXEC | `koumokuList.add("割引自動適用対象外フラグ")` // Discount Auto-Application Exclusion Flag — whether automatic discounts are excluded |
| 24 | EXEC | `koumokuList.add("外部システムコード")` // External System Code — identifier for external/integrated system (Added: 2015/12/11 ANK-2693-00-00) |

**Block 2** — [RETURN] `(end of method)` (L1310)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return koumokuList` // Return the complete ordered list of 23 field identifiers |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `SSSID` | Field | Screen System ID — internal identifier for the web screen (KKA16601SF) |
| サービス契約番号 | Field | Service Contract Number — the unique identifier for a customer's service contract |
| 異動区分 | Field | Disposition Classification — indicates the type of change applied (e.g., add new, modify, cancel) |
| 異動理由コード | Field | Disposition Reason Code — a coded reason explaining why the disposition was applied |
| 異動理由メモ | Field | Disposition Reason Memo — free-text memo field for additional disposition context |
| オプションサービス契約番号 | Field | Optional Service Contract Number — the contract number of an associated optional/ancillary service |
| 処理区分 | Field | Processing Classification — categorizes the operational processing step or stage |
| 申請番号 | Field | Application Number — the reference number assigned to a change application request |
| 申請明細番号 | Field | Application Detail Number — the sub-line-item reference within a multi-line application |
| 特定IT項目名 | Field | Specific IT Item Name — a customizable IT field label for tracking service-line details |
| 特定IT項目値 | Field | Specific IT Item Value — the value assigned to a specific IT item field |
| ポップアップモード | Field | Pop-up Mode — a flag indicating whether the screen was invoked via a pop-up dialog |
| 異動区分選択画面遷移パターン | Field | Disposition Classification Selection Screen Transition Pattern — navigation parameter determining how the user arrived at this screen from the disposition classification selection |
| サービスコード | Field | Service Code — the code identifying the type of telecom service (e.g., FTTH, Mail) |
| 料金グループコード | Field | Pricing Group Code — groups services into broader billing categories |
| 料金コースコード | Field | Pricing Course Code — a specific pricing course within a pricing group |
| 料金プランコード | Field | Pricing Plan Code — the specific tariff/billing plan assigned to the service line |
| 変更前サービスコード | Field | Pre-Change Service Code — the service code as it existed before a modification (audit trail) |
| 変更前料金グループコード | Field | Pre-Change Pricing Group Code — the pricing group code before modification |
| 変更前料金コースコード | Field | Pre-Change Pricing Course Code — the pricing course code before modification |
| 変更前料金プランコード | Field | Pre-Change Pricing Plan Code — the pricing plan code before modification |
| 割引自動適用対象外フラグ | Field | Discount Auto-Application Exclusion Flag — flag indicating whether automatic discounts should be excluded from this line item |
| 外部システムコード | Field | External System Code — identifier for an integrated external system (added in 2015/12/11 ANK-2693-00-00) |
| KKA16601SF | Screen | Screen module code — the service contract change/disposition information screen |
| KKW00128SF01DBean | Class | Data transfer bean class — holds display data for the KKA16601SF module's first data panel |
| DBean | Acronym | Data Bean — a view-layer data holder class in the web framework |
| ANK-2693-00-00 | Change ID | Change ticket/issue number — the development task ID for adding the external system code field |
