• UI界面按钮增强


    (我是菜鸟,知道的少)

    1.有HTML页面代码的,可以编辑

    <%@page language="abap" %>
    <%@extension name="thtmlb" prefix="thtmlb" %>
    <%@extension name="chtmlb" prefix="chtmlb" %>
    <%@extension name="bsp" prefix="bsp" %>
    <%--<thtmlb:toolbar buttons         = "<%= controller->IF_BSP_WD_DYN_BTN_CONTROL~GET_LOCAL_TOOLBAR_BUTTONS( ) %>"
                    id              = "toolbar"
                    maxButtonNumber = "<%= controller->IF_BSP_WD_DYN_BTN_CONTROL~GET_NO_OF_VISIBLE_TOOLBAR_BTNS( ) %>" />--%>
    <%--<chtmlb:config displayMode = " "
                   mode        = "RUNTIME"
                   xml         = "<%= controller->configuration_descr->get_config_data( ) %>" />--%>
    
    
     <chtmlb:configGrid columnSize="16" rowSize="3" width="100%">
      <chtmlb:configGridCell colSpan="5" columnIndex="1" rowIndex="1" rowSpan="1" >
        <thtmlb:label        id      = "upload_label"
                             for     = "upload"
                             design  = "LABELRIGHT"
                             text    = "<%= page->otr_trim( 'CRM_UIU_GS_CM/UPLOAD_DOC' ) %>"
                             tooltip = "<%= page->otr_trim( 'CRM_UIU_GS_CM/UPLOAD_DOC' ) %>"
                             width   = "100%"/>
      </chtmlb:configGridCell>
    
      <chtmlb:configGridCell colSpan="11" columnIndex="6" rowIndex="1" rowSpan="1" >
        <thtmlb:fileUpload   id    = "upload"
                             size  = "45"  />
      </chtmlb:configGridCell>
    
      <chtmlb:configGridCell colSpan="16" columnIndex="1" rowIndex="3" rowSpan="1" >
        <thtmlb:button id    = "attach"
                     onClick = "ATTACH"
                     enabled = "TRUE"
                     text    = "<%=otr(CRM_UIU_GS_CM/UPLOAD)%>" />
    
        <thtmlb:button id      = "cancel"
                       onClick = "cancel"
                       enabled = "TRUE"
                       text    = "<%=otr(CRM_UIU_GS_CM/CANCEL)%>" />
      </chtmlb:configGridCell>
    
    
    </chtmlb:configGrid>

    这种是在页面对应位置加按钮,并把按钮对应到相应事件,然后在事件中实现按钮功能

    2.普通的页面可以在工具栏相关方法GET_BUTTONS中

    METHOD IF_BSP_WD_TOOLBAR_CALLBACK~GET_BUTTONS.
      DATA: LS_BUTTON         TYPE CRMT_THTMLB_BUTTON_EXT.
      DATA: LV_URL            TYPE STRING,
            LV_URL2           TYPE STRING,
            LV_OBJECT_ID      TYPE CRMT_OBJECT_ID,
            LV_SRV_TYPE       TYPE ZDTEL00003Y,
            LV_SMARTFORM_NAME TYPE TDSFNAME.
    
      DATA: LR_ENTITY       TYPE REF TO CL_CRM_BOL_ENTITY,
            LR_COLL         TYPE REF TO IF_BOL_ENTITY_COL,
            LR_CURRENT      TYPE REF TO IF_BOL_BO_PROPERTY_ACCESS,
            LR_ENTITY_ORG   TYPE REF TO CL_CRM_BOL_ENTITY,
            LV_PROCESS_TYPE TYPE STRING,
            LS_ORGSET_BTIL  TYPE CRMST_ORGSET_BTIL.
    
      FIELD-SYMBOLS: <FS_OBJECT_ID> TYPE CRMT_OBJECT_ID.
    
    
    
      CALL METHOD SUPER->IF_BSP_WD_TOOLBAR_CALLBACK~GET_BUTTONS
        RECEIVING
          RT_BUTTONS = RT_BUTTONS.
    
      DELETE RT_BUTTONS WHERE ON_CLICK = 'OUTPUT'.
      DELETE RT_BUTTONS WHERE ON_CLICK = 'PRINT_PREVIEW'.
    
      LR_ENTITY ?= ME->ZTYPED_CONTEXT->BTADMINH->COLLECTION_WRAPPER->GET_CURRENT( ).
      IF LR_ENTITY IS BOUND.
        TRY.
            LV_PROCESS_TYPE = LR_ENTITY->GET_PROPERTY_AS_STRING( IV_ATTR_NAME = 'PROCESS_TYPE').
            CALL METHOD LR_ENTITY->IF_BOL_BO_PROPERTY_ACCESS~GET_PROPERTY_AS_VALUE
              EXPORTING
                IV_ATTR_NAME = 'OBJECT_ID'
              IMPORTING
                EV_RESULT    = LV_OBJECT_ID.
            LR_COLL = LR_ENTITY->GET_RELATED_ENTITIES( IV_RELATION_NAME = 'BTHeaderOrgmanSet' ). "
            LR_CURRENT = LR_COLL->GET_CURRENT( ).
            IF LR_CURRENT IS BOUND.
              LR_ENTITY_ORG ?= LR_CURRENT.
              LR_ENTITY_ORG->IF_BOL_BO_PROPERTY_ACCESS~GET_PROPERTIES( IMPORTING ES_ATTRIBUTES = LS_ORGSET_BTIL ).
            ENDIF.
          CATCH CX_CRM_CIC_PARAMETER_ERROR.
        ENDTRY.
      ENDIF.
    
      CHECK LV_OBJECT_ID IS NOT INITIAL.
    
      CHECK LV_PROCESS_TYPE = 'ZSR2' OR LV_PROCESS_TYPE = 'ZSR3' OR LV_PROCESS_TYPE = 'ZSV1' OR LV_PROCESS_TYPE = 'ZSV2' OR LV_PROCESS_TYPE = 'ZSV3' OR LV_PROCESS_TYPE = 'ZWO4'.
    
      CASE LV_PROCESS_TYPE.
        WHEN 'ZSR2'.
          LV_SMARTFORM_NAME = 'ZEXCH'.
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
    
        WHEN 'ZSR3'.
          LV_SMARTFORM_NAME = 'ZREFUND'.
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
    
        WHEN 'ZSV1'.
          IF LS_ORGSET_BTIL-SALES_ORG = 'O 50000178'.
            LV_SMARTFORM_NAME = 'ZSRV_ORD'.
          ELSEIF LS_ORGSET_BTIL-SALES_ORG = 'O 50000192' OR LS_ORGSET_BTIL-SALES_ORG = 'O 50000194'.
            LV_SMARTFORM_NAME = 'ZSRV_ORD_ZA'.
          ELSE.
            LV_SMARTFORM_NAME = 'ZSRV_ORD_N'.
          ENDIF.
    *      lv_smartform_name = 'ZSERVICE_ORD'.
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
    
    *      lv_smartform_name = 'ZSRV_ORD_N'.
    *      CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' lv_object_id '&smartform_name=' lv_smartform_name '");' INTO lv_url2.
    
        WHEN 'ZSV2'.
          IF LS_ORGSET_BTIL-SALES_ORG = 'O 50000192' OR LS_ORGSET_BTIL-SALES_ORG = 'O 50000194'.
            LV_SMARTFORM_NAME = 'ZSERVICE_ORD_ZA'.
          ELSE.
            LV_SMARTFORM_NAME = 'ZSERVICE_ORD'.
          ENDIF.
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
    
        WHEN 'ZSV3'.
          IF LS_ORGSET_BTIL-SALES_ORG = 'O 50000131'.
            LV_SMARTFORM_NAME = 'ZSERVICE_ORD_AU'.
          ELSEIF LS_ORGSET_BTIL-SALES_ORG = 'O 50000192' OR LS_ORGSET_BTIL-SALES_ORG = 'O 50000194'.
            LV_SMARTFORM_NAME = 'ZSERVICE_ORD_ZA'.
          ELSE.
            LV_SMARTFORM_NAME = 'ZSERVICE_ORD'.
          ENDIF.
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
    
        WHEN 'ZWO4'.
          LV_SMARTFORM_NAME = 'ZSERVICE_ORD'.
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
    
        WHEN OTHERS.
      ENDCASE.
    
    
    *  CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' lv_object_id '&smartform_name=' lv_smartform_name '");' INTO lv_url.
    *
      CLEAR LS_BUTTON.
      LS_BUTTON-TEXT     = CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'ZCRM/PDFPRINT' ). "#EC NOTEXT
      LS_BUTTON-ON_CLIENT_CLICK = LV_URL.
      LS_BUTTON-ENABLED  = ABAP_TRUE.                           "#EC NOTEXT
      INSERT LS_BUTTON INTO RT_BUTTONS INDEX 10.
    
    
      CALL METHOD LR_ENTITY->IF_BOL_BO_PROPERTY_ACCESS~GET_PROPERTY_AS_VALUE
        EXPORTING
          IV_ATTR_NAME = 'ZZFLD00000N'
        IMPORTING
          EV_RESULT    = LV_SRV_TYPE.
    
      CLEAR:LV_URL,LS_BUTTON.
      LV_SMARTFORM_NAME = 'ZREPAIR_REP01'.
      CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
      LS_BUTTON-TEXT     = 'Repair Rep Print'.                  "#EC NOTEXT
      LS_BUTTON-ON_CLIENT_CLICK = LV_URL.
      LS_BUTTON-ENABLED  = ABAP_TRUE.                           "#EC NOTEXT
      INSERT LS_BUTTON INTO RT_BUTTONS INDEX 11.
    
      IF LV_PROCESS_TYPE = 'ZSV1'.
        CLEAR:LV_URL,LS_BUTTON.
        LV_SMARTFORM_NAME = 'ZCRM_SERVICE_01'.
        CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' LV_OBJECT_ID '&smartform_name=' LV_SMARTFORM_NAME '");' INTO LV_URL.
        LS_BUTTON-TEXT     = 'Repair Follow Print'.                "#EC NOTEXT
        LS_BUTTON-ON_CLIENT_CLICK = LV_URL.
        LS_BUTTON-ENABLED  = ABAP_TRUE.                         "#EC NOTEXT
        INSERT LS_BUTTON INTO RT_BUTTONS INDEX 12.
      ENDIF.
    
    
    
    
    *  CLEAR ls_button.
    *  ls_button-text     = cl_wd_utilities=>get_otr_text_by_alias( 'ZCRM/DELIVPRT' ). "#EC NOTEXT
    *  ls_button-on_client_click = lv_url2.
    *  ls_button-enabled  = abap_true.                           "#EC NOTEXT
    *  INSERT ls_button INTO rt_buttons INDEX 10.
    
    ENDMETHOD.

    这个就相当与DIALOG中的SET_PF_STATUS

    3.申请处理的DO_PREPARE_OUTPUT方法,这个相当于PBO

      METHOD do_prepare_output.
        CALL METHOD super->do_prepare_output
          EXPORTING
            iv_first_time = abap_false.
    *初始化按钮-Begin
        do_init_button( ).
    *初始化按钮-End
      ENDMETHOD.
      METHOD do_init_button.
        DATA:
          lv_enabled        TYPE abap_bool,
          ls_button         TYPE crmt_thtmlb_button,
          lv_script         TYPE string,
          lv_true_false     TYPE string,
          lv_smartform_name TYPE tdsfname VALUE 'ZCRM_SERVICE_02',
          lv_zserialno      TYPE zserialno,
          lv_zstatus        TYPE zsrve_status,
          lv_object         TYPE crmt_object_id_db,
          lv_url            TYPE string,
          lv_index          TYPE i VALUE 11.
        DATA:lv_bol    TYPE REF TO if_bol_bo_col,
             lv_access TYPE REF TO if_bol_bo_property_access.
    *   导入
        CLEAR:ls_button .
        READ TABLE gt_button INTO ls_button WITH KEY on_click = 'ZUPLOAD'.
        IF sy-subrc <> 0.
          CLEAR ls_button.
          ls_button-type     = cl_thtmlb_util=>gc_icon_new.
          ls_button-tooltip  = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_MKTRRG/IMPORT' ).
          ls_button-text     = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_MKTRRG/IMPORT' ).
          ls_button-on_click = 'ZUPLOAD' .                      "#EC NOTEXT
          ls_button-enabled = abap_true .
          APPEND ls_button TO gt_button .
        ENDIF.
    *  下载模板
        CLEAR:ls_button .
        READ TABLE gt_button INTO ls_button WITH KEY on_click = 'DOWNLOAD'.
        IF sy-subrc <> 0.
          CLEAR :
          lv_url, lv_script,ls_button .
          lv_url = '../../sap/ZCRM_EXCEL_IMP/ZSRVS_QUERY_002_RESULT_UI.xlsx' .
    *      CONCATENATE `thtmlbExcelExportGen('`
          CONCATENATE `javascript:window.open('`
          lv_url
          `',`
          'false'
          `)`
          INTO lv_script .
    ***模版下载另类处理方式 CONCATENATE `javascript:window.open('`
          ls_button-type     = cl_thtmlb_util=>gc_icon_file_spreadsheet.
          ls_button-tooltip  = text-002 .
          ls_button-text     = text-002  .
          ls_button-on_click = 'DOWNLOAD' .                     "#EC NOTEXT
          ls_button-on_client_click =  lv_script .
          ls_button-enabled = abap_true .
          APPEND ls_button TO gt_button .
        ENDIF.
    
        "ADD BY LY 20170220 FRO PRINT
        lv_bol = me->typed_context->searchresultnode->collection_wrapper->get_marked( ).
        IF lv_bol IS BOUND.
          lv_access = lv_bol->get_current( ).
          IF lv_access IS BOUND.
            lv_access->get_property_as_value(
               EXPORTING
                  iv_attr_name = 'ZSTATUS'
               IMPORTING
                 ev_result    = lv_zstatus ).
            IF lv_zstatus = '30'.
              lv_access->get_property_as_value(
                 EXPORTING
                   iv_attr_name = 'ZSERIALNO'
                 IMPORTING
                   ev_result    = lv_zserialno ).
            ENDIF.
          ENDIF.
        ENDIF.
        CLEAR:ls_button .
        READ TABLE gt_button INTO ls_button WITH KEY id = 'PRNT'.
        IF sy-subrc <> 0.
          CLEAR :
          lv_url, lv_script,ls_button .
          CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' lv_object '&smartform_name=' lv_smartform_name
          '&zserialno=' lv_zserialno '");' INTO lv_url.
          ls_button-id     = 'PRNT'.
          ls_button-text     = text-003.
          ls_button-on_client_click =  lv_url .
          ls_button-enabled = abap_false .
          APPEND ls_button TO gt_button.
        ELSE.
          lv_index = sy-tabix.
          CLEAR:lv_script,ls_button .
          IF lv_zstatus = '30'.
            CONCATENATE 'javascript:window.open( "/sap/bc/webdynpro/sap/ZCRM_PRINT' '?object_id=' lv_object '&smartform_name=' lv_smartform_name
          '&zserialno=' lv_zserialno '");' INTO lv_url.
            ls_button-enabled = abap_true .
          ELSE.
            ls_button-enabled = abap_false .
          ENDIF.
    
          ls_button-on_client_click =  lv_url .
    
          MODIFY gt_button FROM ls_button INDEX lv_index TRANSPORTING on_client_click enabled .
        ENDIF.
      ENDMETHOD.
  • 相关阅读:
    第十六节:类与对象基本概念
    dedecms源码分析:(1)index.php
    第十二节:控制结构foreachbreakcontinueswitch
    PHP的输出缓冲区(转)
    C 结构体小结
    指针参数在内存中的传递
    C typedef用途小结
    C语言考试2 题目整理
    MinGW 环境下 给hello.exe 自定义一个图标
    JavaEE程序设计快速入门小结
  • 原文地址:https://www.cnblogs.com/sapSB/p/6422590.html
Copyright © 2020-2023  润新知