# Business Logic — JKKAdchgCancelHakkoSODCC.editResultRP_EKK0341B002CBS() [186 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKAdchgCancelHakkoSODCC` |
| Layer | CC / Common Component (Custom Business Logic Component) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKAdchgCancelHakkoSODCC.editResultRP_EKK0341B002CBS()

This method is a **result mapping and error-handling component** for the "Device-Provisioned Service Contract List Inquiry (by Service Contract Number)" screen — specifically handling the **downward (result-side) mapping** after a Service Component (SC/CBS) call has been executed. In Japanese, the Javadoc states: "下りマッピング（機器提供サービス契約一覧照会（サービス契約番号））" (Downward mapping — Device-Provisioned Service Contract List Inquiry (by Service Contract Number)), and "サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします" (After executing the service component, map the required data into IRequestParameterReadWrite).

The method performs three core business responsibilities in sequence:

1. **Template extraction and list mapping**: Extracts `CAANMsg` template arrays from the SC return map, iterates over each service contract record, and maps 12 response fields (generation timestamp, service keys, codes, status, pricing) into a structured `ArrayList<HashMap>` working data structure.
2. **Error information retrieval**: Delegates to `editErrorInfo_EKK0341B002CBS` to extract error details from the SC response templates and return code, then applies error mapping via `TemplateErrorUtil.getErrorInfo`.
3. **Error-driven exception gating**: If any errors were detected (non-empty `errList`), throws a `CCException` wrapping an `SCCallException` containing the return code and SC status — implementing a fail-fast error-propagation pattern that prevents partially-processed results from reaching the UI layer.

The method acts as a **shared template result mapper** called by multiple screen CC methods (e.g., `getKktkSvcKeiList` in both `JKKAdchgHakkoSODCC` and `JKKHakkoSODCC`), following a standard pattern where screen-level business logic components delegate the SC result interpretation to a centralized, method-name-specific mapping routine. No conditional branches exist on service types or order content codes — the method processes all records uniformly.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editResultRP_EKK0341B002CBS"])

    START --> GET_MSG["Get CAANMsg templates from msgList TEMPLATE_LIST_KEY"]
    GET_MSG --> GET_PARENT["Get parentTemplate from templates 0"]
    GET_PARENT --> GET_RET["Get return_code from msgList RET_CD_INT_KEY"]
    GET_RET --> GET_DATA_MAP["Get dataMap from param getData HAKKOSODCCWORK"]

    GET_DATA_MAP --> MAP_NULL{dataMap null?}
    MAP_NULL -->|Yes| INIT_MAP["dataMap = new HashMap"]
    MAP_NULL -->|No| GET_TEMPLATE_ARRAY
    INIT_MAP --> SET_MAP["param setData HAKKOSODCCWORK dataMap"]
    SET_MAP --> GET_TEMPLATE_ARRAY

    GET_TEMPLATE_ARRAY["Get templateArray from parentTemplate getMsgData EKK0341B002CBSMSG1LIST"]
    GET_TEMPLATE_ARRAY --> GET_DATA_LIST["Get dataList from dataMap EKK0341B002CBSMsg1List"]
    GET_DATA_LIST --> DL_NULL{dataList null?}
    DL_NULL -->|Yes| INIT_DL["dataList = new ArrayList"]
    DL_NULL -->|No| TMPL_NULL
    INIT_DL --> TMPL_NULL

    TMPL_NULL{templateArray not null?}
    TMPL_NULL -->|Yes| LOOP_START["for each childTemplate in templateArray"]
    TMPL_NULL -->|No| SKIP_LOOP

    LOOP_START --> CHILD_GET["Get childTemplate templateArray i"]
    CHILD_GET --> SIZE_CHECK{i >= dataList size?}
    SIZE_CHECK -->|Yes| LIST_ADD["dataList add new HashMap"]
    SIZE_CHECK -->|No| GET_CHILD_MAP
    LIST_ADD --> GET_CHILD_MAP

    GET_CHILD_MAP["Get childMap dataList get i"]
    GET_CHILD_MAP --> MAP_FIELDS["Map 12 fields from childTemplate to childMap"]
    MAP_FIELDS --> LOOP_NEXT["i++"]
    LOOP_NEXT --> LOOP_END{loop complete?}
    LOOP_END -->|No| CHILD_GET
    LOOP_END -->|Yes| SAVE_LIST

    SKIP_LOOP["Skip field mapping if no templates"]
    SKIP_LOOP --> SAVE_LIST["dataMap put EKK0341B002CBSMsg1List dataList"]

    SAVE_LIST --> EDIT_ERR["editErrorInfo_EKK0341B002CBS param templates return_code"]
    EDIT_ERR --> GET_ERR_LIST["Get errList from param getControlMapData ERROR_INFO"]
    GET_ERR_LIST --> ERR_NULL{errList null?}
    ERR_NULL -->|Yes| INIT_ERR["errList = new ArrayList"]
    ERR_NULL -->|No| SET_ERR_INFO
    INIT_ERR --> SET_ERR_INFO["param setControlMapData ERROR_INFO TemplateErrorUtil getErrorInfo"]
    SET_ERR_INFO --> CHECK_ERR{errList not null AND not empty?}
    CHECK_ERR -->|No| RETURN_PARAM
    CHECK_ERR -->|Yes| THROW_ERR["throw CCException with SCCallException"]

    THROW_ERR --> END(["End with error"])
    RETURN_PARAM["return param"]
    RETURN_PARAM --> END2(["Return param to caller"])
