sapdev logo background
sapdev logo sapdev logo
Comments

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.

TYPES: tt_RSPARAMS TYPE STANDARD TABLE OF RSPARAMS.


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	tt_RSPARAMS
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>




comments powered by Disqus