由于接口传入的数据是json,在系统中查看起来有点不方便,因此做了一个日志表,将传入和传出参数存起来,然后通过alv展示日志数据。在日志显示程序中做了json转化为html格式然后显示的功能,因此记录下来,方便以后查看。
***********************************************************************
*& Report :
* Application : *
* Subject : 接口日志表 *
* Requested by : *
* Author : *
* Req Date : *
***********************************************************************
* 接口日志表 *
***********************************************************************
* MODIFICATIONS (latest entry at the top) *
* ------------------------------------------------------------------- *
* REL DATE NAME (COMPANY) DESCRIPTION TASK-NO *
* --- ---- ---- --------- ----------- ------- *
***********************************************************************
REPORT ZYSDR038.
DATA: GT_TAB TYPE TABLE OF ZTSDY013,
GS_TAB TYPE ZTSDY013.
DATA: GS_FIELDCAT TYPE LVC_S_FCAT, "定义ALV输出列:列头描述,列对应的内表字段及类型等
GT_FIELDCAT TYPE LVC_T_FCAT,
GS_LAYOUT TYPE LVC_S_LAYO. "定义ALV布局参数
SELECTION-SCREEN BEGIN OF BLOCK BO1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_ZCODE FOR GS_TAB-ZCODE OBLIGATORY NO-EXTENSION NO INTERVALS,
S_ERDAT FOR GS_TAB-ERDAT,
S_ERZET FOR GS_TAB-ERZET.
SELECTION-SCREEN END OF BLOCK BO1.
INITIALIZATION.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ZCODE-LOW.
PERFORM FRM_F4_ZCODE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ZCODE-HIGH.
PERFORM FRM_F4_ZCODE.
START-OF-SELECTION.
PERFORM FRM_GET_DATA.
END-OF-SELECTION.
IF GT_TAB[] IS NOT INITIAL.
PERFORM FRM_DISPLAY.
ELSE.
MESSAGE '没有数据' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .
SELECT *
FROM ZTSDY013
INTO CORRESPONDING FIELDS OF TABLE GT_TAB
WHERE ZCODE IN S_ZCODE
AND ERDAT IN S_ERDAT
AND ERZET IN S_ERZET.
ENDFORM. " FRM_GET_DATA
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY .
DATA: LV_REPID LIKE SY-REPID.
DEFINE M_ALV_FIELDCAT.
CLEAR: GS_FIELDCAT.
GS_FIELDCAT-FIELDNAME = &1.
GS_FIELDCAT-SCRTEXT_L = &2.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
CLEAR GS_FIELDCAT.
END-OF-DEFINITION.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-SEL_MODE = 'D'.
M_ALV_FIELDCAT 'TSTAMPS' '时间戳'.
M_ALV_FIELDCAT 'ZCODE' '功能'.
M_ALV_FIELDCAT 'STEXT' '功能描述'.
M_ALV_FIELDCAT 'ERDAT' '记录日期'.
M_ALV_FIELDCAT 'ERZET' '记录时间'.
M_ALV_FIELDCAT 'ERNAM' '创建人'.
M_ALV_FIELDCAT 'ZINPUT' '传入参数'.
M_ALV_FIELDCAT 'ZOUTPUT' '传出参数'.
LV_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = LV_REPID
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT_LVC = GS_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT
I_SAVE = 'U'
TABLES
T_OUTTAB = GT_TAB[].
ENDFORM. " FRM_DISPLAY
*&---------------------------------------------------------------------*
*& Form SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS '1000'.
ENDFORM. "SET_STATUS
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
CASE P_UCOMM.
WHEN '&IC1'.
CLEAR GS_TAB.
READ TABLE GT_TAB INTO GS_TAB INDEX P_SELFIELD-TABINDEX.
IF P_SELFIELD-FIELDNAME = 'ZINPUT'.
PERFORM FRM_DISPLAY_STRING USING GS_TAB-ZINPUT.
ELSE.
PERFORM FRM_DISPLAY_STRING USING GS_TAB-ZOUTPUT.
ENDIF.
ENDCASE.
P_SELFIELD-REFRESH = P_SELFIELD-COL_STABLE = P_SELFIELD-ROW_STABLE = 'X'.
ENDFORM. "SET_STATUS
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_STRING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GS_TAB_ZINPUT text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY_STRING USING VALUE(P_STR).
DATA:LV_JSON TYPE STRING,
LV_CONVERT TYPE STRING,
LO_ERR TYPE REF TO CX_XSLT_RUNTIME_ERROR,
LO_JSON_SER TYPE REF TO CL_TREX_JSON_SERIALIZER,
LV_ERR_TEXT TYPE STRING.
DATA: LV_HTML TYPE XSTRING.
LV_JSON = P_STR.
TRY.
* 将JSON转换为HTML
CALL TRANSFORMATION SJSON2HTML SOURCE XML LV_JSON
RESULT XML LV_HTML.
CATCH CX_XSLT_RUNTIME_ERROR INTO LO_ERR.
LV_ERR_TEXT = LO_ERR->GET_TEXT( ).
WRITE: LV_ERR_TEXT.
RETURN.
ENDTRY.
* 显示HTML
LV_CONVERT = CL_ABAP_CODEPAGE=>CONVERT_FROM( LV_HTML ).
CL_ABAP_BROWSER=>SHOW_HTML( HTML_STRING = LV_CONVERT ).
ENDFORM. " FRM_DISPLAY_STRING
*&---------------------------------------------------------------------*
*& Form FRM_F4_ZCODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_F4_ZCODE .
DATA: BEGIN OF LT_ITAB OCCURS 0,
ZCODE TYPE ZTSDY013-ZCODE,
STEXT TYPE ZTSDY013-STEXT,
END OF LT_ITAB.
DATA: LT_RETURN_TAB TYPE TABLE OF DDSHRETVAL.
REFRESH LT_ITAB.
LT_ITAB-ZCODE = 'ZY_SD_COLLECTION_INFO'.
LT_ITAB-STEXT = 'xxxxxx'.
APPEND LT_ITAB.
LT_ITAB-ZCODE = 'ZY_SD_SALES_COLLECTION_MATCH'.
LT_ITAB-STEXT = 'xxxxxx'.
APPEND LT_ITAB.
LT_ITAB-ZCODE = 'ZY_SD_SALES_COLLECTION_MATCH_B'.
LT_ITAB-STEXT = 'xxxxxx'.
APPEND LT_ITAB.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'ZCODE'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_ZCODE'
VALUE_ORG = 'S'
CALLBACK_PROGRAM = SY-REPID
* CALLBACK_FORM = 'CB_FORM'
TABLES
VALUE_TAB = LT_ITAB
RETURN_TAB = LT_RETURN_TAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
ENDFORM. " FRM_F4_ZCODE