SAPUI5 Source Code Scan

        懂得都懂,客制化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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值