# Business Logic — KKW00129SF01DBean.storeModelData() [119 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA17701SF.KKW00129SF01DBean` |
| Layer | Web / View Bean (Web layer — data binding class for a web screen) |
| Module | `KKA17701SF` (Package: `eo.web.webview.KKA17701SF`) |

## 1. Role

### KKW00129SF01DBean.storeModelData()

This method implements a **key-based routing dispatcher** for populating view bean properties in the KKA17701SF screen module. Its business purpose is to store incoming data into the correct field of a view bean based on a string key and subkey pair — essentially a reflection-free alternative to Java Beans' `java.beans.SimpleBean` or `IndexedBean` pattern. The method handles six distinct categories of view data: individual code value fields (`cd_div_cd`), code type name fields (`cd_div_nm`), selected index fields (`select_index`), and three array-list backed properties for initial-setting code lists, code lists, and code name lists.

The method implements the **dispatch/routing design pattern** — it branches on the value of the `key` parameter (which carries Japanese domain labels like "コード値" for Code Value) and then further dispatches on the `subkey` parameter (which carries field attribute labels like "value", "enable", or "state"). For single-value properties, it calls direct setter methods on the bean. For array-list-backed properties, it extracts an index from the key string, validates it, casts the list element to `X33VDataTypeStringBean`, and recursively delegates to that element's own `storeModelData` method.

