# Business Logic — JBSBatKKKkOpDlRvChsht.execute() [112 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSBatKKKkOpDlRvChsht` |
| Layer | Service (Batch) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSBatKKKkOpDlRvChsht.execute()

This method is the **main processing entry point** for the **Equipment Option Service Cancellation Data Extraction Batch** (機器オプションサービス解約情報抽出バッチ). It is a **data mapping and enrichment service** that reads input data from a CSV workflow file (defined by constant class `JBSbatKKIFM553`), enriches it by querying the Service Contract Exclusion Control table (`KK_T_SVKEI_EXC_CTRL`), computes four derived boolean flags, and writes the result set into an output bean (`JBSbatOutputItem`) for downstream CSV output (defined by constant class `JBSbatKKIFM554`).

The method implements a **delegation + enrichment pattern**: it delegates timestamp lookups to `searchSvkeiExcCtrl()` for each of the three service contract lines (Net, Tel, TV), then delegates flag computation to four private helper methods — `getHontaiDslFlg()`, `getZaikoCntUpdFlg()`, `getHmpnKikiUkFlg()`, and `getAdChgTakikiDefFlg()`. The bulk of the method is a **field-by-field copy** from input map to output map, preserving the data envelope across the batch pipeline.

This method is a **shared batch component** that processes equipment option service cancellation records. It is invoked by the batch execution framework (typically `JBSbatAbstractController` or a batch dispatcher) based on the batch module name (`KKKkOpDlRvChsht`). It is not called directly by any screen or CBS layer — it is a batch-only service.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["execute(inMap)"])

    START --> INIT["Initialize: outputBean, outMap, lastupdateNet, lastupdateTel, lastupdateTv"]

    INIT --> CHECK_NET["Check SVC_KEI_NO_1 not blank"]
    CHECK_NET --> CALL_NET["Call searchSvkeiExcCtrl(SVC_KEI_NO_1)"]
    CHECK_NET --> CHECK_TEL["Check SVC_KEI_NO_2 not blank"]
    CALL_NET --> ASSIGN_NET["lastupdateNet = searchSvkeiExcCtrl result"]
    ASSIGN_NET --> CHECK_TEL

    CHECK_TEL --> CALL_TEL["Call searchSvkeiExcCtrl(SVC_KEI_NO_2)"]
    CHECK_TEL --> CHECK_TV["Check SVC_KEI_NO_3 not blank"]
    CALL_TEL --> ASSIGN_TEL["lastupdateTel = searchSvkeiExcCtrl result"]
    ASSIGN_TEL --> CHECK_TV

    CHECK_TV --> CALL_TV["Call searchSvkeiExcCtrl(SVC_KEI_NO_3)"]
    CHECK_TV --> MAP_COPY["Copy input fields to outMap (~50 fields)"]
    CALL_TV --> MAP_COPY

    MAP_COPY --> CHECK_RETURN["Check HMPIN_KIKI_UK_FLG == FLG_ON"]
    CHECK_RETURN --> RETURN_EQUIP["Set HAISO_NO = empty"]
    CHECK_RETURN --> SET_HAISO["Set HAISO_NO = input HAISO_NO"]
    RETURN_EQUIP --> SET_FLAGS["Compute flag fields: HONTAI_DSL_FLG, ZAIKO_CNT_UPD_FLG, HMPIN_KIKI_UK_FLG, AD_CHG_TAIKIKI_DEL_FLG"]
    SET_HAISO --> SET_FLAGS

    SET_FLAGS --> SET_OUT_FLG["Set outFlg = true"]
    SET_OUT_FLG --> ADD_OUT["outputBean.addOutMapList(outMap)"]
    ADD_OUT --> DEBUG_END["Debug log execute_END"]
    DEBUG_END --> RETURN["Return outputBean"]
    RETURN --> END_NODE(["End"])
