外围系统通过rfc调用sap,sap http 调用外围系统,无标准日志,简单搭建日志平台
输入输出参数 json 格式存储,可查询重处理,且接口配置启用/账号等相关数据,
原框架被系统有,但是不完善,添加查询和重处理功能,改改就用了,原代码就不细究了,满足需求就好
数据表
ZIF_001-接口配置表
ZIF_LOG-接口日志表
接口调用
CONSTANTS:gc_i TYPE zietype VALUE 'I',
gc_o TYPE zietype VALUE 'O',
gc_w TYPE zietype VALUE 'W',
gc_e TYPE zietype VALUE 'E',
gc_s TYPE zietype VALUE 'S'.
DATA: gv_sysid TYPE ze_sysid01,
gv_id TYPE ze_zid01,
gv_zname TYPE rs38l_fnam,
gv_guid TYPE sysuuid_c,
gv_active TYPE c,
gv_msg TYPE string,
gv_type TYPE c,
gv_json_in TYPE string,
gv_json_out TYPE string.
*&---------------------------------------------------------------------*
*& Form FRM_INIT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM frm_init USING VALUE(p_funcn).
CLEAR:gv_sysid,gv_id,gv_zname,gv_guid,gv_active,
gv_type,gv_matnr,gv_msg,
gv_json_in,gv_json_out.
gv_guid = zcl_common=>get_guid( ).
gv_sysid = p_funcn+4(3).
gv_id = p_funcn+4(7).
gv_zname = p_funcn.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_ACTIVE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_check_active USING pv_if_type.
CLEAR gs_zif_001.
SELECT SINGLE *
FROM zif_001
INTO gs_zif_001
WHERE zsysid EQ gv_sysid
AND id EQ gv_id
AND active EQ abap_on.
IF gs_zif_001 IS NOT INITIAL.
IF pv_if_type EQ gc_i.
gv_active = abap_true.
ELSEIF pv_if_type EQ gc_o.
IF gs_zif_001-url IS NOT INITIAL.
gv_active = abap_true.
ELSE.
CLEAR:gv_active.
ENDIF.
ENDIF.
ELSE.
CLEAR:gv_active.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_LOG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_set_log USING lv_if_type.
MODIFY zif_log FROM @( VALUE #( zguid = gv_guid "操作唯一性标识
zsysid = gv_sysid "外围系统
zid = gv_id "接口业务ID
zname = gv_zname "函数名称
zietype = lv_if_type"接口传输类型(I传入SAP,O传出到外部系统)
zerdat = sy-datum
zerzet = sy-uzeit
zernam = sy-uname
type = COND #( WHEN gv_type IS NOT INITIAL THEN gv_type ELSE gc_s )
json_in = gv_json_in
json_out = gv_json_out ) ).
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
ENDIF.
DATA(lv_datum) = sy-datum - 120.
DELETE FROM zif_log WHERE zerdat LE lv_datum.
ENDFORM.
涉及公共方法
zcl_common=>abap_to_json
ABAP TYPE ANY 输入abap数据
PRETTY_NAME TYPE CHAR1 OPTIONAL j输出json格式
value( JSON ) TYPE STRING 输出json数据
METHOD abap_to_json.
TRY.
json = /ui2/cl_json=>serialize( data = abap pretty_name = pretty_name ).
CATCH cx_root INTO DATA(lr_root).
DATA(l_str) = lr_root->get_text( ).
MESSAGE l_str TYPE 'S'.
ENDTRY.
ENDMETHOD.
zcl_common=>abap_to_json
ABAP TYPE ANY 输入abap数据
PRETTY_NAME TYPE CHAR1 OPTIONAL j输出json格式
value( JSON ) TYPE STRING 输出json数据
METHOD abap_to_json.
TRY.
json = /ui2/cl_json=>serialize( data = abap pretty_name = pretty_name ).
CATCH cx_root INTO DATA(lr_root).
DATA(l_str) = lr_root->get_text( ).
MESSAGE l_str TYPE 'S'.
ENDTRY.
ENDMETHOD.
zcl_common=>get_guid
METHOD get_guid.
TRY.
rv_guid = cl_system_uuid=>create_uuid_c32_static( ).
CATCH cx_uuid_error.
rv_guid = cl_fdt_uuid=>get_uuid( ).
ENDTRY.
ENDMETHOD.
报表功能
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
REPORT zifr001.
TYPE-POOLS:icon.
TABLES sscrfields.
DATA: BEGIN OF gw_out.
INCLUDE TYPE zif_log.
DATA: icon TYPE char4,
text TYPE c LENGTH 60,
END OF gw_out.
DATA: gt_out LIKE TABLE OF gw_out.
DATA: gw_layo TYPE lvc_s_layo.
DATA: gw_fcat TYPE lvc_s_fcat,
gt_fcat TYPE lvc_t_fcat.
DATA cl_document TYPE REF TO cl_dd_document.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
s_guid FOR gw_out-zguid,
s_sysid FOR gw_out-zsysid,
s_zid FOR gw_out-zid,
s_zname FOR gw_out-zname,
s_type FOR gw_out-zietype,
s_erdat FOR gw_out-zerdat DEFAULT sy-datum,
s_erzet FOR gw_out-zerzet,
s_ernam FOR gw_out-zernam.
PARAMETERS :p_txt01 TYPE char255,
p_txt02 TYPE char255.
SELECTION-SCREEN SKIP.
PARAMETERS: cb_cg AS CHECKBOX USER-COMMAND cg DEFAULT 'X'.
PARAMETERS: cb_sb AS CHECKBOX USER-COMMAND sb DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
sscrfields-functxt_01+40(4) = icon_release.
sscrfields-functxt_01+44(40) = '维护接口配置'.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
CALL METHOD zcl_common=>call_view
EXPORTING
view_name = 'ZIF_001'.
WHEN OTHERS.
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_sysid-low.
PERFORM frm_set_f4_sysid.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zname-low.
PERFORM frm_set_f4_zname.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_display_alv.
*&---------------------------------------------------------------------*
*& Form frm_set_f4_sysid
*&---------------------------------------------------------------------*
*& 设置外围系统搜索帮助
*&---------------------------------------------------------------------*
FORM frm_set_f4_sysid .
SELECT zsysid FROM zif_001 INTO TABLE @DATA(lt_zif_001).
SORT lt_zif_001 BY zsysid.
DELETE ADJACENT DUPLICATES FROM lt_zif_001 COMPARING zsysid.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ZSYSID' "搜索帮助内表要输出的的帮助字段名,注:要大写
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'S_SYSID-LOW' "命中清单(values_tab)中的哪列(ZZBAXH)的值回填到屏幕字段ZTMM0045-ZZBAXH中
window_title = '外围系统'
value_org = 'S' "这里一定要是 S,否则没有值
TABLES
value_tab = lt_zif_001.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_f4_zname
*&---------------------------------------------------------------------*
*& 设置功能模块搜索帮助
*&---------------------------------------------------------------------*
FORM frm_set_f4_zname .
SELECT zfunc,zname FROM zif_001 INTO TABLE @DATA(lt_zif_001).
SORT lt_zif_001 BY zfunc.
DELETE ADJACENT DUPLICATES FROM lt_zif_001 COMPARING zfunc.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ZFUNC' "搜索帮助内表要输出的的帮助字段名,注:要大写
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'S_ZNAME-LOW' "命中清单(values_tab)中的哪列(ZZBAXH)的值回填到屏幕字段ZTMM0045-ZZBAXH中
window_title = '外围系统'
value_org = 'S' "这里一定要是 S,否则没有值
TABLES
value_tab = lt_zif_001.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data.
CLEAR:gt_out.
IF cb_cg IS NOT INITIAL AND cb_sb IS NOT INITIAL.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_out
FROM zif_log
WHERE zguid IN s_guid
AND zsysid IN s_sysid
AND zid IN s_zid
AND zname IN s_zname
AND zietype IN s_type
AND zerdat IN s_erdat
AND zerzet IN s_erzet
AND zernam IN s_ernam.
.
ELSEIF cb_cg IS NOT INITIAL.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_out
FROM zif_log
WHERE zguid IN s_guid
AND zsysid IN s_sysid
AND zid IN s_zid
AND zname IN s_zname
AND zietype IN s_type
AND zerdat IN s_erdat
AND zerzet IN s_erzet
AND zernam IN s_ernam
AND type EQ 'S'.
ELSEIF cb_sb IS NOT INITIAL.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_out
FROM zif_log
WHERE zguid IN s_guid
AND zsysid IN s_sysid
AND zid IN s_zid
AND zname IN s_zname
AND zietype IN s_type
AND zerdat IN s_erdat
AND zerzet IN s_erzet
AND zernam IN s_ernam
AND type IN ( 'E' , '' ).
ENDIF.
LOOP AT gt_out INTO gw_out.
DATA(lv_tabix) = sy-tabix.
IF p_txt01 IS NOT INITIAL.
SEARCH gw_out-json_in FOR p_txt01.
IF sy-subrc NE 0 .
DELETE gt_out INDEX lv_tabix.
CONTINUE.
ENDIF.
ENDIF.
IF p_txt02 IS NOT INITIAL.
SEARCH gw_out-json_out FOR p_txt02.
IF sy-subrc NE 0 .
DELETE gt_out INDEX lv_tabix.
CONTINUE.
ENDIF.
ENDIF.
SELECT SINGLE stext FROM tftit
INTO gw_out-text
WHERE funcname EQ gw_out-zname.
IF gw_out-type = 'S'.
gw_out-icon = icon_led_green.
ELSEIF gw_out-type = 'W'.
gw_out-icon = icon_led_yellow.
ELSE.
gw_out-icon = icon_led_red.
ENDIF.
MODIFY gt_out FROM gw_out.
ENDLOOP.
SORT gt_out BY zerdat DESCENDING zerzet DESCENDING.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
CLEAR gw_layo.
gw_layo-zebra = 'X'.
* GW_LAYO-cwidth_opt = 'X'.
gw_layo-sel_mode = 'A'.
PERFORM frm_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_PF_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
i_callback_html_top_of_page = 'FRM_HTML_TOP_OF_PAGE'
is_layout_lvc = gw_layo
it_fieldcat_lvc = gt_fcat
i_default = 'X'
i_save = 'X'
TABLES
t_outtab = gt_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
**&---------------------------------------------------------------------*
**& FORM FRM_CALLBACK_PF_STATUS_SET
**&---------------------------------------------------------------------*
** TEXT
**----------------------------------------------------------------------*
FORM frm_pf_status USING rt_extab TYPE slis_t_extab .
"IF sy-tcode NE 'SE38'.
" rt_extab = VALUE #( ( fcode = 'RESEND' ) ) .
"ENDIF.
SET PF-STATUS 'STATUS_ALV' EXCLUDING rt_extab.
ENDFORM. "PF_STATUS_ALV
*&---------------------------------------------------------------------*
*& Form FRM_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_fieldcat .
DEFINE fieldcat.
CLEAR gw_fcat.
gw_fcat-coltext = &1.
gw_fcat-fieldname = &2.
gw_fcat-ref_field = &3.
gw_fcat-ref_table = &4.
CASE &2.
WHEN 'ICON'.
gw_fcat-icon = 'X'.
gw_fcat-fix_column = 'X'.
WHEN 'ZNAME'.
gw_fcat-outputlen = '15'.
WHEN 'TEXT'.
gw_fcat-outputlen = '15'.
WHEN 'TEXT'.
gw_fcat-outputlen = '40'.
WHEN 'JSON_IN' OR 'JSON_OUT'.
gw_fcat-outputlen = '60'.
WHEN OTHERS.
ENDCASE.
APPEND gw_fcat TO gt_fcat.
END-OF-DEFINITION.
CLEAR gt_fcat[].
fieldcat '处理结果' 'ICON' '' ''.
fieldcat '操作唯一性ID' 'ZGUID' '' ''.
fieldcat '外围系统' 'ZSYSID' 'ERDAT' 'ZIF_LOG'.
fieldcat '接口业务ID' 'ZID' 'ERTIM' 'ZIF_LOG'.
fieldcat '功能模块的名称' 'ZNAME' 'ZNAME' 'ZIF_LOG'.
fieldcat '功能描述' 'TEXT' '' ''.
fieldcat '接口传输类型' 'ZIETYPE' 'ZIETYPE' 'ZIF_LOG'.
fieldcat '操作日期' 'ZERDAT' 'ZERDAT' 'ZIF_LOG'.
fieldcat '操作时间' 'ZERZET' 'ZERZET' 'ZIF_LOG'.
fieldcat '操作人' 'ZERNAM' 'ZERNAM' 'ZIF_LOG'.
fieldcat '操作结果' 'TYPE' 'TYPE' 'ZIF_LOG'.
fieldcat '传入参数' 'JSON_IN' '' ''.
fieldcat '传出参数' 'JSON_OUT' '' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALLBACK_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-fieldname = 'JSON_IN'.
READ TABLE gt_out INTO gw_out INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
PERFORM frm_display_xml USING gw_out-json_in
gw_out-zguid.
ENDIF.
ELSEIF rs_selfield-fieldname = 'JSON_OUT'.
READ TABLE gt_out INTO gw_out INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
PERFORM frm_display_xml USING gw_out-json_out
gw_out-zguid.
ENDIF.
ENDIF.
WHEN 'RESEND'.
PERFORM frm_resend USING rs_selfield-tabindex.
WHEN 'REFRESH'.
PERFORM frm_get_data.
PERFORM frm_html_top_of_page USING cl_document.
rs_selfield-refresh = 'X'.
rs_selfield-col_stable = 'X'.
rs_selfield-row_stable = 'X'.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HTML_TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_html_top_of_page USING p_cl_dd TYPE REF TO cl_dd_document.
DATA: html TYPE string,
m_p TYPE i.
DATA: lt_data LIKE TABLE OF gw_out.
DATA: l_line TYPE i,
l_line_s TYPE i,
l_line_e TYPE i.
DATA: g_text TYPE sdydo_text_element.
CALL METHOD p_cl_dd->initialize_document.
SEARCH p_cl_dd->html_table FOR p_cl_dd->cursor.
IF sy-subrc = 0.
html = '<html><h3>接口日志表</h3>'.
p_cl_dd->html_insert(
EXPORTING
contents = html
CHANGING
position = m_p
).
lt_data[] = gt_out[].
DELETE lt_data WHERE type <> 'S'.
DESCRIBE TABLE lt_data LINES l_line_s.
lt_data[] = gt_out[].
DELETE lt_data WHERE type = 'S'.
DESCRIBE TABLE lt_data LINES l_line_e.
l_line = l_line_s + l_line_e.
html = '<L1>成功:' && l_line_s && '</L1>' &&
'<L1>,</L1>' &&
'<L1>失败:<font color=red>' && l_line_e && '</font></L1>' &&
* '</br><L1>失败:<font color=red>' && l_line_e && '</font></L1>' &&
'</br><L1>总条目:' && l_line && '</L1></html>'.
p_cl_dd->html_insert(
EXPORTING
contents = html
CHANGING
position = m_p
).
ENDIF.
CHECK cl_document IS INITIAL.
cl_document = p_cl_dd.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_XML
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_xml USING xml_out TYPE string
l_sysid TYPE ze_guid.
DATA: l_xml TYPE REF TO cl_xml_document.
CREATE OBJECT l_xml.
DATA(retcode) = l_xml->parse_string(
EXPORTING
stream = xml_out ). "xml_out is the variable which is holding the xml string
IF retcode = 0.
CALL METHOD l_xml->display.
ELSE.
PERFORM frm_json_display USING xml_out
l_sysid.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_JSON_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_json_display USING xml_string TYPE string
l_sysid TYPE ze_guid.
DATA: cl_out TYPE REF TO if_demo_output,
lv_subrc TYPE c.
DATA(out) = cl_demo_output=>new( ).
DATA(writer) = CAST if_sxml_writer(
cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ) ).
PERFORM frm_check_json USING xml_string CHANGING lv_subrc.
IF lv_subrc = 'E'.
out->next_section( 'Exception: Json 格式存在错误,请检查' ).
out->write( xml_string ).
out->display( ).
ELSE.
TRY.
DATA(json) = xml_string.
* CAST cl_sxml_string_writer( writer )->get_output( ).
out->next_section( 'JSON-Data' ).
IF writer->if_sxml~type = if_sxml=>co_xt_json.
out->write_json( json ).
ELSEIF writer->if_sxml~type = if_sxml=>co_xt_xml10.
out->write_xml( json ).
ENDIF.
CATCH cx_sxml_error INTO DATA(exc).
* out->write( exc->get_text( ) ).
out->write( json ).
ENDTRY.
out->display( ).
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_JSON
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> XML_STRING
*& <-- LV_SUBRC
*&---------------------------------------------------------------------*
FORM frm_check_json USING xml_string
CHANGING lv_subrc.
DATA lv_json TYPE string.
DATA lv_xjson TYPE xstring.
IF xml_string IS NOT INITIAL.
lv_xjson = cl_abap_codepage=>convert_to( xml_string ).
ENDIF.
TRY.
DATA(reader) = cl_sxml_string_reader=>create( lv_xjson ).
DATA(writer) = CAST if_sxml_writer(
cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ) ).
writer->set_option( option = if_sxml_writer=>co_opt_linebreaks ).
writer->set_option( option = if_sxml_writer=>co_opt_indent ).
reader->next_node( ).
reader->skip_node( writer ).
lv_json = cl_abap_codepage=>convert_from( CAST cl_sxml_string_writer( writer )->get_output( ) ).
CATCH cx_sxml_parse_error.
lv_subrc = 'E'.
ENDTRY.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RESEND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_resend USING pv_tabix TYPE sy-tabix.
DATA: dyn_data_01 TYPE REF TO data,
dyn_data_02 TYPE REF TO data.
FIELD-SYMBOLS: <fs_data_01> TYPE any,
<fs_data_02> TYPE any.
READ TABLE gt_out INTO gw_out INDEX pv_tabix.
CHECK sy-subrc = 0.
SELECT *
FROM fupararef
INTO TABLE @DATA(lt_fupararef)
WHERE funcname EQ @gw_out-zname
AND parameter IN ( 'INPUT','OUTPUT' ).
CHECK sy-subrc EQ 0.
"INPUT
READ TABLE lt_fupararef INTO DATA(ls_fupararef_01) WITH KEY parameter = 'INPUT'.
IF sy-subrc EQ 0.
CREATE DATA dyn_data_01 TYPE (ls_fupararef_01-structure).
ASSIGN dyn_data_01->* TO FIELD-SYMBOL(<fs_input>).
ENDIF.
READ TABLE lt_fupararef INTO DATA(ls_fupararef_02) WITH KEY parameter = 'OUTPUT'.
IF sy-subrc EQ 0.
CREATE DATA dyn_data_02 TYPE (ls_fupararef_02-structure).
ASSIGN dyn_data_02->* TO FIELD-SYMBOL(<fs_output>).
ENDIF.
CHECK <fs_input> IS ASSIGNED AND <fs_output> IS ASSIGNED.
zcl_common=>json_to_abap( EXPORTING json = gw_out-json_in pretty_name = COND #( WHEN gw_out-zname EQ 'ZFM_EC_001' or gw_out-zname EQ 'ZFM_MES_101' THEN abap_true ELSE SPACE ) CHANGING abap = <fs_input> ).
CALL FUNCTION gw_out-zname
EXPORTING
input = <fs_input>
IMPORTING
output = <fs_output>.
ENDFORM.
公共类
zcl_common=>json_to_abap
value( JSON ) TYPE STRING 传入json
value( PRETTY_NAME ) TYPE C OPTIONAL
value( ABAP ) TYPE ANY 传出abap
METHOD json_to_abap.
TRY.
/ui2/cl_json=>deserialize( EXPORTING json = json pretty_name = pretty_name CHANGING data = abap )."
CATCH cx_root INTO DATA(lr_root).
DATA(l_str) = lr_root->get_text( ).
MESSAGE l_str TYPE 'S'.
ENDTRY.
ENDMETHOD.
zcl_common=>call_view
value( VIEW_NAME ) TYPE DD02V-TABNAME 表名
value( POPUP ) TYPE CHAR1 OPTIONAL 单字符标记
value( ACTION ) TYPE CHAR1 DEFAULT 'S' 单字符标记
VARIANT TYPE TVIMV-VARIANT OPTIONAL 扩展的表维护:一个选择变体的名称
value( IT_SELLIST ) TYPE SCPRVIMSELLIST OPTIONAL Table Type VIMSELLIST
ERROR
METHOD call_view.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = action
show_selection_popup = popup
view_name = view_name
variant_for_selection = variant
TABLES
dba_sellist = it_sellist
EXCEPTIONS
client_reference = 1
foreign_lock = 2
invalid_action = 3
no_clientindependent_auth = 4
no_database_function = 5
no_editor_function = 6
no_show_auth = 7
no_tvdir_entry = 8
no_upd_auth = 9
only_show_allowed = 10
system_failure = 11
unknown_field_in_dba_sellist = 12
view_not_found = 13
maintenance_prohibited = 14
OTHERS = 15.
IF sy-subrc <> 0.
RAISE error.
ENDIF.
ENDMETHOD.