<%@pagelanguage="abap"%>
<%@extensionname="htmlb"prefix="htmlb"%>
scripttype="text/javascript"
functionDisplayTrans()
{
window.open("<%=display_url%>");
}
functionPortalDisplay()
{
window.open("<%=display_portal%>");
}
</script
<htmlb:contentdesign="design2003"
<htmlb:pagetitle="MainPage(LinkingtoSAPTransactions)"
<htmlb:form
<htmlb:tabStripid="myTabStrip"
bodyHeight="75"
width="100"
<htmlb:tabStripItemid="myTabStripItem"
index="1"
title="SelectionScreen"
tooltip="SelectionScreen"
onSelect="tabSel"
<htmlb:gridLayoutid="myGridLayout"
width="300"
columnSize="2"
rowSize="10"
<htmlb:gridLayoutCellrowIndex="1"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_carrid"
text="AirlineCode"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="1"
columnIndex="2"
<htmlb:inputFieldid="i_carrid"
value="<%=WA_SFLIGHT-CARRID%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="2"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_connid"
text="FlightConnection"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="2"
columnIndex="2"
<htmlb:inputFieldid="i_connid"
value="<%=WA_SFLIGHT-CONNID%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="3"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_fldate"
text="Flightdate"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="3"
columnIndex="2"
<htmlb:inputFieldid="i_fldate"
value="<%=WA_SFLIGHT-FLDATE%>"
showHelp="X"
type="date"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="4"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_price"
text="Price"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="4"
columnIndex="2"
<htmlb:inputFieldid="i_price"
value="<%=WA_SFLIGHT-PRICE%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="5"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_currency"
text="Currency"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="5"
columnIndex="2"
<htmlb:inputFieldid="i_currency"
value="<%=WA_SFLIGHT-CURRENCY%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="6"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_planetype"
text="PlaneType"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="6"
columnIndex="2"
<htmlb:inputFieldid="i_planetype"
value="<%=WA_SFLIGHT-PLANETYPE%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="7"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_seatsmax"
text="Max.Seat"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="7"
columnIndex="2"
<htmlb:inputFieldid="i_seatsmax"
value="<%=WA_SFLIGHT-SEATSMAX%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="8"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_seatsocc"
text="OccupiedSeats"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="8"
columnIndex="2"
<htmlb:inputFieldid="i_seatsocc"
value="<%=WA_SFLIGHT-SEATSOCC%>"
disabled="True"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="9"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_paymentsum"
text="PaymentSum"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="9"
columnIndex="2"
<htmlb:inputFieldid="i_paymentsum"
value="<%=WA_SFLIGHT-PAYMENTSUM%>"
disabled="True"/>
</htmlb:gridLayoutCell>
</htmlb:gridLayout>
</htmlb:tabStripItem>
</htmlb:tabStrip>
<htmlb:buttonid="sap_link"
text="DisplayTransaction"
onClientClick="DisplayTrans()"/>
<htmlb:buttonid="sap_link"
text="DisplayPortal"
onClientClick="PortalDisplay()"/>
</htmlb:form
</htmlb:page>
</htmlb:content

<htmlb:contentdesign="design2003"
<htmlb:pagetitle="SelectionScreen"
<htmlb:form
<htmlb:tabStripid="myTabStrip"
bodyHeight="75"
width="100"
<htmlb:tabStripItemid="myTabStripItem"
index="1"
title="SelectionScreen"
tooltip="SelectionScreen"
onSelect="tabSel"
<htmlb:gridLayoutid="myGridLayout"
width="300"
columnSize="2"
rowSize="10"
<htmlb:gridLayoutCellrowIndex="1"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_carrid"
text="AirlineCode"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="1"
columnIndex="2"
<htmlb:inputFieldid="i_carrid"
value="<%=T_SFLIGHT-CARRID%>"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="2"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_connid"
text="FlightConnection"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="2"
columnIndex="2"
<htmlb:inputFieldid="i_connid"
value="<%=T_SFLIGHT-CONNID%>"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="3"
columnIndex="1"
width="15%"
<htmlb:labelfor="i_fldate"
text="Flightdate"/>
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCellrowIndex="3"
columnIndex="2"
<htmlb:inputFieldid="i_fldate"
value="<%=T_SFLIGHT-FLDATE%>"
showHelp="X"
type="date"/>
</htmlb:gridLayoutCell>
</htmlb:gridLayout>
</htmlb:tabStripItem>
</htmlb:tabStrip>

