:::success
🎈 动态代码示例
🎈 生成json示例
:::
执行效果
代码
REPORT zdym_json.FIELD-SYMBOLS:<lt_lines> TYPE table,<ls_line> TYPE any.DATA: lr_table TYPE REF TO data,lr_line TYPE REF TO data,lt_structure TYPE lvc_t_fcat,ls_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: ls_structure.ls_structure-fieldname = 'CARRID'.ls_structure-col_pos = 1.ls_structure-ref_table = 'SFLIGHT'.ls_structure-ref_field = 'CARRID'.APPEND ls_structure TO lt_structure.CLEAR: ls_structure.ls_structure-fieldname = 'CONNID'.ls_structure-col_pos = 1.ls_structure-ref_table = 'SFLIGHT'.ls_structure-ref_field = 'CONNID'.APPEND ls_structure TO lt_structure.CLEAR: ls_structure.ls_structure-fieldname = 'FLDATE'.ls_structure-col_pos = 1.ls_structure-ref_table = 'SFLIGHT'.ls_structure-ref_field = 'FLDATE'.APPEND ls_structure TO lt_structure.CALL METHOD cl_alv_table_create=>create_dynamic_tableEXPORTINGit_fieldcatalog = lt_structureIMPORTINGep_table = lr_table.ASSIGN lr_table->* TO <lt_lines>.CREATE DATA lr_line LIKE LINE OF <lt_lines>.ASSIGN lr_line->* TO <ls_line>." --> 导出结构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( <lt_lines> ).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 <lt_lines> ." <--" --> 结构赋值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 <lt_lines> 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." <--