```

**Branch summary:**
- **dataMap null -> Yes**: Initialize a new HashMap and store it back into `param` under key `HAKKOSODCCWORK`. (L15364-L15367)
- **dataList null -> Yes**: Initialize a new ArrayList for the result list. (L15377-L15379)
- **templateArray null -> Yes**: Skip the field-mapping loop entirely; result list stays empty or pre-existing. (L15381-L15509)
- **i >= dataList.size() -> Yes**: Append a new empty HashMap to `dataList` before reading. (L15389-L15391)
- **Field null checks**: For each of the 12 fields, if `childTemplate.isNull(fieldKey)` is true, put an empty string `""`; otherwise put `childTemplate.getString(fieldKey)`. (L15399-L15508)
- **errList not null AND not empty -> Yes**: Throw `CCException` wrapping `SCCallException` with return code and status. (L15522-L15523)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `msgList` | `Map<?, ?>` | The raw return map from a Service Component / CBS call (EKK0341B002CBS). Contains the `CAANMsg` template array (keyed by `TEMPLATE_LIST_KEY`) for message structure parsing, and the integer return code (keyed by `RET_CD_INT_KEY`). This carries the SC's response payload including any error information. |
| 2 | `param` | `IRequestParameterReadWrite` | The business data request/response parameter object that holds working maps, control maps, and screen data. Used both as input (to read the working map) and output (to write mapped results and error info back). |

**Instance/external state read:**
| Source | Description |
|--------|-------------|
| `JKKHakkoSODConstCC.HAKKOSODCCWORKMAP` | Constant `"HakkoSODCCWORK"` — the working map key used to store and retrieve intermediate service contract list data across methods. |
| `JCMConstants.TEMPLATE_LIST_KEY` | Constant for the key used to retrieve the `CAANMsg[]` template array from the SC return map. |
| `JCMConstants.RET_CD_INT_KEY` | Constant for the key used to retrieve the integer return code from the SC return map. |
| `EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST` | Constant key for the message list element within the CBS response structure. |
| `SCControlMapKeys.ERROR_INFO` | Constant key for the error information control map entry. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JCMConstants.TEMPLATE_LIST_KEY` | JCMConstants | - | Reads template list key constant for extracting CAANMsg array from SC return map |
| - | `JCMConstants.RET_CD_INT_KEY` | JCMConstants | - | Reads return code integer key constant from SC return map |
| - | `JKKHakkoSODConstCC.HAKKOSODCCWORKMAP` | JKKHakkoSODConstCC | - | Reads working map constant key `"HakkoSODCCWORK"` |
| R | `parentTemplate.getMsgData` | EKK0341B002CBS | - | Reads message data from parent CAANMsg template to extract result list |
| - | `childTemplate.isNull` | EKK0341B002CBSMsg1List | - | Checks null-ness of 12 response message fields |
| - | `childTemplate.getString` | EKK0341B002CBSMsg1List | - | Extracts string values for 12 response message fields |
| U | `JKKAdchgCancelHakkoSODCC.editErrorInfo_EKK0341B002CBS` | JKKAdchgCancelHakkoSODCC | - | Calls `editErrorInfo_EKK0341B002CBS` in `JKKAdchgCancelHakkoSODCC` to process SC error information and return code |
| - | `TemplateErrorUtil.getErrorInfo` | TemplateErrorUtil | - | Calls `getErrorInfo` in `TemplateErrorUtil` to extract error info from templates |
| - | `param.getData` | param | - | Reads working map data from IRequestParameterReadWrite |
| - | `param.setData` | param | - | Writes working map data to IRequestParameterReadWrite |
| - | `param.getControlMapData` | param | - | Reads control map data from IRequestParameterReadWrite |
| - | `param.setControlMapData` | param | - | Writes control map data to IRequestParameterReadWrite |
| - | `new CCException` | CCException | - | Constructs a CCException with SCCallException wrapper for error propagation |

