<%@page language="ABAP" %>
<%= P_MODEL->G_JSON %><HTML>
<HEAD>
<!-- production version, optimized for size and speed -->
<script src="Scripts/vue.js"></script>
<script src="Scripts/axios.js"></script>
</HEAD>
<body>
<div id="app2">
<div v-if="loading">
loading...
</div>
<div v-else>
<ul>
<li v-for="item in items.ITAB">
<h1>
{{item.DAY}}
</h1>
<p>
{{item.DATE}}
</p>
</li>
</ul>
</div>
</div>
<h1>Test Page</h1>
<p><a href="ZPPM_BSP_CO_JSON.do">TEST</a></p>
<script>
const URL = 'ZPPM_BSP_CO_JSON.do';
var app2 = new Vue({
el: '#app2',
data() {
return {
loading: true,
posts: [] // add posts here so reactivity is working, also undefined would be OK
}
},
created() {
//this.loading = true --> not needed already set in data
//op:03 represents Json format, see base class constants: ZBSP_CL_BASE_REST_MODEL
axios.post(URL, {
params: {
op: '03'
}}).then((response) => {
// console.log(response.data, this)
this.items = response.data
this.loading = false
})
}
})
</script>
</body>
</HTML>
CLASS ZPPM_CL_BSP_CO_JSON DEFINITION
PUBLIC
"Kind of framework to be used in feature BSP pages
INHERITING FROM ZBSP_CL_BASE_CONTROLLER
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
"Page Data Model
DATA P_MODEL TYPE REF TO ZPPM_CL_BSP_CO_JSON_MO . "Class that contains Biz Logic
"Initialize Class
METHODS DO_INIT REDEFINITION .
METHODS DO_REQUEST REDEFINITION .
PROTECTED SECTION.
"Creates Page Model BO
METHODS CREATE_PAGE_MODEL .
"Set contoller params
METHODS SET_CONTROLLER_PARAMS REDEFINITION .
PRIVATE SECTION.
DATA: GT_REQ_PRMS TYPE TIHTTPNVP.
"Refresh Page Data
METHODS REFRESH_PAGE_DATA.
"Process Request
METHODS PROCESS_REQUEST.
"View Page
METHODS VIEW_PAGE.
ENDCLASS.
CLASS ZPPM_CL_BSP_CO_JSON IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZPPM_CL_BSP_CO_JSON->CREATE_PAGE_MODEL
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD CREATE_PAGE_MODEL.
"Create pages model class
ME->P_MODEL ?= ME->CREATE_MODEL(
CLASS_NAME = C_PAGE_MODEL_CLS
MODEL_ID = C_PAGE_MODEL_ID ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZPPM_CL_BSP_CO_JSON->DO_INIT
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD DO_INIT.
CALL METHOD SUPER->DO_INIT.
SET_CONTROLLER_PARAMS( ).
CREATE_PAGE_MODEL( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZPPM_CL_BSP_CO_JSON->DO_REQUEST
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD DO_REQUEST.
CALL METHOD SUPER->DO_REQUEST.
"Lets store parameters so we can make use of them in controller
REFRESH GT_REQ_PRMS.
RUNTIME->SERVER->REQUEST->GET_FORM_FIELDS( CHANGING FIELDS = GT_REQ_PRMS ).
PROCESS_REQUEST( ).
VIEW_PAGE( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZPPM_CL_BSP_CO_JSON->PROCESS_REQUEST
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD PROCESS_REQUEST.
"You can implement a controller logic here
"Get Post/Get Parameters and call model according those parameters
"We can return Json, Json xml or xml. We will use that variable to determine output type
CLEAR P_MODEL->GV_OUT_TYPE.
READ TABLE GT_REQ_PRMS ASSIGNING FIELD-SYMBOL(<WAP>)
WITH KEY NAME = P_MODEL->C_OUT_PRM_NAME.
IF SY-SUBRC IS INITIAL.
P_MODEL->GV_OUT_TYPE = <WAP>-VALUE.
ENDIF.
"Process Request
REFRESH_PAGE_DATA( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZPPM_CL_BSP_CO_JSON->REFRESH_PAGE_DATA
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD REFRESH_PAGE_DATA.
"Get Data
"No logic is implemented. that will return just a dummy data
ME->P_MODEL->GET_DATA( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZPPM_CL_BSP_CO_JSON->SET_CONTROLLER_PARAMS
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD SET_CONTROLLER_PARAMS.
C_PAGE = 'ZPPM_BSP_CO_JSON_VIEW'.
C_PAGE_MODEL_CLS = 'ZPPM_CL_BSP_CO_JSON_MO'.
C_PAGE_MODEL_ID = 'ZPPM_CL_BSP_CO_JSON_MO'.
C_PAGE_MODEL_VAR = 'P_MODEL'.
C_PAGE_CONTROLLER_NAME_VAR = 'P_CONTROLLER_NAME'.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZPPM_CL_BSP_CO_JSON->VIEW_PAGE
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD VIEW_PAGE.
"View Page
DATA: LV_VIEW TYPE REF TO IF_BSP_PAGE.
LV_VIEW = CREATE_VIEW( VIEW_NAME = C_PAGE ).
"We will pass json data as part of page attributes object
LV_VIEW->SET_ATTRIBUTE( NAME = C_PAGE_MODEL_VAR VALUE = ME->P_MODEL ).
LV_VIEW->SET_ATTRIBUTE( NAME = C_PAGE_CONTROLLER_NAME_VAR VALUE = ME->CONTROLLER_NAME ).
CALL_VIEW( LV_VIEW ).
ENDMETHOD.
ENDCLASS.CLASS ZBSP_CL_BASE_CONTROLLER DEFINITION
PUBLIC
INHERITING FROM CL_BSP_CONTROLLER2
ABSTRACT
CREATE PUBLIC .
PUBLIC SECTION.
"Controller Params
DATA PARAMS TYPE ZBSP_TY_S_CONTROLLER_PARAMS .
DATA GV_DURUM TYPE ZUTIL_S_DURUM .
"Set Session Variable
METHODS SET_SESSION_VAR
IMPORTING
VALUE(I_NAME) TYPE ZBSP_E_STR
VALUE(I_VALUE) TYPE ANY
EXPORTING
VALUE(E_DURUM) TYPE ZUTIL_S_DURUM .
"Get Session Variable
METHODS GET_SESSION_VAR
IMPORTING
VALUE(I_NAME) TYPE ZBSP_E_STR
EXPORTING
VALUE(E_DURUM) TYPE ZUTIL_S_DURUM
VALUE(E_VALUE) TYPE ANY .
"On Request process, get url params
METHODS DO_REQUEST
REDEFINITION .
METHODS DO_INIT
REDEFINITION .
PROTECTED SECTION.
"Page and model names
DATA C_PAGE TYPE STRING VALUE '' ##NO_TEXT.
DATA C_PAGE_MODEL_CLS TYPE SEOCLSNAME VALUE '' ##NO_TEXT.
DATA C_PAGE_MODEL_ID TYPE STRING VALUE '' ##NO_TEXT.
DATA C_PAGE_MODEL_VAR TYPE STRING VALUE 'P_MODEL' ##NO_TEXT.
DATA C_PAGE_CONTROLLER_NAME_VAR TYPE STRING VALUE 'P_CONTROLLER_NAME' ##NO_TEXT.
"Populated in DO_REQUEST
DATA GT_FORM_FIELDS TYPE TIHTTPNVP .
"Set Controller Params for a view
METHODS SET_CONTROLLER_PARAMS
ABSTRACT .
PRIVATE SECTION.
"Gets Form Fields
METHODS FILL_FORM_FIELDS.
ENDCLASS.
CLASS ZBSP_CL_BASE_CONTROLLER IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZBSP_CL_BASE_CONTROLLER->DO_INIT
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD DO_INIT.
CALL METHOD SUPER->DO_INIT.
RESPONSE->SET_HEADER_FIELD( NAME = 'Expires' VALUE = 'Thu, 01 Mar 2018 00:00:00 GMT' ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZBSP_CL_BASE_CONTROLLER->DO_REQUEST
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD DO_REQUEST.
CALL METHOD SUPER->DO_REQUEST.
FILL_FORM_FIELDS( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZBSP_CL_BASE_CONTROLLER->FILL_FORM_FIELDS
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD FILL_FORM_FIELDS.
"Fill GT_FORM_FIELDS from URL Parameters
DATA: EXREF TYPE REF TO CX_ROOT.
TRY .
"Get the URL variables and save them into the table.
REFRESH GT_FORM_FIELDS.
RUNTIME->SERVER->REQUEST->GET_FORM_FIELDS( CHANGING FIELDS = GT_FORM_FIELDS ).
FIELD-SYMBOLS: <WA> TYPE LINE OF TIHTTPNVP.
LOOP AT GT_FORM_FIELDS ASSIGNING <WA>.
TRANSLATE <WA>-NAME TO UPPER CASE.
ENDLOOP.
CATCH CX_ROOT INTO EXREF.
ENDTRY.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZBSP_CL_BASE_CONTROLLER->GET_SESSION_VAR
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_NAME TYPE ZBSP_E_STR
* | [<---] E_DURUM TYPE ZUTIL_S_DURUM
* | [<---] E_VALUE TYPE ANY
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD GET_SESSION_VAR.
DATA: EXREF TYPE REF TO CX_ROOT.
TRY .
RUNTIME->SERVER->SET_SESSION_STATEFUL( ).
DATA: LV_COOKIE_NAME TYPE ZBSP_E_STR.
LV_COOKIE_NAME = RUNTIME->APPLICATION_NAME && I_NAME.
CALL METHOD CL_BSP_SERVER_SIDE_COOKIE=>GET_SERVER_COOKIE
EXPORTING
NAME = LV_COOKIE_NAME
APPLICATION_NAMESPACE = RUNTIME->APPLICATION_NAMESPACE
APPLICATION_NAME = RUNTIME->APPLICATION_NAME
USERNAME = SY-UNAME
SESSION_ID = RUNTIME->SESSION_ID
DATA_NAME = I_NAME
CHANGING
DATA_VALUE = E_VALUE.
E_DURUM-DURUM = ZUTIL_CL_DEFS=>C_DURUM_SUCCESS.
CATCH CX_ROOT INTO EXREF.
E_DURUM-DURUM = ZUTIL_CL_DEFS=>C_DURUM_ERROR.
E_DURUM-DURUM_TEXT = EXREF->GET_TEXT( ).
ENDTRY.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZBSP_CL_BASE_CONTROLLER->SET_SESSION_VAR
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_NAME TYPE ZBSP_E_STR
* | [--->] I_VALUE TYPE ANY
* | [<---] E_DURUM TYPE ZUTIL_S_DURUM
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD SET_SESSION_VAR.
DATA: EXREF TYPE REF TO CX_ROOT.
TRY .
RUNTIME->SERVER->SET_SESSION_STATEFUL( ).
DATA: LV_DATE TYPE DATUM,
LV_TIME TYPE UZEIT.
LV_DATE = SY-DATUM + 1.
LV_TIME = SY-UZEIT.
DATA: LV_COOKIE_NAME TYPE ZBSP_E_STR.
LV_COOKIE_NAME = RUNTIME->APPLICATION_NAME && I_NAME.
CL_BSP_SERVER_SIDE_COOKIE=>SET_SERVER_COOKIE(
EXPORTING
NAME = LV_COOKIE_NAME
APPLICATION_NAMESPACE = RUNTIME->APPLICATION_NAMESPACE
APPLICATION_NAME = RUNTIME->APPLICATION_NAME
USERNAME = SY-UNAME
SESSION_ID = RUNTIME->SESSION_ID
DATA_NAME = I_NAME
DATA_VALUE = I_VALUE
).
E_DURUM-DURUM = ZUTIL_CL_DEFS=>C_DURUM_SUCCESS.
CATCH CX_ROOT INTO EXREF.
E_DURUM-DURUM = ZUTIL_CL_DEFS=>C_DURUM_ERROR.
E_DURUM-DURUM_TEXT = EXREF->GET_TEXT( ).
ENDTRY.
ENDMETHOD.
ENDCLASS.CLASS ZPPM_CL_BSP_CO_JSON_MO DEFINITION
PUBLIC
INHERITING FROM ZBSP_CL_BASE_REST_MODEL
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
"We will store return value in different formats
"op request parameter can be used to determine output type
DATA :G_JSON TYPE STRING,
G_JSON_XML TYPE STRING,
G_XML TYPE STRING.
"Dummy method
METHODS GET_DATA.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZPPM_CL_BSP_CO_JSON_MO IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZPPM_CL_BSP_CO_JSON_MO->GET_DATA
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD GET_DATA.
"https://help.sap.com/doc/abapdocu_740_index_htm/7.40/en-US/index.htm?file=abenabap_json_abexas.htm
"Creates a dummy table and fills global variables that contains 3 json formats of data
"Instead you call a different object and retrieve data.
"Structure for dummy data
TYPES: BEGIN OF STRUCT,
DAY TYPE STRING,
DATE TYPE D,
END OF STRUCT.
"Dummy data
DATA ITAB TYPE STANDARD TABLE OF STRUCT.
ITAB = VALUE #( ( DAY = 'Yesterday' DATE = SY-DATLO - 1 )
( DAY = 'Today' DATE = SY-DATLO )
( DAY = 'Tomorrow' DATE = SY-DATLO + 1 )
).
"Transformation to JSON
DATA(WRITER) = CL_SXML_STRING_WRITER=>CREATE( TYPE = IF_SXML=>CO_XT_JSON ).
CALL TRANSFORMATION ID SOURCE ITAB = ITAB RESULT XML WRITER.
DATA(JSON) = WRITER->GET_OUTPUT( ).
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
IM_XSTRING = JSON
IMPORTING
EX_STRING = G_JSON.
"JSON-XML
DATA(READER) = CL_SXML_STRING_READER=>CREATE( JSON ).
DATA(XML_WRITER) = CL_SXML_STRING_WRITER=>CREATE( ).
READER->NEXT_NODE( ).
READER->SKIP_NODE( XML_WRITER ).
DATA(XML) = XML_WRITER->GET_OUTPUT( ).
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
IM_XSTRING = XML
IMPORTING
EX_STRING = G_JSON_XML.
"asXML
CALL TRANSFORMATION ID SOURCE ITAB = ITAB RESULT XML XML.
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
IM_XSTRING = XML
IMPORTING
EX_STRING = G_XML.
ENDMETHOD.
ENDCLASS.
CLASS ZPPM_CL_BSP_CO_INDEX DEFINITION
PUBLIC
INHERITING FROM ZBSP_CL_BASE_CONTROLLER
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
"Page Data Model
DATA P_MODEL TYPE REF TO ZPPM_CL_BSP_CO_BASE_MO . "Class that contains Biz Logic
"Initialize Class
METHODS DO_INIT
REDEFINITION .
METHODS DO_REQUEST
REDEFINITION .
PROTECTED SECTION.
"Creates Page Model BO
METHODS CREATE_PAGE_MODEL .
"Set contoller params
METHODS SET_CONTROLLER_PARAMS REDEFINITION .
PRIVATE SECTION.
DATA: GT_REQ_PRMS TYPE TIHTTPNVP.
"Refresh Page Data
METHODS REFRESH_PAGE_DATA.
"Process Request
METHODS PROCESS_REQUEST.
"View Page
METHODS VIEW_PAGE.
ENDCLASS.
CLASS ZPPM_CL_BSP_CO_INDEX IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZPPM_CL_BSP_CO_INDEX->CREATE_PAGE_MODEL
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD CREATE_PAGE_MODEL.
* "Create pages model class
* ME->P_MODEL ?= ME->CREATE_MODEL(
* CLASS_NAME = C_PAGE_MODEL_CLS
* MODEL_ID = C_PAGE_MODEL_ID ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZPPM_CL_BSP_CO_INDEX->DO_INIT
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD DO_INIT.
CALL METHOD SUPER->DO_INIT.
SET_CONTROLLER_PARAMS( ).
CREATE_PAGE_MODEL( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZPPM_CL_BSP_CO_INDEX->DO_REQUEST
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD DO_REQUEST.
CALL METHOD SUPER->DO_REQUEST.
REFRESH GT_REQ_PRMS.
RUNTIME->SERVER->REQUEST->GET_FORM_FIELDS( CHANGING FIELDS = GT_REQ_PRMS ).
PROCESS_REQUEST( ).
VIEW_PAGE( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZPPM_CL_BSP_CO_INDEX->PROCESS_REQUEST
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD PROCESS_REQUEST.
"Process Request
REFRESH_PAGE_DATA( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZPPM_CL_BSP_CO_INDEX->REFRESH_PAGE_DATA
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD REFRESH_PAGE_DATA.
"Get Data
"ME->P_MODEL->GET_DATA( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZPPM_CL_BSP_CO_INDEX->SET_CONTROLLER_PARAMS
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD SET_CONTROLLER_PARAMS.
C_PAGE = 'index.htm'.
C_PAGE_MODEL_CLS = 'ZPPM_CL_BSP_CO_JSON_MO'.
C_PAGE_MODEL_ID = 'ZPPM_CL_BSP_CO_JSON_MO'.
C_PAGE_MODEL_VAR = 'P_MODEL'.
C_PAGE_CONTROLLER_NAME_VAR = 'P_CONTROLLER_NAME'.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZPPM_CL_BSP_CO_INDEX->VIEW_PAGE
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD VIEW_PAGE.
"View Page
DATA: LV_VIEW TYPE REF TO IF_BSP_PAGE.
LV_VIEW = CREATE_VIEW( VIEW_NAME = C_PAGE ).
LV_VIEW->SET_ATTRIBUTE( NAME = C_PAGE_MODEL_VAR VALUE = ME->P_MODEL ).
LV_VIEW->SET_ATTRIBUTE( NAME = C_PAGE_CONTROLLER_NAME_VAR VALUE = ME->CONTROLLER_NAME ).
CALL_VIEW( LV_VIEW ).
ENDMETHOD.
ENDCLASS.You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 3143 | |
| 1916 | |
| 1916 | |
| 1213 | |
| 1079 | |
| 757 | |
| 755 | |
| 742 |