Its role in the larger system is as a **shared view bean utility** called by many screen logic classes to bulk-populate bean properties from model data (typically from a form model or data transfer object). The same pattern appears across the codebase in multiple DBean classes (as evidenced by multiple self-callers), making it a standard mechanism for data binding in this web MVC framework.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["storeModelData key, subkey, in_value, isSetAsString"])
    CHECK_NULL["key or subkey is null?"]
    EARLY_RET(["Return early - no processing"])
    FIND_SEP["Extract separator index via key.indexOf('/')"]
    COND_KEY["Check key equals 'コード値' (Code Value)?"]
    CD_VAL_BRANCH["Handle Code Value"]
    SUBKEY_VAL["subkey equals 'value'?"]
    SET_CD_VAL["setCd_div_cd_value(in_value)"]
    SUBKEY_ENABLE["subkey equals 'enable'?"]
    SET_CD_ENABLE["setCd_div_cd_enabled(in_value)"]
    SUBKEY_STATE["subkey equals 'state'?"]
    SET_CD_STATE["setCd_div_cd_state(in_value)"]
    COND_TYPE_NM["Check key equals 'コードタイプ名称' (Code Type Name)?"]
    CD_TYPE_NM_VAL["subkey equals 'value'?"]
    SET_NM_VAL["setCd_div_nm_value(in_value)"]
    SET_NM_ENABLE["setCd_div_nm_enabled(in_value)"]
    SET_NM_STATE["setCd_div_nm_state(in_value)"]
    COND_SELECT["Check key equals '選択インデックス' (Selected Index)?"]
    SET_SEL_VAL["setSelect_index_value(in_value)"]
    SET_SEL_ENABLE["setSelect_index_enabled(in_value)"]
    SET_SEL_STATE["setSelect_index_state(in_value)"]
    COND_INIT_CD["Check key equals '初期設定コードリスト' (Initial Setting Code List)?"]
    EXTRACT_INIT_IDX["Extract index from key substring after '/'"]
    PARSE_INIT_IDX["Try Integer.valueOf(key) parse"]
    PARSE_INIT_FAIL["NumberFormatException - tmpIndexInt = null"]
    CHECK_INIT_IDX["tmpIndexInt != null AND valid range?"]
    STORE_INIT_CD["Cast to X33VDataTypeStringBean and call storeModelData(subkey, in_value)"]
    COND_CD_LIST["Check key equals 'コードリスト' (Code List)?"]
    EXTRACT_CD_IDX["Extract index from key substring after '/'"]
    PARSE_CD_IDX["Try Integer.valueOf(key) parse"]
    PARSE_CD_FAIL["NumberFormatException - tmpIndexInt = null"]
    CHECK_CD_IDX["tmpIndexInt != null AND valid range?"]
    STORE_CD["Cast to X33VDataTypeStringBean and call storeModelData(subkey, in_value)"]
    COND_CD_NM_LIST["Check key equals 'コード名リスト' (Code Name List)?"]
    EXTRACT_CD_NM_IDX["Extract index from key substring after '/'"]
    PARSE_CD_NM_IDX["Try Integer.valueOf(key) parse"]
    PARSE_CD_NM_FAIL["NumberFormatException - tmpIndexInt = null"]
    CHECK_CD_NM_IDX["tmpIndexInt != null AND valid range?"]
    STORE_CD_NM["Cast to X33VDataTypeStringBean and call storeModelData(subkey, in_value)"]
    END_NODE(["Return void"])

    START --> CHECK_NULL
    CHECK_NULL -->|true| EARLY_RET
    CHECK_NULL -->|false| FIND_SEP
    FIND_SEP --> COND_KEY
    COND_KEY -->|true| CD_VAL_BRANCH
    CD_VAL_BRANCH --> SUBKEY_VAL
    SUBKEY_VAL -->|true| SET_CD_VAL
    SUBKEY_VAL -->|false| SUBKEY_ENABLE
    SUBKEY_ENABLE -->|true| SET_CD_ENABLE
    SUBKEY_ENABLE -->|false| SUBKEY_STATE
    SUBKEY_STATE -->|true| SET_CD_STATE
    SUBKEY_STATE -->|false| END_NODE
    COND_KEY -->|false| COND_TYPE_NM
    COND_TYPE_NM -->|true| CD_TYPE_NM_VAL
    CD_TYPE_NM_VAL -->|true| SET_NM_VAL
    CD_TYPE_NM_VAL -->|false| SET_NM_ENABLE
    SET_NM_ENABLE --> SET_NM_STATE
    SET_NM_STATE -->|true| SET_NM_STATE
    SET_NM_STATE -->|false| END_NODE
    COND_TYPE_NM -->|false| COND_SELECT
    COND_SELECT -->|true| SET_SEL_VAL
    SET_SEL_VAL -->|true| SET_SEL_VAL
    SET_SEL_VAL -->|false| SET_SEL_ENABLE
    SET_SEL_ENABLE -->|true| SET_SEL_ENABLE
    SET_SEL_ENABLE -->|false| SET_SEL_STATE
    SET_SEL_STATE -->|true| SET_SEL_STATE
    SET_SEL_STATE -->|false| END_NODE
    COND_SELECT -->|false| COND_INIT_CD
    COND_INIT_CD -->|true| EXTRACT_INIT_IDX
    EXTRACT_INIT_IDX --> PARSE_INIT_IDX
    PARSE_INIT_IDX -->|success| CHECK_INIT_IDX
    PARSE_INIT_IDX -->|catch| PARSE_INIT_FAIL
    PARSE_INIT_FAIL --> END_NODE
    CHECK_INIT_IDX -->|true| STORE_INIT_CD
    CHECK_INIT_IDX -->|false| END_NODE
    COND_INIT_CD -->|false| COND_CD_LIST
    COND_CD_LIST -->|true| EXTRACT_CD_IDX
    EXTRACT_CD_IDX --> PARSE_CD_IDX
    PARSE_CD_IDX -->|success| CHECK_CD_IDX
    PARSE_CD_IDX -->|catch| PARSE_CD_FAIL
    PARSE_CD_FAIL --> END_NODE
    CHECK_CD_IDX -->|true| STORE_CD
    CHECK_CD_IDX -->|false| END_NODE
    COND_CD_LIST -->|false| COND_CD_NM_LIST
    COND_CD_NM_LIST -->|true| EXTRACT_CD_NM_IDX
    EXTRACT_CD_NM_IDX --> PARSE_CD_NM_IDX
    PARSE_CD_NM_IDX -->|success| CHECK_CD_NM_IDX
    PARSE_CD_NM_IDX -->|catch| PARSE_CD_NM_FAIL
    PARSE_CD_NM_FAIL --> END_NODE
    CHECK_CD_NM_IDX -->|true| STORE_CD_NM
    CHECK_CD_NM_IDX -->|false| END_NODE
    STORE_INIT_CD --> END_NODE
    STORE_CD --> END_NODE
    STORE_CD_NM --> END_NODE
    SET_CD_VAL --> END_NODE
    SET_CD_ENABLE --> END_NODE
    SET_CD_STATE --> END_NODE
    SET_NM_VAL --> END_NODE
    SET_NM_ENABLE --> END_NODE
    SET_NM_STATE --> END_NODE
    SET_SEL_VAL --> END_NODE
    SET_SEL_ENABLE --> END_NODE
    SET_SEL_STATE --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | The business field identifier — a Japanese-domain label that determines which property category to route to. Values include "コード値" (Code Value) for the code value field, "コードタイプ名称" (Code Type Name) for the code type name, "選択インデックス" (Selected Index) for the selection index, "初期設定コードリスト" (Initial Setting Code List) for the initial setting code list, "コードリスト" (Code List) for the code list, and "コード名リスト" (Code Name List) for the code name list. For list types, the key also contains a `/` separator followed by an array index (e.g., "初期設定コードリスト/0"). |
