# Sap Pm

> >

- **Type:** Skill
- **Install:** `agentstack add skill-boxlogodev-sapstack-sap-pm`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [BoxLogoDev](https://agentstack.voostack.com/s/boxlogodev)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [BoxLogoDev](https://github.com/BoxLogoDev)
- **Source:** https://github.com/BoxLogoDev/sapstack/tree/main/plugins/sap-pm/skills/sap-pm

## Install

```sh
agentstack add skill-boxlogodev-sapstack-sap-pm
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

## 1. Environment Intake Checklist

Before answering PM questions, collect:
- **SAP Release**: ECC 6.0 (which EhP?) or S/4HANA (which release year?)
- **Deployment model**: On-premise / RISE / Cloud Public Edition
- **PM Organization**: Planning Plant, Maintenance Plant, Maintenance Coordination Plant
- **Industry sector**: Manufacturing (automotive, chemicals, electronics), energy, pharma, food & beverage
- **Equipment strategy**: Single-level (equipment only) vs. two-level (equipment + functional locations)
- **Maintenance type focus**: Breakdown, preventive, predictive, contract, or combination?
- **Integration requirements**: MES, predictive maintenance (PAI), mobile (SAP Asset Manager), analytics

---

## 2. Equipment Master Data (IE01/IE02/IE03)

### Equipment Creation (IE01)

**Key T-codes & Menu Path**
- IE01: Create Equipment (SPRO → Plant Maintenance → Master Data → Equipment → Create)
- IE02: Change Equipment
- IE03: Display Equipment
- IE10: Create Fleet (for mass equipment with identical configuration)

### Critical Fields (EQUI Table)

| Field | Meaning | Mandatory | Notes |
|-------|---------|-----------|-------|
| EQUNR | Equipment number | Y | Unique 18-char ID; can be internal/external assigned |
| EQKTX | Equipment description | Y | 40 chars; recommend English + Korean |
| EQART | Equipment category | Y | PUMPE (pump), MOTOR (motor), KOMPR (compressor) etc. |
| MATNR | Material master | N | Links to inventory; if serial-tracked material, serializes equipment |
| SERGE | Serial number | N | Hardware serial from nameplate; used in warranty tracking |
| HEQUI | Higher-level equipment | N | Parent equipment (e.g. pump is part of production line) |
| ILOAN | Functional location | Y | Must exist in IFLO before assignment |
| MANDT | Company code | Y | Set at creation; cannot change |
| WERKS | Plant | Y | Maintenance-executing plant |
| KMFID | Manufacturer | N | Free-text; recommend SAP vendor master LIFNR |
| GEWICHT | Weight | N | For spare parts estimation |
| INBDT | Startup date | N | Important for MTBF calculation period |

### Equipment Classification

Table KLAH (classification header) + KLASP (assignment):
- Class type: EQUIPMENT, ZEQUIP (custom)
- Characteristics: Model, Manufacturer, Voltage, Capacity, Brand
- Used for: spare parts list filtering, maintenance strategy assignment, reporting

### Serial Number Management

- Equipment must link to material master (EQUI.MATNR)
- Material → Accounting 1 view → Valuation Class + Serial Number Profile (MMSL)
- Serial Number Profile (MMSL): defines when system forces serial entry during GR, GI, MIGO
- Equipment History (EQUZ): automatic log of changes (creation, equipment change, tag changes)

### Equipment Deletion

- Equipment cannot be deleted if it has maintenance history (QMEL, AUFK exist)
- Workaround: Flag EQUI-LOEKZ (deletion flag) = X → equipment hidden in selection, kept for history

---

## 3. Functional Location Master Data (IL01/IL02/IL03)

**Hierarchical structure** — represents plant's physical/logical organization

### Functional Location Creation (IL01)

**Key T-codes**
- IL01: Create Functional Location (SPRO → Plant Maintenance → Master Data → Technical Objects → Functional Location)
- IL02: Change Functional Location
- IL03: Display Functional Location

### Hierarchy Example (Two-Level Strategy)

```
Production Line A (ZFUNCLOC-PRODLINE-A)
├─ Section 1 (ZFUNCLOC-PRODLINE-A-SEC1)
│  ├─ Equipment: Motor, Pump, Control Panel
└─ Section 2 (ZFUNCLOC-PRODLINE-A-SEC2)
   ├─ Equipment: Conveyor, Sensor
```

### Critical Fields (IFLO + IFLOT Tables)

| Field | Table | Meaning | Notes |
|-------|-------|---------|-------|
| TPLNR | IFLO | Functional location ID | 40-char hierarchical, e.g., PROD-001-002 |
| TXTMI | IFLOT | Description (multilingual) | Store in DE, EN, KO |
| FLTYP | IFLO | Functional location type | e.g., PUMPING_STATION, MOTOR_ROOM |
| GEWRK | IFLO | Responsible work center (PM team) | Links to CR01 work center |
| HFLOC | IFLO | Higher-level functional location | Parent node |
| STRNO | IFLO | Building/hall number | Organizational reference |
| MANDT | IFLO | Company code | Assigned at creation |

### Account Assignment

- Cost center (KOSTL): for cost tracking of maintenance labor + materials
- Internal order (AUFNR): for project-based maintenance (e.g., annual overhaul)
- Profit center: for P&L attribution
- WBS element: for capital project maintenance

---

## 4. Maintenance Notification (IW21/IW22/IW23)

**Entry point for all maintenance requests** — whether breakdown or planned

### Notification Types (QMNUM Table)

| Notification Type | ID | Trigger | Example Use Case |
|-------------------|----|---------|----|
| Malfunction (고장) | M1 | Breakdown reported by operator | "Motor stopped working" |
| Maintenance request | M2 | Preventive or user-initiated task | "Annual pump inspection needed" |
| Activity report (업무보고) | M3 | Post-maintenance completion record | "Replaced bearings on motor" |
| Calibration notification | M4 | Instrument calibration schedule | "Pressure gauge needs recalibration" |

### Key T-codes

| T-code | Description |
|--------|-------------|
| IW21 | Create notification |
| IW22 | Change notification |
| IW23 | Display notification |
| IW24 | List of notifications (selection) |
| IW28 | Notification listing (reporting) |
| IW29 | Notification analysis (OLAP) |

### Critical Fields (QMEL + QMIH Tables)

| Field | Table | Meaning | Max Length |
|-------|-------|---------|-----------|
| QMNUM | QMEL | Notification number | 12 digits (internal/external assigned) |
| QMTXT | QMEL | Short description | 40 chars |
| LTXT | QMEL | Long text | 2500 chars (ALV memo) |
| EQUNR | QMEL | Equipment or... | 18 chars |
| TPLNR | QMEL | Functional location | 40 chars (either EQUNR or TPLNR required) |
| SCHAD | QMEL | Damage/fault code | 4 chars; must exist in custom table (e.g., ZMAINTCODES) |
| URSACHE | QMIH | Root cause code | 4 chars; ABAP table maintained via SPRO |
| AKTIVITAET | QMIH | Activity code (work type) | 4 chars; e.g., REPAIR, INSPECT, REPLACE |
| ANLDAT | QMEL | Notification creation date | Auto-filled |
| MERDAT | QMEL | Reported date/time | User-entered (when problem was discovered) |
| PRIO | QMEL | Priority (1=urgent, 4=low) | Links to SLA |
| ARBPL | QMEL | Assigned work center | CR01 resource pool |
| AUART | QMIH | Associated order type | e.g., PM01, PM02 (links to maintenance order) |

### Damage Code & Root Cause Workflow

**Damage codes (Schädigungen)** → categorize **what broke**
- Table maintained in: SPRO → Plant Maintenance → Notification → Configure Notification Type → Damage Codes
- Example: BEARING (Lagerschaden), SEAL (Dichtungsschaden), MOTOR_COIL (Motorwicklung)

**Root cause codes** → categorize **why it broke**
- Maintained in: SPRO → Plant Maintenance → Notification → Configure Notification Type → Cause Codes
- Example: OVERLOAD (Überbelastung), POOR_MAINTENANCE (Schlechte Instandhaltung), DESIGN_DEFECT

**Activity codes** → actions taken
- INSPECTION, REPAIR, REPLACEMENT, ADJUSTMENT, CALIBRATION

### Notification Workflow

```
IW21 (Create) → IW22 (Edit, assign to equipment/FL) 
→ Create Maintenance Order (IW31) or Assign Existing (IW81)
→ Complete Notification (IW21 → Status = COMPLETED)
→ Archive / History Report (IW28, IW29)
```

---

## 5. Maintenance Order (IW31/IW32/IW33)

**Execution unit** — operationalizes a notification into scheduled work with costing

### Order Types & Lifecycle

| Order Type | Purpose | Settlement | Workflow |
|-----------|---------|-----------|----------|
| PM01 | Preventive maintenance | Cost center or internal order | Recurring |
| PM02 | Breakdown maintenance | Cost center or internal order | Ad-hoc |
| PM03 | Corrective action / temporary fix | Internal order | One-time |
| PM10 | Maintenance by vendor/contract | Purchase order line | Outsourced |
| ER01 | Emergency order (fast-track) | Cost center | Expedited release |

### Lifecycle (Status Flow)

```
CRTD (Created) → PLAN (Planning) → RELD (Released) 
→ TECO (Technically Complete) → CLSD (Closed)
```

**Key transitions:**
- CRTD → RELD: IW32 (Change) → Release button (Authorization: PM.ORD.R)
- RELD → TECO: CO11N (confirmation) or manual in IW32
- TECO → CLSD: Settlement (KO88) → automatic CLSD after successful posting

### Key T-codes

| T-code | Description |
|--------|-------------|
| IW31 | Create maintenance order |
| IW32 | Change maintenance order |
| IW33 | Display maintenance order |
| IW38 | Maintenance order list (with statuses) |
| IW39 | Maintenance order analysis (OLAP) |
| COOIS | Production order info system (includes maintenance orders) |

### Critical Fields (AUFK + AFKO + AFIH Tables)

| Field | Table | Meaning | Key Link |
|-------|-------|---------|----------|
| AUFNR | AUFK | Maintenance order number | 12 digits |
| AUART | AUFK | Order type (PM01, PM02...) | Defines cost collection rules |
| EQUNR | AUFK | Equipment | Equipment master (EQUI) |
| TPLNR | AUFK | Functional location | FL master (IFLO) |
| QMNUM | AUFK | Notification reference | Notification (QMEL) |
| KOSTL | AUFK | Cost center (account assignment) | GL posting account |
| INAUFNR | AUFK | Internal order (account assignment) | Alternative to cost center |
| ERDAT | AUFK | Creation date | Audit trail |
| GSTDT | AUFK | Scheduled start date | Capacity planning |
| GETDT | AUFK | Scheduled end date | Capacity planning |
| FZDAT | AUFK | Actual start date | Filled by TECO or confirm |
| FZEND | AUFK | Actual end date | Filled by TECO or confirm |
| GGRTXT | AUFK | Order description | 40 chars |
| MGVST | AUFK | Total planned labor hours | Sum of operations (AFIH.LAH) |
| STATUS | JEST | Order status (via object key AUFK + status cat P) | Links to JEST table (status management) |

### Operations & Component Planning

**Operations (AFIH table)** — individual tasks within maintenance order

| Field | Meaning | Type |
|-------|---------|------|
| LTEXT | Operation description | Text, e.g., "Replace pump seal" |
| LAH | Standard labor hours | Decimal, e.g., 4.5 |
| MGH | Standard machine hours | Used for resource capacity planning |
| ARBPL | Work center | CR01 resource (e.g., MAINT_TEAM_A) |
| LTXA | Operation long text | Detail work instructions |

**Components (BOM link)** — spare parts required

- AFIH → STPO (BOM item) → material + quantity
- Component status: Available / Withdrawn / On PO / Missing (CO24)
- Backflush: if enabled, components auto-issue at confirmation (MIGO 261 automatic)

### Maintenance Labor & Costs

**Labor hours collection (CO11N confirmation)**
- Actual labor time entered at operation level
- Overtime multipliers applied (customizable per order type)

**Spare parts cost (MIGO)**
- GI from warehouse → MIGO 261 → charged to maintenance order
- Vendor-supplied parts → PO line → GR → invoice → cost posting

**Overhead allocation (KO88)**
- Settlement rule: Actual cost + overhead (%) → Cost center or internal order
- Example: Order cost = 5,000 EUR → + 20% overhead = 6,000 EUR → posted to cost center

### External Services (Subcontracting)

- Maintenance order header → Services tab → Create purchase requisition (BANF)
- Service material type: automatically creates PR → RFQ → PO → GR → IV (MIRO)
- Typical service materials: OUTSOURCE_REPAIR, INSPECTION_LABOR

---

## 6. Preventive Maintenance (IP01/IP10/IP30)

**Automated scheduling of recurring maintenance tasks**

### Maintenance Plans (IP01/IP02)

| T-code | Description |
|--------|-------------|
| IP01 | Create maintenance plan |
| IP02 | Change maintenance plan |
| IP03 | Display maintenance plan |
| IP10 | Call object scheduling (run planner) |
| IP30 | Deadline monitoring |

### Plan Types

| Plan Type | Trigger Condition | Interval |
|-----------|-------------------|----------|
| Time-based (Z1) | Calendar days | e.g., every 30 days, every 1 January |
| Counter-based (Z2) | Equipment counter (QMSREC) | e.g., every 10,000 operating hours |
| Multiple-counter (Z3) | Multiple counters (e.g., hours + days) | Whichever comes first |
| Performance-based (Z4) | Equipment performance KPI | e.g., when efficiency drops below 95% |

### Maintenance Strategy (IP11)

**Strategy = grouping of maintenance tasks** → optimize scheduling

Example: **Monthly production line maintenance (STRAT_PRODLINE_M)**
- Task 1: Bearing lubrication (5 hours, cost center MAINT_OIL)
- Task 2: Filter replacement (3 hours, material M-FILTER-001, cost center MAINT_PARTS)
- Task 3: Inspection (4 hours, cost center MAINT_LABOR)
- Total plan: 12 labor hours, materials + labor cost per execution

### Scheduling Strategy (IP11 → PLTYP / IPRFL Table)

| Field | Meaning | Example |
|-------|---------|---------|
| BESCHREIBUNG | Strategy name | "MOTOR_BEARING_MAINTENANCE" |
| MPLNR | Maintenance plan number | "MPLAN-MOTOR-001" |
| IPRFL | Task list (group of tasks) | "TASKLIST-BEARING-005" |
| ISCHA | Scheduling parameter | e.g., "EVERY_30_DAYS" |
| LETWZ | Calendar rule | "MON" (Monday), "D" (daily) |
| MAINT_TYPE | Maintenance type | "PREVENTIVE", "PREDICTIVE" |

### Task Lists for Maintenance (IA01/IA05)

**Reusable checklists & instructions**

| T-code | Description |
|--------|-------------|
| IA01 | Create task list (general) |
| IA05 | Create task list (maintenance) |
| IA06 | Maintain task list status |

**Task list structure (PLKO + PLPO)**
- Header: task list ID, description, equipment/FL applicable
- Operations: step 10, 20, 30... each with work center + time + materials

**Example: Pump Inspection Task List (TASKLIST-PUMP-INSPECT)**
```
Step 10: Visual inspection (0.5 hrs, work center: MAINT_VISUAL)
Step 20: Vibration check (1.0 hr, equipment: VIBRATION_METER)
Step 30: Temperature measurement (0.5 hrs, sensor: TEMP_PROBE_001)
Step 40: Oil sampling (0.25 hrs, material: OIL_SAMPLE_BOTTLE)
Step 50: Report findings (0.5 hrs, work center: MAINT_ADMIN)
Total: 2.75 hours
```

---

## 7. Maintenance Scheduling (IP10 / IP30)

### IP10 — Call Object Scheduling

**Generates notifications/orders** based on maintenance plans

- Input: maintenance plans (IP01) + current equipment state
- Output: QMEL (notifications) or AUFK (orders) for upcoming maintenance
- Run frequency: typically nightly batch (transaction SM36)

### IP30 — Deadline Monitoring

**Tracks which equipment is overdue for maintenance**

| Status | Meaning |
|--------|---------|
| Green | On schedule |
| Yellow | Within lead time (e.g., due within 5 days) |
| Red | Overdue |

**Usage:**
- Filter by: planning plant, work center, priority
- Action: create maintenance orders (IW31) for overdue items

### Counter Readings (QMSREC Table)

**Equipment counters** — track usage-based maintenance triggers

| Counter Type | Example | Unit |
|--------------|---------|------|
| Operating hours | Production line hours | Hours |
| Cycles | Number of production runs | Cycles |
| Distance | Vehicle mileage (for mobile equipment) | km |
| Quantity | Material processed (e.g., tons in cement plant) | Units |

**Recording counter reads:**
- QM04: Single equipment counter read
- QM05: Multiple counters (batch entry)
- Readings feed into IP10 scheduling → if counter >= threshold, create notification

---

## 8. Breakdown Maintenance & MTBF/MTTR

### Breakdown Notification Entry (IW21)

**Operator or manager reports failure:**

1. IW21 → Equipment/FL + Damage code + Priority
2. System creates notification (e.g., NOTIF-2024-001234)
3. Assign to maintenance team (ARBPL — work center)
4. Create order (IW31 with order type PM02)
5. Release order (RELD status) → work begins
6. Confirm completion (CO11N) → TECO
7. Settle order (KO88) → cost posted

### Malfunction Start/End Time (QMEL / QMIH)

| Field | Table | Meaning | Impact on KPI |
|-------|-------|---------|---|
| MERDAT | QMEL | Time failure reported | Start of downtime clock |
| BEGDA | QMIH | Planned start of repair | Used in SLA tracking |
| FZDAT | AUFK | Actual repair start | Marks crew dispatch time |
| FZEND | AUFK | Actual repair end | End of down

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [BoxLogoDev](https://github.com/BoxLogoDev)
- **Source:** [BoxLogoDev/sapstack](https://github.com/BoxLogoDev/sapstack)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-boxlogodev-sapstack-sap-pm
- Seller: https://agentstack.voostack.com/s/boxlogodev
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