```

**Branch detail on `HMPIN_KIKI_UK_FLG` check (L153):**

| Condition | Value of `getHmpnKikiUkFlg(inMap)` | Result |
|-----------|------|--------|
| `FLG_ON` (returned from `getHmpnKikiUkFlg`) | "1" (returning equipment) | `HAISO_NO` set to empty — no cancellation delivery is performed for equipment being returned |
| `""` (not returning equipment) | "" | `HAISO_NO` set from input — proceed with delivery cancellation |

**How `getHmpnKikiUkFlg()` determines "returning equipment":**
It returns `FLG_ON` ("1") when the delivery status (`HAISO_STAT`) is "002" (returned), "003" (returning), or "004" (return request received). This is defined via `JBSbatKKConst.CD00009_HAISO_STAT_002`, `CD00009_HAISO_STAT_003`, `CD00009_HAISO_STAT_004`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `inMap` | `JBSbatServiceInterfaceMap` | Input data envelope carrying equipment option service cancellation record fields. Contains service contract numbers (SVC_KEI_NO_1/2/3), equipment information (model codes, serial numbers, installation details), order content codes, pricing codes, delivery status, work order case numbers, and timestamps. This is the CSV input record for the equipment option cancellation extraction batch. |

**Instance fields / external state read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `super.logPrint` | Debug log object | Inherited from `JBSbatBusinessService`; used to emit DEBUG_START/DEBUG_END markers |
| `db_KK_T_SVKEI_EXC_CTRL` | `JBSbatSQLAccess` | Database access object for the `KK_T_SVKEI_EXC_CTRL` (Service Contract Exclusion Control Table); used by `searchSvkeiExcCtrl()` to perform primary-key lookups |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JBSBatKKKkOpDlRvChsht.searchSvkeiExcCtrl` | KK_T_SVKEI_EXC_CTRL | KK_T_SVKEI_EXC_CTRL | Reads the LAST_UPD_DTM (last update timestamp) from the Service Contract Exclusion Control table by primary key (SVC_KEI_NO). Called for each non-blank service contract number (Net, Tel, TV). |
| - | `JBSbatKKIFM553.getString` | JBSbatKKIFM553 | - | Reads input map fields (SVC_KEI_NO_1/2/3, KKTK_SVC_KEI_NO, etc.) from the input envelope |
| R | `JBSBatKKKkOpDlRvChsht.getHmpnKikiUkFlg` | JBSBatKKKkOpDlRvChsht | - | Computes the "returning equipment" flag by checking HAISO_STAT against "002"/"003"/"004" |
| R | `JBSBatKKKkOpDlRvChsht.getZaikoCntUpdFlg` | JBSBatKKKkOpDlRvChsht | - | Computes the "inventory count update" flag when a domestic equipment model code exists and HAISO_STAT is "001" |
| R | `JBSBatKKKkOpDlRvChsht.getHontaiDslFlg` | JBSBatKKKkOpDlRvChsht | - | Computes the "main contract cancellation" flag by checking service contract status codes (100/210/220) and order content status (910/920) for Net and Tel lines |
| R | `JBSBatKKKkOpDlRvChsht.getAdChgTakikiDefFlg` | JBSBatKKKkOpDlRvChsht | - | Computes the "address-change equipment deletion" flag when a work order case number (KOJIAK_NO) is present |
| - | `JBSbatKKIFM554.setString` | JBSbatKKIFM554 | - | Sets output map fields for the extraction CSV output envelope (~50 fields total) |
| - | `JBSbatOutputItem.addOutMapList` | JBSbatOutputItem | - | Adds the enriched outMap to the output bean for batch result collection |
| - | `JBSbatACIcjknTrkmRsltHenshu.setOutFlg` | JBSbatACIcjknTrkmRsltHenshu | - | Sets the output flag to true, signaling the batch record was processed |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: `KKKkOpDlRvChsht` | `Batch Dispatcher` -> `JBSBatKKKkOpDlRvChsht.execute` | `searchSvkeiExcCtrl [R] KK_T_SVKEI_EXC_CTRL` |

**Notes on callers:** This method is a batch-only service invoked by the K-Opticom batch execution framework. No screen controller or CBS layer calls this method directly. The batch module name `KKKkOpDlRvChsht` (機器オプションサービス解約情報抽出 = Equipment Option Service Cancellation Data Extraction) is registered in the batch dispatch configuration. The method name `execute` is the standard entry point pattern used by the `JBSbatBusinessService` base class.