| 2 | `subkey` | `String` | The field attribute identifier within a category — "value" for the data value, "enable" for the field enabled/disabled flag, or "state" for the field state (e.g., read-only, required). Case-insensitive comparison is used, so "Value", "VALUE", "value" all match. |
| 3 | `in_value` | `Object` | The data to store — its type depends on the target property. For "value" subkey, it is a String. For "enable" subkey, it is a Boolean. For "state" subkey, it is a String. When routing to a list element's `storeModelData`, only `subkey` and `in_value` are forwarded (the key is discarded). |
| 4 | `isSetAsString` | `boolean` | Flag indicating whether to set a String-type value into a Long-type property's Value field. This flag is passed through to the recursive `storeModelData` call on list elements (X33VDataTypeStringBean), where the target bean may handle Long-type properties that need string coercion. In the top-level method, this parameter is not directly used. |

**Instance fields read by this method:**

| Field | Type | Usage |
|-------|------|-------|
| `default_cd_list_list` | `List<X33VDataTypeStringBean>` | The initial setting code list — accessed by index to route data to the correct list element |
| `cd_div_cd_list_list` | `List<X33VDataTypeStringBean>` | The code list — accessed by index to route data to the correct list element |
| `cd_div_nm_list_list` | `List<X33VDataTypeStringBean>` | The code name list — accessed by index to route data to the correct list element |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKAdEditCC.substring` | JKKAdEditCC | - | Calls `substring` in `JKKAdEditCC` |
| - | `JKKAdEdit.substring` | JKKAdEdit | - | Calls `substring` in `JKKAdEdit` |
| - | `JKKTelnoInfoAddMapperCC.substring` | JKKTelnoInfoAddMapperCC | - | Calls `substring` in `JKKTelnoInfoAddMapperCC` |
| - | `JDKejbStringEdit.substring` | JDKejbStringEdit | - | Calls `substring` in `JDKejbStringEdit` |
| - | `KKW00129SF01DBean.setCd_div_cd_enabled` | KKW00129SF01DBean | - | Calls `setCd_div_cd_enabled` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setCd_div_cd_state` | KKW00129SF01DBean | - | Calls `setCd_div_cd_state` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setCd_div_cd_value` | KKW00129SF01DBean | - | Calls `setCd_div_cd_value` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setCd_div_nm_enabled` | KKW00129SF01DBean | - | Calls `setCd_div_nm_enabled` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setCd_div_nm_state` | KKW00129SF01DBean | - | Calls `setCd_div_nm_state` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setCd_div_nm_value` | KKW00129SF01DBean | - | Calls `setCd_div_nm_value` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setSelect_index_enabled` | KKW00129SF01DBean | - | Calls `setSelect_index_enabled` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setSelect_index_state` | KKW00129SF01DBean | - | Calls `setSelect_index_state` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.setSelect_index_value` | KKW00129SF01DBean | - | Calls `setSelect_index_value` in `KKW00129SF01DBean` |
| - | `KKW00129SF01DBean.storeModelData` | KKW00129SF01DBean | - | Calls `storeModelData` in `KKW00129SF01DBean` |

This method performs **no direct database operations** (no C/R/U/D against entity or DB tables). It is a pure in-memory data routing method that writes to bean properties. All calls are either setter methods on the bean itself (U — Update bean state) or recursive `storeModelData` calls on list elements, which themselves delegate to setters. No service components (SC) or business service components (CBS) are invoked.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-], `substring` [-], `storeModelData` [-], `storeModelData` [-], `storeModelData` [-], `substring` [-], `substring` [-], `substring` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `KKW00129SF01DBean.storeModelData()` | `KKW00129SF01DBean.storeModelData` (self-caller) | `storeModelData` [U] Bean property setter |
| 2 | Method: `KKW00129SF01DBean.storeModelData()` | `KKW00129SF01DBean.storeModelData` (self-caller) | `storeModelData` [U] Bean property setter |

All callers are internal within `KKW00129SF01DBean` itself — the method is invoked by multiple overloaded `storeModelData` methods in the same class (e.g., when populating list elements recursively). No screen (KKSV*) or batch (KKBV*) entry points were found within the call graph. The terminal operations are all in-memory bean property setters — no database or SC boundary crossings.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null check) `(key == null || subkey == null)` (L411)

Guard clause: if either the field identifier (`key`) or the subkey attribute (`subkey`) is null, processing is aborted immediately. No data is stored.

| # | Type | Code |
|---|------|------|
| 1 | SET | `separaterPoint = key.indexOf("/")` // Extract position of first "/" separator [-> `indexOf("/")`] |

**Block 2** — IF-ELSE-IF CHAIN — Key dispatch to property category (L416–L526)

The core routing logic: six mutually exclusive branches based on the Japanese-domain `key` value.

---

**Block 2.1** — IF `[key.equals("コード値") (Code Value)]` (L418)

Route to the `cd_div_cd` (code division code) property group.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // Store the code value itself |
| 2 | SET | `setCd_div_cd_value((String)in_value)` // Cast and set the code value |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // Enable/disable flag for cd_div_cd |
| 4 | SET | `setCd_div_cd_enabled((Boolean)in_value)` // Cast to Boolean and set enabled state [-> `setCd_div_cd_enabled`] |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // State flag for cd_div_cd |
| 6 | SET | `setCd_div_cd_state((String)in_value)` // Cast and set state [-> `setCd_div_cd_state`] |
| 7 | RETURN | (falls through to next else-if chain) |

**Block 2.2** — ELSE-IF `[key.equals("コードタイプ名称") (Code Type Name)]` (L434)

Route to the `cd_div_nm` (code division name) property group.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // Store the code type name |
| 2 | SET | `setCd_div_nm_value((String)in_value)` // Cast and set the code type name |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // Enable/disable flag for cd_div_nm |
| 4 | SET | `setCd_div_nm_enabled((Boolean)in_value)` // Cast to Boolean and set enabled state [-> `setCd_div_nm_enabled`] |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // State flag for cd_div_nm |
| 6 | SET | `setCd_div_nm_state((String)in_value)` // Cast and set state [-> `setCd_div_nm_state`] |
| 7 | RETURN | (falls through to next else-if chain) |

**Block 2.3** — ELSE-IF `[key.equals("選択インデックス") (Selected Index)]` (L448)

Route to the `select_index` property group — the selected index of a dropdown or selection component.

| # | Type | Code |
|---|------|------|
| 1 | IF | `subkey.equalsIgnoreCase("value")` // Store the selected index value |
| 2 | SET | `setSelect_index_value((String)in_value)` // Cast and set the selected index |
| 3 | ELSE-IF | `subkey.equalsIgnoreCase("enable")` // Enable/disable flag for select_index |
| 4 | SET | `setSelect_index_enabled((Boolean)in_value)` // Cast to Boolean and set enabled state [-> `setSelect_index_enabled`] |
| 5 | ELSE-IF | `subkey.equalsIgnoreCase("state")` // State flag for select_index |
| 6 | SET | `setSelect_index_state((String)in_value)` // Cast and set state [-> `setSelect_index_state`] |
| 7 | RETURN | (falls through to next else-if chain) |

**Block 2.4** — ELSE-IF `[key.equals("初期設定コードリスト") (Initial Setting Code List)]` (L462)

Route to a list-backed property. The key contains a "/" separator followed by an index (e.g., "初期設定コードリスト/0"). Extracts the index, validates it, and recursively delegates to the list element's `storeModelData`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1)` // Extract the substring after "/" to get the index [-> `substring()`] |
| 2 | SET | `tmpIndexInt = null` // Initialize local variable for index parsing |
| 3 | TRY | `tmpIndexInt = Integer.valueOf(key)` // Attempt to parse index as integer |
| 4 | CATCH | `catch(NumberFormatException e)` // Index is not a valid number string |
| 5 | SET | `tmpIndexInt = null` // Discard — remain null on parse failure |
| 6 | IF | `tmpIndexInt != null` // Index was successfully parsed |
| 7 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unbox Integer to int primitive |
| 8 | IF | `tmpIndex >= 0 && tmpIndex < default_cd_list_list.size()` // Index within valid range |
| 9 | CALL | `((X33VDataTypeStringBean)default_cd_list_list.get(tmpIndex)).storeModelData(subkey, in_value)` // Cast list element and recursively store [-> list type: `X33VDataTypeStringBean`, nested call] |
| 10 | RETURN | (falls through — note: comment says cast may be X33VDataTypeLongBean or X33VDataTypeBooleanBean for Long-type properties) |

