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 成员(除非超类说该子类是其友元)。
生成超类时,您必须在自己的程序中复制常量。
我的 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 成员(除非超类说该子类是其友元)。
生成超类时,您必须在自己的程序中复制常量。