`
JerryWang_SAP
  • 浏览: 1032289 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SAP CRM WebClient UI异常的持久化机制

阅读更多

When I am working together with local partner to resolve one issue caused by incorrect enhancement set configuration for new custom Product set type, I have realized that if the UI exception is raised and caught by framework, there would be no entry in ST22, which causes the difficulties for later trouble shooting.

When I am debugging the code how the framework handles with the exception, I found there is the possibility to let the framework call the error handler defined by ourselves being registered in table bsperrhandler.

 

 

So I think it is worthy to create a simple error handler class to persist the exception information into a new transparent table for later checking.

(1) create a class ZCL_ERROR_HANDLER with a static public method STORE_ERROR_INFO, signature as below:

 

 

Source code as below. Just extract error message text and the exact position which line of source code has raised the exception:

METHOD store_error_info.
  DATA: lv_header_text TYPE string,
        l_einternal TYPE REF TO cx_bsp_einternal,
        l_exception      TYPE REF TO cx_root,
        l_program_name   TYPE syrepid,
        l_include_name   TYPE syrepid,
        l_source_line    TYPE i,
        lv_log_text      TYPE string,
        ls_log           TYPE zbsplog.
  l_exception = exception.
  CHECK server IS NOT INITIAL AND exception IS NOT INITIAL.
  lv_header_text = exception->get_text( ).
  TRY.
      l_einternal ?= exception.
    CATCH cx_root.
  ENDTRY.
  IF l_einternal IS BOUND.
    CALL METHOD l_einternal->get_source_position
      IMPORTING
        program_name = l_program_name
        include_name = l_include_name
        source_line  = l_source_line.
  ELSE.
    WHILE l_exception->previous IS BOUND.
      l_exception = l_exception->previous.
    ENDWHILE.
    CALL METHOD l_exception->get_source_position
      IMPORTING
        program_name = l_program_name
        include_name = l_include_name
        source_line  = l_source_line.
  ENDIF.
  CALL FUNCTION 'GUID_CREATE'
    IMPORTING
      ev_guid_16 = ls_log-uuid.
  ls_log-error_date = sy-datlo.
  ls_log-error_time = sy-timlo.
  ls_log-error_string = |<head><h1>{ lv_header_text }</h1><h2>Error Date:{ sy-datlo }</h2><h2>Error Time:{ sy-timlo }</h2>| &&
  |<h3>Error program:{ l_program_name }</h3><h3>Error include:{ l_include_name }</h3><h3>Source code line number:{ l_source_line }</h3>|
  && |</head>|.
  INSERT zbsplog FROM ls_log.
  COMMIT WORK AND WAIT.
ENDMETHOD.

(2) Create a new transparent table to store the exception detail:

 

 

(3) Register the new error handler into table bsperrhandler:

 

 

(4) Write a simple report to list the exception information. Of course more elegant UI like ALV could be used:

data: lt_table type STANDARD TABLE OF zbsplog,
      lv_error TYPE zbsplog-error_string.
FIELD-SYMBOLS:<item> TYPE zbsplog.
START-OF-SELECTION.
   SELECT * INTO TABLE lt_table FROM zbsplog.
   LOOP AT lt_table ASSIGNING <item>.
      WRITE:/ 'guid: ', <item>-uuid,'date: ', <item>-error_date, <item>-error_time.
      lv_error = <item>-error_string.
      HIDE lv_error.
   ENDLOOP.
   AT LINE-SELECTION.
      cl_demo_output=>display_html( lv_error ).

execute the report and double click one line item, the detail information would be displayed via the handy class cl_demo_output. With the include name and source code line number available, you could implement further handling like automatically navigation to the source code in ABAP editor by calling function module RS_TOOL_ACCESS with include name and source code number passed in.

 

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
0
分享到:
评论

相关推荐

    CRM7.0 WebClient UI config

    在SAP CRM 7.0版本中,WebClient UI配置是一项关键任务,它涉及到了用户界面的定制和优化,以提升用户体验和业务效率。WebClient UI是SAP CRM的一个核心组件,提供了一个基于Web的交互界面,使得用户能够访问和操作...

    Creating a Dropdown in SAP CRM WebUI.docx

    在SAP CRM WebUI中创建下拉列表是一个关键任务,特别是在设计用户界面以提供更高效、用户友好的交互时。本教程将引导你通过一系列步骤来实现这一目标,特别是针对SEX(性别)属性创建一个下拉框。 首先,你需要获取...

    SAP_CRM中文自学笔记

    SAP CRM的基础知识通常包括对于其核心组件的理解,包括主数据(如账户、组织模型、产品等),交易处理、定价、开票、CRM中间件以及CRM WebClient UI。CRM中间件主要负责不同系统组件之间的信息交换,而CRM WebClient...

    SAP CRM WebClient UI cross component跳转的一个具体例子

    Sent: Thursday, April 18, 2013 3:59 PM Subject: 为什么design time时候看到的是ICQR,点了service之后看到02QR的代码被call到 这是cross component navigation在起作用。 Result list是model在ICQR里面,如果点...

    SAPCRM基础培训教材.doc

    《SAP CRM基础培训教材详解》 ...总结来说,SAP CRM的基础培训涵盖了WebClient UI的演变及其丰富元素,以及CRM与ERP的集成策略。了解这些知识,有助于更好地理解和使用SAP CRM系统,提升企业的运营效率和服务质量。

    SAP CRM WebClient UI ON_NEW_FOCUS的用途

    Sent: Thursday, May 9, 2013 6:30 PM Subject: ON_NEW_FOCUS的用途 ROOT ———————————— Product ID PRODshortText ———————————— Product Description Genil Model hierarchy

    UI Guidelines for CRM WebClient User Interface

    UI Guidelines for CRM WebClient User Interface

    SAPCRM基础培训.doc

    在SAP CRM基础培训中,WebClient UI(Web客户端用户界面)是一个重要的学习焦点,它是用户与系统交互的主要界面。下面我们将深入探讨WebClient UI的相关知识点。 WebClient UI的发展历程是从GUI(图形用户界面)...

    sap 简介及关键提示

    产品建议不仅能在标准订单等销售事务中应用,还能在CRM WebClient UI(交互中心)和Web渠道中实时呈现,帮助销售人员在与客户的互动中快速响应并提供个性化建议。 通过灵活地配置产品联想规则,企业可以设定复杂的...

    WebClient下载文件展示进度条

    请注意,实际应用中可能需要处理错误和异常,以及考虑线程同步问题,确保UI线程安全地更新进度条。此外,如果要实现更复杂的功能,比如暂停和恢复下载,可能需要使用更高级的类如System.Net.Http.HttpClient,配合...

    WebClientDemo_webclient_

    首先,`DownloadManager.cs`可能是整个下载过程的管理者,它可能负责初始化`WebClient`实例,启动和暂停下载任务,以及管理多个下载任务。`DownloadProcessForm.Designer.cs`和`DownloadProcessForm.cs`组合起来构成...

    C#中WebClient实现文件下载

    在C#编程中,WebClient类提供了一种简单的方式来实现文件下载。WebClient是一个高度封装的网络通信类,主要用于HTTP协议交互,包括...在实际应用中,还要考虑错误处理和异常恢复机制,以提高程序的稳定性和用户体验。

    C# WebClient 上传文件

    ### C# WebClient 上传文件知识点解析 #### 一、引言 在开发过程中,经常会遇到需要将客户端的文件上传到服务器的需求。C#语言提供了多种方法来实现这一功能,其中`WebClient`类就是一种非常简便的方式。本文将详细...

    C#webClient.DownloadFileAsync异步源码

    这在UI应用程序中尤为重要,因为阻塞主线程会导致用户界面无响应。C# 引入了`async`和`await`关键字,使得异步编程变得更加简洁和易于理解。 2. **WebClient类** `System.Net.WebClient`是.NET Framework中一个...

    C#通过webclient下载demo

    - **错误处理**:`WebClient`的下载方法可能会抛出异常,如`WebException`,因此在实际应用中,应添加适当的异常处理代码。 - **取消下载**:可以通过调用`WebClient`的`CancelAsync()`方法取消正在进行的下载任务...

    WebClient-2.2.5.exe

    WebClient安装文件。 在Java世界中,有许多用于发送HTTP请求的库。比较三种流行的HTTP客户端:WebClient,HttpClient和OkHttp。WebClient是Spring 5中引入的非阻塞,反应式的Web客户端。它是在Project Reactor和...

    WebClient用法

    在使用`WebClient`进行网络请求时,可能会遇到各种异常,如网络连接问题、认证失败等。建议使用`try-catch`块来捕获并处理这些异常。 ```csharp try { // 发送请求 } catch (Exception ex) { Console.WriteLine(...

    WebClient 上传文件到 iis

    在实际开发中,你可能需要根据自己的需求调整这些步骤,比如添加身份验证、使用异步上传以避免阻塞UI线程等。 总之,利用C#的WebClient类上传文件到IIS是一项常见的任务,通过理解HTTP协议和WebClient类的工作原理...

    WebClient jar包

    WebClient jar包

    C#使用WebClient获取网页源文件例子

    如果网页源文件包含非标准的UTF-8序列,解码时可能会出现异常,这时需要适当地处理这些异常。 在项目实践中,我们通常会把这段代码封装到一个方法里,以便在多个地方重用。比如,我们可以创建一个名为`...

Global site tag (gtag.js) - Google Analytics