Figure 7 Create a frame with the three fields Carrier ID, Connection ID, and Flight Date

*&------*

*& Form before_save

*&------*

form before_save.

*** Validate Change request exists in Change master table ***

data begin of wa_extract.

include structure ztrtracking.

include structure vimtbflags.

data end of wa_extract.

data: w_objectid like ztrobjectmaster-objectid.

loop at extract into wa_extract.

check ( wa_extract-vim_action = 'N' or wa_extract-vim_action = 'U' ).

check ( not wa_extract-tranreqno is INITIAL ).

select single objectid from ztrobjectmaster into (w_objectid)

where objectid = wa_extract-objectid

and systid = wa_extract-systid

and chngtyp = wa_extract-chngtyp

and chngtypeno = wa_extract-chngtypeno.

if ( sy-subrc > 0 ).

message 'Change Request does not exist in Change Master' type 'E'.

exit.

endif.

endloop.

endform. "BEFORE_SAVE

*&------*

*& Form fill_noinput_fields

*&------*

form fill_noinput_fields.

check ( not ztrtracking-tranreqno is initial ).

*** Fill Transport owner ***

select single as4user into (ztrtracking-tranreqowner)

from e070

where trkorr = ztrtracking-tranreqno.

*** Fill Transport description ***

select single as4text into (ztrtracking-tranreqtext)

from e07t

where trkorr = ztrtracking-tranreqno

and langu = 'E'.

*** Fill basic audit trail information ***

ztrtracking-createdby = sy-uname.

*** If this transport had been released in past, but being added

*** manually to the registry, then update status of this transport

select single * from e070

where trkorr = ztrtracking-tranreqno

and trstatus = 'R'. "Transport is Released

if ( sy-subrc = 0 ).

perform update_transport_status. “THIS IS OPTIONAL ROUTINE

endif.

endform. "fill_noinput_fields

*&------*

*& Form update_transport_status

*&------*

* For manually/offline added transport records in ZTRTRACKING table,

* update the import status of those transports which have already

* been released.

*------*

form update_transport_status.

data: w_lines like tstrfcofil,

i_lines like tstrfcofil occurs 0 with header line.

*** Read Transport Log for the Transport being manually added ***

refresh: i_lines.

call function 'STRF_READ_COFILE'

exporting iv_trkorr = ztrtracking-tranreqno

tables t_cofi_lines = i_lines

exceptions others = 0.

check ( sy-subrc = 0 ).

*** Please replace SE, QA, PE and DEV with the corresponding system names

*** in your environment

delete i_lines where ( tarsystem = 'SE' and function > 'I' )

