# Business Logic — JKKCancelSvcWribCC.editRetEKK1391C040() [131 LOC]

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

## 1. Role

### JKKCancelSvcWribCC.editRetEKK1391C040()

This method performs the post-mapping processing for data extraction item settings completion in the discount service cancellation domain. It is invoked as part of the cancellation workflow ("キャンセル確認" — cancellation confirmation) when an operator submits a request to cancel a discount service contract. The method acts as a **data routing and mapping dispatcher**, extracting structured response fields from a template message returned by a backend CBS (EKK1391C040CBSMsg), then populating both the display data map and a work area map for cross-screen state sharing. It handles a fixed set of cancellation confirmation fields: generation timestamp, data extraction status, registration timestamp, registration operator account, update timestamp, update operator account, and invalidation flag. Once all fields are mapped, it delegates error information assembly to `editErrInfoEKK1391C040`, then attaches control map error data via `TemplateErrorUtil`. Its role in the larger system is that of a **shared CC (Common Component) transformer** — it is called by the cancellation service entry point `cancelSvcWrib()`, which in turn is invoked from operation screens (e.g., KKSV0082, KKSV0568) that handle service cancellation confirmations. The method implements a **delegation pattern** for error handling and a **template-based extraction pattern** for data mapping.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> GET_TEMPLATES["Get templates from msgList"]
    GET_TEMPLATES --> GET_RETURN_CODE["Get returnCode from msgList"]
    GET_RETURN_CODE --> GET_WORK_AREA["Get workMap from param"]

    GET_WORK_AREA --> WORK_NULL_CHECK{workMap == null}
    WORK_NULL_CHECK -->|Yes| INIT_WORK_MAP["Initialize workMap"]
    WORK_NULL_CHECK -->|No| GET_WORK_DATA
    INIT_WORK_MAP --> SET_WORK_MAP["Set workMap into param"]
    SET_WORK_MAP --> GET_WORK_DATA["Get workDataMap from workMap"]

    GET_WORK_DATA --> WORK_DATA_NULL_CHECK{workDataMap == null}
    WORK_DATA_NULL_CHECK -->|Yes| INIT_WORK_DATA["Initialize workDataMap"]
    WORK_DATA_NULL_CHECK -->|No| GET_DATA_MAP
    INIT_WORK_DATA --> SET_WORK_DATA["Put workDataMap into workMap"]
    SET_WORK_DATA --> GET_DATA_MAP["Get dataMap from param"]

    GET_DATA_MAP --> DATA_NULL_CHECK{dataMap == null}
    DATA_NULL_CHECK -->|Yes| INIT_DATA["Initialize dataMap"]
    DATA_NULL_CHECK -->|No| MAP_GENE
    INIT_DATA --> SET_DATA["Set dataMap into param"]
    SET_DATA --> MAP_GENE["Map gene_add_dtm"]

    MAP_GENE --> GENE_NULL{isNull}
    GENE_NULL -->|Yes| GENE_EMPTY["dataMap empty string"]
    GENE_NULL -->|No| GENE_MAP["dataMap and workDataMap set"]
    GENE_EMPTY --> MAP_DCHSKMST["Map dchskmst_stat"]
    GENE_MAP --> MAP_DCHSKMST

    MAP_DCHSKMST --> DCHSKMST_NULL{isNull}
    DCHSKMST_NULL -->|Yes| DCHSKMST_EMPTY["dataMap empty string"]
    DCHSKMST_NULL -->|No| DCHSKMST_MAP["dataMap and workDataMap set"]
    DCHSKMST_EMPTY --> MAP_ADD_DTM["Map add_dtm"]
    DCHSKMST_MAP --> MAP_ADD_DTM

    MAP_ADD_DTM --> ADD_DTM_NULL{isNull}
    ADD_DTM_NULL -->|Yes| ADD_DTM_EMPTY["dataMap empty string"]
    ADD_DTM_NULL -->|No| ADD_DTM_MAP["dataMap and workDataMap set"]
    ADD_DTM_EMPTY --> MAP_ADD_OPEACNT["Map add_opeacnt"]
    ADD_DTM_MAP --> MAP_ADD_OPEACNT

    MAP_ADD_OPEACNT --> ADD_OPEACNT_NULL{isNull}
    ADD_OPEACNT_NULL -->|Yes| ADD_OPEACNT_EMPTY["dataMap empty string"]
    ADD_OPEACNT_NULL -->|No| ADD_OPEACNT_MAP["dataMap and workDataMap set"]
    ADD_OPEACNT_EMPTY --> MAP_UPD_DTM["Map upd_dtm"]
    ADD_OPEACNT_MAP --> MAP_UPD_DTM

    MAP_UPD_DTM --> UPD_DTM_NULL{isNull}
    UPD_DTM_NULL -->|Yes| UPD_DTM_EMPTY["dataMap empty string"]
    UPD_DTM_NULL -->|No| UPD_DTM_MAP["dataMap and workDataMap set"]
    UPD_DTM_EMPTY --> MAP_UPD_OPEACNT["Map upd_opeacnt"]
    UPD_DTM_MAP --> SET_LAST_DTM["Set last update date via hanyoSvcKei loop"]
    SET_LAST_DTM --> MAP_UPD_OPEACNT

    MAP_UPD_OPEACNT --> UPD_OPEACNT_NULL{isNull}
    UPD_OPEACNT_NULL -->|Yes| UPD_OPEACNT_EMPTY["dataMap empty string"]
    UPD_OPEACNT_NULL -->|No| UPD_OPEACNT_MAP["dataMap and workDataMap set"]
    UPD_OPEACNT_EMPTY --> MAP_MK_FLG["Map mk_flg"]
    UPD_OPEACNT_MAP --> MAP_MK_FLG

    MAP_MK_FLG --> MK_FLG_NULL{isNull}
    MK_FLG_NULL -->|Yes| MK_FLG_EMPTY["dataMap empty string"]
    MK_FLG_NULL -->|No| MK_FLG_MAP["dataMap and workDataMap set"]
    MK_FLG_EMPTY --> SET_ERR_INFO["Set error info"]
    MK_FLG_MAP --> SET_ERR_INFO

    SET_ERR_INFO --> GET_ERR_LIST["Get errList from param"]
    GET_ERR_LIST --> ERR_LIST_NULL{errList == null}
    ERR_LIST_NULL -->|Yes| INIT_ERR_LIST["Initialize errList"]
    ERR_LIST_NULL -->|No| SET_CONTROL_MAP
    INIT_ERR_LIST --> SET_CONTROL_MAP["Set error info via TemplateErrorUtil"]

    SET_CONTROL_MAP --> RETURN["Return param"]
    RETURN --> END(["end"])
