You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Show Contents List

Example 1: Show Employee Details.

This example will navigate to the Browse and Maintain Employees screen which is part of the Personnel System.

To reach this screen, RAMP scripts will execute the following steps:

  • Sign on
  • Type lansa run pslsys partition(dem) in the command line and press Enter.
  • Type 3 in the option field and press Enter.
  • Type the employee number of the currently selected employee and press Enter.
  • Press F21.

 
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #VF_AC010) Height(569) Layoutmanager(#MAIN_LAYOUT) Width(776)

  • ================================================================================
  • Simple Field and Group Definitions
  • ================================================================================
    Group_By Name(#XG_HEAD) Fields(#EMPNO #SURNAME #GIVENAME #ADDRESS1 #ADDRESS2 #ADDRESS3 #POSTCODE #PHONEHME #DEPTMENT #SECTION)
     
  • Body and Button arrangement panels
     
    Define_Com Class(#PRIM_PANL) Name(#BUTTON_PANEL) Displayposition(3) Height(569) Hint(*MTXTDF_DET1) Layoutmanager(#BUTTON_FLOW) Left(688) Parent(#COM_OWNER) Tabposition(3) Tabstop(False) Top(0) Width(88)
    Define_Com Class(#PRIM_PANL) Name(#BODY_HEAD) Displayposition(2) Height(569) Hint(*MTXTDF_DET1) Layoutmanager(#BODY_HEAD_FLOW) Left(0) Parent(#COM_OWNER) Tabposition(2) Tabstop(False) Top(0) Verticalscroll(True) Width(688)
     
  • Attachment and flow layout managers
     
    Define_Com Class(#PRIM_ATLM) Name(#MAIN_LAYOUT)
    Define_Com Class(#PRIM_FWLM) Name(#BUTTON_FLOW) Direction(TopToBottom) Flowoperation(Center) Marginbottom(4) Marginleft(4) Marginright(4) Margintop(4) Spacing(4) Spacingitems(4)
     
    Define_Com Class(#PRIM_FWLM) Name(#BODY_HEAD_FLOW) Direction(TopToBottom) Marginbottom(4) Marginleft(4) Marginright(4) Margintop(4) Spacing(4) Spacingitems(4)
     
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_EMPNO) Manage(#EMPNO) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_SURNAME) Manage(#SURNAME) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_GIVENAME) Manage(#GIVENAME) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_ADDRESS1) Manage(#ADDRESS1) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_ADDRESS2) Manage(#ADDRESS2) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_ADDRESS3) Manage(#ADDRESS3) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_POSTCODE) Manage(#POSTCODE) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_PHONEHME) Manage(#PHONEHME) Parent(#BODY_HEAD_FLOW)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_SAVE_BUTTON) Manage(#SAVE_BUTTON) Parent(#BUTTON_FLOW)
     
  • The save button
     
    Define_Com Class(#PRIM_PHBN) Name(#SAVE_BUTTON) Caption(*MTXTDF_SAVE) Displayposition(1) Left(4) Parent(#BUTTON_PANEL) Tabposition(1) Top(4)
     
  • Collection for detail fields
     
    Define_Com Class(#Prim_ACol<#prim_evef>) Name(#PanelFields)
     
  • Fields in the head area
     
    Define_Com Class(#EMPNO.Visual) Displayposition(1) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(1) Top(4) Usepicklist(False) Width(209)
    Define_Com Class(#SURNAME.Visual) Displayposition(2) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(2) Top(27) Usepicklist(False) Width(324)
    Define_Com Class(#GIVENAME.Visual) Displayposition(3) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(3) Top(50) Usepicklist(False) Width(324)
    Define_Com Class(#ADDRESS1.Visual) Displayposition(4) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(4) Top(73) Usepicklist(False) Width(363)
    Define_Com Class(#ADDRESS2.Visual) Displayposition(5) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(5) Top(96) Usepicklist(False) Width(363)
    Define_Com Class(#ADDRESS3.Visual) Displayposition(6) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(6) Top(119) Usepicklist(False) Width(363)
    Define_Com Class(#POSTCODE.Visual) Displayposition(7) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(7) Top(142) Usepicklist(False) Width(216)
    Define_Com Class(#PHONEHME.Visual) Displayposition(8) Height(19) Hint(*MTXTDF_DET1) Left(4) Parent(#BODY_HEAD) Tabposition(8) Top(165) Usepicklist(False) Width(286)
    Define_Com Class(#PRIM_ATLM) Name(#ATLM_1)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_1) Attachment(Center) Parent(#ATLM_1)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_2) Attachment(Center) Manage(#BODY_HEAD) Parent(#MAIN_LAYOUT)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_3) Attachment(Right) Manage(#BUTTON_PANEL) Parent(#MAIN_LAYOUT)
     
    Define_Com Class(#vf_sy122) Name(#myscreen_wrapper) Height(569) Parent(#COM_OWNER) Visible(False) Width(688)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_4) Attachment(Center) Parent(#MAIN_LAYOUT)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_6) Attachment(Center) Manage(#myscreen_wrapper) Parent(#MAIN_LAYOUT)
     
  • --------------------------------------------------------------------------------
  • Handle Initialization
  • --------------------------------------------------------------------------------
     
    Mthroutine Name(uInitialize) Options(*REDEFINE)
    Define_Com Class(#Prim_evef) Name(#FormField) Reference(*dynamic)
     
    Invoke Method(#Com_Ancestor.uInitialize)
     
    For Each(#Control) In(#Body_Head.ComponentControls)
    If_Ref Com(#Control) Is(*INSTANCE_OF #prim_evef)
    Set_Ref Com(#FormField) To(*dynamic #Control)
    Invoke Method(#PanelFields.Insert) Item(#FormField)
    Endif
    Endfor
     
  • Set the uCommand wrapper property.
    Set Com(#myscreen_wrapper) Ucommand(#com_owner)
    Endroutine
     
  • --------------------------------------------------------------------------------
  • Handle Command Execution
  • --------------------------------------------------------------------------------
     
    Mthroutine Name(uExecute) Options(*REDEFINE)
     
    Invoke Method(#Com_Ancestor.uExecute)
     
  • The user has selected an Employee from the instance list. MakeRampAvailable will make sure the connection is in order and then signal back with the appropiate action
    Invoke Method(#myscreen_wrapper.MakeRampAvailable) Foraction(ShowDetails)
     
    Set Com(#Save_Button) Enabled(False)
     
    Endroutine
     
     
  • ================================================================================
  • Event Handlers
  • ================================================================================
     
  • RAMP has signalled it's available. What we do will depend on the #ForAction specified in the MakeRampAvailable method invocation.
    Evtroutine Handling(#myscreen_wrapper.RampAvailable) Foraction(#ForAction) Nextaction(#NextAction)
     
    Case (#ForAction)
     
    When Value_Is('= ShowDetails')
     
  • Navigate to a Destination that was previously named EmployeeDetailsAndSkills using newlook Designer. Use the ReturnScreen parameter to verify we are in the expected screen
  • once the navigation has completed
    Invoke Method(#myscreen_wrapper.navigatetoscreen) Name('EmployeeDetailsAndSkills') Returnscreen(#vf_eltxtl)
     
  • If the current screen is the expected one, get the values of the 5250 screen fields into the fields in this component
     
    If (#vf_eltxtl = 'EmployeeDetailsAndSkills')
     
    Invoke Method(#avListManager.GetCurrentInstance) Akey3(#EMPNO)
    #myscreen_wrapper.getvalue From('uSurname') Value(#surname.value)
    #myscreen_wrapper.getvalue From('uGivename') Value(#givename.value)
    #myscreen_wrapper.getvalue From('uAddress1') Value(#address1.value)
    #myscreen_wrapper.getvalue From('uAddress2') Value(#address2.value)
    #myscreen_wrapper.getvalue From('uAddress3') Value(#address3.value)
    #myscreen_wrapper.getvalue From('uHomePhone') Value(#phonehme.value)
    #myscreen_wrapper.getvalue From('uPostcode') Value(#POSTCODE.value)
     
    Endif
     
    When Value_Is('= UpdateDetails')
     
  • Set the values of the fields in the newlook form with the ones from this component
    #myscreen_wrapper.setvalue Infield('uSurname') Value(#surname.value)
    #myscreen_wrapper.setvalue Infield('uGivename') Value(#givename.value)
    #myscreen_wrapper.setvalue Infield('uAddress1') Value(#address1.value)
    #myscreen_wrapper.setvalue Infield('uAddress2') Value(#address2.value)
    #myscreen_wrapper.setvalue Infield('uAddress3') Value(#address3.value)
    #myscreen_wrapper.setvalue Infield('uHomePhone') Value(#phonehme.value)
    #myscreen_wrapper.setvalue Infield('uPostcode') Value(#POSTCODE.value)
     
  • Send the enter key to update the details in the 5250
    #myscreen_wrapper.sendkey Key(#myscreen_wrapper.KeyEnter) Returnscreen(#vf_eltxtl)
     
    Otherwise
     
    Use Builtin(message_box_show) With_Args(ok ok info *component ('Unknown ForAction>>' + #ForAction.Value + '<<'))
    Endcase
     
    Set Com(#myscreen_wrapper) Visible(False)
    Endroutine
     
  • Listen to messages from RAMP and the 5250 application
    Evtroutine Handling(#myscreen_wrapper.RampMessage) Umessagetype(#MsgType) Umessagetext(#MsgText)
     
    Case (#msgtype.value)
     
    When Value_Is('= VF_ERROR')
  • Fatal messages reported by Ramp (e.g. Navigation request failed, etc). If in design mode, show the underlying newlook screen. Otherwise, make the error message
  • appear in a message box on top of the command
    If (#usystem.iDesignMode = true)
    Set Com(#myscreen_wrapper) Visible(True)
    Else
    Message Msgid(dcm9899) Msgf(dc@m01) Msgdta(#msgtext.value)
    #com_owner.avshowmessages
    Endif
     
  • Messages sent by the IBM i application or unknown form was encountered
    When Value_Is('= VF_INFO' '= VF_UNKNOWN_FORM')
     
    Message Msgid(dcm9899) Msgf(dc@m01) Msgdta(#msgtext.value)
     
  • Failure to initialize RAMP. Could occur for mainly one of two reasons
    When Value_Is('= VF_INIT_ERROR')
     
    Message Msgid(dcm9899) Msgf(dc@m01) Msgdta(#msgtext.value)
    #com_owner.avshowmessages
     
    When Value_Is('= VF_WAITCONNECTION')
     
    Otherwise
    Use Builtin(message_box_show) With_Args(ok ok info *Component ('Unknown message type ' + #MsgType + 'encountered'))
    Endcase
     
    Endroutine
  • --------------------------------------------------------------------------------
  • Handle changes in any of the fields on the panel
  • --------------------------------------------------------------------------------
     
    Evtroutine Handling(#PanelFields<>.Changed)
  • Enable the save button
    Set Com(#SAVE_BUTTON) Enabled(True)
  • Lock the framework and set a message for the user
    Use Builtin(bconcat) With_Args('Changes made to employee' #GiveName #Surname 'have not been saved yet.' 'Do you want to save them before continuing?') To_Get(#sysvar$av)
    Set Com(#avFrameworkManager) Ulocked(USER) Ulockedmessage(#sysvar$av)
    Endroutine
     
  • --------------------------------------------------------------------------------
  • Enter key pressed
  • --------------------------------------------------------------------------------
     
    Evtroutine Handling(#PanelFields<>.KeyPress) Options(*NOCLEARMESSAGES *NOCLEARERRORS) Keycode(#KeyCode)
     
    If Cond('#KeyCode.Value = Enter')
  • If there no changes have been made issue message and ignore enter
    If Cond('#SAVE_BUTTON.Enabled *EQ True')
    Invoke Method(#Com_Owner.Save)
    Else
  • Issue 'There are no changes to save' message
    Use Builtin(Message_box_show) With_Args(ok ok Info *Component *MTXTDF_NO_SAVE)
    Endif
    Endif
     
    Endroutine
     
  • --------------------------------------------------------------------------------
  • Handle the save button
  • --------------------------------------------------------------------------------
     
    Evtroutine Handling(#SAVE_BUTTON.Click)
  • Call the Save method
    Invoke Method(#Com_Owner.Save)
    Endroutine
     
  • --------------------------------------------------------------------------------
  • Handle Save
  • --------------------------------------------------------------------------------
     
    Mthroutine Name(Save)
  • Update data base
    Invoke Method(#myscreen_wrapper.MakeRampAvailable) Foraction(UpdateDetails)
    Endroutine
     
  • --------------------------------------------------------------------------------
  • Handle Termination
  • --------------------------------------------------------------------------------
     
    Mthroutine Name(uTerminate) Options(*REDEFINE)
  • Clean up the colelction of fields on the panel
    Invoke Method(#PanelFields.RemoveAll)
  • Do any termination defined in the ancestor
    Invoke Method(#Com_Ancestor.uTerminate)
    Endroutine
     
    End_Com
     
    Show Contents List
  • No labels