**Detailed method-by-method analysis:**

This method performs **no direct database CRUD operations** itself. Instead, it is a **post-call result mapper** that processes data returned from the SC/CBS call `EKK0341B002CBS` (which was invoked by the caller -- see Section 5 -- and presumably queries the device-provisioned service contract tables).

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `parentTemplate.getMsgData` | EKK0341B002CBS | (inferred: device-provisioned service contract list tables) | Reads the CAANMsg result list from the CBS return, which was populated by querying device-provisioned service contract data |
| R | `childTemplate.getString` | EKK0341B002CBSMsg1List | (inferred: service contract detail records) | Reads 12 fields per record from the CBS response -- generation timestamp, service key numbers, service codes, device manufacturing numbers, pricing/group codes |
| U | `editErrorInfo_EKK0341B002CBS` | JKKAdchgCancelHakkoSODCC | - | Processes error info from SC/CBS response templates and return code |
| U | `TemplateErrorUtil.getErrorInfo` | TemplateErrorUtil | - | Aggregates error information from templates into error list |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CC:JKKAdchgHakkoSODCC | `getKktkSvcKeiList` -> `scCall.run` -> EKK0341B002CBS -> `editResultRP_EKK0341B002CBS` | EKK0341B002CBS result mapped |
| 2 | CC:JKKHakkoSODCC | `getKktkSvcKeiList` -> `scCall.run` -> EKK0341B002CBS -> `editResultRP_EKK0341B002CBS` | EKK0341B002CBS result mapped |
| 3 | CC:JKKAdchgCancelHakkoSODCC | `editResultRP_EKK0341B002CBS` is defined here (L15336) -- callers are commented out (L13631: `// editResultRP_EKK0341B002CBS(result, param)`) | Currently disabled/inactive in this class |

**Key findings on callers:**
- In `JKKAdchgHakkoSODCC` (line 16088): Called from `getKktkSvcKeiList()` after an `EKK0341B002SC` service call via `ServiceComponentRequestInvoker`.
- In `JKKHakkoSODCC` (line 23013): Called identically from `getKktkSvcKeiList()` after the same SC invocation.
- In the current class `JKKAdchgCancelHakkoSODCC` (line 13631): The call site is **commented out** (`//`), suggesting this method may be a copy-port or deprecated. The method is defined but not actively invoked in this class.

## 6. Per-Branch Detail Blocks

### Block 1 -- GET: Extract SC return data (L15339-L15344)

Extracts the `CAANMsg` template array and return code from the SC/CBS result map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY)` // Extract template array from SC return [-> JCMConstants.TEMPLATE_LIST_KEY] |
| 2 | SET | `parentTemplate = templates[0]` // Take the first (parent) template |
| 3 | SET | `templateArray = null` // Declare array for result message list |
| 4 | SET | `return_code = msgList.get(JCMConstants.RET_CD_INT_KEY)` // Extract integer return code [-> JCMConstants.RET_CD_INT_KEY] |

### Block 2 -- IF: Initialize working dataMap (L15357-L15368)

Retrieves (or creates) the working HashMap from `param` to hold the mapped results.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` // Read existing working map |
| 2 | **Block 2.1 -- IF: dataMap null -> Yes** | (L15359-L15367) |
| 2.1 | SET | `dataMap = new HashMap()` // Create new working map |
| 2.2 | EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap)` // Store it back |

### Block 3 -- GET: Extract result list (L15369-L15380)

Reads the CBS message list from the template and the result ArrayList from the working map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST)` // Get CBS result list [-> EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST] |
| 2 | SET | `dataList = (ArrayList)dataMap.get("EKK0341B002CBSMsg1List")` // Read existing result list |
| 3 | **Block 3.1 -- IF: dataList null -> Yes** | (L15377-L15379) |
| 3.1 | SET | `dataList = new ArrayList()` // Create new result list |

### Block 4 -- IF: templateArray not null -> Loop and map fields (L15381-L15509)

