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$blogger":"http://schemas.google.com/blogger/2008","xmlns$georss":"http://www.georss.org/georss","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$thr":"http://purl.org/syndication/thread/1.0","id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615"},"updated":{"$t":"2023-12-26T13:46:15.660-08:00"},"category":[{"term":"sapui5"},{"term":"SAP ABAP"},{"term":"sap"},{"term":"ABAP Interview Questions"},{"term":"SAP Technical Interviews"},{"term":"Sap RAP"},{"term":"sap fiori"},{"term":"sap web ide"},{"term":"interview questions"},{"term":"custom sapui5 app extension"},{"term":"extending apps"},{"term":"odata"},{"term":"Navigation"},{"term":"Routing"},{"term":"SAP netweaver gateway"},{"term":"odata tutorial"},{"term":"ABAP"},{"term":"ABAP Coding Best Practices"},{"term":"ABAP Developer Tips"},{"term":"ABAP Development"},{"term":"ABAP Job Interview Insights"},{"term":"ABAP Job Preparation"},{"term":"Latest ABAP FAQs"},{"term":"SAP ABAP Certification"},{"term":"SAP Bussiness Application Studio"},{"term":"SAP CAP"},{"term":"node.js"},{"term":"sap capm"},{"term":"sap cloud platform"},{"term":"ABAP CDS Views"},{"term":"ABAP Code Examples"},{"term":"ABAP Data Modeling"},{"term":"ABAP HANA Integration"},{"term":"Answers"},{"term":"Developer Tips"},{"term":"HANA Development"},{"term":"HANA Modeling"},{"term":"HANA Performance Tuning."},{"term":"RAP Implementation"},{"term":"RAP Model"},{"term":"SAP ABAP on HANA"},{"term":"SAP HANA clould cockpit"},{"term":"SAP Interview Prep"},{"term":"SAP RAP Tutorial"},{"term":"cloud foundary"},{"term":"json"},{"term":"sap BTP CAPM"},{"term":"sap btp"},{"term":"CAP"},{"term":"CDS"},{"term":"HANA"},{"term":"MockSever"},{"term":"RAP"},{"term":"Routing in sapui5"},{"term":"associations"},{"term":"authentication"},{"term":"charts"},{"term":"cloud foundry"},{"term":"configuring destination in sap web ide"},{"term":"css"},{"term":"enterprise portal"},{"term":"import"},{"term":"introduction to sap web ide"},{"term":"odata v4"},{"term":"sap fiori portal site"},{"term":"sap mobile services"},{"term":"sap portal site"},{"term":"video tutorial on routing"},{"term":"Classical report"},{"term":"Cloud Application Programming Model"},{"term":"Interactive Reports"},{"term":"Internal Tables"},{"term":"Introduction"},{"term":"Introduction to sap enterprise portal"},{"term":"Mock data"},{"term":"SAP BAS"},{"term":"SAP Mobile cards"},{"term":"SEGW"},{"term":"Visual studio code"},{"term":"Web IDE"},{"term":"aggregation binding"},{"term":"android"},{"term":"app router"},{"term":"btp"},{"term":"capm"},{"term":"component preload"},{"term":"controller"},{"term":"controller extension"},{"term":"controls and views"},{"term":"create OData service"},{"term":"crud"},{"term":"csv"},{"term":"data binding"},{"term":"dataset"},{"term":"delete"},{"term":"extending sapui5 apps"},{"term":"fiori"},{"term":"formatter"},{"term":"git"},{"term":"github"},{"term":"google maps api"},{"term":"i18n"},{"term":"ios"},{"term":"list"},{"term":"manifest.json"},{"term":"mobile development kit"},{"term":"mta"},{"term":"mtar"},{"term":"multi target application"},{"term":"operations on internal table"},{"term":"properties"},{"term":"push a project in github"},{"term":"python"},{"term":"register odata service"},{"term":"routing in full application"},{"term":"sap cloud platform SDK"},{"term":"sap fiori enterprise portal"},{"term":"sapui5 github"},{"term":"search"},{"term":"setup sap bussiness application studio"},{"term":"sicf"},{"term":"sort"},{"term":"table"},{"term":"tables"},{"term":"video tutorial on nested views and fragments"},{"term":"xml"},{"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":"ABAP 7.5"},{"term":"ABAP 7.6"},{"term":"ABAP Enhancements"},{"term":"ABAP Innovations"},{"term":"ABAP List Viewer"},{"term":"ABAP New Features"},{"term":"ABAP on HANA interview questions and answers"},{"term":"ALE"},{"term":"ALV Grid Report"},{"term":"ALV Grid Tutorial"},{"term":"ALV programming examples"},{"term":"ALV reports"},{"term":"Activate OData Service in SICF"},{"term":"Agile Development"},{"term":"BAS"},{"term":"BDC"},{"term":"Batch"},{"term":"Best practices"},{"term":"Binary Data Handling"},{"term":"Blobs in JavaScript"},{"term":"CAPM Apps"},{"term":"CDL"},{"term":"CLASSICAL REPORTS"},{"term":"CQL"},{"term":"CRUD operations"},{"term":"CSN"},{"term":"Cache"},{"term":"Cloud-Native Architecture"},{"term":"Configure Catalog and Groups in SAP Fiori Portal Sites"},{"term":"Configuring Fiori Tiles in sap portal sites"},{"term":"Custom Controls"},{"term":"Custom control to make a Radar Chart using Chart.js library in SAPUI5."},{"term":"DDIC"},{"term":"DPC"},{"term":"Data Storage"},{"term":"Data types"},{"term":"Debugging ABAP"},{"term":"Dev Tools"},{"term":"Development"},{"term":"Dialog sapui5"},{"term":"Environment variables"},{"term":"Event Handling"},{"term":"Field Catalog"},{"term":"File Manipulation"},{"term":"Fragment"},{"term":"Fragment in sapui5"},{"term":"Global sub routines"},{"term":"Globalization and localization"},{"term":"How to Change logon Page of Enterprise Portal"},{"term":"How to export SAP Web IDE Workspace projects"},{"term":"How to get Selected table index value?"},{"term":"Image Upload"},{"term":"Installation of sap ui5 plugin"},{"term":"Internal Table"},{"term":"Introduction and DDIC"},{"term":"Introduction to SAP portal sites"},{"term":"JDK"},{"term":"LOCAL SUB ROUTINES"},{"term":"Latest ABAP Updates"},{"term":"Logon Page in Enterprise Portal"},{"term":"Logon to SAP ABAP"},{"term":"MDK introduction"},{"term":"MPC"},{"term":"Mdk app"},{"term":"Microservices in SAP BTP"},{"term":"Module Pool"},{"term":"Most common examples in sap ui5"},{"term":"Mta yaml"},{"term":"Naming conventions"},{"term":"Navigation Properties"},{"term":"OData v2 benefits"},{"term":"OData v2 vs. OData v4"},{"term":"OData v4 advantages"},{"term":"OOPs Concepts"},{"term":"Offline app"},{"term":"Parts"},{"term":"Pass by reference"},{"term":"Pass by value (or) call by value"},{"term":"Pass by value and return"},{"term":"Plugin"},{"term":"Project structure"},{"term":"SAP ABAP Blog."},{"term":"SAP ABAP function modules"},{"term":"SAP ABAP video tutorials"},{"term":"SAP ABAP views"},{"term":"SAP Business Technology Platform"},{"term":"SAP Data Presentation"},{"term":"SAP Development"},{"term":"SAP ECC"},{"term":"SAP Fiori Configuration cockpit"},{"term":"SAP Fiori Launchpad Portal Site"},{"term":"SAP MTA"},{"term":"SAP NetWeaver Portal"},{"term":"SAP OData"},{"term":"SAP Programming"},{"term":"SAP S\/4HANA"},{"term":"SAP Tech Trends"},{"term":"SAP cloud solutions"},{"term":"SAP functional modules"},{"term":"SAP implementation."},{"term":"SAP modules"},{"term":"SAP overview"},{"term":"SAP technical modules"},{"term":"SAPUI5 data communication"},{"term":"SAPui5 application on SAP bussiness application studio"},{"term":"SUB ROUTINES"},{"term":"Sapui5 jobs"},{"term":"Scalable Applications"},{"term":"Search Help in DDIC"},{"term":"Security"},{"term":"Security Considerations"},{"term":"Setting Up an App Router in SAP CAPM Project on BTP: A Step-by-Step Guide"},{"term":"SmartForms"},{"term":"Sorting"},{"term":"Templates and Accelerators in SAP Portal sites"},{"term":"Transaction code"},{"term":"Transport Request Number"},{"term":"Tutorial series on SAP Enterpise Portal"},{"term":"Tutorials"},{"term":"UI5 Inspector"},{"term":"User Interaction"},{"term":"Web Application Development"},{"term":"XS-UAA"},{"term":"add"},{"term":"add and delete operation"},{"term":"admin cockpit sap cloud mobile services"},{"term":"aggregations"},{"term":"annotations"},{"term":"annotations in OData"},{"term":"api"},{"term":"appearance"},{"term":"append operation"},{"term":"application"},{"term":"apps"},{"term":"architecture of sap fiori"},{"term":"authorization"},{"term":"backend components"},{"term":"batch processing in OData"},{"term":"begin set"},{"term":"beginset"},{"term":"boolean"},{"term":"branding"},{"term":"cache buster"},{"term":"catalogs"},{"term":"changeset"},{"term":"chart.js"},{"term":"charts in sapui5"},{"term":"chrome"},{"term":"cluster"},{"term":"code quality"},{"term":"combo box"},{"term":"commit"},{"term":"component configuration"},{"term":"component.js"},{"term":"configure catalogs and groups"},{"term":"configuring tiles"},{"term":"containers"},{"term":"contrller"},{"term":"controller hooks"},{"term":"controller.js"},{"term":"create"},{"term":"create cloud foundary account"},{"term":"create destinations to connect mobile services from sap web ide"},{"term":"css folder"},{"term":"csv upload validation"},{"term":"custom control"},{"term":"custom fiori app"},{"term":"custom image"},{"term":"custom login page"},{"term":"data element"},{"term":"database views"},{"term":"debug files in production environment"},{"term":"debugging javascript files"},{"term":"deman pop-in"},{"term":"deploy to cloud foundry"},{"term":"design principles"},{"term":"distance"},{"term":"doalog"},{"term":"domain"},{"term":"drag and drop"},{"term":"dv"},{"term":"dynamic"},{"term":"edit"},{"term":"enable sap web ide"},{"term":"event"},{"term":"events"},{"term":"events in classical reports"},{"term":"example classical report example"},{"term":"example of CAP"},{"term":"examples"},{"term":"excel"},{"term":"export project"},{"term":"export sap projects"},{"term":"export sapui5 project"},{"term":"expression"},{"term":"external library"},{"term":"external style"},{"term":"file"},{"term":"file reader"},{"term":"filter"},{"term":"filtering"},{"term":"fiori app"},{"term":"fiori apps"},{"term":"fiori jobs"},{"term":"fiori launchpad"},{"term":"fiori tiles"},{"term":"formatters"},{"term":"frontend components"},{"term":"function"},{"term":"geocoder"},{"term":"get cursor"},{"term":"get expanded entity"},{"term":"get expanded entityset"},{"term":"globalization"},{"term":"google maps"},{"term":"grouping"},{"term":"groups"},{"term":"gulp"},{"term":"handling localized texts"},{"term":"hcp"},{"term":"header item relationship"},{"term":"hello world"},{"term":"hello world application"},{"term":"help views"},{"term":"hierarchial ALV"},{"term":"icf"},{"term":"implementing SAP Fiori"},{"term":"import project"},{"term":"index"},{"term":"index of list"},{"term":"inline expressions"},{"term":"inner join"},{"term":"interactive reports events"},{"term":"interactive reports example"},{"term":"internal style"},{"term":"interview tips"},{"term":"introduction to ERP"},{"term":"introduction to odata annotations"},{"term":"introduction to sap abap"},{"term":"introduction to sap fiori"},{"term":"introduction to sapui5"},{"term":"item"},{"term":"iwfnd"},{"term":"javascript"},{"term":"javascript code editor"},{"term":"job search"},{"term":"joins"},{"term":"js"},{"term":"json model"},{"term":"jwt token"},{"term":"large string"},{"term":"launchpad"},{"term":"launchpad configuration"},{"term":"layout"},{"term":"layouts"},{"term":"local development"},{"term":"local service"},{"term":"login"},{"term":"login configuration"},{"term":"logo"},{"term":"logon page"},{"term":"lpd_cust"},{"term":"maint_service"},{"term":"maintainability"},{"term":"maintainence view"},{"term":"margins"},{"term":"marker"},{"term":"mdk"},{"term":"metadata.xml"},{"term":"mfa"},{"term":"minScreenWidth"},{"term":"mobile services in cloud foundary"},{"term":"model folder"},{"term":"modules"},{"term":"multi cloud environment"},{"term":"nested view"},{"term":"npm"},{"term":"odat v4"},{"term":"odata deep structures"},{"term":"odata tutorial series"},{"term":"odata v2"},{"term":"offline capabilities"},{"term":"online training abap"},{"term":"openui5"},{"term":"optimization"},{"term":"outer join"},{"term":"package"},{"term":"padding"},{"term":"parameter"},{"term":"pass multiple values"},{"term":"path"},{"term":"pdf"},{"term":"pfcg"},{"term":"pool"},{"term":"portal"},{"term":"portal site"},{"term":"projection views"},{"term":"pull"},{"term":"pull a project"},{"term":"push"},{"term":"radar chart"},{"term":"re usability"},{"term":"read"},{"term":"read table"},{"term":"register cloud platform"},{"term":"reports"},{"term":"resource bundle"},{"term":"resources"},{"term":"responsive"},{"term":"responsive table"},{"term":"responsive table in sapui5"},{"term":"responsiveness"},{"term":"rest"},{"term":"roles"},{"term":"routing in split app"},{"term":"saml"},{"term":"sap MDK"},{"term":"sap abap tutorials"},{"term":"sap app"},{"term":"sap backend system"},{"term":"sap cloud foundary"},{"term":"sap cloud platform for portal sites"},{"term":"sap cloud platform mobile services"},{"term":"sap custom portal sites"},{"term":"sap enterprise portal"},{"term":"sap fiori application"},{"term":"sap fiori apps"},{"term":"sap fiori configuration cockpit portal sites"},{"term":"sap fiori elements"},{"term":"sap fiori enterprise portal sites"},{"term":"sap fiori jobs"},{"term":"sap fiori launchpad"},{"term":"sap fiori launchpad configuration"},{"term":"sap fiori tools"},{"term":"sap fiori tutorial"},{"term":"sap freestyle portal sites"},{"term":"sap mobile development kit"},{"term":"sap mobile services tutorial"},{"term":"sap mobility jobs"},{"term":"sap ui5"},{"term":"sap ui5 excel upload"},{"term":"sap viz frame"},{"term":"sap web IDE Workspace export"},{"term":"sap web ide deprecated"},{"term":"sap webide"},{"term":"sap.m.list"},{"term":"sap.m.table"},{"term":"sapui5 apps"},{"term":"sapui5 best practices"},{"term":"sapui5 code editor"},{"term":"sapui5 code validator"},{"term":"sapui5 csv file upload import"},{"term":"sapui5 diagnostics window"},{"term":"sapui5 excel import"},{"term":"sapui5 lint"},{"term":"sapui5 nested view"},{"term":"sapui5 project"},{"term":"sapui5 project structuring"},{"term":"sapui5 xml editor"},{"term":"scp"},{"term":"searching"},{"term":"selected"},{"term":"selected index"},{"term":"setup"},{"term":"sheet.js"},{"term":"smart table"},{"term":"smarttable"},{"term":"speech recognition"},{"term":"spider chart"},{"term":"split app"},{"term":"srv"},{"term":"stage"},{"term":"step by step process to create odata"},{"term":"string"},{"term":"submitbatch"},{"term":"system objects"},{"term":"tab"},{"term":"tag"},{"term":"technical interview questions"},{"term":"test Odata service"},{"term":"tiles"},{"term":"token"},{"term":"transparent"},{"term":"tree table"},{"term":"types of subroutines"},{"term":"types of tables"},{"term":"types of views"},{"term":"ui5"},{"term":"universal worklist"},{"term":"update"},{"term":"upload"},{"term":"use strict"},{"term":"user experience sap"},{"term":"util"},{"term":"v4"},{"term":"validate using headers"},{"term":"validation"},{"term":"value"},{"term":"variable names"},{"term":"version"},{"term":"video tutorial on formatter and inline expressions"},{"term":"video tutorial on globalization"},{"term":"view"},{"term":"view extension"},{"term":"view extensions"},{"term":"view modification"},{"term":"view replacement"},{"term":"viz charts"},{"term":"viz control"},{"term":"vizframe control"},{"term":"voice recognition"},{"term":"walkthrough admin cockpit"},{"term":"web dynpro"},{"term":"webIDE application"},{"term":"webapp"},{"term":"work Area"},{"term":"workflow"},{"term":"xls"},{"term":"xlsx"},{"term":"xml code editor"},{"term":"xml view"},{"term":"xs security"}],"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.sapui5tutors.com\/feeds\/posts\/default"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default?alt=json-in-script\u0026max-results=5"},{"rel":"alternate","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"},{"rel":"next","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default?alt=json-in-script\u0026start-index=6\u0026max-results=5"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"generator":{"version":"7.00","uri":"http://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"186"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"5"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615.post-7210889268236386032"},"published":{"$t":"2023-08-11T04:06:00.001-07:00"},"updated":{"$t":"2023-08-11T04:08:23.721-07:00"},"title":{"type":"text","$t":"Simplifying Asynchronous Programming in SAPUI5 with Async\/Await"},"content":{"type":"html","$t":"\u003Cp\u003EAsynchronous programming is vital in JavaScript, particularly when using frameworks like SAPUI5 for web app development. It involves handling tasks that take time, such as fetching data from APIs, in a way that doesn't freeze the user interface. While callbacks and Promises were traditional methods, they often led to complex code. Enter async\/await, a modern approach making asynchronous code more readable. This article explores using async\/await in SAPUI5 with simple examples.\u003C\/p\u003E\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhUld3EeEMenhYxTvbDvpDH9pVluLdBoqwgFlkpQz2wtooua4S-exTjJ4pjbBD0L6akeu73j_f7uF2ZCt7HP7__3XQT3jeuAN6iQ_AS49-ozADkf8oOedmrsWQXgEqodanuXPjVznNV8_vynW-5jOERslWD8Lz94Y2BdUw8iMABki73HBKa1qskLMOJqw\/s1920\/IMG_2679.jpeg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"1080\" data-original-width=\"1920\" height=\"180\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhUld3EeEMenhYxTvbDvpDH9pVluLdBoqwgFlkpQz2wtooua4S-exTjJ4pjbBD0L6akeu73j_f7uF2ZCt7HP7__3XQT3jeuAN6iQ_AS49-ozADkf8oOedmrsWQXgEqodanuXPjVznNV8_vynW-5jOERslWD8Lz94Y2BdUw8iMABki73HBKa1qskLMOJqw\/s320\/IMG_2679.jpeg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\u003Cp\u003E\u003Cb\u003EUnderstanding Asynchronous Programming\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EIn synchronous programming, tasks are completed one after another. Asynchronous programming allows tasks to run concurrently, avoiding UI blockages.\u003C\/p\u003E\u003Cp\u003ETo understand more on \u003Ca href=\"https:\/\/www.sapui5tutors.com\/2023\/08\/asynchronous-programming-in-javascript.html\"\u003Easynchronous programming do check my previous blog\u003C\/a\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EIntroducing async\/await\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003Easync\/await are JavaScript keywords that make asynchronous code resemble synchronous code. async defines an asynchronous function, and await pauses execution until a Promise is fulfilled.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EUsing async\/await in SAPUI5\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003ELet's see how async\/await simplifies SAPUI5 asynchronous code through easy examples.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EExample 1: Fetching API Data\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003ETraditionally, callbacks or Promises fetched data. async\/await streamlines this:\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cblockquote\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u003Cspan\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Ca name='more'\u003E\u003C\/a\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003Easync function fetchData() {\u003C\/span\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; try {\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; const response = await fetch('https:\/\/api.example.com\/data');\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; const data = await response.json();\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; return data;\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; } catch (error) {\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; console.error('Error fetching data:', error);\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; }\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E}\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003Easync function processData() {\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; const data = await fetchData();\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u0026nbsp; \/\/ Do something with the data\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E}\u003C\/span\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #ea9999; font-family: courier;\"\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EExample 2: Reading Files\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EIn SAPUI5, reading files asynchronously can be simpler with async\/await:\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan\u003E\u003C\/span\u003E\u003C\/p\u003E\u003C!--more--\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cblockquote\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003Easync function readFile(file) {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; return new Promise((resolve, reject) =\u0026gt; {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; const reader = new FileReader();\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; reader.onload = () =\u0026gt; {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; resolve(reader.result);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; };\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; reader.onerror = () =\u0026gt; {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; reject(reader.error);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; };\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; reader.readAsText(file);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; });\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E}\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003Easync function processFile(selectedFile) {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; try {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; const fileContent = await readFile(selectedFile);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \/\/ Do something with the file content\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; } catch (error) {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; console.error('Error reading file:', error);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; }\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E}\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: inherit;\"\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cblockquote\u003E\u003Cblockquote\u003E\u003Cspan style=\"font-family: inherit;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/blockquote\u003E\u003C\/blockquote\u003E\u003Cp\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cb\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003C\/span\u003EExample 3: SAPUI5 OData Requests\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003EUsing async\/await for OData requests in SAPUI5:\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cblockquote\u003E\u003Cp\u003E\u003Cspan\u003E\u003C\/span\u003E\u003C\/p\u003E\u003C!--more--\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003Easync function getEmployees() {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; const oDataModel = new sap.ui.model.odata.v2.ODataModel('\/serviceUrl');\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; try {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; return await new Promise((resolve, reject) =\u0026gt; {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; oDataModel.read('\/Employees', {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; success: (data) =\u0026gt; resolve(data),\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; error: (error) =\u0026gt; reject(error)\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; });\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; });\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; } catch (error) {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; console.error('Error fetching employees:', error);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; }\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E}\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003Easync function displayEmployees() {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; try {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; const employees = await getEmployees();\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; \/\/ Display employee data in the UI\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; } catch (error) {\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; \u0026nbsp; console.error('Error displaying employees:', error);\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E\u0026nbsp; }\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"background-color: #ea9999;\"\u003E}\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cp\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E```\u003C\/span\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cb\u003E\u003Cspan style=\"font-family: inherit;\"\u003EBenefits of async\/await\u003C\/span\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E- \u003Cb\u003EReadability\u003C\/b\u003E: Makes code easier to read by avoiding nested callbacks or complex Promise chains.\u003C\/p\u003E\u003Cp\u003E- \u003Cb\u003EError Handling\u003C\/b\u003E: Enables straightforward error handling using try\/catch.\u003C\/p\u003E\u003Cp\u003E- \u003Cb\u003ESynchronous Flow\u003C\/b\u003E: Resembles synchronous code, aligning with how we think.\u003C\/p\u003E\u003Cp\u003E- \u003Cb\u003EDebugging\u003C\/b\u003E: Provides clear stack traces, easing debugging.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003EAsynchronous programming is core to web development. async\/await simplifies SAPUI5 coding by making asynchronous code readable and responsive. Embrace it for organized and efficient code. By combining async\/await with SAPUI5, you'll create user-friendly web apps adept at handling asynchronous tasks. Happy coding!\u003C\/p\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/www.sapui5tutors.com\/feeds\/7210889268236386032\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/2023\/08\/simplifying-asynchronous-programming-in.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default\/7210889268236386032"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default\/7210889268236386032"},{"rel":"alternate","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/2023\/08\/simplifying-asynchronous-programming-in.html","title":"Simplifying Asynchronous Programming in SAPUI5 with Async\/Await"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhUld3EeEMenhYxTvbDvpDH9pVluLdBoqwgFlkpQz2wtooua4S-exTjJ4pjbBD0L6akeu73j_f7uF2ZCt7HP7__3XQT3jeuAN6iQ_AS49-ozADkf8oOedmrsWQXgEqodanuXPjVznNV8_vynW-5jOERslWD8Lz94Y2BdUw8iMABki73HBKa1qskLMOJqw\/s72-c\/IMG_2679.jpeg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615.post-60143637423672440"},"published":{"$t":"2023-08-10T20:39:00.004-07:00"},"updated":{"$t":"2023-08-19T01:25:04.272-07:00"},"title":{"type":"text","$t":"Asynchronous Programming in JavaScript with SAPUI5: Helping Execution and Responsiveness"},"content":{"type":"html","$t":"\u003Cp\u003EIn modern web development, creating responsive and performant applications is crucial. Asynchronous programming plays a vital role in achieving these goals by allowing JavaScript code to execute non-blocking operations. When it comes to building SAPUI5 applications, understanding asynchronous programming is essential for optimizing performance.\u003C\/p\u003E\u003Cp\u003EIn this blog, we will explore the concepts of asynchronous programming in JavaScript and its relevance to SAPUI5. We will delve into the benefits of asynchronous programming and provide examples of how to implement it effectively.\u003C\/p\u003E\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg2wPJubVs8wWeXtwXQ-M1tMSef19_TL9PwTo0sSlcYN7E-2pcHeYp3qLHtmS17TtxWtPRyOrvsxKouMQV2Kx2FwAOoye_DlZwmtDjPpyUqos8m0mQdTXJOlzEh84rlGATmPFUR8CvNuCNkdlt2HY4br0ZxMTf-h6bKslVq8EVcTDrFZJy_sthoFtac6Q\/s1920\/IMG_2678.jpeg\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"1080\" data-original-width=\"1920\" height=\"180\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg2wPJubVs8wWeXtwXQ-M1tMSef19_TL9PwTo0sSlcYN7E-2pcHeYp3qLHtmS17TtxWtPRyOrvsxKouMQV2Kx2FwAOoye_DlZwmtDjPpyUqos8m0mQdTXJOlzEh84rlGATmPFUR8CvNuCNkdlt2HY4br0ZxMTf-h6bKslVq8EVcTDrFZJy_sthoFtac6Q\/s320\/IMG_2678.jpeg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\u003Cbr \/\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cdiv style=\"-webkit-text-size-adjust: auto;\"\u003E\u003Cspan data-canva-clipboard=\"ewAiAGEAIgA6ADUALAAiAGQAIgA6ACIAQgAiACwAIgBoACIAOgAiAHcAdwB3AC4AYwBhAG4AdgBhAC4AYwBvAG0AIgAsACIAYwAiADoAIgBEAEEARgByAE0AMABjAEMAawBIAFEAIgAsACIAaQAiADoAIgBCAHUAUwBQAGIAbAB2AEUARwBTADYAeQBGAGgARgBHADIAVwB6ADYARwBRACIALAAiAGIAIgA6ADEANgA5ADEANwAyADQANgAxADEAMAAyADYALAAiAGoAIgA6AFsAewAiAEEAIgA6AHsAIgBCACIAOgB7AH0ALAAiAEsAIgA6AHsAfQAsACIARAAiADoAewB9ACwAIgBMACIAOgBbAHsAIgBBACIAOgB7AH0ALAAiAEIAIgA6ACIAQwAiAH0ALAB7ACIAQQAiADoAewB9ACwAIgBCACIAOgAiAEIAIgB9AF0ALAAiAEUAIgA6AHsAfQAsACIARgAiADoAewAiAEEAIgA6ACIASQBkAGUAbgB0AGkAdAB5AC4AcABuAGcAIgAsACIAQgAiADoAMQB9ACwAIgBHACIAOgB7AH0ALAAiAEgAIgA6AHsAIgBCACIAOgAiAG4AbwBuAGUAIgAsACIAQwAiADoAIgAjADAAMAAwADAAMAAwACIALAAiAEQAIgA6ACIAIwBmAGYAZgBmAGYAZgAiAH0ALAAiAEoAIgA6AHsAIgBGACIAOgAiACMAMAAwADAAMAAwADAAIgB9AH0AfQBdACwAIgBBAD8AIgA6ACIAQQAiACwAIgBBACIAOgB7ACIAQQAiADoAdAByAHUAZQAsACIAQgAiADoAewAiAEEAIgA6AHsAIgBBACIAOgAiAE0AQQBEAEcAeAB4ADIANQB5AGEAWQAiACwAIgBCACIAOgA0AH0ALAAiAEIAIgA6AHsAIgBBACIAOgAtADkAOQAuADYAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMgAsACIARAAiADoAMQA5ADIAMAAsACIAQwAiADoAMQAyADcAOQAuADIAfQAsACIARQAiADoAMAAuADkAMQB9ACwAIgBDACIAOgAiACMAMAAwADIAZAA3ADAAIgB9ACwAIgBCACIAOgAxADkAMgAwACwAIgBDACIAOgAxADAAOAAwAH0A\"\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cp\u003E\u003Cb\u003EUnderstanding Asynchronous Programming\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EAsynchronous programming is a programming paradigm that allows multiple tasks to be executed concurrently, enhancing the efficiency and responsiveness of applications. In JavaScript, asynchronous operations are typically performed using callbacks, promises, or async\/await.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003ECallbacks\u003C\/b\u003E: Callbacks are functions passed as arguments to other functions. They are executed once an asynchronous operation completes. While effective, callback-based code can become complex and difficult to manage, leading to the \"callback hell\" phenomenon.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EPromises\u003C\/b\u003E: Promises were introduced to address the issues with callbacks. They provide a more structured way to handle asynchronous operations. Promises represent the eventual completion or failure of an asynchronous operation and allow chaining of multiple operations.\u003C\/p\u003E\u003Cp\u003ECheck my \u003Ca href=\"https:\/\/www.sapui5tutors.com\/2023\/08\/promises-in-javascript-guide-for-sapui5.html\"\u003Eprevious blog to understand more on promises.\u003C\/a\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EAsync\/Await\u003C\/b\u003E: Introduced in ES2017, async\/await is a modern approach to handle asynchronous code. It provides a cleaner syntax by allowing developers to write asynchronous code that looks similar to synchronous code. Under the hood, async\/await is built upon promises.\u003C\/p\u003E\u003Cp\u003ECheck my \u003Ca href=\"https:\/\/www.sapui5tutors.com\/2023\/08\/simplifying-asynchronous-programming-in.html\"\u003Eblog on async await in javascript\u003C\/a\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EBenefits of Asynchronous Programming in SAPUI5\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EImplementing asynchronous programming techniques in SAPUI5 applications offers several advantages:\u003C\/p\u003E\u003Cp\u003E1. \u003Cb\u003EEnhanced Responsiveness\u003C\/b\u003E: Asynchronous operations prevent the user interface from freezing while time-consuming tasks are executed, ensuring a smooth user experience.\u003C\/p\u003E\u003Cp\u003E2. \u003Cb\u003EImproved Performance\u003C\/b\u003E: By offloading time-consuming tasks to background threads, asynchronous programming optimizes application performance, making it faster and more efficient.\u003C\/p\u003E\u003Cp\u003E3. \u003Cb\u003EEfficient Resource Utilization\u003C\/b\u003E: Asynchronous programming allows resources to be utilized effectively by executing multiple tasks concurrently, reducing idle time and increasing overall productivity.\u003C\/p\u003E\u003Cp\u003E4. \u003Cb\u003ESeamless Data Fetching\u003C\/b\u003E: When working with remote services or APIs, asynchronous programming enables non-blocking data fetching, ensuring that the application remains responsive while waiting for server responses.\u003C\/p\u003E\u003Cp\u003E5. \u003Cb\u003EBetter Error Handling\u003C\/b\u003E: Asynchronous programming techniques provide robust error handling mechanisms, making it easier to handle exceptions and failures gracefully.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EImplementing Asynchronous Programming in SAPUI5\u0026nbsp;\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003ETo demonstrate how to implement asynchronous programming in SAPUI5, let's consider an example of fetching data from a remote server using the `sap.ui.model.odata.v2.ODataModel` class.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cblockquote\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\/\/ Create a new ODataModel\u003Cbr \/\u003Evar oModel = new sap.ui.model.odata.v2.ODataModel(\"\/serviceUrl\");\u003Cbr \/\u003E\/\/ Fetch data asynchronously\u003Cbr \/\u003EoModel.read(\"\/EntitySet\", {\u003Cbr \/\u003E\u0026nbsp; success: function(data) {\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; \/\/ Data successfully fetched\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; console.log(data);\u003Cbr \/\u003E\u0026nbsp; },\u003Cbr \/\u003E\u0026nbsp; error: function(error) {\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; \/\/ Error handling\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; console.error(error);\u003Cbr \/\u003E\u0026nbsp; }\u003Cbr \/\u003E});\u003C\/span\u003E\u003C\/div\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003C\/span\u003EIn the above code snippet, the `read` function of the `ODataModel` class is used to fetch data from the \"\/EntitySet\" endpoint. By providing success and error callback functions, we ensure that the code executes asynchronously.\u003C\/p\u003E\u003Cp\u003EThis approach allows the application to continue executing other tasks while waiting for the data to be fetched. Once the data is available, the success callback is invoked, and the fetched data can be processed accordingly. In case of an error, the error callback handles the failure gracefully.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003EAsynchronous programming is a vital concept in JavaScript and is particularly relevant in SAPUI5 development. By leveraging asynchronous techniques, developers can significantly improve the performance, responsiveness, and user experience of SAPUI5 applications. In this blog, we explored the fundamentals of asynchronous programming, including callbacks, promises, and async\/await. We also provided a practical example of implementing asynchronous data fetching in SAPUI5. By mastering these techniques, developers can build highly efficient and user-friendly SAPUI5 applications that meet the demands of modern web development.\u003C\/p\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/www.sapui5tutors.com\/feeds\/60143637423672440\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/2023\/08\/asynchronous-programming-in-javascript.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default\/60143637423672440"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default\/60143637423672440"},{"rel":"alternate","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/2023\/08\/asynchronous-programming-in-javascript.html","title":"Asynchronous Programming in JavaScript with SAPUI5: Helping Execution and Responsiveness"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg2wPJubVs8wWeXtwXQ-M1tMSef19_TL9PwTo0sSlcYN7E-2pcHeYp3qLHtmS17TtxWtPRyOrvsxKouMQV2Kx2FwAOoye_DlZwmtDjPpyUqos8m0mQdTXJOlzEh84rlGATmPFUR8CvNuCNkdlt2HY4br0ZxMTf-h6bKslVq8EVcTDrFZJy_sthoFtac6Q\/s72-c\/IMG_2678.jpeg","height":"72","width":"72"},"thr$total":{"$t":"0"},"georss$featurename":{"$t":"United States"},"georss$point":{"$t":"37.09024 -95.712891"},"georss$box":{"$t":"8.780006163821156 -130.869141 65.400473836178847 -60.556641"}},{"id":{"$t":"tag:blogger.com,1999:blog-3826368468004556615.post-3035111109044494237"},"published":{"$t":"2023-08-08T10:11:00.003-07:00"},"updated":{"$t":"2023-08-08T10:12:25.429-07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ABAP List Viewer"},{"scheme":"http://www.blogger.com/atom/ns#","term":"ALV Grid Report"},{"scheme":"http://www.blogger.com/atom/ns#","term":"ALV Grid Tutorial"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Event Handling"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Field Catalog"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Internal Table"},{"scheme":"http://www.blogger.com/atom/ns#","term":"SAP ABAP"},{"scheme":"http://www.blogger.com/atom/ns#","term":"SAP Data Presentation"},{"scheme":"http://www.blogger.com/atom/ns#","term":"SAP Development"},{"scheme":"http://www.blogger.com/atom/ns#","term":"User Interaction"}],"title":{"type":"text","$t":"Creating Basic ALV Grid Report in SAP ABAP"},"content":{"type":"html","$t":"\u003Cp\u003EALV (ABAP List Viewer) reports play a crucial role in the world of SAP ABAP development. They provide a powerful tool for presenting data in a user-friendly and organized manner. In this blog, we will walk you through the process of creating a basic ALV Grid report in SAP ABAP, step by step.\u003C\/p\u003E\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiyvnRWO0TkjZl0qHwUQDqkvKMvc6af3qLD9jxf-642Mu9Opx9NoNJLl_-ImCl7JzMh8tduQFCA6w0XSkn84abFbyq7QAj7zGLBvfKIZZzlTKTIrQ1dZMvcFBbbwEq3nDiRS67n8eFR2QeTnExCqOZbTmDbVocEz5a0-M30J2liIhdXs9WOpxSnGBcY8g\/s225\/IMG_2673.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"225\" data-original-width=\"225\" height=\"225\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiyvnRWO0TkjZl0qHwUQDqkvKMvc6af3qLD9jxf-642Mu9Opx9NoNJLl_-ImCl7JzMh8tduQFCA6w0XSkn84abFbyq7QAj7zGLBvfKIZZzlTKTIrQ1dZMvcFBbbwEq3nDiRS67n8eFR2QeTnExCqOZbTmDbVocEz5a0-M30J2liIhdXs9WOpxSnGBcY8g\/s1600\/IMG_2673.png\" width=\"225\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\u003Cbr \/\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EStep 1: Define the Data Source\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EThe first step in creating an ALV Grid report is to define the data source. This typically involves fetching data from database tables or other sources. For this example, let's consider a scenario where we want to display a list of employees and their basic information.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EStep 2: Create the Internal Table\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EOnce you've fetched the data, you need to store it in an internal table. An internal table is a dynamic structure that holds data in memory. Define the structure of the internal table based on the fields you want to display in the ALV report.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cblockquote\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003EDATA: lt_employee TYPE TABLE OF employee_data, \" Replace with actual data structure\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; ls_employee TYPE employee_data. \" Replace with actual data structure\u003Cbr \/\u003E\" Fill the internal table with data\u003Cbr \/\u003ESELECT * FROM employee INTO TABLE lt_employee.\u003Cbr \/\u003E```\u003C\/span\u003E\u003C\/div\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cb\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003C\/span\u003EStep 3: Create ALV Grid Object\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003ENext, create an instance of the ALV Grid object using the `CL_GUI_ALV_GRID` class.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan\u003E\u003C\/span\u003E\u003C\/p\u003E\u003C!--more--\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cblockquote style=\"text-align: left;\"\u003E\u003Cdiv\u003E\u003Cspan style=\"font-family: courier;\"\u003EDATA: lo_alv_grid TYPE REF TO cl_gui_alv_grid.\u003Cbr \/\u003E\" Create ALV Grid object\u003Cbr \/\u003ECREATE OBJECT lo_alv_grid.\u003C\/span\u003E\u003C\/div\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E`\u003C\/span\u003E``\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EStep 4: Set Field Catalog\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EThe field catalog defines the structure of the ALV report, including column headers and their properties. Define the field catalog based on the structure of your internal table.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003C!--more--\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cblockquote\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003EDATA: lt_fieldcat TYPE TABLE OF lvc_s_fcat,\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; ls_fieldcat TYPE lvc_s_fcat.\u003Cbr \/\u003E\" Define field catalog\u003Cbr \/\u003ECLEAR ls_fieldcat.\u003Cbr \/\u003Els_fieldcat-fieldname = 'EMPLOYEE_ID'.\u003Cbr \/\u003Els_fieldcat-seltext_m = 'Employee ID'.\u003Cbr \/\u003EAPPEND ls_fieldcat TO lt_fieldcat.\u003Cbr \/\u003E\" Add more columns to the field catalog\u003Cbr \/\u003E\" ls_fieldcat-fieldname = 'EMPLOYEE_NAME'.\u003Cbr \/\u003E\" ls_fieldcat-seltext_m = 'Employee Name'.\u003Cbr \/\u003E\" APPEND ls_fieldcat TO lt_fieldcat.\u003Cbr \/\u003E\" Continue adding columns to the field catalog as needed\u003C\/span\u003E\u003C\/div\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E```\u003C\/span\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cb\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003C\/span\u003EStep5: Set Layout and Display ALV Grid\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EAfter defining the field catalog, you need to set the layout of the ALV Grid and display it.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cblockquote\u003E\u003Cp\u003E\" \u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/p\u003E\u003C!--more--\u003E\u003Cspan style=\"font-family: courier;\"\u003ESet layout\u003C\/span\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003Elo_alv_grid-\u0026gt;set_table_for_first_display(\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; EXPORTING\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; i_structure_name = 'EMPLOYEE_DATA'\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; CHANGING\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; it_outtab = lt_employee\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; it_fieldcatalog = lt_fieldcat\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"font-family: courier;\"\u003E).\u003C\/span\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp\u003E\u003C\/p\u003E\u003Cp\u003E```\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003EStep 6: Handle User Interactions\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EALV Grid reports provide user interaction features such as sorting, filtering, and column resizing. However, these features are enabled by default. If you wish to enable additional user interactions, you can do so using event handling.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cdiv style=\"text-align: left;\"\u003E\" \u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003C!--more--\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cblockquote\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003EEnable sorting\u003Cbr \/\u003Elo_alv_grid-\u0026gt;set_sort_allowed( abap_true ).\u003Cbr \/\u003E\" Enable filtering\u003Cbr \/\u003Elo_alv_grid-\u0026gt;set_filter( abap_true ).\u003Cbr \/\u003E\" Register double-click event\u003Cbr \/\u003ESET HANDLER double_click_event FOR lo_alv_grid.\u003C\/span\u003E\u003C\/div\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E``\u003C\/span\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp\u003E\u003Cb\u003E\u0026nbsp;Step 7: Define Event Handler Methods\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EDefine event handler methods to handle user interactions like double-clicking on a row.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003C!--more--\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cblockquote\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003EMETHOD double_click_event.\u003Cbr \/\u003E\u0026nbsp; DATA: lv_row TYPE i,\u003Cbr \/\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; lv_employee_id TYPE employee_data-employee_id. \" Replace with actual data field\u003Cbr \/\u003E\u0026nbsp; lv_row = iv_event-\u0026gt;get_row( ).\u003Cbr \/\u003E\u0026nbsp; READ TABLE lt_employee INDEX lv_row INTO ls_employee.\u003Cbr \/\u003E\u0026nbsp; lv_employee_id = ls_employee-employee_id.\u003Cbr \/\u003E\u0026nbsp; \" Perform action on double-click event\u003Cbr \/\u003E\u0026nbsp; \" For example, display employee details or navigate to employee's profile.\u003Cbr \/\u003EENDMETHOD.\u003C\/span\u003E\u003C\/div\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E```\u003C\/span\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cb\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003C\/span\u003EStep 8: Finalize and Test\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003EWith all the steps in place, your basic ALV Grid report is ready for testing. Run your ABAP program, and you should see the ALV report displaying the employee data in a tabular format. Users can interact with the report by sorting, filtering, and performing other actions based on your configurations.\u003C\/p\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp\u003EIn conclusion, creating a basic ALV Grid report in SAP ABAP involves fetching data, defining an internal table, creating an ALV Grid object, setting up the field catalog, and displaying the report. With additional event handling, you can enhance user interaction and provide a more dynamic experience. ALV reports offer a powerful way to present data, making them an essential tool for SAP developers in various projects.\u003C\/p\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/www.sapui5tutors.com\/feeds\/3035111109044494237\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/2023\/08\/creating-basic-alv-grid-report-in-sap.html#comment-form","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default\/3035111109044494237"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/3826368468004556615\/posts\/default\/3035111109044494237"},{"rel":"alternate","type":"text/html","href":"https:\/\/www.sapui5tutors.com\/2023\/08\/creating-basic-alv-grid-report-in-sap.html","title":"Creating Basic ALV Grid Report in SAP ABAP"}],"author":[{"name":{"$t":"Sanjo Thomas"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiyvnRWO0TkjZl0qHwUQDqkvKMvc6af3qLD9jxf-642Mu9Opx9NoNJLl_-ImCl7JzMh8tduQFCA6w0XSkn84abFbyq7QAj7zGLBvfKIZZzlTKTIrQ1dZMvcFBbbwEq3nDiRS67n8eFR2QeTnExCqOZbTmDbVocEz5a0-M30J2liIhdXs9WOpxSnGBcY8g\/s72-c\/IMG_2673.png","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"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=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhBCUI71UJxbdprHp5orRar3ccRoyZwbA6Mo7qvHXKAgkbQ3YNUFPYpaxwINSTLaPhkzxr_rfIo98rJ8avshz_kJ5-X8_otXU5lSod-LeSwaV8h7PIykptOdPQwiyTc23VTDDH5hQjn57-EI8041rN60r1EjYr0X6Ty4AvbLwohNivIfXCIiDX5ucT4A\/s225\/IMG_2673.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"225\" data-original-width=\"225\" height=\"225\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhBCUI71UJxbdprHp5orRar3ccRoyZwbA6Mo7qvHXKAgkbQ3YNUFPYpaxwINSTLaPhkzxr_rfIo98rJ8avshz_kJ5-X8_otXU5lSod-LeSwaV8h7PIykptOdPQwiyTc23VTDDH5hQjn57-EI8041rN60r1EjYr0X6Ty4AvbLwohNivIfXCIiDX5ucT4A\/s1600\/IMG_2673.png\" width=\"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=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan style=\"font-size: medium;\"\u003E\u003Cspan\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Ca name='more'\u003E\u003C\/a\u003E\u003Cblockquote\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan style=\"font-size: medium;\"\u003EAT LINE-SELECTION.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-size: medium;\"\u003E\u0026nbsp; READ TABLE it_data INDEX sy-tabix.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-size: medium;\"\u003E\u0026nbsp; IF sy-subrc = 0.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-size: medium;\"\u003E\u0026nbsp; \u0026nbsp; \" Perform actions based on the selected item\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/span\u003E\u003Cspan style=\"font-size: medium;\"\u003E\u003Cspan style=\"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=\"text-align: left;\"\u003E\u003Cdiv\u003E\u003Cspan style=\"font-family: courier;\"\u003EAT USER-COMMAND.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; CASE sy-ucomm.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; WHEN 'BACK'.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \" Implement action for the 'BACK' function key\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; WHEN 'EXIT'.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \" Implement action for the 'EXIT' function key\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; WHEN OTHERS.\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; \u0026nbsp; \u0026nbsp; \" Handle other function keys\u003Cbr \/\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u0026nbsp; ENDCASE.\u003C\/span\u003E\u003C\/div\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cbr \/\u003E\u003C\/p\u003E\u003Cp style=\"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=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E\u003Cspan\u003E\u003C!--more--\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\u003Cblockquote\u003E\u003Cdiv style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003EAT LINE-SELECTION.\u003Cbr \/\u003E\u0026nbsp; READ TABLE it_data INDEX sy-tabix.\u003Cbr \/\u003E\u0026nbsp; IF sy-subrc = 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=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: courier;\"\u003E```\u003C\/span\u003E\u003C\/p\u003E\u003C\/blockquote\u003E\u003Cp style=\"text-align: left;\"\u003E\u003Cspan style=\"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":"http:\/\/www.blogger.com\/profile\/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"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":"Binary Data Handling"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Blobs in JavaScript"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Data Storage"},{"scheme":"http://www.blogger.com/atom/ns#","term":"File Manipulation"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Image Upload"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Web Application Development"}],"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=\"separator\" style=\"clear: both; text-align: center;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEigg808vYtYA-CZIeutmSf4XdDe6UFtO7WiFlS_Vl9uquCPNhomMw3tQeM-QLCmb44E1tjnBg8Y8z1ukwjHQGrSsP63UuDG7CKMrKMHgviIjW3nN_yLLI5xRHStiG3nByo5ZUOrowI0bwMjM2eGtFjK6bdVmDdaVd1gaZJyvRVDe5xlD2e6ZrvhIfJuFQ\/s678\/IMG_2672.jpeg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"452\" data-original-width=\"678\" height=\"213\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEigg808vYtYA-CZIeutmSf4XdDe6UFtO7WiFlS_Vl9uquCPNhomMw3tQeM-QLCmb44E1tjnBg8Y8z1ukwjHQGrSsP63UuDG7CKMrKMHgviIjW3nN_yLLI5xRHStiG3nByo5ZUOrowI0bwMjM2eGtFjK6bdVmDdaVd1gaZJyvRVDe5xlD2e6ZrvhIfJuFQ\/s320\/IMG_2672.jpeg\" width=\"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=\"text-align: left;\"\u003E\u003Cspan style=\"background-color: #f4cccc;\"\u003E\u003Ci\u003E\u003Cb\u003Econst imageInput = document.getElementById('image-input');\u003C\/b\u003E\u003C\/i\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #f4cccc;\"\u003E\u003Ci\u003E\u003Cb\u003EimageInput.addEventListener('change', (event) =\u0026gt; {\u003C\/b\u003E\u003C\/i\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #f4cccc;\"\u003E\u003Ci\u003E\u003Cb\u003E\u0026nbsp; const selectedFile = event.target.files[0];\u003C\/b\u003E\u003C\/i\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"background-color: #f4cccc;\"\u003E\u003Ci\u003E\u003Cb\u003E\u0026nbsp; const imageBlob = new Blob([selectedFile], { type: selectedFile.type });\u003C\/b\u003E\u003C\/i\u003E\u003C\/span\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cspan style=\"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=\"background-color: #f4cccc;\"\u003Econst uploadButton = document.getElementById('upload-button');\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u003Cbr \/\u003E\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003EuploadButton.addEventListener('click', () =\u0026gt; {\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; fetch('your-upload-endpoint', {\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; \u0026nbsp; method: 'POST',\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; \u0026nbsp; body: imageBlob\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; })\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; .then(response =\u0026gt; response.json())\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; .then(data =\u0026gt; {\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; \u0026nbsp; \/\/ Handle server response\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; })\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"background-color: #f4cccc;\"\u003E\u0026nbsp; .catch(error =\u0026gt; {\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"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=\"background-color: #f4cccc;\"\u003E\u0026nbsp; });\u003C\/i\u003E\u003C\/b\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci style=\"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":"http:\/\/www.blogger.com\/profile\/06687889588258406801"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"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"}}]}});