DPC_EXT 中的变更集 begin/end 方法,但 GCS_METHODS-CHANGESET_BEGIN 未知

changeset begin/end methods in DPC_EXT but GCS_METHODS-CHANGESET_BEGIN unknown

我的 SAPui5 网络应用程序在 Chrome 的控制台中抛出此错误:

The following problem occurred: HTTP request failed500,Internal Server Error,{"error":{
"code":"/IWBEP/CM_MGW_RT/053","message":{"lang":"en","value":"Default changeset impleme
ntation allows only one operation"},"innererror":{"application":{"component_id":"CA","s
ervice_namespace":"/SAP/","service_id":"YFLEXUI_LEAVE_REQUEST_SRV","service_version":"0
001"},"transactionid":"something","timestamp":"something","Error_Resolution":{"SAP_Tran
saction":"For backend administrators: run transaction /IWFND/ERROR_LOG on SAP Gateway h
ub system and search for entries with the timestamp above for more details","SAP_Note":
"See SAP Note 1797736 for error analysis (https://service.sap.com/sap/support/notes/179
7736)"},"errordetails":[{"code":"/IWBEP/CX_MGW_TECH_EXCEPTION","message":"Default chang
eset implementation allows only one operation","propertyref":"","severity":"error","tar
get":""}]}}} -  

根据网上的一些帖子,问题是由于这些方法之间的冲突造成的:

/iwbep/if_mgw_appl_srv_runtime~changeset_begin
/iwbep/if_mgw_appl_srv_runtime~changeset_end

/iwbep/if_mgw_core_srv_runtime~changeset_begin
/iwbep/if_mgw_core_srv_runtime~changeset_end

大多数人建议重新定义方法 /iwbep/if_mgw_appl_srv_runtime~changeset_begin/iwbep/if_mgw_appl_srv_runtime~changeset_end

这是我的/iwbep/if_mgw_appl_srv_runtime~changeset_begin方法:

METHOD /iwbep/if_mgw_appl_srv_runtime~changeset_begin.
* Default Implementation:
*  - Local Update Task
*  - Only one operation in each changeset
*  - No deferred processing: Immediate process changset operation

    SET UPDATE TASK LOCAL.

    IF lines( it_operation_info ) > 1.
      RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception
        EXPORTING
          textid = /iwbep/cx_mgw_tech_exception=>changeset_default_violation
          method = gcs_methods-changeset_begin.
    ENDIF.

    CLEAR cv_defer_mode.
ENDMETHOD.

问题是,在 SE80 中,在重新定义 /iwbep/if_mgw_appl_srv_runtime~changeset_begin 之后,当我尝试检查该方法并激活它时,SAP 抛出此错误:

Field GCS_METHODS-CHANGESET_BEGIN is unknown

你能告诉我/iwbep/if_mgw_appl_srv_runtime~changeset_begin的重定义怎么会导致这样的错误吗?

仅供参考。 gcs_methods 是私有常量。这可能是导致问题的原因。

我们最近遇到了同样的问题,重新定义了这样的方法:

METHOD /iwbep/if_mgw_core_srv_runtime~changeset_begin.

  IF line_exists( it_operation_info[ entity_type = 'ENTITY_TYPE' ] ).
    cv_defer_mode = abap_true.
  ENDIF.

ENDMETHOD

我不是这方面的专家,但是这个实现解决了我们的问题。 但是,我不知道您的私有常量有什么问题。

错误是 class 接口上的非活动方法。一个简单的代码检查告诉这个实现的所有错误。

BR,

子类不能使用其超类的 private 成员(除非超类说该子类是其友元)。

生成超类时,您必须在自己的程序中复制常量。