欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何自行分析定位SAP BSP错误 SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

程序员文章站 2022-06-13 17:30:23
...

The “BSP tag” I mentioned in the blog title means for example the tag chtmlb:configCellerator below which is pre-delivered by SAP and you could include it in your UI component view to draw various UI element.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

In this blog I will share with you a real issue I meet with when I am using configCellerator and how I find the root cause. So sometimes if you find the behavior of BSP tag is not working as you expected, if time allowed, you can spend sometime to investigate by yourself. Such investigation will make you understand how native html is rendered based on those BSP tag more thoroughly.

Issue1 – Missing table toolbar

Although the entry for table toolbar is found in debugger,

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

However in the UI the table toolbar is missing.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

I guess the issue might be related to attribute “editMode” set in line 12. I try to find documentation on this attribute in SE80 but unfortunately there is not.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

Then double click on line 6 ( the first screenshot in this blog) “configCellerator”, in the new screen click tab “Attribute”, now I get to know the possible value for editMode is NONE, SINGLE and ALL. However still I don’t know the clear meaning of these three values.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

So below is how I investigate on the usage of attribute “editMode”:

(1) Do observation on the callstack of UI rendering and I find framework is using CL_THTMLB_CELLERATOR to render the table defined via configCellerator.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

(2) run report RS_ABAP_SOURCE_SCAN, search key word EDITMODE against class CL_THTMLB_CELLERATOR found in step 1. Navigate to the source code of the third hit:

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

it means if the editmode is set as NONE, the member attribute NOHEADER of class CL_THTMLB_CELLERATOR is set as TRUE.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

(2.1) rerun report RS_ABAP_SOURCE_SCAN but this time search keyword NOHEADER instead ( or you can also use where used list on member attribute NOHEADER in SE24 ). The hit shows that the string “TRUE”( or “FALSE”) stored in member attribute NOHEADER is converted to abap boolean and stored in variable gv_no_header.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

2.2 repeat the step 2 and 2.1, search keyword gv_no_header. The third hit demonstrates the table toolbar could only be rendered if gv_no_header is abap_false ( and other condition between line 10 and 14 are fulfilled ). The html source is the final native html code rendered by UI framework.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

After I remove the editMode attribute and I could see the expected table toolbar.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

I view the source code of my table view and I could find the hard coded html code in the line 17 of screenshot above. And the html code for toolbar title is just very next to it. So this issue is just resolved without debugging, but just pure source code analysis in the design time.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

Issue2 – Do not expect the table cell editable

In my project I need to switch the BOL entity to change mode, however I do not want to make each table cell be editable, instead user will edit the locked object in another UI and see result after edit in the table view. In the table view I expect each cell is read only.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

My BOL model has 40 attributes and I would not like to code “rv_disabled = TRUE” 40 times in each GET_I_ method.

I plan to investigate the attribute usage = “ASSIGNMENTBLOCK”

Here below is my analysis process:

(1) run report RS_ABAP_SOURCE_SCAN, search keyword ASSIGNMENTBLOCK, class CL_THTMLB_CELLERATOR – no result

(2) double click tag configCellerator, then find the element handler class name:

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

then run report again and change the search class to CL_CHTMLB_CONFIG_CELLERATOR. only one result which points to the commented out code. Just ignore it.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

(3) find all possible value for usage attribute here, and run report again with search keyword = “SEARCHRESULT”: Only one result hit:

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

and the code indicates that the usage attribute “SEARCHRESULT” will set the whole table to read only mode.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

After I change the attribute and test the table cells are rendered as read only as I expect.

Summary

In some case it might be possible that you can not get quite promising result by the first RS_ABAP_SOURCE_SCAN execution.

The tip is how to specify search keyword and search class ( or package, report etc ) cleverly so that the search result are relevant and helpful for your further investigation. Usually it would take several iterations before you reach your target, as are shown in my two examples in this blog.

My common experience to specify search selection for report RS_ABAP_SOURCE_SCAN is: (1) Try to find the very class ( or report, function group etc ) which is relevant. If it is difficult to identify the exact one, use * for example “CL_CHTMLB*”. (2) Find the package name of the class( or report, function group etc ), and run report against the package instead.

 

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud 

 

Reference

there is a useful blog written by Andrei Vishnevsky about creating a new BSP tag and its corresponding element handler class. By reading it you will get a deeper understanding how the element handler class takes part in the UI render process.

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

如何自行分析定位SAP BSP错误
            
    
    
        SAPSAP云平台SAP Cloud PlatformSAP成都研究院Cloud