懂得都懂,客制化FIORI 的UI5代码都是放在服务器上面的,和ABAP代码存放的地方是差不多的,可能就具体的表不同罢了。有一天突发奇想,既然有ABAP Source Scan ,为什么没有一个UI5 Scan 程序扫描一下UI5代码方便我们更加容易找到代码。比如说我要找下OData在哪个项目里面用到,是不是就得用得上场了。Talk is cheap .Yah,给各位老哥和Young Blood上代码。
*&---------------------------------------------------------------------*
*& Report YTESTSJR003
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YTESTSJR003.
TABLES:
O2PAGDIR.
SELECT-OPTIONS: S_APPL FOR O2PAGDIR-APPLNAME. "BSP项目名
SELECT-OPTIONS: S_PAGE FOR O2PAGDIR-PAGEKEY. "BSP页面名
PARAMETERS: P_PTRN TYPE STRING OBLIGATORY. "ptrn 与关系,表示同时出现在项目中
PARAMETERS: P_PTRN1 TYPE STRING OBLIGATORY. "ptrn 与关系,表示同时出现在项目中
PARAMETERS: CK_RGX TYPE C AS CHECKBOX ."正则表达式匹配
START-OF-SELECTION.
PERFORM RUN_REPORT.
FORM RUN_REPORT.
DATA:
LS_PAGE_KEY TYPE O2PAGKEY,
LT_PAGE_SOURCE TYPE O2PAGELINE_TABLE.
DATA : LV_PAGE_CODE TYPE STRING.
DATA: CLS_MATCHER TYPE REF TO CL_ABAP_MATCHER,
LV_MATCH TYPE C LENGTH 1,
LV_MATCH1 TYPE C LENGTH 1.
SELECT APPLNAME, PAGEKEY
FROM O2PAGDIR
WHERE APPLNAME IN @S_APPL
AND PAGEKEY IN @S_PAGE
INTO TABLE @DATA(LT_BSP_PAGES).
CHECK SY-SUBRC = 0.
LOOP AT LT_BSP_PAGES REFERENCE INTO DATA(LD_BSP_PAGE).
CLEAR LT_PAGE_SOURCE.
CLEAR LV_PAGE_CODE.
MOVE-CORRESPONDING LD_BSP_PAGE->* TO LS_PAGE_KEY.
CALL METHOD CL_BSP_API_GENERATE=>BSP_API_GET_PAGE
EXPORTING
P_PAGEKEY = LS_PAGE_KEY
IMPORTING
P_SOURCE = LT_PAGE_SOURCE.
LOOP AT LT_PAGE_SOURCE INTO DATA(LS_LINE).
TRANSLATE LS_LINE TO UPPER CASE.
CONCATENATE LV_PAGE_CODE LS_LINE INTO LV_PAGE_CODE.
ENDLOOP.
IF CK_RGX EQ 'X'.
IF P_PTRN IS NOT INITIAL.
CLS_MATCHER = CL_ABAP_MATCHER=>CREATE( PATTERN = P_PTRN
TEXT = LV_PAGE_CODE ).
LV_MATCH = CLS_MATCHER->MATCH( ).
ENDIF.
IF P_PTRN1 IS NOT INITIAL.
CLS_MATCHER = CL_ABAP_MATCHER=>CREATE( PATTERN = P_PTRN1
TEXT = LV_PAGE_CODE ).
LV_MATCH1 = CLS_MATCHER->MATCH( ).
ENDIF.
IF LV_MATCH IS NOT INITIAL and LV_MATCH1 IS NOT INITIAL .
WRITE: / LS_PAGE_KEY-APPLNAME, LS_PAGE_KEY-PAGEKEY, ' contains searched pattern'.
ENDIF.
ELSE.
IF LV_PAGE_CODE CP P_PTRN AND LV_PAGE_CODE CP P_PTRN1 .
WRITE: / LS_PAGE_KEY-APPLNAME, LS_PAGE_KEY-PAGEKEY, ' contains searched pattern'.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.