```

**CRITICAL — Constant Resolution:**

| Constant | Actual Value | Business Meaning |
|----------|-------------|------------------|
| `JCMConstants.TEMPLATE_LIST_KEY` | `"TEMPLATE_LIST_KEY"` | Key to retrieve the template message array from the response map |
| `JCMConstants.RET_CD_INT_KEY` | `"RET_CD_INT_KEY"` | Key to retrieve the return code (integer) from the response map |
| `CC_WORK_AREA_NAME_WRIB` | `"JKKCancelSvcWribCCWork"` | Work area name for the cancellation mapping work data |

The template message fields used from `EKK1391C040CBSMsg`:

| Constant | Field Name | Business Meaning |
|----------|-----------|------------------|
| `EKK1391C040CBSMsg.GENE_ADD_DTM` | `GENE_ADD_DTM` | Generation registration date/time — when the cancellation record was generated |
| `EKK1391C040CBSMsg.DCHSKMST_STAT` | `DCHSKMST_STAT` | Data extraction item setting status — current state of data extraction configuration |
| `EKK1391C040CBSMsg.ADD_DTM` | `ADD_DTM` | Registration date/time — when the contract was registered |
| `EKK1391C040CBSMsg.ADD_OPEACNT` | `ADD_OPEACNT` | Registration operator account — who registered the contract |
| `EKK1391C040CBSMsg.UPD_DTM` | `UPD_DTM` | Update date/time — when the contract was last updated |
| `EKK1391C040CBSMsg.UPD_OPEACNT` | `UPD_OPEACNT` | Update operator account — who last updated the contract |
| `EKK1391C040CBSMsg.MK_FLG` | `MK_FLG` | Invalidation flag — whether the service contract is marked as invalidated |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `msgList` | `Map<?, ?>` | Response message container returned from a CBS invocation. Holds the template message array (under `TEMPLATE_LIST_KEY`) containing extracted cancellation confirmation fields, and an integer return code (under `RET_CD_INT_KEY`) indicating CBS execution success or failure. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying screen state and mapping context. Provides work area access (`getMappingWorkArea` / `setMappingWorkArea`), data map access (`getData` / `setData` using the `fixedText` key), and control map access for error info management. |
| 3 | `fixedText` | `String` | Identifier key used to retrieve and store the data map within the `param` object. Acts as the screen/context key for this particular cancellation mapping data. |

**Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `hanyoSvcKei` | `HashMap<String, String>` | Service contract number to last update date/time mapping for cancellation target services. Used to set the last update date on each affected service contract when the update timestamp is available. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `EKK1391C040CBSMsg.isNull` (on template) | EKK1391C040CBS | Template fields: GENE_ADD_DTM, DCHSKMST_STAT, ADD_DTM, ADD_OPEACNT, UPD_DTM, UPD_OPEACNT, MK_FLG | Reads each field from the CBS response template message — 7 nullable field reads |
| R | `EKK1391C040CBSMsg.getString` (on template) | EKK1391C040CBS | Same template fields as above | Reads the actual string value from the template when the field is non-null — 7 reads |
| R | `JCMConstants.TEMPLATE_LIST_KEY` lookup | - | - | Retrieves the CAANMsg[] array from the msgList response map |
| R | `JCMConstants.RET_CD_INT_KEY` lookup | - | - | Retrieves the return code integer from the msgList response map |
| U | `param.getMappingWorkArea` / `setMappingWorkArea` | - | - | Accesses and initializes the work area mapping context |
| U | `param.getData` / `setData` | - | - | Retrieves and initializes the data map for display/processing |
| U | `JKKBpCommon.setLastDtmBySvcKeiNo` | - | Service contract table (KK_T_SVC* pattern) | Sets the last update date/time for each service contract number in the hanyoSvcKei iteration set |
| U | `editErrInfoEKK1391C040` | - | - | Delegates error info setting for the cancellation response |
| U | `TemplateErrorUtil.getErrorInfo` | - | - | Extracts error information from the template messages and error list for control map attachment |
| U | `param.setControlMapData` | - | - | Stores the assembled error info into the control map under `SCControlMapKeys.ERROR_INFO` |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `JKKCancelSvcWribCC.cancelSvcWrib()` | `cancelSvcWrib()` -> `editRetEKK1391C040(msgList, param, fixedText)` | `isNull [R] EKK1391C040CBS Msg`, `getString [R] EKK1391C040CBS Msg`, `setLastDtmBySvcKeiNo [U] Service Contract`, `editErrInfoEKK1391C040 [U] -`, `getErrorInfo [U] TemplateErrorUtil` |

**Screen entry points that invoke the caller:**

| Screen | Entry Point | Notes |
|--------|-------------|-------|
| KKSV0082 | `KKSV0082OPOperation` | Service contract cancellation operation screen — invokes `cancelSvcWrib()` via CBS invoker |
| KKSV0568 | `KKSV0568OPOperation` | Service contract cancellation confirmation operation screen — invokes `cancelSvcWrib()` via CBS invoker |

**Terminal operations reachable from this method (leaf operations):**

| Operation | Type | Source |
|-----------|------|--------|
| `isNull` | R | Template field null checks (7 fields from EKK1391C040CBSMsg) |
| `getString` | R | Template field value reads (7 fields from EKK1391C040CBSMsg) |
| `setLastDtmBySvcKeiNo` | U | Sets last update date/time per service contract number in work area |
| `editErrInfoEKK1391C040` | U | Internal error info assembly (delegated to private method in same class) |
| `getErrorInfo` | U | TemplateErrorUtil extracts error info from msgList for control map |

## 6. Per-Branch Detail Blocks

**Block 1** — [GET/INIT] `(Initialization of work data structures)` (L831)

Retrieves the template message array and return code from the response map, then initializes three nested maps (workMap, workDataMap, dataMap) with null checks, creating each as needed.

| # | Type | Code |
|---|------|------|
| 1 | GET | `templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY)` // Retrieve template array [-> CONSTANT: TEMPLATE_LIST_KEY] |
| 2 | GET | `template = templates[0]` // Use the first template |
| 3 | GET | `returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY)` // Retrieve return code [-> CONSTANT: RET_CD_INT_KEY] |
| 4 | GET | `workMap = param.getMappingWorkArea()` // Get work area mapping |
| 5 | IF | `workMap == null` |

**Block 1.1** — [IF] `(workMap == null) (L836)`

> If the work area map does not exist, create and register it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workMap = new HashMap()` |
| 2 | EXEC | `param.setMappingWorkArea(workMap)` // Register the initialized workMap |

