首页 > 解决方案 > 如何在工作流收件箱中获取更新的 HTML 单选按钮?

问题描述

由于我对工作流程很陌生,现在我一直在思考如何在单击决策按钮时获取工作流程收件箱中 HTML 表格的更新单选按钮。

STEP 1:在HTML表格中,用户可以通过勾选单选批准或拒绝WBS

第 2 步:当用户单击确认时,工作流将更新表中显示的每个 WBS 的状态。

问题:在第 2 步 - 我如何获得由用户操作更新的 HTML 文本。

现在我已经增强了 SAPEVENTS 并使用 'SAP_WAPI_READ_CONTAINER' 来获取 HTML 容器。

但是,在检查 HTML 代码后,HTML 表不会更新为用户操作。

标签: workflowabap

解决方案


这是一个演示如何获取单选按钮值的最小程序。如果用户在第一行按下 Approve 并在第二行按下 Reject,并按下按钮 Confirm,该方法on_sapevent将获得group[1]=approve&group[2]=reject.

(适用于 ABAP 7.40 SP8 之类的东西)

REPORT zdemo.
CLASS lcl_app DEFINITION.
  PUBLIC SECTION.
    METHODS at_selection_screen_output.
    METHODS on_sapevent FOR EVENT sapevent OF cl_gui_html_viewer
          IMPORTING action frame getdata postdata query_table.
  PRIVATE SECTION.
    DATA o_html TYPE REF TO cl_gui_html_viewer.
ENDCLASS.
CLASS lcl_app IMPLEMENTATION.
  METHOD at_selection_screen_output.
    DATA: l_url  TYPE cndp_url,
          l_text TYPE string.
    IF o_html IS NOT BOUND.
      l_text = '<body><form id="form" method="POST" action="SAPEVENT:submit">'
          && REDUCE string( INIT t = `` FOR I = 1 WHILE i <= 2
             NEXT t = t && |<div><fieldset id="group{ i }">|
                        && |<input type="radio" value="approve" name="group[{ i }]"> Approve |
                        && |<input type="radio" value="reject" name="group[{ i }]"> Reject|
                        && |</fieldset></div>| )
          && '<p><button type= "submit">Confirm</button></p>'
          && '</form></body>'.
      o_html = NEW #( parent = cl_gui_container=>screen0 ).
      SET HANDLER on_sapevent FOR o_html.
      o_html->set_registered_events( events = value #( ( eventid = o_html->m_id_sapevent ) ) ).
      DATA(lt_text) = cl_bcs_convert=>string_to_soli( l_text ).
      o_html->load_data(
        EXPORTING type = 'text' subtype = 'html' size = strlen( l_text )
        IMPORTING assigned_url = l_url
        CHANGING  data_table = lt_text ).
      o_html->show_url( EXPORTING url = l_url ).
    ENDIF.
  ENDMETHOD.
  METHOD on_sapevent.
    CONCATENATE LINES OF postdata INTO data(l_post_data) RESPECTING BLANKS.
    MESSAGE l_post_data TYPE 'I'.
  ENDMETHOD.
ENDCLASS.

PARAMETERS dummy.
DATA go_app TYPE REF TO lcl_app.

LOAD-OF-PROGRAM.
  CREATE OBJECT go_app.

AT SELECTION-SCREEN OUTPUT.
  go_app->at_selection_screen_output( ).

推荐阅读