Iterates over each `CAANMsg` child template from the SC result, mapping 12 fields into the working data list. If the template array is null, this block is skipped entirely.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for (int i = 0; i < templateArray.length; i++)` |
| 2 | SET | `childTemplate = templateArray[i]` |
| 3 | **Block 4.1 -- IF: i >= dataList.size()? -> Yes** | (L15388-L15391) |
| 4.1 | SET | `dataList.add(new HashMap())` // Expand list with new entry |
| 5 | SET | `childMap = (HashMap)dataList.get(i)` |

### Block 4.2 -- IF: childTemplate.isNull(GENE_ADD_DTM) (L15395-L15404)

Maps the **generation registration datetime** field (generation timestamp for the device-provisioned service contract record).

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.GENE_ADD_DTM)` [-> "gene_add_dtm"] |
| 2 | SET | `childMap.put("gene_add_dtm", "")` // Null -> empty string |
| 3 | SET | `childMap.put("gene_add_dtm", childTemplate.getString(EKK0341B002CBSMsg1List.GENE_ADD_DTM))` // Present -> extract value |

### Block 4.3 -- IF: childTemplate.isNull(KKTK_SVC_KEI_NO) (L15408-L15417)

Maps the **device-provisioned service contract number** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO)` [-> "kktk_svc_kei_no"] |
| 2 | SET | `childMap.put("kktk_svc_kei_no", "")` |
| 3 | SET | `childMap.put("kktk_svc_kei_no", childTemplate.getString(...))` |

### Block 4.4 -- IF: childTemplate.isNull(KKTK_SVC_CD) (L15421-L15430)

Maps the **device-provisioned service code** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.KKTK_SVC_CD)` [-> "kktk_svc_cd"] |
| 2 | SET | `childMap.put("kktk_svc_cd", "")` |
| 3 | SET | `childMap.put("kktk_svc_cd", childTemplate.getString(...))` |

### Block 4.5 -- IF: childTemplate.isNull(KIKI_SEIZO_NO) (L15434-L15443)

Maps the **device manufacturing number** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO)` [-> "kiki_seizo_no"] |
| 2 | SET | `childMap.put("kiki_seizo_no", "")` |
| 3 | SET | `childMap.put("kiki_seizo_no", childTemplate.getString(...))` |

### Block 4.6 -- IF: childTemplate.isNull(SVC_KEI_NO) (L15447-L15456)

Maps the **service contract number** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.SVC_KEI_NO)` [-> "svc_kei_no"] |
| 2 | SET | `childMap.put("svc_kei_no", "")` |
| 3 | SET | `childMap.put("svc_kei_no", childTemplate.getString(...))` |

### Block 4.7 -- IF: childTemplate.isNull(SVC_KEI_UCWK_NO) (L15460-L15469)

Maps the **service contract detail work number** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.SVC_KEI_UCWK_NO)` [-> "svc_kei_ucwk_no"] |
| 2 | SET | `childMap.put("svc_kei_ucwk_no", "")` |
| 3 | SET | `childMap.put("svc_kei_ucwk_no", childTemplate.getString(...))` |

### Block 4.8 -- IF: childTemplate.isNull(KKTK_SVC_KEI_STAT) (L15473-L15482)

Maps the **device-provisioned service contract status** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT)` [-> "kktk_svc_kei_stat"] |
| 2 | SET | `childMap.put("kktk_svc_kei_stat", "")` |
| 3 | SET | `childMap.put("kktk_svc_kei_stat", childTemplate.getString(...))` |

### Block 4.9 -- IF: childTemplate.isNull(PRC_GRP_CD) (L15486-L15495)

Maps the **pricing group code** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.PRC_GRP_CD)` [-> "prc_grp_cd"] |
| 2 | SET | `childMap.put("prc_grp_cd", "")` |
| 3 | SET | `childMap.put("prc_grp_cd", childTemplate.getString(...))` |

### Block 4.10 -- IF: childTemplate.isNull(PCRS_CD) (L15499-L15508)

Maps the **pricing course code** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.PCRS_CD)` [-> "pcrs_cd"] |
| 2 | SET | `childMap.put("pcrs_cd", "")` |
| 3 | SET | `childMap.put("pcrs_cd", childTemplate.getString(...))` |

### Block 4.11 -- IF: childTemplate.isNull(PPLAN_CD) (L15504-L15511)

Maps the **pricing plan code** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.PPLAN_CD)` [-> "pplan_cd"] |
| 2 | SET | `childMap.put("pplan_cd", "")` |
| 3 | SET | `childMap.put("pplan_cd", childTemplate.getString(...))` |

### Block 4.12 -- IF: childTemplate.isNull(TAKNKIKI_MODEL_CD) (L15513-L15520)

Maps the **indoor device model code** field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `childTemplate.isNull(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD)` [-> "taknkiki_model_cd"] |
| 2 | SET | `childMap.put("taknkiki_model_cd", "")` |
| 3 | SET | `childMap.put("taknkiki_model_cd", childTemplate.getString(...))` |

### Block 5 -- SET: Save result list back to working map (L15510)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("EKK0341B002CBSMsg1List", dataList)` // Store completed result list |

