动态生成内表/ui2/cl_jsonsjson2htmlcl_abap_structdescrcl_abap_tabledescr
TYPES:BEGIN OF ty_data,carrid TYPE sflight-carrid,connid TYPE sflight-connid,fldate TYPE sflight-fldate,END OF ty_data.DATA:lt_data TYPE TABLE OF ty_data.TYPES:BEGIN OF ty_request,data LIKE lt_data,END OF ty_request.DATA ls_request TYPE ty_request.FIELD-SYMBOLS:<dyn_table> TYPE table,<dyn_wa> TYPE any,<dyn_field> TYPE any.DATA: dy_table TYPE REF TO data,dy_line TYPE REF TO data,it_structure TYPE lvc_t_fcat,wa_structure TYPE lvc_s_fcat.DATA: lt_req_comp TYPE cl_abap_structdescr=>component_table,ls_req_comp LIKE LINE OF lt_req_comp.DATA: lo_req_tab TYPE REF TO data,lo_req_data TYPE REF TO data.FIELD-SYMBOLS: <lt_req_data> TYPE STANDARD TABLE.FIELD-SYMBOLS: <ls_req_data> TYPE any.CLEAR:wa_structure.wa_structure-fieldname = 'CARRID'.wa_structure-col_pos = 1.wa_structure-ref_table = 'SFLIGHT'.wa_structure-ref_field = 'CARRID'.APPEND wa_structure TO it_structure.CLEAR:wa_structure.wa_structure-fieldname = 'CONNID'.wa_structure-col_pos = 1.wa_structure-ref_table = 'SFLIGHT'.wa_structure-ref_field = 'CONNID'.APPEND wa_structure TO it_structure.CLEAR:wa_structure.wa_structure-fieldname = 'FLDATE'.wa_structure-col_pos = 1.wa_structure-ref_table = 'SFLIGHT'.wa_structure-ref_field = 'FLDATE'.APPEND wa_structure TO it_structure.CALL METHOD cl_alv_table_create=>create_dynamic_tableEXPORTINGit_fieldcatalog = it_structureIMPORTINGep_table = dy_table.ASSIGN dy_table->* TO <dyn_table>.CREATE DATA dy_line LIKE LINE OF <dyn_table>.ASSIGN dy_line->* TO <dyn_wa>." --> 导出结构CLEAR ls_req_comp.ls_req_comp-name = 'CARRID'.ls_req_comp-type ?= cl_abap_tabledescr=>describe_by_name( 'S_CARR_ID' ).APPEND ls_req_comp TO lt_req_comp.CLEAR ls_req_comp.ls_req_comp-name = 'CONNID'.ls_req_comp-type ?= cl_abap_tabledescr=>describe_by_name( 'S_CONN_ID' ).APPEND ls_req_comp TO lt_req_comp.CLEAR ls_req_comp.ls_req_comp-name = 'TABLE'.ls_req_comp-type ?= cl_abap_tabledescr=>describe_by_data( <dyn_table> ).APPEND ls_req_comp TO lt_req_comp." 生成对象DATA(lo_req_type) = cl_abap_structdescr=>create( lt_req_comp ).DATA(lo_req_tabdesc) = cl_abap_tabledescr=>create(p_line_type = lo_req_typep_table_kind = cl_abap_tabledescr=>tablekind_stdp_unique = abap_false ).CREATE DATA lo_req_tab TYPE HANDLE lo_req_tabdesc.ASSIGN lo_req_tab->* TO <lt_req_data>.CREATE DATA lo_req_data LIKE LINE OF <lt_req_data>.ASSIGN lo_req_data->* TO <ls_req_data>." <--" --> 动态查数DATA: lv_sql TYPE string,lv_tab TYPE string.lv_sql = 'CARRID FLDATE'.lv_tab = 'SFLIGHT'.SELECT (lv_sql) FROM (lv_tab) INTO CORRESPONDING FIELDS OF TABLE <dyn_table> ." <--" --> 结构赋值ASSIGN COMPONENT 'CARRID' OF STRUCTURE <ls_req_data> TO FIELD-SYMBOL(<lv_carrid>).IF sy-subrc = 0.<lv_carrid> = '123'.ENDIF.ASSIGN COMPONENT 'TABLE' OF STRUCTURE <ls_req_data> TO FIELD-SYMBOL(<lt_table>).IF sy-subrc = 0.MOVE-CORRESPONDING <dyn_table> TO <lt_table>.ENDIF." <--" --> 基于数据 生成 jsonDATA: lv_req_json TYPE string.lv_req_json = /ui2/cl_json=>serialize( data = lo_req_datapretty_name = '' )." <--" --> 显示DATA: lr_xml TYPE REF TO cl_xml_document.*CREATE OBJECT lr_xml.CALL TRANSFORMATION sjson2html SOURCE XML lv_req_json RESULT XML DATA(lv_html).DATA(lv_convert) = cl_abap_codepage=>convert_from( lv_html ).cl_abap_browser=>show_html( html_string = lv_convert ).*CALL METHOD lr_xml->parse_string* EXPORTING* stream = lv_convert.**CALL METHOD lr_xml->display." <--
