gdata.io.handleScriptLoaded({"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$georss":"http://www.georss.org/georss","xmlns$thr":"http://purl.org/syndication/thread/1.0","xmlns$blogger":"http://schemas.google.com/blogger/2008","id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615"},"updated":{"$t":"2023-12-26T13:46:15.660-08:00"},"category":[{"term":"scp"},{"term":"SAP ABAP"},{"term":"Tutorial series on SAP Enterpise Portal"},{"term":"geocoder"},{"term":"export sapui5 project"},{"term":"events in classical reports"},{"term":"util"},{"term":"layout"},{"term":"pull"},{"term":"joins"},{"term":"tables"},{"term":"SEGW"},{"term":"viz charts"},{"term":"sap cloud platform mobile services"},{"term":"types of views"},{"term":"Security Considerations"},{"term":"sap web ide deprecated"},{"term":"pool"},{"term":"SAP ABAP function modules"},{"term":"tree table"},{"term":"cloud foundry"},{"term":"custom login page"},{"term":"sap cloud platform for portal sites"},{"term":"admin cockpit sap cloud mobile services"},{"term":"Introduction to SAP portal sites"},{"term":"srv"},{"term":"hcp"},{"term":"OOPs Concepts"},{"term":"sap fiori tools"},{"term":"SAP ABAP Blog."},{"term":"export sap projects"},{"term":"ui5"},{"term":"maintainability"},{"term":"associations"},{"term":"combo box"},{"term":"SAP BAS"},{"term":"Logon Page in Enterprise Portal"},{"term":"margins"},{"term":"Web IDE"},{"term":"mtar"},{"term":"CAP"},{"term":"ABAP Development"},{"term":"sap viz frame"},{"term":"sort"},{"term":"Plugin"},{"term":"appearance"},{"term":"workflow"},{"term":"Agile Development"},{"term":"architecture of sap fiori"},{"term":"outer join"},{"term":"SAP S/4HANA"},{"term":"sap fiori"},{"term":"Data Storage"},{"term":"file"},{"term":"SAP overview"},{"term":"function"},{"term":"Sapui5 jobs"},{"term":"Classical report"},{"term":"sap fiori tutorial"},{"term":"webIDE application"},{"term":"Installation of sap ui5 plugin"},{"term":"app router"},{"term":"Scalable Applications"},{"term":"smarttable"},{"term":"odata tutorial"},{"term":"sap enterprise portal"},{"term":"vizframe control"},{"term":"stage"},{"term":"events"},{"term":"selected index"},{"term":"tab"},{"term":"How to export SAP Web IDE Workspace projects"},{"term":"hello world application"},{"term":"SAPUI5 data communication"},{"term":"online training abap"},{"term":"SAP NetWeaver Portal"},{"term":"apps"},{"term":"pfcg"},{"term":"sap mobility jobs"},{"term":"commit"},{"term":"launchpad"},{"term":"DPC"},{"term":"Pass by value and return"},{"term":"routing in split app"},{"term":"Module Pool"},{"term":"sapui5 xml editor"},{"term":"sap.m.list"},{"term":"searching"},{"term":"tag"},{"term":"CAPM Apps"},{"term":"css folder"},{"term":"get expanded entity"},{"term":"ABAP Job Preparation"},{"term":"mta"},{"term":"custom image"},{"term":"xlsx"},{"term":"Mock data"},{"term":"multi target application"},{"term":"javascript"},{"term":"Routing"},{"term":"responsive table in sapui5"},{"term":"add and delete operation"},{"term":"csv upload validation"},{"term":"saml"},{"term":"external library"},{"term":"ALV programming examples"},{"term":"sap btp"},{"term":"Custom Controls"},{"term":"Project structure"},{"term":"openui5"},{"term":"dv"},{"term":"create destinations to connect mobile services from sap web ide"},{"term":"sap custom portal sites"},{"term":"modules"},{"term":"Interactive Reports"},{"term":"user experience sap"},{"term":"odata v2"},{"term":"ABAP New Features"},{"term":"Developer Tips"},{"term":"sap fiori launchpad configuration"},{"term":"Logon to SAP ABAP"},{"term":"cloud foundary"},{"term":"SAP ABAP Certification"},{"term":"Tutorials"},{"term":"ABAP Interview Questions"},{"term":"controller"},{"term":"Routing in sapui5"},{"term":"Environment variables"},{"term":"ALV reports"},{"term":"Transport Request Number"},{"term":"sap fiori enterprise portal"},{"term":"CSN"},{"term":"Parts"},{"term":"jwt token"},{"term":"register cloud platform"},{"term":"annotations"},{"term":"Navigation Properties"},{"term":"component.js"},{"term":"deman pop-in"},{"term":"configure catalogs and groups"},{"term":"Best practices"},{"term":"local service"},{"term":"sap web ide"},{"term":"i18n"},{"term":"Dialog sapui5"},{"term":"chrome"},{"term":"ABAP Coding Best Practices"},{"term":"HANA Modeling"},{"term":"charts in sapui5"},{"term":"sap fiori enterprise portal sites"},{"term":"google maps"},{"term":"SAP Business Technology Platform"},{"term":"formatters"},{"term":"resource bundle"},{"term":"Pass by reference"},{"term":"pass multiple values"},{"term":"projection views"},{"term":"sapui5 diagnostics window"},{"term":"web dynpro"},{"term":"webapp"},{"term":"get expanded entityset"},{"term":"Setting Up an App Router in SAP CAPM Project on BTP: A Step-by-Step Guide"},{"term":"help views"},{"term":"BDC"},{"term":"contrller"},{"term":"video tutorial on nested views and fragments"},{"term":"iwfnd"},{"term":"odata"},{"term":"debugging javascript files"},{"term":"smart table"},{"term":"SAP Programming"},{"term":"SAP Development"},{"term":"SAP netweaver gateway"},{"term":"api"},{"term":"Blobs in JavaScript"},{"term":"sap fiori apps"},{"term":"Visual studio code"},{"term":"How to Change logon Page of Enterprise Portal"},{"term":"dynamic"},{"term":"sapui5 code editor"},{"term":"git"},{"term":"xml code editor"},{"term":"Transaction code"},{"term":"parameter"},{"term":"ABAP on HANA interview questions and answers"},{"term":"Global sub routines"},{"term":"interactive reports example"},{"term":"layouts"},{"term":"ABAP List Viewer"},{"term":"JDK"},{"term":"filter"},{"term":"Fragment in sapui5"},{"term":"controller.js"},{"term":"video tutorial on globalization"},{"term":"CLASSICAL REPORTS"},{"term":"Sorting"},{"term":"odata v4"},{"term":"CRUD operations"},{"term":"create OData service"},{"term":"crud"},{"term":"Navigation"},{"term":"authorization"},{"term":"responsive"},{"term":"SAP functional modules"},{"term":"validate using headers"},{"term":"CDL"},{"term":"SUB ROUTINES"},{"term":"interactive reports events"},{"term":"sheet.js"},{"term":"MDK introduction"},{"term":"SAP Bussiness Application Studio"},{"term":"begin set"},{"term":"UI5 Inspector"},{"term":"get cursor"},{"term":"drag and drop"},{"term":"component preload"},{"term":"ABAP"},{"term":"spider chart"},{"term":"interview tips"},{"term":"view"},{"term":"Sap RAP"},{"term":"Answers"},{"term":"Templates and Accelerators in SAP Portal sites"},{"term":"work Area"},{"term":"SAP ABAP on HANA"},{"term":"sap webide"},{"term":"read"},{"term":"ABAP HANA Integration"},{"term":"sap MDK"},{"term":"ABAP 7.5"},{"term":"submitbatch"},{"term":"version"},{"term":"transparent"},{"term":"Microservices in SAP BTP"},{"term":"resources"},{"term":"import"},{"term":"SAP Data Presentation"},{"term":"create"},{"term":"SAP ECC"},{"term":"debug files in production environment"},{"term":"sap fiori configuration cockpit portal sites"},{"term":"SAP cloud solutions"},{"term":"speech recognition"},{"term":"groups"},{"term":"icf"},{"term":"ABAP 7.6"},{"term":"custom control"},{"term":"configuring destination in sap web ide"},{"term":"viz control"},{"term":"Mta yaml"},{"term":"odata deep structures"},{"term":"BAS"},{"term":"push"},{"term":"ios"},{"term":"data element"},{"term":"search"},{"term":"ALV Grid Report"},{"term":"Internal Tables"},{"term":"properties"},{"term":"minScreenWidth"},{"term":"configuring tiles"},{"term":"aggregation binding"},{"term":"grouping"},{"term":"controller hooks"},{"term":"portal site"},{"term":"import project"},{"term":"ABAP Developer Tips"},{"term":"json model"},{"term":"Introduction"},{"term":"branding"},{"term":"list"},{"term":"SAP Technical Interviews"},{"term":"android"},{"term":"package"},{"term":"SAP Fiori Configuration cockpit"},{"term":"create cloud foundary account"},{"term":"sap app"},{"term":"custom sapui5 app extension"},{"term":"edit"},{"term":"SAP ABAP views"},{"term":"excel"},{"term":"ABAP Code Examples"},{"term":"SmartForms"},{"term":"logo"},{"term":"sap freestyle portal sites"},{"term":"HANA Development"},{"term":"fiori apps"},{"term":"Image Upload"},{"term":"javascript code editor"},{"term":"OData v4 advantages"},{"term":"Development"},{"term":"index of list"},{"term":"offline capabilities"},{"term":"containers"},{"term":"portal"},{"term":"changeset"},{"term":"Binary Data Handling"},{"term":"distance"},{"term":"sap cloud foundary"},{"term":"technical interview questions"},{"term":"Cloud Application Programming Model"},{"term":"implementing SAP Fiori"},{"term":"odat v4"},{"term":"MockSever"},{"term":"Event Handling"},{"term":"local development"},{"term":"RAP Implementation"},{"term":"sap ui5 excel upload"},{"term":"Data types"},{"term":"How to get Selected table index value?"},{"term":"xml view"},{"term":"hierarchial ALV"},{"term":"extending apps"},{"term":"sap capm"},{"term":"manifest.json"},{"term":"DDIC"},{"term":"ABAP Data Modeling"},{"term":"reports"},{"term":"User Interaction"},{"term":"batch processing in OData"},{"term":"login"},{"term":"sap backend system"},{"term":"event"},{"term":"authentication"},{"term":"css"},{"term":"job search"},{"term":"types of subroutines"},{"term":"LOCAL SUB ROUTINES"},{"term":"mobile development kit"},{"term":"item"},{"term":"sap fiori portal site"},{"term":"enable sap web ide"},{"term":"use strict"},{"term":"json"},{"term":"routing in full application"},{"term":"Introduction to sap enterprise portal"},{"term":"doalog"},{"term":"CDS"},{"term":"chart.js"},{"term":"Mdk app"},{"term":"ALE"},{"term":"mfa"},{"term":"view extensions"},{"term":"sap abap tutorials"},{"term":"system objects"},{"term":"maint_service"},{"term":"introduction to sapui5"},{"term":"Dev Tools"},{"term":"Configure Catalog and Groups in SAP Fiori Portal Sites"},{"term":"design principles"},{"term":"component configuration"},{"term":"ABAP Job Interview Insights"},{"term":"rest"},{"term":"sap fiori launchpad"},{"term":"google maps api"},{"term":"MPC"},{"term":"inline expressions"},{"term":"data binding"},{"term":"table"},{"term":"cache buster"},{"term":"setup"},{"term":"tiles"},{"term":"HANA Performance Tuning."},{"term":"Pass by value (or) call by value"},{"term":"beginset"},{"term":"path"},{"term":"XS-UAA"},{"term":"model folder"},{"term":"sapui5"},{"term":"view replacement"},{"term":"introduction to ERP"},{"term":"example classical report example"},{"term":"SAP MTA"},{"term":"external style"},{"term":"Internal Table"},{"term":"step by step process to create odata"},{"term":"update"},{"term":"add"},{"term":"walkthrough admin cockpit"},{"term":"fiori"},{"term":"python"},{"term":"hello world"},{"term":"sapui5 code validator"},{"term":"responsiveness"},{"term":"node.js"},{"term":"Search Help in DDIC"},{"term":"backend components"},{"term":"custom fiori app"},{"term":"xs security"},{"term":"introduction to sap web ide"},{"term":"SAP CAP"},{"term":"SAP technical modules"},{"term":"inner join"},{"term":"string"},{"term":"internal style"},{"term":"lpd_cust"},{"term":"radar chart"},{"term":"csv"},{"term":"OData v2 vs. OData v4"},{"term":"validation"},{"term":"nested view"},{"term":"push a project in github"},{"term":"aggregations"},{"term":"charts"},{"term":"SAP Fiori Launchpad Portal Site"},{"term":"sapui5 project"},{"term":"introduction to odata annotations"},{"term":"export project"},{"term":"types of tables"},{"term":"operations on internal table"},{"term":"large string"},{"term":"Activate OData Service in SICF"},{"term":"sapui5 lint"},{"term":"Most common examples in sap ui5"},{"term":"video tutorial on formatter and inline expressions"},{"term":"pdf"},{"term":"fiori launchpad"},{"term":"extending sapui5 apps"},{"term":"sap mobile services"},{"term":"sap mobile services tutorial"},{"term":"sap portal site"},{"term":"Fragment"},{"term":"Configuring Fiori Tiles in sap portal sites"},{"term":"mdk"},{"term":"annotations in OData"},{"term":"sap mobile development kit"},{"term":"metadata.xml"},{"term":"SAP Mobile cards"},{"term":"SAP ABAP video tutorials"},{"term":"btp"},{"term":"setup sap bussiness application studio"},{"term":"ABAP Innovations"},{"term":"Introduction and DDIC"},{"term":"introduction to sap fiori"},{"term":"optimization"},{"term":"examples"},{"term":"- SAP ABAP performance optimization\n\n- ABAP performance tuning\n\n- SAP ABAP best practices\n\n- SAP ABAP performance tips\n\n- ABAP performance optimization techniques\n\n- SAP ABAP performance improvements"},{"term":"sap"},{"term":"SAP Tech Trends"},{"term":"sapui5 csv file upload import"},{"term":"sap.m.table"},{"term":"frontend components"},{"term":"Field Catalog"},{"term":"File Manipulation"},{"term":"SAP RAP Tutorial"},{"term":"js"},{"term":"mobile services in cloud foundary"},{"term":"sicf"},{"term":"roles"},{"term":"file reader"},{"term":"maintainence view"},{"term":"Security"},{"term":"SAP implementation."},{"term":"domain"},{"term":"sap cloud platform SDK"},{"term":"Globalization and localization"},{"term":"xml"},{"term":"marker"},{"term":"SAP Interview Prep"},{"term":"sap web IDE Workspace export"},{"term":"re usability"},{"term":"sapui5 nested view"},{"term":"voice recognition"},{"term":"sap fiori application"},{"term":"video tutorial on routing"},{"term":"Offline app"},{"term":"index"},{"term":"Latest ABAP FAQs"},{"term":"Naming conventions"},{"term":"fiori tiles"},{"term":"fiori jobs"},{"term":"SAPui5 application on SAP bussiness application studio"},{"term":"database views"},{"term":"upload"},{"term":"sapui5 excel import"},{"term":"Batch"},{"term":"sapui5 project structuring"},{"term":"token"},{"term":"handling localized texts"},{"term":"globalization"},{"term":"SAP HANA clould cockpit"},{"term":"deploy to cloud foundry"},{"term":"test Odata service"},{"term":"github"},{"term":"sap fiori jobs"},{"term":"sap cloud platform"},{"term":"capm"},{"term":"sapui5 github"},{"term":"formatter"},{"term":"cluster"},{"term":"ALV Grid Tutorial"},{"term":"controller extension"},{"term":"fiori app"},{"term":"view extension"},{"term":"Cloud-Native Architecture"},{"term":"HANA"},{"term":"multi cloud environment"},{"term":"interview questions"},{"term":"filtering"},{"term":"ABAP CDS Views"},{"term":"variable names"},{"term":"CQL"},{"term":"gulp"},{"term":"boolean"},{"term":"SAP modules"},{"term":"delete"},{"term":"logon page"},{"term":"introduction to sap abap"},{"term":"sapui5 apps"},{"term":"pull a project"},{"term":"split app"},{"term":"sapui5 best practices"},{"term":"read table"},{"term":"SAP OData"},{"term":"Debugging ABAP"},{"term":"universal worklist"},{"term":"expression"},{"term":"controls and views"},{"term":"Custom control to make a Radar Chart using Chart.js library in SAPUI5."},{"term":"Cache"},{"term":"view modification"},{"term":"odata tutorial series"},{"term":"xls"},{"term":"sap BTP CAPM"},{"term":"append operation"},{"term":"code quality"},{"term":"example of CAP"},{"term":"header item relationship"},{"term":"launchpad configuration"},{"term":"Latest ABAP Updates"},{"term":"sap ui5"},{"term":"dataset"},{"term":"register odata service"},{"term":"padding"},{"term":"RAP"},{"term":"OData v2 benefits"},{"term":"v4"},{"term":"ABAP Enhancements"},{"term":"responsive table"},{"term":"npm"},{"term":"RAP Model"},{"term":"catalogs"},{"term":"sap fiori elements"},{"term":"login configuration"},{"term":"Web Application Development"},{"term":"application"},{"term":"value"},{"term":"enterprise portal"},{"term":"selected"}],"title":{"type":"text","$t":"SAP Development: Mastering SAP UI5, BTP, Fiori, CAPM, RAP, ABAP; and More!"},"subtitle":{"type":"html","$t":"Welcome to the ultimate SAP UI5, BTP, Fiori, CAPM, RAP, ABAP blog! Explore comprehensive tutorials, interview questions, and real-world examples to master SAP development. Elevate your skills in creating stunning UI5 apps, harnessing the power of BTP, and building Fiori applications. Unlock the potential of CAPM, RAP, and ABAP, and learn to integrate seamlessly with the enterprise portal. Whether you're a beginner or an experienced developer, this blog is your go-to resource for SAP expertise!"},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default?alt\u003djson-in-script\u0026start-index\u003d4\u0026max-results\u003d3"},{"rel":"self","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default?alt\u003djson-in-script\u0026start-index\u003d4\u0026max-results\u003d3"},{"rel":"alternate","type":"text/html","href":"http://www.sapui5tutors.com/"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"},{"rel":"previous","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default?alt\u003djson-in-script\u0026start-index\u003d1\u0026max-results\u003d3"},{"rel":"next","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default?alt\u003djson-in-script\u0026start-index\u003d7\u0026max-results\u003d3"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"https://www.blogger.com/profile/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"35","height":"35","src":"//www.blogger.com/img/blogger_logo_round_35.png"}}],"generator":{"version":"7.00","uri":"https://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"186"},"openSearch$startIndex":{"$t":"4"},"openSearch$itemsPerPage":{"$t":"3"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615.post-572047410591645355"},"published":{"$t":"2023-08-07T21:27:00.001-07:00"},"updated":{"$t":"2023-08-07T21:27:38.626-07:00"},"title":{"type":"text","$t":"Handling User Interactions and Secondary Lists in SAP ABAP using AT LINE-SELECTION and AT USER-COMMAND Events"},"content":{"type":"html","$t":"\u003cp\u003eSAP ABAP (Advanced Business Application Programming) is a powerful programming language used for developing applications within the SAP environment. One of the key aspects of SAP applications is providing a user-friendly interface for users to interact with the system. The AT LINE-SELECTION and AT USER-COMMAND events are essential tools for handling user interactions and displaying secondary lists based on user selections.\u003c/p\u003e\u003cdiv class\u003d\"separator\" style\u003d\"clear: both; text-align: center;\"\u003e\u003ca href\u003d\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBCUI71UJxbdprHp5orRar3ccRoyZwbA6Mo7qvHXKAgkbQ3YNUFPYpaxwINSTLaPhkzxr_rfIo98rJ8avshz_kJ5-X8_otXU5lSod-LeSwaV8h7PIykptOdPQwiyTc23VTDDH5hQjn57-EI8041rN60r1EjYr0X6Ty4AvbLwohNivIfXCIiDX5ucT4A/s225/IMG_2673.png\" imageanchor\u003d\"1\" style\u003d\"margin-left: 1em; margin-right: 1em;\"\u003e\u003cimg border\u003d\"0\" data-original-height\u003d\"225\" data-original-width\u003d\"225\" height\u003d\"225\" src\u003d\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBCUI71UJxbdprHp5orRar3ccRoyZwbA6Mo7qvHXKAgkbQ3YNUFPYpaxwINSTLaPhkzxr_rfIo98rJ8avshz_kJ5-X8_otXU5lSod-LeSwaV8h7PIykptOdPQwiyTc23VTDDH5hQjn57-EI8041rN60r1EjYr0X6Ty4AvbLwohNivIfXCIiDX5ucT4A/s1600/IMG_2673.png\" width\u003d\"225\" /\u003e\u003c/a\u003e\u003c/div\u003e\u003cbr /\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e1. Understanding \u003cb\u003eAT LINE-SELECTION\u003c/b\u003e and\u003cb\u003e AT USER-COMMAND\u003c/b\u003e Events:\u003c/p\u003e\u003cp\u003eIn SAP ABAP, the AT LINE-SELECTION event occurs when a user clicks on a specific line of data in a list or a table. This event is used to capture the user's selection and trigger actions based on that selection. The AT USER-COMMAND event, on the other hand, is used to capture actions triggered by users through function keys (e.g., F2, F4) or toolbar buttons. These events play a crucial role in creating dynamic and responsive user interfaces.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e2. Using \u003cb\u003eAT LINE-SELECTION\u003c/b\u003e Event:\u003c/p\u003e\u003cp\u003eThe AT LINE-SELECTION event allows you to respond to user selections within a list. When this event is triggered, you can capture the selected line's data and perform relevant actions. For instance, you can display more detailed information about the selected item or navigate to a different screen.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cp style\u003d\"text-align: left;\"\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u003cspan style\u003d\"font-size: medium;\"\u003e\u003cspan\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/p\u003e\u003ca name\u003d'more'\u003e\u003c/a\u003e\u003cblockquote\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u003cspan style\u003d\"font-size: medium;\"\u003eAT LINE-SELECTION.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-size: medium;\"\u003e\u0026nbsp; READ TABLE it_data INDEX sy-tabix.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-size: medium;\"\u003e\u0026nbsp; IF sy-subrc \u003d 0.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-size: medium;\"\u003e\u0026nbsp; \u0026nbsp; \" Perform actions based on the selected item\u003cbr /\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style\u003d\"font-size: medium;\"\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; ENDIF\u003c/span\u003e\u003c/span\u003e\u003c/blockquote\u003e\u003cbr /\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e3. Utilizing \u003cb\u003eAT USER-COMMAND\u003c/b\u003e Event:\u003c/p\u003e\u003cp\u003eThe AT USER-COMMAND event enables you to handle user actions that are not directly related to selecting a specific line. For example, if the user presses a function key to trigger a certain action, you can use this event to capture and process that action accordingly.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cp\u003e\u003cspan\u003e\u003c/span\u003e\u003c/p\u003e\u003c!--more--\u003e\u003cp\u003e\u003c/p\u003e\u003cblockquote style\u003d\"text-align: left;\"\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family: courier;\"\u003eAT USER-COMMAND.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; CASE sy-ucomm.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; \u0026nbsp; WHEN 'BACK'.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \" Implement action for the 'BACK' function key\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; \u0026nbsp; WHEN 'EXIT'.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \" Implement action for the 'EXIT' function key\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; \u0026nbsp; WHEN OTHERS.\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \" Handle other function keys\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u0026nbsp; ENDCASE.\u003c/span\u003e\u003c/div\u003e\u003c/blockquote\u003e\u003cp style\u003d\"text-align: left;\"\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp style\u003d\"text-align: left;\"\u003e4. Displaying Secondary Lists:\u003c/p\u003e\u003cp\u003eA common use case for the AT LINE-SELECTION and AT USER-COMMAND events is to display secondary lists or additional information based on user selections. For example, when a user selects an item from the main list, you can trigger the display of a secondary list showing related data or additional options.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cdiv style\u003d\"text-align: left;\"\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u003cspan\u003e\u003c!--more--\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cblockquote\u003e\u003cdiv style\u003d\"text-align: left;\"\u003e\u003cspan style\u003d\"font-family: courier;\"\u003eAT LINE-SELECTION.\u003cbr /\u003e\u0026nbsp; READ TABLE it_data INDEX sy-tabix.\u003cbr /\u003e\u0026nbsp; IF sy-subrc \u003d 0.\u003cbr /\u003e\u0026nbsp; \u0026nbsp; \" Populate secondary list with related data based on the selection\u003cbr /\u003e\u0026nbsp; ENDIF.\u003c/span\u003e\u003c/div\u003e\u003cp style\u003d\"text-align: left;\"\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e```\u003c/span\u003e\u003c/p\u003e\u003c/blockquote\u003e\u003cp style\u003d\"text-align: left;\"\u003e\u003cspan style\u003d\"font-family: courier;\"\u003e\u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eIn SAP ABAP, the AT LINE-SELECTION and AT USER-COMMAND events are essential tools for creating interactive and user-friendly applications. By leveraging these events, developers can handle user selections, trigger relevant actions, and display secondary lists or additional information. This enhances the overall user experience and contributes to the effectiveness of SAP applications. Remember to carefully plan and design your user interfaces to ensure smooth navigation and seamless interaction with your SAP system.\u003c/p\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https://www.sapui5tutors.com/feeds/572047410591645355/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.sapui5tutors.com/2023/08/handling-user-interactions-and.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default/572047410591645355"},{"rel":"self","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default/572047410591645355"},{"rel":"alternate","type":"text/html","href":"https://www.sapui5tutors.com/2023/08/handling-user-interactions-and.html","title":"Handling User Interactions and Secondary Lists in SAP ABAP using AT LINE-SELECTION and AT USER-COMMAND Events"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"https://www.blogger.com/profile/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"35","height":"35","src":"//www.blogger.com/img/blogger_logo_round_35.png"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBCUI71UJxbdprHp5orRar3ccRoyZwbA6Mo7qvHXKAgkbQ3YNUFPYpaxwINSTLaPhkzxr_rfIo98rJ8avshz_kJ5-X8_otXU5lSod-LeSwaV8h7PIykptOdPQwiyTc23VTDDH5hQjn57-EI8041rN60r1EjYr0X6Ty4AvbLwohNivIfXCIiDX5ucT4A/s72-c/IMG_2673.png","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615.post-5942576821362820685"},"published":{"$t":"2023-08-07T10:22:00.001-07:00"},"updated":{"$t":"2023-08-07T10:22:11.598-07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Image Upload"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Data Storage"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Binary Data Handling"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Blobs in JavaScript"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Web Application Development"},{"scheme":"http://www.blogger.com/atom/ns#","term":"File Manipulation"}],"title":{"type":"text","$t":"Understanding Blobs in JavaScript: Enhancing Web Application Functionality"},"content":{"type":"html","$t":"\u003cp\u003eIn the world of modern web development, JavaScript plays a pivotal role in creating dynamic and interactive web applications. One of the lesser-known but immensely useful features in JavaScript is the Blob object. This powerful construct allows developers to work with binary data, opening up a realm of possibilities for handling media files, streams, and much more. In this article, we'll dive deep into what a Blob is, its significance in web applications, and provide a practical example of how to utilize it.\u003c/p\u003e\u003cdiv class\u003d\"separator\" style\u003d\"clear: both; text-align: center;\"\u003e\u003ca href\u003d\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigg808vYtYA-CZIeutmSf4XdDe6UFtO7WiFlS_Vl9uquCPNhomMw3tQeM-QLCmb44E1tjnBg8Y8z1ukwjHQGrSsP63UuDG7CKMrKMHgviIjW3nN_yLLI5xRHStiG3nByo5ZUOrowI0bwMjM2eGtFjK6bdVmDdaVd1gaZJyvRVDe5xlD2e6ZrvhIfJuFQ/s678/IMG_2672.jpeg\" imageanchor\u003d\"1\" style\u003d\"margin-left: 1em; margin-right: 1em;\"\u003e\u003cimg border\u003d\"0\" data-original-height\u003d\"452\" data-original-width\u003d\"678\" height\u003d\"213\" src\u003d\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigg808vYtYA-CZIeutmSf4XdDe6UFtO7WiFlS_Vl9uquCPNhomMw3tQeM-QLCmb44E1tjnBg8Y8z1ukwjHQGrSsP63UuDG7CKMrKMHgviIjW3nN_yLLI5xRHStiG3nByo5ZUOrowI0bwMjM2eGtFjK6bdVmDdaVd1gaZJyvRVDe5xlD2e6ZrvhIfJuFQ/s320/IMG_2672.jpeg\" width\u003d\"320\" /\u003e\u003c/a\u003e\u003c/div\u003e\u003cbr /\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eWhat is a Blob?\u003c/b\u003e\u003c/p\u003e\u003cp\u003eA Blob, short for Binary Large Object, is a JavaScript object that represents a chunk of binary data. This binary data can encompass anything from images, audio, and video files to large sets of text or even serialized data. Blobs are particularly useful when dealing with data that isn't necessarily text-based or when you need to manipulate binary data directly.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eWhy are Blobs Important in Web Applications?\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e1. \u003cb\u003eEfficient File Handling\u003c/b\u003e: Blobs are crucial when dealing with files in web applications. They allow developers to read, manipulate, and transmit files efficiently, especially when handling media files that aren't plain text.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e2. \u003cb\u003eData Manipulation:\u003c/b\u003e Blobs provide methods to slice and manipulate binary data. This is incredibly valuable when you need to modify parts of a file or split a large file into smaller segments for optimized processing.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e3. \u003cb\u003eData Storage and Transmission\u003c/b\u003e: Blobs can be used to store data in a local database or transmit it to servers. This is especially relevant when you want to upload files, such as images, to a server for storage or further processing.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e4. \u003cb\u003eStream Handling\u003c/b\u003e: Blobs are an essential component in handling streams of data. They can be used to buffer incoming data and process it in chunks, which is advantageous for real-time applications like video streaming.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003ePractical Example: Uploading Images Using Blobs\u003c/b\u003e\u003c/p\u003e\u003cp\u003eLet's explore a practical example to better understand how Blobs work in a real-world scenario. Imagine you're building a social media application that allows users to upload images. You can use Blobs to efficiently manage the image data and upload it to the server.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eStep 1: Creating a Blob\u003c/b\u003e\u003c/p\u003e\u003cp style\u003d\"text-align: left;\"\u003e\u003cspan style\u003d\"background-color: #f4cccc;\"\u003e\u003ci\u003e\u003cb\u003econst imageInput \u003d document.getElementById('image-input');\u003c/b\u003e\u003c/i\u003e\u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003cspan style\u003d\"background-color: #f4cccc;\"\u003e\u003ci\u003e\u003cb\u003eimageInput.addEventListener('change', (event) \u003d\u0026gt; {\u003c/b\u003e\u003c/i\u003e\u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003cspan style\u003d\"background-color: #f4cccc;\"\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; const selectedFile \u003d event.target.files[0];\u003c/b\u003e\u003c/i\u003e\u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003cspan style\u003d\"background-color: #f4cccc;\"\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; const imageBlob \u003d new Blob([selectedFile], { type: selectedFile.type });\u003c/b\u003e\u003c/i\u003e\u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003cspan style\u003d\"background-color: #f4cccc;\"\u003e\u003ci\u003e\u003cb\u003e});\u003c/b\u003e\u003c/i\u003e\u003c/span\u003e\u003c/p\u003e\u003cp\u003e```\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eStep 2: Uploading Blob to the Server\u003c/b\u003e\u003c/p\u003e\u003cp\u003eOnce you have the Blob object representing the image, you can upload it to the server using various methods, such as AJAX or the Fetch API.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003econst uploadButton \u003d document.getElementById('upload-button');\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u003cbr /\u003e\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003euploadButton.addEventListener('click', () \u003d\u0026gt; {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; fetch('your-upload-endpoint', {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; \u0026nbsp; method: 'POST',\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; \u0026nbsp; body: imageBlob\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; })\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; .then(response \u003d\u0026gt; response.json())\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; .then(data \u003d\u0026gt; {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; \u0026nbsp; // Handle server response\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; })\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; .catch(error \u003d\u0026gt; {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; \u0026nbsp; console.error('Error uploading image:', error);\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e\u0026nbsp; });\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci style\u003d\"background-color: #f4cccc;\"\u003e});\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eIn this blog, we've explored the concept of Blobs in JavaScript and their significance in enhancing web application functionality. From efficient file handling to data storage and transmission, Blobs offer developers a powerful toolset to work with binary data effectively. We've also provided a practical example of using Blobs to upload images, showcasing how this concept can be applied in real-world scenarios. By incorporating Blobs into your web development toolkit, you can unlock new possibilities for handling and manipulating binary data with ease.\u003c/p\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https://www.sapui5tutors.com/feeds/5942576821362820685/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.sapui5tutors.com/2023/08/understanding-blobs-in-javascript.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default/5942576821362820685"},{"rel":"self","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default/5942576821362820685"},{"rel":"alternate","type":"text/html","href":"https://www.sapui5tutors.com/2023/08/understanding-blobs-in-javascript.html","title":"Understanding Blobs in JavaScript: Enhancing Web Application Functionality"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"https://www.blogger.com/profile/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"35","height":"35","src":"//www.blogger.com/img/blogger_logo_round_35.png"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigg808vYtYA-CZIeutmSf4XdDe6UFtO7WiFlS_Vl9uquCPNhomMw3tQeM-QLCmb44E1tjnBg8Y8z1ukwjHQGrSsP63UuDG7CKMrKMHgviIjW3nN_yLLI5xRHStiG3nByo5ZUOrowI0bwMjM2eGtFjK6bdVmDdaVd1gaZJyvRVDe5xlD2e6ZrvhIfJuFQ/s72-c/IMG_2672.jpeg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615.post-3537957841930860837"},"published":{"$t":"2023-08-07T07:46:00.001-07:00"},"updated":{"$t":"2023-08-07T07:46:06.867-07:00"},"title":{"type":"text","$t":"Example of using promises in javascript in sapui5 development"},"content":{"type":"html","$t":"\u003cp\u003eJavaScript promises offer a powerful approach to handle asynchronous operations in SAPUI5 applications. In this blog, we'll delve into a detailed example of leveraging promises to create a seamless user experience while managing data retrieval from an OData service.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003ca href\u003d\"https://www.sapui5tutors.com/2023/08/promises-in-javascript-guide-for-sapui5.html\"\u003eFeel free to check out my previous blog on introduction to promises in javascript with respect to sapui5 development\u003c/a\u003e\u003c/p\u003e\u003cdiv class\u003d\"separator\" style\u003d\"clear: both; text-align: center;\"\u003e\u003ca href\u003d\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK_H3EfxP8jpB-T32R6X68LrbRl_Hx8EWHy9eHXA-_rkg6md5wNoJU_IKJ9Eh_oIjd78rahYzVy5KzyaR3n6pfm3T3KGeyym_piikIohRTYchX1dSB2MQDZt1sJ9OId7dUWRfXocawX0zfrGVl0cqlrZUMgS9_XxY9rgIJ9wozmfHLjbP-BA7kaf9G7w/s747/IMG_2671.jpeg\" imageanchor\u003d\"1\" style\u003d\"margin-left: 1em; margin-right: 1em;\"\u003e\u003cimg border\u003d\"0\" data-original-height\u003d\"410\" data-original-width\u003d\"747\" height\u003d\"176\" src\u003d\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK_H3EfxP8jpB-T32R6X68LrbRl_Hx8EWHy9eHXA-_rkg6md5wNoJU_IKJ9Eh_oIjd78rahYzVy5KzyaR3n6pfm3T3KGeyym_piikIohRTYchX1dSB2MQDZt1sJ9OId7dUWRfXocawX0zfrGVl0cqlrZUMgS9_XxY9rgIJ9wozmfHLjbP-BA7kaf9G7w/s320/IMG_2671.jpeg\" width\u003d\"320\" /\u003e\u003c/a\u003e\u003c/div\u003e\u003cbr /\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eExample: \u003cb\u003eFetching Employee Data from an OData Service\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eScenario:\u003c/b\u003e\u003c/p\u003e\u003cp\u003eImagine you're developing a SAPUI5 application that displays employee information fetched from an OData service. You want to ensure a responsive UI and graceful error handling.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eStep 1: Promise Creation\u003c/b\u003e\u003c/p\u003e\u003cp\u003eTo start, create a promise that encapsulates the OData service call:\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003econst fetchDataPromise \u003d new Promise((resolve, reject) \u003d\u0026gt; {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e\u0026nbsp; const oDataModel \u003d new sap.ui.model.odata.v2.ODataModel(\"/YourODataService\");\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e\u0026nbsp; oDataModel.read(\"/Employees\", {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e\u0026nbsp; \u0026nbsp; success: data \u003d\u0026gt; resolve(data),\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e\u0026nbsp; \u0026nbsp; error: error \u003d\u0026gt; reject(error)\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e\u0026nbsp; });\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e});\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e```\u003c/p\u003e\u003cp\u003e\u003cb\u003eStep 2: Handling Promises\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eNext, handle the promise using `.then()` to process the data and `.catch()` to handle errors:\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003efetchDataPromise\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; .then(data \u003d\u0026gt; {\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; // Process and display employee data\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; const employeeList \u003d data.results.map(employee \u003d\u0026gt; ({\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; id: employee.Id,\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; name: employee.Name,\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; // Additional properties\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; }));\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; // Render the employee list on the UI\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; renderEmployeeList(employeeList);\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; })\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; .catch(error \u003d\u0026gt; {\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; // Handle errors gracefully\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; showErrorDialog(\"An error occurred while fetching data. Please try again.\");\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; \u0026nbsp; console.error(\"Error fetching data:\", error);\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003e\u003cb\u003e\u0026nbsp; });\u003c/b\u003e\u003c/i\u003e\u003c/p\u003e\u003cp\u003e```\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eStep 3: Rendering Data\u003c/b\u003e\u003c/p\u003e\u003cp\u003eThe `renderEmployeeList` function can be implemented to display the employee list on the UI:\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003efunction renderEmployeeList(employeeList) {\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e\u0026nbsp; // Render the employee list in a SAPUI5 control or table\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003e}\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e\u003cp\u003e```\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003eBy utilizing JavaScript promises, you've created an elegant solution for fetching employee data from an OData service in a SAPUI5 application. The promise structure ensures a smooth user experience by preventing UI blocking during data retrieval. Additionally, the `.catch()` block gracefully handles errors, maintaining application stability.\u003c/p\u003e\u003cp\u003e\u003cbr /\u003e\u003c/p\u003e\u003cp\u003ePromises, as demonstrated in this example, empower SAPUI5 developers to manage asynchronous tasks effectively and create responsive applications that enhance user interactions. This approach exemplifies the power of combining promises and SAPUI5 to deliver a robust and user-friendly experience.\u003c/p\u003e\u003cp\u003eRemember, mastering promises opens the door to creating more efficient and sophisticated SAPUI5 applications that meet the demands of modern web development.\u003c/p\u003e\u003cp\u003eWith this practical example, you're now equipped to apply promises to your own SAPUI5 projects, enhancing both the technical excellence and user satisfaction of your applications.\u003c/p\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https://www.sapui5tutors.com/feeds/3537957841930860837/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.sapui5tutors.com/2023/08/example-of-using-promises-in-javascript.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default/3537957841930860837"},{"rel":"self","type":"application/atom+xml","href":"https://www.blogger.com/feeds/3826368468004556615/posts/default/3537957841930860837"},{"rel":"alternate","type":"text/html","href":"https://www.sapui5tutors.com/2023/08/example-of-using-promises-in-javascript.html","title":"Example of using promises in javascript in sapui5 development"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"https://www.blogger.com/profile/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"35","height":"35","src":"//www.blogger.com/img/blogger_logo_round_35.png"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK_H3EfxP8jpB-T32R6X68LrbRl_Hx8EWHy9eHXA-_rkg6md5wNoJU_IKJ9Eh_oIjd78rahYzVy5KzyaR3n6pfm3T3KGeyym_piikIohRTYchX1dSB2MQDZt1sJ9OId7dUWRfXocawX0zfrGVl0cqlrZUMgS9_XxY9rgIJ9wozmfHLjbP-BA7kaf9G7w/s72-c/IMG_2671.jpeg","height":"72","width":"72"},"thr$total":{"$t":"0"}}]}});