SAP Target mapping目标映射本质

目标映射在 SAP Fiori 导航架构中的核心作用

目标映射是 SAP Fiori Launchpad 导航机制中的路由引擎,它负责将前端的用户交互动作转换为具体的后端应用调用。作为磁贴配置的关键组成部分,目标映射建立了语义导航模型与实际应用之间的桥梁。

  1. 目标映射的基本概念与定位

1.1 定义与核心价值

目标映射 是一个配置对象,它将语义对象(Semantic Object) + 动作(Action) 的组合映射到具体的应用目标(Fiori 应用、SAP GUI 事务、URL 等)。

核心价值

  • 实现松耦合导航:前端磁贴不直接硬编码应用URL
  • 支持统一路由管理:集中管理所有应用的导航终点
  • 提供环境感知路由:根据设备、用户上下文动态选择目标

1.2 在导航架构中的位置

复制代码
磁贴(触发) → 语义对象+动作 → 目标映射(解析) → 具体应用(执行)
  1. 目标映射的配置类型与场景

2.1 主要映射类型对比

映射类型 目标应用 配置方式 典型场景
SAP Fiori 应用 UI5/Fiori Elements 应用 应用ID + 语义对象绑定 标准业务应用(如销售订单处理)
SAP GUI 事务 传统 GUI 事务 事务代码 + 参数映射 尚未 Fiori 化的传统事务
外部 URL 第三方网页应用 绝对URL + 参数传递 集成外部系统、报表工具
自定义应用 自定义 UI5 应用 组件名 + 配置参数 客户定制开发的应用

2.2 详细配置示例

2.2.1 Fiori 应用映射

xml 复制代码
<!-- Launchpad Designer 中的目标映射配置 -->
<TargetMapping id="BankAccount_manage">
  <SemanticObject>BankAccount</SemanticObject>
  <Action>manage</Action>
  <Target>
    <Type>UI5</Type>
    <AppId>fin_ap_bankaccount_manage</AppId>
    <Url>/sap/bc/ui5_ui5/sap/fin_ap_bankaccount</Url>
    <Parameters>
      <Parameter name="companyCode" semanticObjectAttribute="CompanyCode"/>
    </Parameters>
  </Target>
</TargetMapping>

2.2.2 SAP GUI 事务映射

xml 复制代码
<TargetMapping id="FB01_display">
  <SemanticObject>AccountingDocument</SemanticObject>
  <Action>display</Action>
  <Target>
    <Type>Transaction</Type>
    <Name>FB03</Name>
    <Parameters>
      <Parameter name="BELNR" semanticObjectAttribute="AccountingDocumentNumber"/>
      <Parameter name="GJAHR" semanticObjectAttribute="FiscalYear"/>
    </Parameters>
  </Target>
</TargetMapping>
  1. 目标映射的工作机制与流程

3.1 导航触发完整流程

graph TD A[用户点击磁贴] --> B[提取语义对象+动作] B --> C[查询目标映射表] C --> D{找到匹配映射?} D -->|是| E[解析目标类型和参数] D -->|否| F[显示"应用不可用"] E --> G[根据类型路由] G --> H[UI5应用] G --> I[SAP GUI事务] G --> J[外部URL] H --> K[加载UI5组件] I --> L[启动GUI会话] J --> M[打开浏览器窗口]

3.2 参数传递机制

目标映射支持智能参数传递:

javascript 复制代码
// 语义对象属性到应用参数的映射示例
const parameterMapping = {
  // 从语义上下文获取参数值
  "CompanyCode": {
    source: "semanticObject",
    attribute: "CompanyCode", 
    required: true,
    defaultValue: "1000"
  },
  // 从用户上下文获取参数值  
  "UserId": {
    source: "userContext",
    attribute: "userId",
    required: true
  },
  // 固定参数值
  "DisplayMode": {
    source: "fixed",
    value: "fullScreen"
  }
};
  1. 目标映射的高级特性

4.1 条件性目标映射

根据运行时条件选择不同的目标:

xml 复制代码
<TargetMapping id="SalesOrder_create_conditional">
  <SemanticObject>SalesOrder</SemanticObject>
  <Action>create</Action>
  <Conditions>
    <!-- 根据设备类型选择不同应用 -->
    <Condition test="deviceType" value="desktop">
      <Target Type="UI5" AppId="salesorder_create_desktop"/>
    </Condition>
    <Condition test="deviceType" value="mobile">
      <Target Type="UI5" AppId="salesorder_create_mobile"/>
    </Condition>
  </Conditions>