## 6. Per-Branch Detail Blocks

### Block 1 — [SET] Initialize variables (L88–100)

> Set up the output envelope and local timestamp accumulators.

| # | Type | Code |
|---|------|------|
| 1 | SET | `outputBean = new JBSbatOutputItem()` | // Create output result bean |
| 2 | SET | `outMap = new JBSbatServiceInterfaceMap()` | // Create output data envelope |
| 3 | SET | `lastupdateNet = ""` | // Accumulator for Net service last update timestamp |
| 4 | SET | `lastupdateTel = ""` | // Accumulator for Tel service last update timestamp |
| 5 | SET | `lastupdateTv = ""` | // Accumulator for TV service last update timestamp |

### Block 2 — [IF] Fetch last update timestamp for Net service (L102–104)

> If the Net service contract number (SVC_KEI_NO_1) is present, look up its last update timestamp from the exclusion control table.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.getString(JBSbatKKIFM553.SVC_KEI_NO_1) != null && !"".equals(...)` | // Check SVC_KEI_NO_1 is non-null and non-blank |
| 2 | CALL | `lastupdateNet = searchSvkeiExcCtrl(inMap.getString(...))` | // Read LAST_UPD_DTM from KK_T_SVKEI_EXC_CTRL table by primary key |

**Block 2.1 — [CALL] `searchSvkeiExcCtrl(String svc_kei_no)` (L353–365)**

> Primary-key lookup in KK_T_SVKEI_EXC_CTRL table. Returns the LAST_UPD_DTM field as a String, or empty string if no row found.

| # | Type | Code |
|---|------|------|
| 1 | SET | `pkMap = new JBSbatCommonDBInterface()` | // Create primary-key lookup map |
| 2 | SET | `pkMap.setValue(SVC_KEI_NO, svc_kei_no)` | // Set primary key: service contract number |
| 3 | CALL | `outMap = db_KK_T_SVKEI_EXC_CTRL.selectByPrimaryKeys(pkMap)` | // [R] Select by primary key from KK_T_SVKEI_EXC_CTRL |
| 4 | RETURN | `return null == outMap ? "" : outMap.getString(LAST_UPD_DTM)` | // Return last update timestamp or empty string |

### Block 3 — [IF] Fetch last update timestamp for Tel service (L106–108)

> If the Tel service contract number (SVC_KEI_NO_2) is present, look up its last update timestamp.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.getString(JBSbatKKIFM553.SVC_KEI_NO_2) != null && !"".equals(...)` | // Check SVC_KEI_NO_2 is non-null and non-blank |
| 2 | CALL | `lastupdateTel = searchSvkeiExcCtrl(inMap.getString(...))` | // Read LAST_UPD_DTM for Tel service |

### Block 4 — [IF] Fetch last update timestamp for TV service (L110–112)