**Block 1.2** — [GET/INIT] `(Get workDataMap — inner work area)` (L842)

Retrieves the cancellation-specific work data map (keyed by `CC_WORK_AREA_NAME_WRIB = "JKKCancelSvcWribCCWork"`), creating it if absent.

| # | Type | Code |
|---|------|------|
| 1 | GET | `workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_WRIB)` [-> CONSTANT: CC_WORK_AREA_NAME_WRIB = "JKKCancelSvcWribCCWork"] |
| 2 | IF | `workDataMap == null` |

**Block 1.2.1** — [IF] `(workDataMap == null) (L844)`

| # | Type | Code |
|---|------|------|
| 1 | SET | `workDataMap = new HashMap()` |
| 2 | EXEC | `workMap.put(CC_WORK_AREA_NAME_WRIB, workDataMap)` |

**Block 1.3** — [GET/INIT] `(Get dataMap — display data)` (L850)

Retrieves the data map associated with the `fixedText` key, creating it if absent.

| # | Type | Code |
|---|------|------|
| 1 | GET | `dataMap = (HashMap)param.getData(fixedText)` |
| 2 | IF | `dataMap == null` |

**Block 1.3.1** — [IF] `(dataMap == null) (L852)`

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap = new HashMap()` |
| 2 | EXEC | `param.setData(fixedText, dataMap)` |

---

**Block 2** — [IF/ELSE] `(Map gene_add_dtm — Generation registration date/time)` (L857)

Maps the "generation registration date/time" field. If the template field is null, stores an empty string; otherwise copies the value to both dataMap (display) and workDataMap (work area).

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.GENE_ADD_DTM)` |