**Block 2.5** — ELSE-IF `[key.equals("コードリスト") (Code List)]` (L489)

Route to the `cd_div_cd_list` (code division code list) — another list-backed property with the same index-extraction-and-delegate pattern.

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after "/" to get the index [-> `substring()`] |
| 2 | SET | `tmpIndexInt = null` // Initialize local variable for index parsing |
| 3 | TRY | `tmpIndexInt = Integer.valueOf(key)` // Attempt to parse index as integer |
| 4 | CATCH | `catch(NumberFormatException e)` // Index is not a valid number string |
| 5 | SET | `tmpIndexInt = null` // Discard — remain null on parse failure |
| 6 | IF | `tmpIndexInt != null` // Index was successfully parsed |
| 7 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unbox Integer to int primitive |
| 8 | IF | `tmpIndex >= 0 && tmpIndex < cd_div_cd_list_list.size()` // Index within valid range |
| 9 | CALL | `((X33VDataTypeStringBean)cd_div_cd_list_list.get(tmpIndex)).storeModelData(subkey, in_value)` // Cast list element and recursively store [-> list type: `X33VDataTypeStringBean`] |
| 10 | RETURN | (falls through — same comment note as Block 2.4) |

**Block 2.6** — ELSE-IF `[key.equals("コード名リスト") (Code Name List)]` (L515)

