API: return response as HTML table

发布于:2025-07-23 ⋅ 阅读:(19) ⋅ 点赞:(0)

想要把response table变成HTML的table,即想达到下面这种的话

<table boarder="1" style="width:100%; boarder-collapse: collapse; text-align:left">
    <tr>
        <th>Customer</th>
        <th>Date</th>
        <th>Debit Amount</th>
        <th>Payment Amount</th>
        <th>Remain Balance</th>
    </tr>
    <tr>
        <td>40000446</td>
        <td>20250501</td>
        <td>17227.80</td>
        <td>0.00</td>
        <td>17227.80</td>
    </tr>
    <tr>
        <td>40000446</td>
        <td>20250515</td>
        <td>54.52</td>
        <td>0.00</td>
        <td>54.52</td>
    </tr>
</table>

可以这样子开发:

  METHOD if_http_extension~handle_request.

    DATA: lv_jsonbody     TYPE string,
          lv_xstring      TYPE xstring,
          lv_html_string  TYPE string.

    "get Request Body: JSON->ABAP
    lv_jsonbody = server->request->get_cdata( ).
    CALL METHOD /ui2/cl_json=>deserialize
      EXPORTING
        json         = lv_jsonbody
        pretty_name  = /ui2/cl_json=>pretty_mode-none
        assoc_arrays = abap_true
      CHANGING
        data         = ms_req.

**********************************************************************
    CALL METHOD me->pre_requisition.
    CALL METHOD me->business_logic.

**********************************************************************
    lv_html_string = '<table boarder = "1" style = "width:100%; boarder-collapse: collapse; text-align:left">'.
    lv_html_string = lv_html_string && '<tr><th>Customer</th><th>Date</th><th>Debit Amount</th><th>Payment Amount</th><th>Remain Balance</th></tr>'.

    LOOP AT mt_resp ASSIGNING FIELD-SYMBOL(<resp>).
      lv_html_string = lv_html_string && '<tr>'.
      lv_html_string = lv_html_string && '<td>' && <resp>-customer && '</td>'.
      lv_html_string = lv_html_string && '<td>' && <resp>-date && '</td>'.
      lv_html_string = lv_html_string && '<td>' && <resp>-debit_amount && '</td>'.
      lv_html_string = lv_html_string && '<td>' && <resp>-payment_amount && '</td>'.
      lv_html_string = lv_html_string && '<td>' && <resp>-remain_balance && '</td>'.
      lv_html_string = lv_html_string && '</tr>'.
    ENDLOOP.

    lv_html_string = lv_html_string && '</table>'.

**********************************************************************

    CALL METHOD server->response->set_content_type( if_rest_media_type=>gc_text_html ).
    CALL METHOD server->response->set_cdata(
      EXPORTING
        data = lv_html_string ).

    CALL METHOD server->response->set_status(
      EXPORTING
        code   = 201
        reason = 'Executed' ).

  ENDMETHOD.


网站公告

今日签到

点亮在社区的每一天
去签到