</TargetMapping>

4.2 内联参数与上下文传递

xml 复制代码
<TargetMapping id="Customer_display_with_context">
  <SemanticObject>Customer</SemanticObject>
  <Action>display</Action>
  <Target>
    <Type>UI5</Type>
    <AppId>customer_display</AppId>
    <!-- 内联参数:直接传递固定值 -->
    <InlineParameter name="displayMode" value="advanced"/>
    <!-- 上下文参数:从语义对象传递 -->
    <ContextParameter name="customerId" semanticObjectAttribute="CustomerId"/>
    <!-- 用户上下文参数 -->
    <UserContextParameter name="language" attribute="userLanguage"/>
  </Target>
</TargetMapping>
  1. 实际业务场景中的应用

5.1 跨应用导航场景

业务场景:从销售订单列表导航到相关的客户主数据

javascript 复制代码
// 销售订单应用的导航动作
function navigateToCustomerFromOrder(salesOrder) {
  // 通过语义导航触发目标映射
  sap.ushell.Container.getService("CrossApplicationNavigation")
    .toExternal({
      target: {
        semanticObject: "Customer",
        action: "display"
      },
      params: {
        "CustomerId": salesOrder.soldToParty
      }
    });
}

5.2 统一出口管理

配置优势:当应用URL变更时,只需更新目标映射,所有引用该语义对象的磁贴自动生效:

xml 复制代码
<!-- 应用迁移前的映射 -->
<TargetMapping id="OldApp_mapping">
  <SemanticObject>BusinessPartner</SemanticObject>
  <Action>manage</Action>
  <Target Url="/sap/bc/ui5_ui5/sap/bp_old_app"/>
</TargetMapping>

<!-- 应用迁移后的映射 -->
<TargetMapping id="NewApp_mapping">
  <SemanticObject>BusinessPartner</SemanticObject>
  <Action>manage</Action>
  <Target Url="/sap/bc/ui5_ui5/sap/bp_new_app"/>
</TargetMapping>
  1. 管理与监控最佳实践

6.1 目标映射的集中管理

  • Launchpad Designer:图形化配置界面
  • Fiori 应用库:标准内容的目标映射
  • 自定义开发:通过 ABAP 类维护客户特定映射

6.2 问题诊断与排查

当导航失败时,检查要点:

javascript 复制代码
// 诊断目标映射问题的关键检查点
const diagnosticChecks = [
  "1. 语义对象+动作组合是否存在目标映射",
  "2. 目标应用是否已激活并部署", 
  "3. 用户是否有目标应用的访问权限",
  "4. 参数映射是否正确完整",
  "5. 目标URL/事务是否有效可用"
];
  1. 与整体架构的集成关系

目标映射作为导航架构的路由层,与其他组件深度集成:

  1. 与磁贴的关系:磁贴声明语义意图,目标映射提供具体实现
  2. 与技术目录的关系:技术目录包含的目标映射决定其功能范围
  3. 与业务目录的关系:业务目录的权限影响目标映射的可访问性
  4. 与页面的关系:页面布局基于可用的目标映射显示对应磁贴

总结 :目标映射是 SAP Fiori 实现声明式导航应用解耦的核心机制。它通过统一的语义导航模型,屏蔽了后端应用的复杂性,为用户提供一致、灵活的跨应用导航体验,同时大大简化了系统的维护和演进成本。

相关推荐
山茶花开时。14 天前
[SAP] SAP MM模块学习路径
sap·mm
stone082321 天前
SAP - 使用CL_FDT_XL_SPREADSHEET将Excel文档导入到内表
sap
雨天行舟25 天前
abap调用deepseek接口 v3.0
http·ai·sap·abap·聊天·deepseek
stone08231 个月前
SAP FICO程序 - 会计科目余额报表
sap
Henry-SAP1 个月前
ERP(SAP) MRP 业务视角全局流程解析
人工智能·sap·软件需求·erp·sap pp
小羔羊的官方学习账号1 个月前
SAP中工单控制关键配置点
sap·pp
SAP_奥维奥科技1 个月前
奥维奥助力花园乳业数字化转型落地 以SAP B1破解全产业链管理难题
sap·sap管理系统·sap business one·sap管理系统软件·sap实施服务商
sinat_375112261 个月前
ME_PROCESS_PO_CUST增强check
sap·abap·增强
Seele_10181 个月前
RAP - 报表示例
sap·abap