Route to the `cd_div_nm_list` (code division name list) — the third and final list-backed property with the same index-extraction-and-delegate pattern.

| # | Type | Code |
|---|------|------|
| 1 | SET | `key = key.substring(separaterPoint + 1)` // Extract substring after "/" to get the index [-> `substring()`] |
| 2 | SET | `tmpIndexInt = null` // Initialize local variable for index parsing |
| 3 | TRY | `tmpIndexInt = Integer.valueOf(key)` // Attempt to parse index as integer |
| 4 | CATCH | `catch(NumberFormatException e)` // Index is not a valid number string |
| 5 | SET | `tmpIndexInt = null` // Discard — remain null on parse failure |
| 6 | IF | `tmpIndexInt != null` // Index was successfully parsed |
| 7 | SET | `tmpIndex = tmpIndexInt.intValue()` // Unbox Integer to int primitive |
| 8 | IF | `tmpIndex >= 0 && tmpIndex < cd_div_nm_list_list.size()` // Index within valid range |
| 9 | CALL | `((X33VDataTypeStringBean)cd_div_nm_list_list.get(tmpIndex)).storeModelData(subkey, in_value)` // Cast list element and recursively store [-> list type: `X33VDataTypeStringBean`] |
| 10 | RETURN | (method end — implicit void return) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `コード値` (Code Value) | Field label | Japanese-domain key for the code value property (`cd_div_cd`) — represents a classification code (e.g., service type code) |
| `cd_div_cd` | Field | Code Division Code — the internal field ID for storing code value data |
| `コードタイプ名称` (Code Type Name) | Field label | Japanese-domain key for the code type name property (`cd_div_nm`) — represents the human-readable label of a code type |
| `cd_div_nm` | Field | Code Division Name — the internal field ID for storing code type name data |
| `選択インデックス` (Selected Index) | Field label | Japanese-domain key for the selected index property — represents the selected position in a dropdown or selection component |
| `select_index` | Field | Selected Index — the internal field ID for storing the user's selection position |
| `初期設定コードリスト` (Initial Setting Code List) | Field label | Japanese-domain key for the initial setting code list — a list of code values with initial configuration settings |
| `default_cd_list_list` | Field | Initial Setting Code List — the internal list field (ArrayList of `X33VDataTypeStringBean`) for storing initial-setting code entries |
| `コードリスト` (Code List) | Field label | Japanese-domain key for the code list — a list of code values for a specific category |
| `cd_div_cd_list_list` | Field | Code Division Code List — the internal list field for storing code value entries in list form |
| `コード名リスト` (Code Name List) | Field label | Japanese-domain key for the code name list — a list of code type name values |
| `cd_div_nm_list_list` | Field | Code Division Name List — the internal list field for storing code name entries in list form |
| `value` | Subkey | Data value attribute — stores the actual business data |
| `enable` | Subkey | Field enabled/disabled flag — controls whether the field is editable |
| `state` | Subkey | Field state attribute — stores the UI state (e.g., read-only, required) |
| `storeModelData` | Method | Model data storage — the standard pattern for populating view bean properties from model data in this framework |
| `X33VDataTypeStringBean` | Class | Data type view bean for String-type fields — a generic typed value holder that supports `storeModelData` delegation |
| `isSetAsString` | Parameter | Boolean flag for Long-type coercion — when true, indicates that a String value should be set into a Long-type property's Value field |
| DBean | Pattern abbreviation | Data Bean — a view-layer bean class that holds form/display data for a screen, typically paired with a Logic class |
| KKA17701SF | Module | Screen module identifier — the source code module containing this view bean |