**Block 2.1** — [IF — isNull=true] `(field is null)` (L858)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("gene_add_dtm", new String())` // Empty string for null field |

**Block 2.2** — [ELSE — isNull=false] `(field has value)` (L860)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("gene_add_dtm", template.getString(EKK1391C040CBSMsg.GENE_ADD_DTM))` |
| 2 | SET | `workDataMap.put("gene_add_dtm", template.getString(EKK1391C040CBSMsg.GENE_ADD_DTM))` |

---

**Block 3** — [IF/ELSE] `(Map dchskmst_stat — Data extraction item setting status)` (L865)

Maps the data extraction item setting status field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.DCHSKMST_STAT)` |

**Block 3.1** — [IF — isNull=true] (L866)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("dchskmst_stat", new String())` |

**Block 3.2** — [ELSE — isNull=false] (L868)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("dchskmst_stat", template.getString(EKK1391C040CBSMsg.DCHSKMST_STAT))` |
| 2 | SET | `workDataMap.put("dchskmst_stat", template.getString(EKK1391C040CBSMsg.DCHSKMST_STAT))` |

---

**Block 4** — [IF/ELSE] `(Map add_dtm — Registration date/time)` (L873)

Maps the "registration date/time" field — when the contract was originally registered.

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.ADD_DTM)` |