or ( tarsystem = 'QA’ and function > 'I' )

or ( tarsystem = 'PE' and function > 'I' )

or ( tarsystem = 'DEV' and function > 'E' ).

delete i_lines where ( tarsystem > 'DEV' and tarsystem > 'SE' and tarsystem > 'QA' and tarsystem > 'PE' ).

sort i_lines.

loop at i_lines.

w_lines = i_lines.

at end of tarsystem.

if ( i_lines-tarsystem = 'DEV' ).

if ( w_lines-trdate > ztrtracking-tranreqreleon ) or

( ( w_lines-trdate = ztrtracking-tranreqreleon ) and

( w_lines-trtime > ztrtracking-tranreqreleat ) ).

ztrtracking-tranreqreleon = w_lines-trdate.

ztrtracking-tranreqreleat = w_lines-trtime.

endif.

endif.

if ( i_lines-tarsystem = 'SE' ).

if ( w_lines-trdate > ztrtracking-seimpdate ) or

( ( w_lines-trdate = ztrtracking-seimpdate ) and

( w_lines-trtime > ztrtracking-seimptime ) ).

ztrtracking-seimpdate = w_lines-trdate.

ztrtracking-seimptime = w_lines-trtime.

endif.

endif.

if ( i_lines-tarsystem = 'QA' ).

if ( w_lines-trdate > ztrtracking-qaimpdate ) or

( ( w_lines-trdate = ztrtracking-qaimpdate ) and

( w_lines-trtime > ztrtracking-qaimptime ) ).

ztrtracking-qaimpdate = w_lines-trdate.

ztrtracking-qaimptime = w_lines-trtime.

endif.

endif.

if ( i_lines-tarsystem = 'PE' ).

if ( w_lines-trdate > ztrtracking-peimpdate ) or

( ( w_lines-trdate > ztrtracking-peimpdate ) and

( w_lines-trtime > ztrtracking-peimptime ) ).

ztrtracking-peimpdate = w_lines-trdate.

ztrtracking-peimptime = w_lines-trtime.

endif.

endif.

endat.

at new tarsystem.

if ( i_lines-tarsystem = 'SE' ).

if ( w_lines-function = 'I' ).

move w_lines-retcode to ztrtracking-seimpstatus.

endif.

endif.

if ( i_lines-tarsystem = 'QA' ).

if ( w_lines-function = 'I' ).

move w_lines-retcode to ztrtracking-qaimpstatus.

endif.

endif.

if ( i_lines-tarsystem = 'PE' ).

if ( w_lines-function = 'I' ).

move w_lines-retcode to ztrtracking-peimpstatus.

endif.

endif.

endat.

endloop.

endform. "update_transport_status

Figure 8 Code to automatically populate display-only fields before saving the data in the database

DATA:w_eventTYPEREFTOcl_htmlb_event,
w_eventidTYPEstring,
w_obj TYPEREFTOobject,
w_obj1TYPEREFTOobject,
w_valueTYPEREFTOcl_htmlb_inputfield,
w_anyvalTYPEstring.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='i_carrid'
RECEIVING
data=w_obj.
w_value?=w_obj.
w_anyval=w_value->value.
t_sflight-carrid=w_anyval.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='i_connid'
RECEIVING
data=w_obj.
w_value?=w_obj.
w_anyval=w_value->value.
t_sflight-connid=w_anyval.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='i_fldate'
RECEIVING
data=w_obj.
w_value?=w_obj.
w_anyval=w_value->value.
CONCATENATEw_anyval+6(4)w_anyval+3(2)w_anyval(2)INTOt_sflight-fldate.

Figure 9Fetch values from the SELECTION_SCREEN.htm page

CALLMETHODcl_htmlb_manager=>get_event
EXPORTING
request=runtime->server->request
RECEIVING
event=w_event.
IFw_event->idEQ'buttonaction'.
navigation->set_parameter(name='i_carrid'
value=t_sflight-carrid).
navigation->set_parameter(name='i_connid'
value=t_sflight-connid).
navigation->set_parameter(name='i_fldate'
value=t_sflight-fldate).
navigation->next_page('NEXT').
ENDIF.

Figure 10 Passvariables to the result page

method if_ex_cts_request_check~check_before_release.

data: wa_ztrtracking type ztrtracking,

bdcdata type standard table of bdcdata initial size 0,

wa_bdcdata type bdcdata.

clear: wa_ztrtracking.

*** Validate whether transport has already been added to the registry ***

select single * from ztrtracking into wa_ztrtracking where tranreqno = request.

check ( sy-subrc > 0 ).

*** Provide a Pass through to selected users, if necessary a for phased rollout ***

check ( sy-uname > 'XXXXX' ).

*** Call SM30 and add transport to the registry ***

message i000(zappldev) with 'Please assign' request 'to Transport Registry in the following step'.

wa_bdcdata-program = 'SAPLZTRTRACKING'.

wa_bdcdata-dynpro = '0001'.

wa_bdcdata-dynbegin = 'X'.

append wa_bdcdata to bdcdata.

clear wa_bdcdata.

wa_bdcdata-fnam = 'BDC_OKCODE'.

wa_bdcdata-fval = '=NEWL'.

append wa_bdcdata to bdcdata.

clear wa_bdcdata.

wa_bdcdata-fnam = 'BDC_CURSOR'.

wa_bdcdata-fval = 'ZTRTRACKING-TRANREQNO(01)'.

append wa_bdcdata to bdcdata.

clear wa_bdcdata.

wa_bdcdata-program = 'SAPLZTRTRACKING'.

wa_bdcdata-dynpro = '0001'.

wa_bdcdata-dynbegin = 'X'.

append wa_bdcdata to bdcdata.

clear wa_bdcdata.

wa_bdcdata-fnam = 'BDC_CURSOR'.

wa_bdcdata-fval = 'ZTRTRACKING-TRANREQNO(01)'.

append wa_bdcdata to bdcdata.

clear wa_bdcdata.

wa_bdcdata-fnam = 'ZTRTRACKING-TRANREQNO(01)'.

wa_bdcdata-fval = request.

append wa_bdcdata to bdcdata.

clear wa_bdcdata.

call transaction 'ZTR02' using bdcdata mode 'E'.

*** Final validation if user did not add transport in the previous step ***

select single * from ztrtracking into wa_ztrtracking where tranreqno = request.

if ( sy-subrc > 0 ).

message e000(zappldev) with 'Release of Transport Request' request 'was cancelled'.

else.

*** Stamp date and time of transport release from DEV ***

update ztrtracking

set tranreqreleon = sy-datum

tranreqreleat = sy-uzeit

where tranreqno = request.

endif.

endmethod.

Figure 13 ABAP code in method CHECK_BEFORE_RELEASE

FUNCTIONZBAPI_DISPLAY_HTML_REQUEST.
*"------
*"*"LocalInterface:
*"IMPORTING
*"VALUE(EMPLOYEE_NO)TYPEBAPIEMPL-PERNR
*"VALUE(TRIP_NO)TYPEBAPITRIP-TRIPNO
*"TABLES
*"RETURNSTRUCTUREBAPIRET2OPTIONAL
*"------
DATA:E_TriP_HtmlTYPESTANDARDTABLEOFPTRV_WEB_TRIPFORM_HTML.
CALLFUNCTION'PTRM_WEB_FORM_HTML_GET'
EXPORTING
i_employeenumber=EMPLOYEE_NO
i_tripnumber=TRIP_NO
*I_PERIODNUMBER='000'
*I_TRIP_COMPONENT=''
*I_TRIP_DATA_SOURCE='DB'
I_DISPLAY_FORM='X'
*I_LANGUAGE=SY-LANGU
*IV_VERSION_ACTIVE=
TABLES
et_tripform_html=E_TriP_Html
et_return=Return
.

Figure 14 Source code

DATA:w_eventTYPEREFTOcl_htmlb_event,
w_eventidTYPEstring,
w_obj TYPEREFTOobject,
w_obj1TYPEREFTOobject,
w_dataTYPEREFTOcl_htmlb_inputfield,
w_anyvalTYPEstring.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='I_CARRID'
RECEIVING
data=w_obj.
w_data?=w_obj.
w_anyval=w_data->value.
wa_sflight-carrid=w_anyval.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='I_CONNID'
RECEIVING
data=w_obj.
w_data?=w_obj.
w_anyval=w_data->value.
wa_sflight-connid=w_anyval.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='I_CONNID'
RECEIVING
data=w_obj.
w_data?=w_obj.
w_anyval=w_data->value.
wa_sflight-connid=w_anyval.
CALLMETHODcl_htmlb_manager=>get_data
EXPORTING
request=runtime->server->request
name='inputfield'
id='I_FLDATE'
RECEIVING
data=w_obj.
w_data?=w_obj.
w_anyval=w_data->value.
CONCATENATEw_anyval+6(4)w_anyval+3(2)w_anyval(2)
INTOwa_sflight-fldate.
SELECTSINGLE*INTOCORRESPONDINGFIELDSOFwa_sflight
FROMsflight
WHEREcarridEQwa_sflight-carridAND
connidEQwa_sflight-connidAND
fldateEQwa_sflight-fldate.

Figure 16Fetch the parameters from the selection screen

REPORTybsp_link_by_bsp
NOSTANDARDPAGEHEADING.
TABLES:sflight.
DATA:t_sflightTYPESTANDARDTABLEOFsflightWITHHEADERLINE.
SELECTION-SCREENBEGINOFBLOCKabcWITHFRAMETITLEtext-001.
SELECT-OPTIONS:s_carridFORsflight-carrid,
s_connidFORsflight-connid.
SELECTION-SCREENENDOFBLOCKabc.
START-OF-SELECTION.
SELECT*INTOCORRESPONDINGFIELDSOFTABLEt_sflight
FROMsflight
WHEREcarridINs_carridAND
connidINs_connid.
LOOPATt_sflight.
WRITE:/t_sflight-carrid,
t_sflight-connid,
t_sflight-fldate,
t_sflight-price.
ENDLOOP.
END-OF-SELECTION.

Figure 17 Source code for YBSP_LINK_BY_BSP

DATA:guidTYPEguid_32,
isolanguTYPEt002-laiso,
l_paramTYPEtext255,
sapworkdirTYPEsdok_chtrd,
l_scrapTYPEtext255,
gui_parTYPEchar80,
file_contentTYPEstring,
page_nameTYPEstring,
parametersTYPEtihttpnvp.
DATA:local_urlTYPEstring,
hostTYPEstring,
portTYPEstring,
protocolTYPEstring.

DATA:cached_responseTYPEREFTOcl_http_response.
CALLFUNCTION'IW_C_GET_SAPWORKDIR'
IMPORTING
sapworkdir=sapworkdir.

Figure 19 Code to set up the work directory in Windows

function z_update_transport_status.

*"------

*"*"Local Interface:

*" TABLES

*" T_REQUESTS STRUCTURE SCTS_IMP

*"------

field-symbols: <fs_requests> type scts_imp.

loop at t_requests assigning <fs_requests>.

case <fs_requests>-tarsystem.

when 'SE'.

update ztrtracking set seimpdate = sy-datum

seimptime = sy-uzeit

seimpstatus = <fs_requests>-retcode

where tranreqno = <fs_requests>-trkorr.

when 'QA'.

update ztrtracking set qaimpdate = sy-datum

qaimptime = sy-uzeit

qaimpstatus = <fs_requests>-retcode

where tranreqno = <fs_requests>-trkorr.

when 'PE'.

update ztrtracking set peimpdate = sy-datum

peimptime = sy-uzeit

peimpstatus = <fs_requests>-retcode

where tranreqno = <fs_requests>-trkorr.

when others.

endcase.

endloop.

endfunction.

Figure 20 ABAP code to add to Z_UPDATE_TRANSPORT_STATUS

FUNCTIONZBAPI_HRTR_DET_AGENTS.
*"------
*"*"LocalInterface:
*"IMPORTING
*"VALUE(PRNR)TYPEPSKEY-PERNR
*"VALUE(TRIP)TYPEBAPITRIP-TRIPNO
*"VALUE(MCCTR)TYPEPA0001-KOSTL
*"EXPORTING
*"VALUE(NROWS)TYPEADACACHE-CA_HIT
*"TABLES
*"RETURNSTRUCTUREBAPIRET2OPTIONAL
*"CAGENTSSTRUCTURESWRAGENT
*"------
Data:BEGINOFIT_CCTROCCURS0,
KOKRSTYPEKOKRS,
KOSTLTYPEKOSTL,
ENDOFIT_CCTR.
DATA:ACTOR_TABTYPESTANDARDTABLEOFSWRAGENTWITHHEADERLINE.
DATA:ITYPEINT4.
*Addmastercostcenterofemployee
SELECTSINGLEKOKRSINTOIT_CCTR-KOKRSFROMPA0001WHEREPERNREQPRNRANDENDDAGESY-DATUM.
IT_CCTR-KOSTL=MCCTR.
APPENDIT_CCTR.
*GetAllcostcnetersfromtravelrequestexceptmastercostcenter
SELECTFTPT_REQ_ACCOUNT~KOKRSFTPT_REQ_ACCOUNT~KOSTLINTOCORRESPONDINGFIELDSOFIT_CCTR
FROMFTPT_REQ_ACCOUNTWHERE
FTPT_REQ_ACCOUNT~PERNREQPRNRANDFTPT_REQ_ACCOUNT~REINREQTRIP
ANDFTPT_REQ_ACCOUNT~KOSTLNEMCCTR.
APPENDIT_CCTR.
ENDSELECT.
LOOPATIT_CCTR.
I=SY-TABIX.
CALLFUNCTION'RH_COST_CENTER_RESPONSIBLE'
EXPORTING
act_kokrs=IT_CCTR-KOKRS
act_cost_center=IT_CCTR-KOSTL
*SEARCH_DATE=SY-DATUM
*REFRESH_ACTOR_TAB='X'
tables
actor_tab=Actor_TAB
EXCEPTIONS
NOBODY_FOUND=1
OTHERS=2
.
IFACTOR_TABISNOTINITIAL.
CAGENTS-OTYPE=ACTOR_TAB-OTYPE.
CAGENTS-OBJID=ACTOR_TAB-OBJID.
APPENDCAGENTS.
ENDIF.
ENDLOOP.
DESCRIBETABLECAGENTSLINESNROWS.
ENDFUNCTION.

Figure 21 Source code

FUNCTIONZBAPI_HRTR_GET_AGENT.
*"------
*"*"LocalInterface:
*"IMPORTING
*"VALUE(IROW)TYPEADACACHE-CA_HIT
*"EXPORTING
*"VALUE(CAGENT)TYPESWRAGENT
*"TABLES
*"RETURNSTRUCTUREBAPIRET2
*"CAGENTSSTRUCTURESWRAGENT
*"------
IROW=IROW+1.
READTABLECAGENTSINDEXIROW.
CAGENT-OTYPE=CAGENTS-OTYPE.
CAGENT-OBJID=CAGENTS-OBJID.
ENDFUNCTION.

Figure 22 Source code

CALLMETHODcl_http_ext_webapp=>create_url_for_bsp_application
EXPORTING
*bsp_protocol=
*bsp_service=
bsp_application=runtime->application_url
bsp_start_page=page_name
bsp_start_parameters=parameters
IMPORTING
local_url=local_url
abs_url=display_url
host=host
port=port
protocol=protocol.

cl_http_server=>server_cache_upload(url=display_url
response=cached_response).

Figure 23 Enter the code to create the shortcut URL

CONCATENATE'
'/prtroot/pcd!3a!2f!2fportal_content'
'!2fcom.sap.portal.migrated!2fep_5.0!2ftemplates!'
'2fcom.sap.portal.appintegrator.sap.bwc.Transaction?'
'System=SYSTEMALIASCLIENT'
'&SAP_TCode=KS03'
'&SAP_GuiType=WinGui'
'&SAP_Dynp_Params=CSKSZ-KOSTL%3D0002326700'
'&SAP_Dynp_AutoStart=true'INTOdisplay_portal.

Figure 25 Portal URL