|
|
orgaisation selection BSP - set and get server side cookie ( set_server_cookie )
This is the orgselection.htm page of the example SAP HR org structure BSP, this is being used
to demonstrate the use of javascript retrieve the SAP HR org structure and display it to the SAP bsp user. Please note this page will do very little on
it own and needs to be implemented as part of the whole SAP HR org structure BSP
*orgselection.htm
Type Definitions
----------------
types: tt_hrp1001 type standard table of hrp1001 initial size 0.
TYPES: BEGIN OF t_orgdisplay,
level(40) TYPE c,
id type i,
parent type i,
objid TYPE hrp1001-objid,
orgtx type string,
begda TYPE hrp1001-begda,
endda TYPE hrp1001-endda,
display type string,
checked type string,
END OF t_orgdisplay.
TYPES: tt_orgdisplay TYPE STANDARD TABLE OF t_orgdisplay.
Page Attributes
---------------
gd_count TYPE SY-INDEX
gd_id TYPE STRING
gd_str TYPE STRING
gd_update TYPE I
it_hrp1001 TYPE TT_HRP1001
it_orgdisplay TYPE TT_ORGDISPLAY
it_selection TYPE Z_SOGRANT
p_windowsid TYPE STRING
tv_iterator TYPE REF TO IF_HTMLB_TABLEVIEW_ITERATOR
vIndex TYPE I
vSize TYPE STRING
wa_orgdisplay TYPE T_ORGDISPLAY
On Create
---------------
* this handler is called once the page is first created (stateful mode)
* it performs a once-off data initialization or object creation
DATA: a_name TYPE string VALUE 'NONE',
a_name_space TYPE string VALUE 'NONE',
u_name TYPE string VALUE 'NONE',
session_id TYPE string VALUE 'NONE'.
cl_bsp_server_side_cookie=>get_server_cookie(
EXPORTING
name = p_windowsid
application_name = 'ORG_LIST'
application_namespace = runtime->application_namespace
username = sy-uname
session_id = 'SESSION_ID'
data_name = 'COOKIE_ID_50CASE1'
CHANGING
data_value = it_orgdisplay ).
IF it_orgdisplay IS INITIAL.
SUBMIT zorg_retrieve AND RETURN.
IMPORT it_orgdisplay TO it_orgdisplay FROM MEMORY ID 'ZORGSTRUCT'.
cl_bsp_server_side_cookie=>set_server_cookie(
EXPORTING
name = p_windowsid
application_name = 'ORG_LIST'
application_namespace = runtime->application_namespace
username = sy-uname
session_id = 'SESSION_ID'
data_value = it_orgdisplay
data_name = 'COOKIE_ID_50CASE1'
expiry_time_rel = 3600
).
ENDIF.
On Initialization
---------
* event handler for data retrieval
DATA: a_name TYPE string VALUE 'NONE',
a_name_space TYPE string VALUE 'NONE',
u_name TYPE string VALUE 'NONE',
session_id TYPE string VALUE 'NONE'.
cl_bsp_server_side_cookie=>get_server_cookie(
EXPORTING
name = p_windowsid
application_name = 'ORG_LIST'
application_namespace = runtime->application_namespace
username = sy-uname
session_id = 'SESSION_ID'
data_name = 'COOKIE_ID_50CASE1'
* IMPORTING
* EXPIRY_DATE =
* EXPIRY_TIME =
CHANGING
data_value = it_orgdisplay ).
On InputProcessing
---------
* event handler for checking and processing user input and
* for defining navigation
DATA: a_name TYPE string VALUE 'NONE',
a_name_space TYPE string VALUE 'NONE',
u_name TYPE string VALUE 'NONE',
session_id TYPE string VALUE 'NONE'.
CLASS cl_htmlb_manager DEFINITION LOAD.
DATA: event TYPE REF TO cl_htmlb_event.
event ?= cl_htmlb_manager=>get_event( runtime->server->request ).
data: wa_next type string,
wa_string type string,
wa_selection like line of it_selection.
constants: con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB.
IF event->id = 'orgButton' AND event->event_type = 'click'.
DATA: data TYPE REF TO CL_HTMLB_INPUTFIELD.
data ?= CL_HTMLB_MANAGER=>GET_DATA(
request = runtime->server->request
name = 'inputField'
id = 'id1'
).
IF data IS NOT INITIAL.
gd_id = data->value.
wa_string = gd_id.
DO.
IF wa_string is initial.
EXIT.
ELSE.
SPLIT wa_string AT ',' INTO wa_next
wa_string.
read table it_orgdisplay into wa_orgdisplay
with key id = wa_next.
if wa_orgdisplay-checked = 'CHECKED'.
wa_orgdisplay-checked = 'UNCHECKED'.
else.
wa_orgdisplay-checked = 'CHECKED'.
endif.
modify it_orgdisplay from wa_orgdisplay index sy-tabix.
ENDIF.
ENDDO.
if sy-subrc eq 0.
cl_bsp_server_side_cookie=>set_server_cookie(
EXPORTING
name = p_windowsid
application_name = 'ORG_LIST'
application_namespace = runtime->application_namespace
username = sy-uname
session_id = 'SESSION_ID'
data_value = it_orgdisplay
data_name = 'COOKIE_ID_50CASE1'
expiry_time_rel = 3600
).
loop at it_orgdisplay into wa_orgdisplay where
checked = 'CHECKED'.
wa_selection-selname = 'S_DEPT'.
wa_selection-sign = 'I'.
wa_selection-option = 'EQ'.
wa_selection-low = wa_orgdisplay-objid.
wa_selection-high = wa_orgdisplay-objid.
append wa_selection to it_selection.
endloop.
cl_bsp_server_side_cookie=>set_server_cookie(
EXPORTING
name = p_windowsid
application_name = 'SEL_SCREEN'
application_namespace = runtime->application_namespace
username = sy-uname
session_id = 'SESSION_ID'
data_value = it_selection
data_name = 'COOKIE_ID_50CASE1'
expiry_time_rel = 3600
).
navigation->goto_page('closewindow.htm').
endif.
ENDIF.
ENDIF.
Layout
------
<%@page language="abap"%>
<%@extension name="htmlb" prefix="htmlb"%>
<htmlb:content design="classic">
<htmlb:page title = " ">
<htmlb:form>
<html>
<head>
<SCRIPT TYPE="text/javascript">
<!--
window.focus();
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
function close_window(mylink, windowname)
{
javascript:window.close();
//Implementation
//<A HREF="orgtest.htm" onClick="return close_window(this, 'OrgUnit')"></A>
}
</script>
<title>Organisational Structure</title>
<link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script>
</head>
<body>
<htmlb:inputField id = "id1"
invalid = "true"
value = "<%=gd_id%>"
required = "true"
visible = " "/>
<htmlb:button id = "orgButton"
text = "Done"
onClick = "orgButton"/>
<div class="dtree">
<p><a href="javascript: d.openAll();">open all</a> |
<a href="javascript: d.closeAll();">close all</a></p>
<script type="text/javascript">
<!--
var count = 1;
var count2 = 0;
var str = ' ';
d = new dTree('d');
d.add(0,-1,'The University of Leeds');
<% loop at it_orgdisplay into wa_orgdisplay.%>
d.add(<%=wa_orgdisplay-id %>,<%=wa_orgdisplay-parent %>,
'<%=wa_orgdisplay-objid %> | <%=wa_orgdisplay-orgtx %>',
'orgupdate.htm?gd_id=<%=wa_orgdisplay-id %>&gd_update=2','','MAIN',
'','','','','<%=wa_orgdisplay-checked %>');
count++;
<% endloop. %>
//d.add(400,0,'My Pictures','javascript:void(0);','','MAIN','test','','',
'img/folderopen.gif',true,true,'',true);
//d.add(401,400,'My Pictures','example01.html','','MAIN',
'Pictures I\ve taken over the years','','','img/folderopen.gif');
// d.oAll(false); // closes all branches
document.write(d);
// d.openTo(20, true);
// d.openTo(5, true);
//-->
</script>
</div>
<p>©V!p3r</p>
<htmlb:button id = "orgButton"
text = "Done"
onClick = "orgButton"/>
<IFRAME marginwidth="0" marginheight="0" src="top/top.htm" name="MAIN"
width="1" height="1" border="0" frameborder="0"
style="border:none;" scrolling="no"></iframe>
</body>
</html>
</htmlb:form>
</htmlb:page>
</htmlb:content>
|