什么是 SAP ABAP 的 Draft Handling 特性

发布时间 2023-12-02 18:11:05作者: JerryWang_汪子熙

ABAP 中的 Draft handling 是 SAP Fiori 应用程序中的一个重要特性,它允许用户保存他们正在工作的实体的未完成的状态,这可以使得用户在任何时候停止工作,然后在稍后的任何时间点继续。这种方式不仅保存了实体的数据,而且也保持了用户的 UI 状态,例如滚动位置,焦点等。

Draft handling 在 ABAP 编程中的主要目的是提供一种机制,允许用户保存他们的工作的当前状态,即使这个状态尚未完成。这在很多情况下都非常有用,例如,当用户需要中断他们的工作去处理其他的任务,或者当用户需要在完成他们的工作之前先做一些研究或者寻求一些建议。

实现 Draft handling 的基本方法是使用 SAP 的 ABAP 编程语言来编写代码,这个代码会将用户的工作状态保存到数据库中。然后,当用户准备继续他们的工作时,这个代码会从数据库中提取出这个状态,并将它加载到用户的界面中。这个过程是透明的,用户不需要做任何额外的操作。

为了说明 Draft handling 的使用,让我们看一个简单的例子。假设我们正在开发一个 Fiori 应用程序,这个应用程序允许用户创建和编辑销售订单。用户可以在创建或编辑销售订单的过程中随时保存他们的工作状态,然后在稍后的任何时间点继续。

在 ABAP 中,我们可以使用以下的代码来实现这个功能:

DATA: lo_draft_administrator TYPE REF TO /IWBEP/IF_MGW_DRAFT_ADMIN.

lo_draft_administrator = /IWBEP/CL_MGW_DRAFT_ADMIN=>GET_INSTANCE( ).
CALL METHOD lo_draft_administrator->CREATE_DRAFT
  EXPORTING
    iv_entity_name = 'SalesOrder'
    iv_entity_set_name = 'SalesOrders'
    iv_draft_data = ls_sales_order
  IMPORTING
    ev_draft_key = lv_draft_key.

在这个代码中,我们首先创建一个 Draft Administrator 对象,然后调用它的 CREATE_DRAFT 方法来创建一个新的草稿。这个方法需要三个参数:实体名称,实体集合名称,以及实体的数据。方法执行后,它会返回一个 Draft Key,我们可以使用这个 Key 在稍后的任何时间点提取出这个草稿。

当用户准备继续他们的工作时,我们可以使用以下的代码来提取出这个草稿:

DATA: lo_draft_administrator TYPE REF TO /IWBEP/IF_MGW_DRAFT_ADMIN.

lo_draft_administrator = /IWBEP/CL_MGW_DRAFT_ADMIN=>GET_INSTANCE( ).
CALL METHOD lo_draft_administrator->READ_DRAFT
  EXPORTING
    iv_entity_name = 'SalesOrder'
    iv_entity_set_name = 'SalesOrders'
    iv_draft_key = lv_draft_key
  IMPORTING
    ev_draft_data = ls_sales_order.