> If the TV service contract number (SVC_KEI_NO_3) is present, look up its last update timestamp.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.getString(JBSbatKKIFM553.SVC_KEI_NO_3) != null && !"".equals(...)` | // Check SVC_KEI_NO_3 is non-null and non-blank |
| 2 | CALL | `lastupdateTv = searchSvkeiExcCtrl(inMap.getString(...))` | // Read LAST_UPD_DTM for TV service |

### Block 5 — [SET] Copy input fields to output map (L114–176)

> Transfer all fields from the input map (`JBSbatKKIFM553`) to the output map (`JBSbatKKIFM554`). This is a bulk field copy that preserves the data envelope structure across the batch pipeline. The update timestamps (UPD_DTM_1/2/3) are replaced with the enriched values from `searchSvkeiExcCtrl()` rather than being copied directly from input.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `outMap.set(KKTK_SVC_KEI_NO, inMap.get(...))` | Equipment-provided service contract number |
| 2 | SET | `outMap.set(KKTK_SVC_KEI_STAT, inMap.get(...))` | Equipment-provided service contract status |
| 3 | SET | `outMap.set(SVC_KEI_KAISEN_UCWK_NO, inMap.get(...))` | Service contract line detail number |
| 4 | SET | `outMap.set(KKTK_SVC_CD, inMap.get(...))` | Equipment-provided service code |
| 5 | SET | `outMap.set(KIKI_CHG_NO, inMap.get(...))` | Equipment change number |
| 6 | SET | `outMap.set(KIKI_STI_JI_KRIPLACE_SKCD, inMap.get(...))` | Equipment-specified management location ID code |
| 7 | SET | `outMap.set(KIKI_HKAT_SHITEI_SOKO_CD, inMap.get(...))` | Equipment assignment designated warehouse code |
| 8 | SET | `outMap.set(KIKI_HKAT_SHITEI_SKDN_CD, inMap.get(...))` | Equipment assignment designated warehouse column code |
| 9 | SET | `outMap.set(TAKNKIKI_MODEL_CD, inMap.get(...))` | Domestic equipment model code |
| 10 | SET | `outMap.set(KIKI_STI_JI_KOCOMP_CD, inMap.get(...))` | Equipment-specified construction company code |
| 11 | SET | `outMap.set(KIKI_STI_JI_KOCOMP_SLF_CD, inMap.get(...))` | Equipment-specified construction company column code |
| 12 | SET | `outMap.set(KKTK_SBT_CD, inMap.get(...))` | Equipment-provided service type code |
| 13 | SET | `outMap.set(KIKI_STI_JI_YTKSKOF_CD, inMap.get(...))` | Equipment-specified advance option code |
| 14 | SET | `outMap.set(KIKI_STI_JI_YTKSKOF_SLF_CD, inMap.get(...))` | Equipment-specified advance option column SD |
| 15 | SET | `outMap.set(KIKI_SEIZO_NO, inMap.get(...))` | Equipment manufacturing serial number |
| 16 | SET | `outMap.set(KIKI_STC_SAKI_PLACE_NO, inMap.get(...))` | Equipment installation site number |
| 17 | SET | `outMap.set(GENE_ADD_DTM, inMap.get(...))` | Registration year/month/day/time stamp |
| 18 | SET | `outMap.set(KKOSVKEI_HISSU_CD, inMap.get(...))` | Equipment option service contract mandatory code |
| 19 | SET | `outMap.set(KKOP_SVC_KEI_NO_1, inMap.get(...))` | Equipment OP service contract number 1 |
| 20 | SET | `outMap.set(KKOP_SVC_KEI_STAT_1, inMap.get(...))` | Equipment OP contract status 1 |
| 21 | SET | `outMap.set(KKOP_SVC_CD_1, inMap.get(...))` | Equipment option service code 1 |
| 22 | SET | `outMap.set(PCRS_CD_1, inMap.get(...))` | Pricing code 1 |
| 23 | SET | `outMap.set(PCRS_NM_1, inMap.get(...))` | Pricing name 1 |
| 24 | SET | `outMap.set(IDO_RSV_NO_1, inMap.get(...))` | Relocation reservation number 1 |
| 25 | SET | `outMap.set(IDO_DIV_1, inMap.get(...))` | Relocation division 1 |
| 26 | SET | `outMap.set(MSKM_DTL_NO_1, inMap.get(...))` | Application detail number 1 |
| 27 | SET | `outMap.set(SVC_KEI_NO_1, inMap.get(...))` | Service contract number 1 (Net) |
| 28 | SET | `outMap.set(GENE_ADD_DTM_1, inMap.get(...))` | Registration timestamp 1 |
| 29 | SET | `outMap.set(UPD_DTM_1, lastupdateNet)` | [ENRICHED] Update timestamp 1 — overwritten with searchSvkeiExcCtrl result, NOT copied from input |
| 30 | SET | `outMap.set(SVC_STA_YMD_1, inMap.get(...))` | Service start date 1 |
| 31 | SET | `outMap.set(PLAN_CHRG_STAYMD_1, inMap.get(...))` | Plan charge start date 1 |
| 32 | SET | `outMap.set(KKOP_SVC_KEI_NO_2, inMap.get(...))` | Equipment OP service contract number 2 |
| 33 | SET | `outMap.set(KKOP_SVC_KEI_STAT_2, inMap.get(...))` | Equipment OP contract status 2 |
| 34 | SET | `outMap.set(KKOP_SVC_CD_2, inMap.get(...))` | Equipment option service code 2 |
| 35 | SET | `outMap.set(PCRS_CD_2, inMap.get(...))` | Pricing code 2 |
| 36 | SET | `outMap.set(PCRS_NM_2, inMap.get(...))` | Pricing name 2 |
| 37 | SET | `outMap.set(IDO_RSV_NO_2, inMap.get(...))` | Relocation reservation number 2 |
| 38 | SET | `outMap.set(IDO_DIV_2, inMap.get(...))` | Relocation division 2 |
| 39 | SET | `outMap.set(MSKM_DTL_NO_2, inMap.get(...))` | Application detail number 2 |
| 40 | SET | `outMap.set(SVC_KEI_NO_2, inMap.get(...))` | Service contract number 2 (Tel) |
| 41 | SET | `outMap.set(GENE_ADD_DTM_2, inMap.get(...))` | Registration timestamp 2 |
| 42 | SET | `outMap.set(SVC_STA_YMD_2, inMap.get(...))` | Service start date 2 |
| 43 | SET | `outMap.set(UPD_DTM_2, lastupdateTel)` | [ENRICHED] Update timestamp 2 — overwritten with searchSvkeiExcCtrl result |
| 44 | SET | `outMap.set(PLAN_CHRG_STAYMD_2, inMap.get(...))` | Plan charge start date 2 |
| 45 | SET | `outMap.set(KK0251_SVC_KEI_UCWK_NO, inMap.get(...))` | Service contract line detail number (KK0251) |
| 46 | SET | `outMap.set(KK0251_GENE_ADD_DTM, inMap.get(...))` | Registration timestamp (KK0251) |
| 47 | SET | `outMap.set(KK0351_OP_SVC_KEI_NO, inMap.get(...))` | Option service contract number |
| 48 | SET | `outMap.set(KK0351_GENE_ADD_DTM, inMap.get(...))` | Registration timestamp (KK0351) |
| 49 | SET | `outMap.set(HAISO_NO, ...) ` | [Branch] Delivery number — set conditionally (see Block 6) |
| 50 | SET | `outMap.set(UPD_DTM_BF, inMap.get(...))` | Update timestamp (before) |
| 51 | SET | `outMap.set(HAISO_STAT, inMap.get(...))` | Delivery status |
| 52 | SET | `outMap.set(DK0021_TAKNKIKI_MODEL_CD, inMap.get(...))` | Domestic equipment model code (DK0021) |
| 53 | SET | `outMap.set(KOJIAK_NO, inMap.get(...))` | Work order case number |
| 54 | SET | `outMap.set(KOJIAK_STAT, inMap.get(...))` | Work order case status |
| 55 | SET | `outMap.set(KOJIAK_SBT_CD, inMap.get(...))` | Work order case type code |
| 56 | SET | `outMap.set(SVC_KEI_NO_3, inMap.get(...))` | Service contract number 3 (TV) |
| 57 | SET | `outMap.set(UPD_DTM_3, lastupdateTv)` | [ENRICHED] Update timestamp 3 — overwritten with searchSvkeiExcCtrl result |
| 58 | SET | `outMap.set(HONTAI_DSL_FLG, getHontaiDslFlg(inMap))` | [COMPUTED] Main contract cancellation flag |
| 59 | SET | `outMap.set(ZAIKO_CNT_UPD_FLG, getZaikoCntUpdFlg(inMap))` | [COMPUTED] Inventory count update flag |
| 60 | SET | `outMap.set(HMPIN_KIKI_UK_FLG, getHmpnKikiUkFlg(inMap))` | [COMPUTED] Returning equipment receipt flag |
| 61 | SET | `outMap.set(AD_CHG_TAIKIKI_DEL_FLG, getAdChgTakikiDefFlg(inMap))` | [COMPUTED] Address-change target equipment deletion flag |

### Block 6 — [IF/ELSE] Set delivery number based on equipment return status (L153–160)

> If the equipment is being returned (returning equipment receipt flag is set), clear the delivery number. Otherwise, set the delivery number from input for delivery cancellation processing.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `FLG_ON.equals(getHmpnKikiUkFlg(inMap))` | // Check if returning equipment flag is set (FLG_ON = "1") |
| 2 | SET (IF true) | `outMap.set(HAISO_NO, "")` | // Equipment is being returned — cancel delivery by setting delivery number empty |
| 3 | SET (IF false) | `outMap.set(HAISO_NO, inMap.getString(HAISO_NO))` | // Equipment not returned — preserve original delivery number for cancellation delivery |

### Block 7 — [SET] Compute derived flags (L162–166)

> Call four private helper methods to compute boolean flags based on service contract status, delivery status, and work order information.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `HONTAI_DSL_FLG = getHontaiDslFlg(inMap)` | Main contract cancellation flag — set when Net OP or Tel OP is in cancellation status (910/920) while the other has a relocation reservation |
| 2 | SET | `ZAIKO_CNT_UPD_FLG = getZaikoCntUpdFlg(inMap)` | Inventory count update flag — set when a domestic equipment model exists and delivery status is "001" (not yet delivered) |
| 3 | SET | `HMPIN_KIKI_UK_FLG = getHmpnKikiUkFlg(inMap)` | Returning equipment receipt flag — set when delivery status is "002" (returned), "003" (returning), or "004" (return request) |
| 4 | SET | `AD_CHG_TAIKIKI_DEL_FLG = getAdChgTakikiDefFlg(inMap)` | Address-change target equipment deletion flag — set when a work order case number exists |

### Block 8 — [SET] Set output flag and finalize (L168–173)

> Mark the batch record as processed and add the result to the output bean.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `outMap.setOutFlg(true)` | Mark output record as valid/processed |
| 2 | EXEC | `outputBean.addOutMapList(outMap)` | Add the enriched output map to the result bean |
| 3 | EXEC | `logPrint.printDebugLog("execute_END")` | Debug log: mark batch processing end |
| 4 | RETURN | `return outputBean` | Return the output bean containing the extraction result |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `SVC_KEI_NO_1` | Field | Service contract number 1 — the Net (internet) service contract line item number |
| `SVC_KEI_NO_2` | Field | Service contract number 2 — the Tel (telephone) service contract line item number |
| `SVC_KEI_NO_3` | Field | Service contract number 3 — the TV (television) service contract line item number |
| `KKTK_SVC_KEI_NO` | Field | Equipment-provided service contract number — internal identifier for the service contract line |
| `KKTK_SVC_KEI_STAT` | Field | Equipment-provided service contract status — current status of the service contract line |
| `KKTK_SVC_CD` | Field | Equipment-provided service code — categorizes the service type |
| `KKTK_SBT_CD` | Field | Equipment-provided service type code — distinguishes between Net, Tel, TV services |
| `KKOP_SVC_KEI_NO` | Field | Equipment option service contract number — identifies an optional add-on service contract |
| `KKOP_SVC_KEI_STAT` | Field | Equipment OP contract status — current status of the equipment option contract (e.g., "100"=active, "910"=cancellation target, "920"=cancelled) |
| `PCRS_CD` | Field | Pricing code — identifies the pricing plan associated with the service |
| `PCRS_NM` | Field | Pricing name — human-readable pricing plan name |
| `IDO_RSV_NO` | Field | Relocation reservation number — reservation ID for service relocation/move |
| `IDO_DIV` | Field | Relocation division — type/category of relocation |
| `MSKM_DTL_NO` | Field | Application detail number — detail line number for the service application |
| `SVC_KEI_KAISEN_UCWK_NO` | Field | Service contract line detail number — internal tracking ID for a specific service line item |
| `KIKI_CHG_NO` | Field | Equipment change number — identifier for an equipment change/upgrade event |
| `KIKI_STI_JI_KRIPLACE_SKCD` | Field | Equipment-specified management location ID code — location code where the equipment is managed |
| `KIKI_HKAT_SHITEI_SOKO_CD` | Field | Equipment assignment designated warehouse code — warehouse code for assigned equipment |
| `TAKNKIKI_MODEL_CD` | Field | Domestic equipment model code — model identifier for in-home equipment (e.g., ONT, router) |
| `KIKI_SEIZO_NO` | Field | Equipment manufacturing serial number — unique serial number of the equipment |
| `KIKI_STC_SAKI_PLACE_NO` | Field | Equipment installation site number — number of the physical installation location |
| `GENE_ADD_DTM` | Field | Registration year/month/day/time stamp — timestamp when the record was created |
| `UPD_DTM` | Field | Update year/month/day/time stamp — timestamp of the last modification |
| `SVC_STA_YMD` | Field | Service start date — the date when the service became active |
| `PLAN_CHRG_STAYMD` | Field | Plan charge start date — the date when billing for the plan started |
| `HAISO_NO` | Field | Delivery number — identifier for the equipment delivery/shipment |
| `HAISO_STAT` | Field | Delivery status — current delivery state of equipment ("001"=not delivered, "002"=returned, "003"=returning, "004"=return request received, "005"=canceled) |
| `KOJIAK_NO` | Field | Work order case number — identifier for the construction/work order case |
| `KOJIAK_STAT` | Field | Work order case status — current status of the work order case |
| `KOJIAK_SBT_CD` | Field | Work order case type code — type/category of the work order case |
| `HONTAI_DSL_FLG` | Field | Main contract cancellation flag — indicates whether the main service (Net/Tel) is being cancelled |
| `ZAIKO_CNT_UPD_FLG` | Field | Inventory count update flag — indicates whether inventory counts should be updated (set when equipment is not yet delivered) |
| `HMPIN_KIKI_UK_FLG` | Field | Returning equipment receipt flag — indicates whether the equipment is being returned |
| `AD_CHG_TAIKIKI_DEL_FLG` | Field | Address-change target equipment deletion flag — indicates whether equipment should be deleted due to an address change work order |
| `lastupdateNet` | Field | Local accumulator — stores the last update timestamp for the Net service contract line, retrieved from the exclusion control table |
| `lastupdateTel` | Field | Local accumulator — stores the last update timestamp for the Tel service contract line |
| `lastupdateTv` | Field | Local accumulator — stores the last update timestamp for the TV service contract line |
| FLG_ON | Constant | Flag "on" value = "1" — used as the affirmative boolean indicator throughout the batch |
| CD00056_KKTK_SVC_KEI_STAT_100 | Constant | Service contract status "100" = active/normal |
| CD00056_KKTK_SVC_KEI_STAT_210 | Constant | Service contract status "210" = suspended |
| CD00056_KKTK_SVC_KEI_STAT_220 | Constant | Service contract status "220" = suspended (variant) |
| CD00056_KKTK_SVC_KEI_STAT_910 | Constant | Service contract status "910" = cancellation target |
| CD00056_KKTK_SVC_KEI_STAT_920 | Constant | Service contract status "920" = cancellation completed |
| CD00009_HAISO_STAT_001 | Constant | Delivery status "001" = not yet delivered |
| CD00009_HAISO_STAT_002 | Constant | Delivery status "002" = returned |
| CD00009_HAISO_STAT_003 | Constant | Delivery status "003" = returning (in transit) |
| CD00009_HAISO_STAT_004 | Constant | Delivery status "004" = return request received |
| KK_T_SVKEI_EXC_CTRL | Table | Service Contract Exclusion Control Table — stores the mapping of service contract numbers to their last update timestamps; used to enrich batch output with authoritative timestamps |
| JBSbatKKIFM553 | Constant class | Input file constant class for the equipment option service cancellation extraction CSV input format |
| JBSbatKKIFM554 | Constant class | Output file constant class for the equipment option service cancellation extraction CSV output format |
| `searchSvkeiExcCtrl` | Method | Service contract exclusion control lookup — performs a primary-key select on KK_T_SVKEI_EXC_CTRL to retrieve the LAST_UPD_DTM for a given service contract number |
| `getHontaiDslFlg` | Method | Computes the main contract cancellation flag based on service contract status and relocation reservation data |
| `getZaikoCntUpdFlg` | Method | Computes the inventory count update flag based on equipment model presence and delivery status |
| `getHmpnKikiUkFlg` | Method | Computes the returning equipment receipt flag based on delivery status codes |
| `getAdChgTakikiDefFlg` | Method | Computes the address-change equipment deletion flag based on work order case number presence |