**Block 4.1** — [IF — isNull=true] (L874)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("add_dtm", new String())` |

**Block 4.2** — [ELSE — isNull=false] (L876)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("add_dtm", template.getString(EKK1391C040CBSMsg.ADD_DTM))` |
| 2 | SET | `workDataMap.put("add_dtm", template.getString(EKK1391C040CBSMsg.ADD_DTM))` |

---

**Block 5** — [IF/ELSE] `(Map add_opeacnt — Registration operator account)` (L881)

Maps the "registration operator account" — who performed the original registration.

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.ADD_OPEACNT)` |

**Block 5.1** — [IF — isNull=true] (L882)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("add_opeacnt", new String())` |

**Block 5.2** — [ELSE — isNull=false] (L884)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("add_opeacnt", template.getString(EKK1391C040CBSMsg.ADD_OPEACNT))` |
| 2 | SET | `workDataMap.put("add_opeacnt", template.getString(EKK1391C040CBSMsg.ADD_OPEACNT))` |

---

**Block 6** — [IF/ELSE] `(Map upd_dtm — Update date/time)` (L889)

Maps the "update date/time" field. When a value exists, it additionally iterates over `hanyoSvcKei` to set the last update date for each service contract number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.UPD_DTM)` |

**Block 6.1** — [IF — isNull=true] (L890)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("upd_dtm", new String())` |

**Block 6.2** — [ELSE — isNull=false] (L892)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("upd_dtm", template.getString(EKK1391C040CBSMsg.UPD_DTM))` |
| 2 | SET | `workDataMap.put("upd_dtm", template.getString(EKK1391C040CBSMsg.UPD_DTM))` |

**Block 6.2.1** — [FOR LOOP] `(Iterate hanyoSvcKei entries to set last update date per service contract)` (L896)

> Sets the last update date/time for each service contract number that was targeted by this cancellation operation. This ensures the work area tracks the actual last update timestamp per service contract line item.

| # | Type | Code |
|---|------|------|
| 1 | ITER | `iterator = hanyoSvcKei.entrySet().iterator()` // Iterate over service contract number -> lastDtm mapping |
| 2 | WHILE | `iterator.hasNext()` |
| 3 | SET | `mapEntry = iterator.next()` |
| 4 | CALL | `JKKBpCommon.setLastDtmBySvcKeiNo(param, mapEntry.getKey(), template.getString(EKK1391C040CBSMsg.UPD_DTM))` // Set last update date for this service contract number |

---

**Block 7** — [IF/ELSE] `(Map upd_opeacnt — Update operator account)` (L904)

Maps the "update operator account" — who last updated the contract.

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.UPD_OPEACNT)` |

**Block 7.1** — [IF — isNull=true] (L905)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("upd_opeacnt", new String())` |

**Block 7.2** — [ELSE — isNull=false] (L907)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("upd_opeacnt", template.getString(EKK1391C040CBSMsg.UPD_OPEACNT))` |
| 2 | SET | `workDataMap.put("upd_opeacnt", template.getString(EKK1391C040CBSMsg.UPD_OPEACNT))` |

---

**Block 8** — [IF/ELSE] `(Map mk_flg — Invalidation flag)` (L912)

Maps the "invalidation flag" — whether the service contract is marked as invalidated. This flag indicates if the cancellation has been processed.

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK1391C040CBSMsg.MK_FLG)` |

**Block 8.1** — [IF — isNull=true] (L913)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("mk_flg", new String())` |

**Block 8.2** — [ELSE — isNull=false] (L915)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("mk_flg", template.getString(EKK1391C040CBSMsg.MK_FLG))` |
| 2 | SET | `workDataMap.put("mk_flg", template.getString(EKK1391C040CBSMsg.MK_FLG))` |