### Block 6 -- CALL: Process error information (L15514-L15516)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editErrorInfo_EKK0341B002CBS(param, templates, (Integer)return_code)` // Delegate to error info handler |

### Block 7 -- GET: Retrieve error list (L15519-L15524)

| # | Type | Code |
|---|------|------|
| 1 | SET | `errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO)` // Read error list |
| 2 | **Block 7.1 -- IF: errList null -> Yes** | (L15520-L15522) |
| 7.1 | SET | `errList = new ArrayList<Object>()` |
| 3 | EXEC | `param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))` // Apply error mapping |
| 4 | **Block 7.2 -- IF: errList not null AND not empty -> Yes** | (L15526-L15528) |
| 7.2 | THROW | `throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0341B002CBSMsg.STATUS)))` // Fail-fast error propagation |

### Block 8 -- RETURN: Return processed param (L15530)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `gene_add_dtm` | Field | Generation registration datetime -- timestamp when the device-provisioned service contract record was first created in the system |
| `kktk_svc_kei_no` | Field | Device-provisioned service contract number -- the unique identifier for a device-provisioned service contract line item (KKTK = 機器提供, device-provisioned) |
| `kktk_svc_cd` | Field | Device-provisioned service code -- code classifying the type of device-provisioned service (e.g., FTTH, Wi-Fi, mail service) |
| `kiki_seizo_no` | Field | Device manufacturing number -- serial number of the physical equipment/device provided to the customer |
| `svc_kei_no` | Field | Service contract number -- the overarching service contract identifier to which this line item belongs |
| `svc_kei_ucwk_no` | Field | Service contract detail work number -- internal tracking ID for service contract line item processing |
| `kktk_svc_kei_stat` | Field | Device-provisioned service contract status -- current state of the service contract (e.g., active, suspended, cancelled) |
| `prc_grp_cd` | Field | Pricing group code -- groups service contracts for billing/categorization purposes |
| `pcrs_cd` | Field | Pricing course code -- identifies the specific pricing tier or course assigned to the service |
| `pplan_cd` | Field | Pricing plan code -- identifies the subscription plan (e.g., Wi-Fi unlimited plan) associated with the service |
| `taknkiki_model_cd` | Field | Indoor device model code -- code identifying the type of indoor equipment (e.g., ONT/ONU model for FTTH) |
| `TEMPLATE_LIST_KEY` | Constant | Key in the SC return map for retrieving the CAANMsg[] template array (from JCMConstants) |
| `RET_CD_INT_KEY` | Constant | Key in the SC return map for retrieving the integer return code (from JCMConstants) |
| `HAKKOSODCCWORKMAP` | Constant | Working map key `"HakkoSODCCWORK"` -- shared intermediate data store between CC methods for SOD issuance workflow |
| `EKK0341B002CBS` | CBS Code | Service Component / CBS for "Device-Provisioned Service Contract List Inquiry (by Service Contract Number)" -- the backend call that this method maps results from |
| `EKK0341B002CBSMSG1LIST` | Constant | Message list key for the result record array within the EKK0341B002CBS response |
| `CAANMsg` | Class | Fujitsu's message template class -- provides `isNull()`, `getString()`, and `getInt()` for safe extraction of message fields |
| `IRequestParameterReadWrite` | Interface | Business data request/response parameter interface -- holds working maps, control maps, and screen data for bidirectional communication between layers |
| `SCControlMapKeys.ERROR_INFO` | Constant | Key for error information control map data in the parameter object |
| `CCException` | Class | Custom Component Exception -- wraps business-level exceptions for propagation to screen layer |
| `SCCallException` | Class | Service Component Call Exception -- wraps SC-level error information including return code and status |
| `TemplateErrorUtil.getErrorInfo` | Method | Utility method that extracts and aggregates error information from SC response templates into an error list |
| `editErrorInfo_EKK0341B002CBS` | Method | Internal helper that processes SC/CBS return code and templates to determine error state |
| SOD | Acronym | Service Order Data -- telecom order fulfillment entity representing a service change/cancellation order |
| FTTH | Business term | Fiber To The Home -- fiber-optic broadband internet service offered by K-Opticom |
| KKTK | Abbreviation | 機器提供 (Ki-teki) -- Device-Provisioned, indicating services where equipment is supplied to the customer |
| EKK | Abbreviation | Screen/module prefix code -- EKK prefix denotes device-provisioned service contract related screens (e.g., EKK0341) |
| CBS | Abbreviation | Custom Business Service -- backend service component in Fujitsu's K-Opticom system architecture |
| SC | Abbreviation | Service Component -- a reusable business logic component in the K-Opticom architecture |
