WDA ALV组件复用自定义button,单元格修改

WDA ALV组件中的TOOLBAR是ON_FUNCTION事件

 在ALV中添加自定义按钮

* table toolbar
  DATA:
    LO_FUN_CALL  TYPE REF TO CL_SALV_WD_FUNCTION,
    LO_BTN_CALL  TYPE REF TO CL_SALV_WD_FE_BUTTON.

  LO_FUN_CALL = WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~CREATE_FUNCTION( 
  'BT_MODI' ).
  CREATE OBJECT LO_BTN_CALL.
  LO_BTN_CALL->SET_TEXT( '修改' ).
  LO_BTN_CALL->SET_IMAGE_SOURCE( VALUE = '~Icon/ChangeNumber' ).
  LO_FUN_CALL->SET_EDITOR( LO_BTN_CALL ).

 

自定义的按钮触发ON_FUNCTION事件

 

WDA ALV中修改单元格,和REPORT中的方法类似,需要在内表中添加一个字段‘’来控制字段是否可修改,‘true’的时候不可修改,‘false’不可修改

  DATA: LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.
  DATA: LT_COLUMNS TYPE SALV_WD_T_COLUMN_REF,
        LS_COLUMNS TYPE SALV_WD_S_COLUMN_REF.
* define UI element
  DATA: LC_INPUT  TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.
* define column header
  DATA: LC_COLUMN_HEADER TYPE REF TO CL_SALV_WD_COLUMN_HEADER.
* set columns table
  LT_COLUMNS =  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_COLUMN_SETTINGS~GET_COLUMNS( ).

  LOOP AT LT_COLUMNS INTO LS_COLUMNS.
    LR_COLUMN = LS_COLUMNS-R_COLUMN.
    CASE LS_COLUMNS-ID.
      WHEN 'CARRID'.
       CREATE OBJECT LR_INPUT_FIELD EXPORTING VALUE_FIELDNAME = LS_COLUMNS-ID.
       LR_INPUT_FIELD->SET_READ_ONLY_FIELDNAME( VALUE = 'ZFG_MODI' ).
       LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).
      WHEN 'CONNID'.
       CREATE OBJECT LR_INPUT_FIELD EXPORTING VALUE_FIELDNAME = LS_COLUMNS-ID.
       LR_INPUT_FIELD->SET_READ_ONLY_FIELDNAME( VALUE = 'ZFG_MODI' ).
       LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).
      WHEN 'CITYTO'.
       CREATE OBJECT LR_INPUT_FIELD EXPORTING VALUE_FIELDNAME = LS_COLUMNS-ID.
       LR_INPUT_FIELD->SET_READ_ONLY_FIELDNAME( VALUE = 'ZFG_MODI' ).
       LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).
      WHEN OTHERS.
    ENDCASE.

  ENDLOOP.

 添加修改逻辑 

METHOD BUTN_FUNC .
  CASE R_PARAM->ID.
    WHEN 'BT_MODI'.
*       get message manager
      DATA LO_API_CONTROLLER     TYPE REF TO IF_WD_CONTROLLER.
      DATA LO_MESSAGE_MANAGER    TYPE REF TO IF_WD_MESSAGE_MANAGER.

      LO_API_CONTROLLER ?= WD_THIS->WD_GET_API( ).

      CALL METHOD LO_API_CONTROLLER->GET_MESSAGE_MANAGER
        RECEIVING
          MESSAGE_MANAGER = LO_MESSAGE_MANAGER
          .

*       report message
      CALL METHOD LO_MESSAGE_MANAGER->REPORT_SUCCESS
        EXPORTING
          MESSAGE_TEXT              = 'BT_CALL 测试 SUCCESS'
*          PARAMS                    =
*          MSG_USER_DATA             =
*          IS_PERMANENT              = ABAP_FALSE
*          SCOPE_PERMANENT_MSG       = CO_MSG_SCOPE_CONTROLLER
*          VIEW                      =
*          SHOW_AS_POPUP             =
*          CONTROLLER_PERMANENT_MSG  =
*          MSG_INDEX                 =
*          CANCEL_NAVIGATION         =
*          ENABLE_MESSAGE_NAVIGATION =
*          COMPONENT                 =
*        RECEIVING
*          MESSAGE_ID                =
          .
  DATA:
    LO_ND_GTALV_SPFLI     TYPE REF TO IF_WD_CONTEXT_NODE,
    LT_EL_GTALV_SPFLI     TYPE WDR_CONTEXT_ELEMENT_SET,
    LO_EL_GTALV_SPFLI     TYPE REF TO IF_WD_CONTEXT_ELEMENT,
    LS_GTALV_SPFLI        TYPE WD_THIS->ELEMENT_GTALV_SPFLI,
    LT_GTALV_SPFLI        TYPE WD_THIS->ELEMENTS_GTALV_SPFLI.

  DATA:
    LV_ISERROR TYPE ABAP_BOOL.


   LO_ND_GTALV_SPFLI = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_GTALV_SPFLI ).

  "获取选择行数据
  LT_EL_GTALV_SPFLI = LO_ND_GTALV_SPFLI->GET_SELECTED_ELEMENTS( INCLUDING_LEAD_SELECTION = ABAP_TRUE ).

  LOOP AT LT_EL_GTALV_SPFLI INTO LO_EL_GTALV_SPFLI.
    CLEAR: LS_GTALV_SPFLI.
    LO_EL_GTALV_SPFLI->GET_STATIC_ATTRIBUTES(  IMPORTING STATIC_ATTRIBUTES = LS_GTALV_SPFLI ).
    LS_GTALV_SPFLI-ZFG_MODI  = ABAP_FALSE.
    LO_EL_GTALV_SPFLI->SET_STATIC_ATTRIBUTES(  STATIC_ATTRIBUTES = LS_GTALV_SPFLI ).
  ENDLOOP.

    WHEN OTHERS.
  ENDCASE.
ENDMETHOD.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
WDA是一个用于iOS端自动化测试的Python库,而allure是一个用于生成漂亮报告的工具。要将WDA测试结果集成到allure报告中,可以使用pytest和allure-pytest插件来实现。 首先需要安装pytest和allure-pytest插件,可以使用以下命令进行安装: ``` pip install pytest pip install allure-pytest ``` 安装完成后,在pytest的测试用例中,可以使用pytest的fixture和allure的装饰器来将WDA测试结果保存到allure报告中。下面是一个示例: ```python import wda import allure import pytest @pytest.fixture(scope='module') def client(): c = wda.Client() return c @allure.feature('WDA测试') class TestWDA(object): @allure.story('测试页面标题') def test_title(self, client): title = client.title() assert title == 'Example Page' allure.attach(client.screenshot(format='png'), name='screenshot', attachment_type=allure.attachment_type.PNG) @allure.story('测试按钮点击') def test_button(self, client): btn = client(name='example_button') btn.tap() assert btn.exists allure.attach(client.screenshot(format='png'), name='screenshot', attachment_type=allure.attachment_type.PNG) ``` 在上面的示例中,使用了一个名为`client`的fixture来获取WDA的客户端连接,然后使用`allure.feature`和`allure.story`装饰器来定义测试用例的特性和故事。在每个测试用例中,使用了`allure.attach`方法将截图保存到allure报告中。 最后,可以使用以下命令来运行测试,并生成allure报告: ``` pytest --alluredir ./allure-results allure serve ./allure-results ``` 这样就可以将WDA测试结果集成到allure报告中,并且在报告中查看测试结果和截图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值