---

**Block 9** — [CALL] `(Set error info)` (L919)

Delegates error information assembly to the private method `editErrInfoEKK1391C040`.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editErrInfoEKK1391C040(param, templates, (Integer)returnCode, fixedText)` // Delegate error info setting |

**Block 10** — [IF/ELSE + EXEC] `(Initialize and set error info control map data)` (L922)

Retrieves any existing error list, initializes it if null, then sets the control map error data by calling `TemplateErrorUtil.getErrorInfo()`.

| # | Type | Code |
|---|------|------|
| 1 | GET | `errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO)` |
| 2 | IF | `errList == null` |

**Block 10.1** — [IF — isNull=true] (L924)

| # | Type | Code |
|---|------|------|
| 1 | SET | `errList = new ArrayList<Object>()` |

**Block 10.2** — [EXEC] `(Set error info into control map)` (L927)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))` |

**Block 11** — [RETURN] (L929)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param` // Return the populated request parameter |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `gene_add_dtm` | Field | Generation registration date/time — timestamp when the cancellation confirmation record was generated |
| `dchskmst_stat` | Field | Data extraction item setting status — current status of data extraction item configuration |
| `add_dtm` | Field | Registration date/time — when the original service contract was registered in the system |
| `add_opeacnt` | Field | Registration operator account — the user ID or operator account that performed the original registration |
| `upd_dtm` | Field | Update date/time — when the service contract was last modified or updated |
| `upd_opeacnt` | Field | Update operator account — the user ID or operator account that last updated the contract |
| `mk_flg` | Field | Invalidation flag — indicates whether the service contract has been marked as invalidated (cancelled) |
| `hanyoSvcKei` | Field | Service contract number mapping (cancellation target) — HashMap mapping service contract numbers to their last update timestamps, used for setting last update dates on all affected contracts |
| `wribSvcKei` | Field | Discount service contract number mapping — HashMap for discount service contracts' last update timestamps |
| `CC_WORK_AREA_NAME_WRIB` | Constant | `"JKKCancelSvcWribCCWork"` — Work area name used as the key to store cancellation-specific work data in the mapping work area |
| `TEMPLATE_LIST_KEY` | Constant | Key name for retrieving the CAANMsg template array from the CBS response map |
| `RET_CD_INT_KEY` | Constant | Key name for retrieving the return code integer from the CBS response map |
| `EKK1391C040CBSMsg` | Class | CBS response message class for cancellation confirmation (EKK1391C040) — defines field constants for all cancellation-related template fields |
| `CAANMsg` | Class | Base message class from the Fujitsu Futurity framework — represents a mapped response/message object with `isNull()` and `getString()` methods |
| `IRequestParameterReadWrite` | Interface | Request parameter interface providing methods to read/write mapping work areas, data maps, and control map data |
| `SCControlMapKeys.ERROR_INFO` | Constant | Key for storing error information in the control map |
| `TemplateErrorUtil.getErrorInfo` | Method | Utility method that extracts error information from template messages and an error list |
| `JKKBpCommon.setLastDtmBySvcKeiNo` | Method | Common component method that sets the last update date/time for a given service contract number in the work area |
| `cancelSvcWrib()` | Method | Cancellation service entry point — the CBS caller that invokes this method as part of the cancellation confirmation flow |
| KKSV0082 | Screen | Service contract cancellation operation screen |
| KKSV0568 | Screen | Service contract cancellation confirmation operation screen |
| CBS | Acronym | Call By Service — Fujitsu's service component architecture for enterprise EJB calls |
| CC | Acronym | Common Component — shared business logic components in the Futurity framework |
| SC Code | Acronym | Service Component code — the EKK1391C040 CBS that powers the cancellation confirmation |
| EKK1391C040 | Business term | CBS code for discount service cancellation confirmation — handles cancellation data extraction and response mapping |

---