diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs index 074a85f..3ef9c83 100644 --- a/docs/.vitepress/config.mjs +++ b/docs/.vitepress/config.mjs @@ -14,12 +14,12 @@ export default defineConfig({ ['link', { rel: 'shortcut icon', href: '/docs/favicon.ico' }], ['link', { rel: 'apple-touch-icon', sizes: '180x180', href: '/docs/favicon.ico' }], ['link', { rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css' }], - + ], title: "abap2UI5", description: "Developing Purely in ABAP", themeConfig: { - logo: '/logo.png', + logo: '/logo.png', footer: { message: 'Released under the MIT License', copyright: '2023-present abap2UI5' @@ -28,38 +28,49 @@ export default defineConfig({ pattern: 'https://github.com/abap2UI5/abap2UI5-documentation/tree/main/docs/:path', text: 'Edit this page on GitHub' }, - search: { - provider: 'local' - }, + search: { + provider: 'local' + }, // https://vitepress.dev/reference/default-theme-config nav: [ - { text: 'Guide', items: [ - { text: 'Getting Started', link: '/get_started/get_started' }, - { text: 'Development', link: '/development/development' }, - { text: 'Configuration' , link: '/configuration/configuration' }, - { text: 'Advanced Topics', link: '/advanced/advanced' }, - { text: 'Technical Insights', link: '/insights/insights' }, - { text: 'Resources', link: '/resources/resources' }, - ]}, - { text: 'Links', items: [ - { text: 'Project', items: [ - { text: 'abap2UI5', link: 'https://github.com/abap2UI5/abap2UI5' }, - { text: 'samples', link: 'https://github.com/abap2UI5/samples' }, - { text: 'docs', link: 'https://github.com/abap2UI5/docs' }, - { text: 'issues', link: 'https://github.com/abap2UI5/abap2UI5/issues' }, - ]}, - { text: 'More', items: [ - { text: 'addons', link: 'https://github.com/abap2UI5-addons' }, - { text: 'connectors', link: 'https://github.com/abap2UI5-connectors' }, - { text: 'apps', link: 'https://github.com/abap2UI5-apps' }, - { text: 'downports', link: 'https://github.com/abap2UI5-downports' }, - ]}, - ]}, - { text: '1.134.0', items: [ - { text: 'Changelog', link: '/resources/changelog' }, - { text: 'Contribution', link: '/resources/contribution' }, - { text: 'Support', link: '/resources/support' }, - ]}, + { + text: 'Guide', items: [ + { text: 'Getting Started', link: '/get_started/get_started' }, + { text: 'Development', link: '/development/development' }, + { text: 'Configuration', link: '/configuration/configuration' }, + { text: 'Advanced Topics', link: '/advanced/advanced' }, + { text: 'Under The Hood', link: '/insights/insights' }, + { text: 'Resources', link: '/resources/resources' }, + ] + }, + { + text: 'Links', items: [ + { + text: 'Project', items: [ + { text: 'abap2UI5', link: 'https://github.com/abap2UI5/abap2UI5' }, + { text: 'samples', link: 'https://github.com/abap2UI5/samples' }, + { text: 'docs', link: 'https://github.com/abap2UI5/docs' }, + { text: 'frontend', link: 'https://github.com/abap2UI5/frontend' }, + { text: 'issues', link: 'https://github.com/abap2UI5/abap2UI5/issues' }, + ] + }, + { + text: 'More', items: [ + { text: 'addons', link: 'https://github.com/abap2UI5-addons' }, + { text: 'apps', link: 'https://github.com/abap2UI5-apps' }, + { text: 'downported', link: 'https://github.com/abap2UI5-downported' }, + { text: 'renamed', link: 'https://github.com/abap2UI5-renamed' }, + ] + }, + ] + }, + { + text: '1.134.0', items: [ + { text: 'Changelog', link: '/resources/changelog' }, + { text: 'Contribution', link: '/resources/contribution' }, + { text: 'Support', link: '/resources/support' }, + ] + }, ], sidebar: [ { @@ -71,7 +82,8 @@ export default defineConfig({ { text: 'Quickstart', link: '/get_started/quickstart' }, { text: 'Hello World', link: '/get_started/hello_world' }, { text: 'Sample Apps', link: '/get_started/sample_apps' }, - { text: `What's next?`, link: '/get_started/next' } + { text: 'Use Cases', link: '/get_started/use_cases' }, + { text: `What's next?`, link: '/get_started/next' } ] }, { @@ -79,21 +91,15 @@ export default defineConfig({ link: '/development/development', collapsed: true, items: [ - { text: 'General', link: '/development/general' }, - // { text: 'Messages, Errors', link: '/features/' }, - // { text: 'Translation, 18n', link: '/features/' }, - // { text: 'User Interface', link: '/features/' }, - // { text: 'Data Binding', link: '/features/' }, - // { text: 'Navigation', link: '/features/' }, - // { text: 'Runtime Typed Data', link: '/features/' }, - // { text: 'Debugging', link: '/features/' }, - // { - // text: 'Addons', items: [ - // { text: 'Popups', link: '/api-examples' }, - // { text: 'Layouts & Variants', link: '/api-examples' }, - // { text: 'External Libraries', link: '/markdown-examples' }, - // ] - // }, + { text: 'General', link: '/development/general' }, + // { text: 'View, UI', link: '/features/' }, + // { text: 'Model, Data Binding', link: '/features/' }, + { text: 'Translation, i18n', link: '/development/translation' }, + { text: 'Messages', link: '/development/messages' }, + { text: 'Errors', link: '/development/errors' }, + // { text: 'Popups, Popover', link: '/development/popups' }, + // { text: 'Navigation', link: '/features/' }, + // { text: 'Debugging', link: '/features/' }, ] }, { @@ -101,56 +107,50 @@ export default defineConfig({ link: '/configuration/configuration', collapsed: true, items: [ - { text: 'General', link: '/configuration/general' }, - // { text: 'Productive Usage', link: '/features/' }, - // { text: 'Performance', link: '/features/faq' }, - // { text: 'Security, Authorization', link: '/features/faq' }, - // { text: 'Fiori Launchpad', link: '/features/' }, - // { - // text: 'Installation', - // items: [ - // { text: 'BTP ABAP Environment', link: '/markdown-examples' }, - // { text: 'S/4 Public Cloud', link: '/markdown-examples' }, - // { text: 'S/4 Private Cloud', link: '/markdown-examples' }, - // { text: 'R/3 Netweaver', link: '/markdown-examples' } - // ] - // }, - // { - // text: 'More', - // items: [ - // { text: 'SE80 or ADT', link: '/features/faq' }, - // { text: 'UI5 Versions', link: '/features/faq' }, - // { text: 'ABAP Versions', link: '/features/faq' }, - // ] - // } + { text: 'Setup', link: '/configuration/general' }, + // { text: 'Installation', link: '/configuration/installation'}, + // { text: 'Use in Production', link: '/configuration/productive_usage' }, + // { text: 'Security', link: '/configuration/security' }, + // { text: 'Performance', link: '/configuration/performance' }, + { text: 'Fiori Launchpad', link: '/configuration/launchpad', }, + { text: 'BTP Workzone', link: '/configuration/btp' }, ] }, - { - text: 'Advanced Topics', - link: '/advanced/advanced', - collapsed: true, - items: [ - // { text: 'BTP Workzone', link: '/features/' }, - // { text: 'Stateful Sessions', link: '/features/' }, - // { text: 'Remotely App Call', link: '/features/' }, - { text: 'Downporting', link: '/advanced/downporting/' }, - { text: 'Renaming', link: '/advanced/renaming/' }, - // { text: 'JS Transpiling', link: '/features/' }, - // { - // text: 'Extensibility', - // items: [ - // { text: 'Custom JS', link: '/features/' }, - // { text: 'Custom Controls', link: '/features/' }, - // { text: 'External Libraries', link: '/features/' }, - // ] - // }, + { + text: 'Advanced Topics', + link: '/advanced/advanced', + collapsed: true, + items: [ + { text: 'Stateful Sessions', link: '/advanced/stateful' }, + { text: 'Downporting', link: '/advanced/downporting' }, + { text: 'Renaming', link: '/advanced/renaming' }, + // { text: 'UI5, ABAP Versions', link: '/features/faq' }, + // { text: 'SE80, ADT', link: '/advanced/se80' }, + // { text: 'Extensibility', link: '/advanced/extension' }, + ] + }, + { + text: 'Addons', link: '/addons/addons', collapsed: true, items: [ + { text: 'Runtime Typed Data', link: '/addons/srtti' }, + { text: 'Layouts, Variants', link: '/addons/layout' }, + { text: 'Popups', link: '/addons/popup' }, + { text: 'Launchpad KPIs', link: '/addons/kpi' }, + { text: 'Remote App Calls', link: '/addons/rfc' }, + { text: 'JS Libraries', link: '/addons/ext_js' }, + { text: 'Apps, Community', link: '/addons/apps' }, ] - }, - { - text: 'Technical Insights', + }, + { + text: 'Under The Hood', link: '/insights/insights', collapsed: true, - items: [ { text: 'General', link: '/insights/general' }, ] + items: [ + { text: 'General', link: '/insights/insights' }, + { text: 'open-abap', link: '/insights/open_abap' }, + // { text: 'CI/CD', link: '/insights/ci' }, + // { text: 'abaplint', link: '/insights/ci' }, + // { text: 'open-abap', link: '/advanced/open_abap' }, + ] }, { text: 'Resources', @@ -170,11 +170,12 @@ export default defineConfig({ socialLinks: [ { icon: 'linkedin', link: 'https://www.linkedin.com/company/abap2ui5/' }, { icon: 'github', link: 'https://www.github.com/abap2UI5/abap2UI5' }, - + ] }, - markdown: { + // Aktiviert den "On This Page"-Bereich - outline: "deep" - } + outline: { + level: [2,6] + } }) diff --git a/docs/addons/addons.md b/docs/addons/addons.md new file mode 100644 index 0000000..cfd0604 --- /dev/null +++ b/docs/addons/addons.md @@ -0,0 +1,13 @@ +# Addons + +The abap2UI5 framework is designed with a minimal system footprint, including only essential features by default. However, if you need additional functionality, you can easily install more add-ons: + +1. Runtime Typed Data [(link)](/addons/srtti) +2. Layout-Variant-Management [(link)](/addons/layout) +3. Popup [(link)](/addons/popup) +4. Launchpad KPIs [(link)](/addons/kpi) +5. Remote App Calls [(link)](/addons/rfc) +6. JS Libraries [(link)](/addons/ext_js) +7. Apps & more [(link)](/addons/apps) + +_You created an addon but it is not listed here? Feel free to send a PR, every contribution is welcome!_ \ No newline at end of file diff --git a/docs/addons/apps.md b/docs/addons/apps.md new file mode 100644 index 0000000..60f5c81 --- /dev/null +++ b/docs/addons/apps.md @@ -0,0 +1,19 @@ +--- +outline: [2, 6] +--- +# More + +#### Apps + +Install ready to use abap2UI5 apps for various use cases:
+ [GitHub](https://github.com/abap2UI5-apps) + +#### Community +ABAP Open Source Projects using abap2UI5: +| Repository | Description | +| ------------- | ------------- | +| [The Quest](https://github.com/nomssi/axage) | A wizard's adventure game based on a fork of the AXAGE game engine (ABAP teXt Adventure Game Engine) and abap2UI5. | +| [Advent of Code](https://github.com/joltdx/abap-advent-2023-template) | Template for the Advent of Code 2023 in ABAP | +| [Generic DDIC Searchhelp](https://github.com/axelmohnen/a2UI5-generic_search_hlp) | Generic DDIC searchhelp generator | + + _Your app is not listed her? Feel free to send a PR and extend this file!_ diff --git a/docs/addons/ext_js.md b/docs/addons/ext_js.md new file mode 100644 index 0000000..2e76ccf --- /dev/null +++ b/docs/addons/ext_js.md @@ -0,0 +1,42 @@ +--- +outline: [2, 6] +--- +# JS Libraries + + [Repository](https://github.com/abap2UI5-addons/js-libraries) + +Install this addon to access a wide range of additional JS libraries. Explore the samples to see how they can be implemented. Included Custom Controls: + +#### 1. Driver JS + * Product tours, highlights, contextual help and more + * https://driverjs.com/ +image + +#### 2. bwip-js +* Generate Barcodes +* http://bwip-js.metafloor.com +image + +#### 3. FontAwesome +* Fonts +* https://fontawesome.com +image + +#### 4. ImageMapster +* ImageMapster makes HTML image maps useful +* http://www.outsharked.com/imagemapster +image + +#### 5. Animate.css +* A library of ready-to-use, cross-browser animations for use in your web projects +* https://animate.style +image + +#### 6. Chart.js +* Simple yet flexible JavaScript charting library for the modern web +* https://www.chartjs.org +image +image +
+ +_You use an external library but it is not listed here? Feel free to send a PR to this addon! Special thanks to [choper725](https://github.com/choper725) contributing most of the Libraries_ \ No newline at end of file diff --git a/docs/addons/kpi.md b/docs/addons/kpi.md new file mode 100644 index 0000000..d76c1bb --- /dev/null +++ b/docs/addons/kpi.md @@ -0,0 +1,99 @@ +--- +outline: [2, 6] +--- + +# Launchpad KPIs + + [Repository](https://github.com/abap2UI5-addons/launchpad-kpi) + +Find more information in the blog article on [LinkedIn.](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/) + +##### Key Features +* KPI Connector: Send KPIs of your abap2UI5 Apps to SAP Fiori Launchpad +* User-Friendly: Implement just a single interface and method to return the KPI value +* Project Consistency: Easily integrable with your abap2UI5 apps +* Compatibility: Runs with SAP Netweaver (v.7.30 or higher) or S/4 Private (Standard ABAP) + +##### Functionality +image +
+ +##### Preview +Pasted Graphic 3
+ +##### Approach +(1/4) Use a single Interface: +```abap +INTERFACE z2ui5_if_lp_kpi + PUBLIC. + + METHODS count + IMPORTING + filter TYPE string + RETURNING + VALUE(result) TYPE i. + +ENDINTERFACE. +``` +(2/4) Which can be used on app level to return KPIs: +```abap +CLASS z2ui5_cl_lp_kpi_hello_world DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + INTERFACES z2ui5_if_proxy_kpi. + INTERFACES z2ui5_if_app. + +ENDCLASS. + +CLASS z2ui5_cl_proxy_kpi_hello_world IMPLEMENTATION. + + METHOD z2ui5_if_lp_kpi~count. + "kpi calculation.... + result = 10. + ENDMETHOD. + + METHOD z2ui5_if_app~main. + "abap2UI5 app logic here... + ENDMETHOD. + +ENDCLASS. +``` +(3/4) A generic OData service takes care of everything else (which just returns n dummy entries): +```abap + METHOD /iwbep/if_mgw_appl_srv_runtime~get_entityset. + + DATA lt_result TYPE zcl_z2ui5_proxy_kpi_mpc=>tt_entity. + DATA(lt_filter_cond) = io_tech_request_context->get_filter( )->get_filter_select_options( ). + + TRY. + DATA(lv_classname) = to_upper( lt_filter_cond[ property = `CLASS` ]-select_options[ 1 ]-low ). + CATCH cx_root. + INSERT VALUE #( id = `ERROR_NO_PARAMETER_FOUND_WITH_NAME_CLASS` ) INTO TABLE lt_result. + copy_data_to_ref( EXPORTING is_data = lt_result CHANGING cr_data = er_entityset ). + RETURN. + ENDTRY. + + TRY. + DATA(lv_filter) = to_upper( lt_filter_cond[ property = `FILTER` ]-select_options[ 1 ]-low ). + CATCH cx_root. + ENDTRY. + + DATA li_lp_kpi TYPE REF TO z2ui5_if_lp_kpi. + CREATE OBJECT li_lp_kpi TYPE (lv_classname). + DATA(lv_count) = li_lp_kpi->count( lv_filter ). + + DO lv_count TIMES. + INSERT VALUE #( id = sy-index ) INTO TABLE lt_result. + ENDDO. + + copy_data_to_ref( EXPORTING is_data = lt_result CHANGING cr_data = er_entityset ). + + ENDMETHOD. +``` +(4/4) Maintain the KPI at the Launchpad with the following endpoint: +``` +.../sap/opu/odata/sap/Z2UI5_PROXY_KPI_SRV/ENTITYCollection/$count?$filter=CLASS eq 'z2ui5_cl_proxy_kpi_hello_world' +``` diff --git a/docs/addons/layout.md b/docs/addons/layout.md new file mode 100644 index 0000000..51e1c43 --- /dev/null +++ b/docs/addons/layout.md @@ -0,0 +1,11 @@ +--- +outline: [2, 6] +--- +# Layout-Variant-Management + [Repository](https://github.com/abap2UI5-addons/layout-variant-management)
+Save layouts and variants just like in classic abap with ALVs and Selection Screens. +### Demos + +Google Chrome 2024-09-09 12 14 58
+Google Chrome 2024-09-09 12 15 32 + diff --git a/docs/addons/popup.md b/docs/addons/popup.md new file mode 100644 index 0000000..47c7da8 --- /dev/null +++ b/docs/addons/popup.md @@ -0,0 +1,18 @@ +--- +outline: [2, 6] +--- +# Popups + + [Repository](https://github.com/abap2UI5-addons/popups) + +abap2UI5 provides a collection of built-in popups with basic functionality, as demonstrated [here.](/development/popups) However, for more advanced popup requirements, this addon provides additional options, including: +* F4 Value Help +* Display Transport Requests + + +### Demo + +Google Chrome 2024-09-12 15 18 44 + + +_This addon is constantly evolving. Feel free to contribute by enhancing the popup collection and submitting a PR!_ \ No newline at end of file diff --git a/docs/addons/rfc.md b/docs/addons/rfc.md new file mode 100644 index 0000000..706c6cf --- /dev/null +++ b/docs/addons/rfc.md @@ -0,0 +1,52 @@ +--- +outline: [2, 6] +--- +# Remote App Calls + + [Repository](https://github.com/abap2UI5-addons/rfc-connector) + +Find all information in the blog article [here.](https://www.linkedin.com/pulse/calling-abap2ui5-apps-remotely-via-rfc-abap2ui5-btoue/?trackingId=x648I3DPaEwjw1bW9PNavg%3D%3D) + +### Approach +Remotely call abap2UI5 apps via RFC: +image +
+ +### Installation +Install this repository with abapGit on the system. Install this handler on client system. +Handler: +```abap +CLASS z2ui5_cl_rfc_connector_handler DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + INTERFACES if_http_extension. + + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + +CLASS z2ui5_cl_rfc_connector_handler IMPLEMENTATION. + + METHOD if_http_extension~handle_request. + + DATA(lv_resp) = ``. + CALL FUNCTION 'Z2UI5_FM_RFC_CONECTOR' + DESTINATION 'NONE' "setup your destination here + EXPORTING + iv_method = server->request->get_method( ) + iv_request = server->request->get_cdata( ) + IMPORTING + rv_response = lv_resp. + + server->response->set_header_field( name = `cache-control` value = `no-cache` ). + server->response->set_cdata( lv_resp ). + server->response->set_status( code = 200 reason = `success` ). + + ENDMETHOD. + +ENDCLASS. +``` +Setup destinations in SM50 that both systems can call each other and create an ICF Endpoint to call your abap2UI5 apps. \ No newline at end of file diff --git a/docs/addons/srtti.md b/docs/addons/srtti.md new file mode 100644 index 0000000..3283039 --- /dev/null +++ b/docs/addons/srtti.md @@ -0,0 +1,5 @@ +# Runtime Typed Data + + [Repository](https://github.com/sandraros/S-RTTI) + +Installing this project enables abap2UI5 to use class attributes typed at runtime. \ No newline at end of file diff --git a/docs/advanced/downporting.md b/docs/advanced/downporting.md index 34af47f..0a60ae6 100644 --- a/docs/advanced/downporting.md +++ b/docs/advanced/downporting.md @@ -1,3 +1,10 @@ # Downporting -Downporting the Source Code of abap2UI5 offers the possibilty to install this project on releases lower than ABAP 7.50. Check out [this blog post](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle/) for more information. \ No newline at end of file +Downporting the Source Code of abap2UI5 offers the possibilty to install this project on releases lower than ABAP 7.50. Check out [this blog post](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle/) for more information. + +All downported versions of abap2UI5 and addons can be found [here.](https://github.com/abap2UI5-downported/) + +#### Manual Steps / Known Issues +Adjusted ABAP SQL to OpenSQL: Correct Position of where eg. "WHERE id = id."
+image +
diff --git a/docs/advanced/extension.md b/docs/advanced/extension.md index 80fe2e1..5cc69da 100644 --- a/docs/advanced/extension.md +++ b/docs/advanced/extension.md @@ -1,5 +1,12 @@ # Extension +Work in progress... 🚧 + +You can integrate your own JavasScript code into abap2UI5 by implementing UI5 Custom Controls. Call for example third party libraries or extend your ABAP apps with additional functionalities. + +Check out this guideline to learn how to create your own custom control:
+**https://github.com/abap2UI5/abap2UI5-template_cc_development** + ## Custom JS Use this for example to install additional custom controls [here:](https://github.com/abap2UI5-addons/custom-controls) ```abap diff --git a/docs/advanced/se80.md b/docs/advanced/se80.md new file mode 100644 index 0000000..19b3dca --- /dev/null +++ b/docs/advanced/se80.md @@ -0,0 +1,21 @@ +# SE80 vs ADT + +The + + +abap2UI5 - Developing cloud-ready apps in SE24 + +## Hungarion Notation + +Another interesting topic from this kind of problems. Did you notice that the whole framework is developed in hungarion notation? Ys the good old hungarion notation we are used to from all the old abap stack. Here are the rules: + +1 +2 +3 +4 +5 +6 +7 +source book bla from xyz + +The reason? Its just beautiful! Give it a try and the best: it also works in abap cloud. \ No newline at end of file diff --git a/docs/advanced/stateful.md b/docs/advanced/stateful.md new file mode 100644 index 0000000..a71d6c9 --- /dev/null +++ b/docs/advanced/stateful.md @@ -0,0 +1,3 @@ +# Stateful Sessions + +In Private and On-Premise scenarios abap2UI5 can also be used in stateful mode. Check out [sample 135](https://github.com/abap2UI5/samples/blob/main/src/z2ui5_cl_demo_app_135.clas.abap) or [sample 137.](https://github.com/abap2UI5/samples/blob/main/src/z2ui5_cl_demo_app_137.clas.abap) \ No newline at end of file diff --git a/docs/configuration/ui5_compatibility.md b/docs/advanced/ui5_compatibility.md similarity index 100% rename from docs/configuration/ui5_compatibility.md rename to docs/advanced/ui5_compatibility.md diff --git a/docs/configuration/btp.md b/docs/configuration/btp.md new file mode 100644 index 0000000..35f2ec4 --- /dev/null +++ b/docs/configuration/btp.md @@ -0,0 +1,3 @@ +# BTP Build Workzone + +Integrate your abap2UI5 apps into BTP Services like Build Workzone. Find all information [here.](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re/?trackingId=2iSHIzd%2FRJTq3BwMXzQqCQ%3D%3D) \ No newline at end of file diff --git a/docs/configuration/installation.md b/docs/configuration/installation.md new file mode 100644 index 0000000..acfa4ad --- /dev/null +++ b/docs/configuration/installation.md @@ -0,0 +1,18 @@ +# Installation + +The project is compatible with all ABAP releases and language versions. As explained in the quickstart guide, you can use it by just calling directly the HTTP handler. However, when deploying to end users, there may sometimes be a need for further integration into launchpads or similar environments. + +### BTP ABAP Environment + +### S/4 Public Cloud + +### S/4 Private Cloud + +### R/3 Netweaver + +#### v7.50 + + +#### v7.02 + + diff --git a/docs/configuration/launchpad.md b/docs/configuration/launchpad.md new file mode 100644 index 0000000..7f8f1e0 --- /dev/null +++ b/docs/configuration/launchpad.md @@ -0,0 +1,6 @@ +# Fiori Launchpad + +Integrate your abap2UI5 apps into SAP Fiori Launchpads. Find all informationv here: +[**(1) Installation & Configuration**](https://www.linkedin.com/pulse/copy-abap2ui5-host-your-apps-sap-fiori-launchpad-abap2ui5-ocn2e/)
+[**(2) Features: Title, Parameters, Navigation**](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-23-features-abap2ui5-upche/)
+[**(3) Integration of KPIs**](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/)
diff --git a/docs/configuration/performance.md b/docs/configuration/performance.md new file mode 100644 index 0000000..489dea1 --- /dev/null +++ b/docs/configuration/performance.md @@ -0,0 +1,7 @@ +# Performance + +Performance + frontend model update +schnittstellen + editable tables +Backend \ No newline at end of file diff --git a/docs/configuration/productive_usage.md b/docs/configuration/productive_usage.md index 60e25ce..ee08bb9 100644 --- a/docs/configuration/productive_usage.md +++ b/docs/configuration/productive_usage.md @@ -1,12 +1,19 @@ -# Productive Usage +# Use in Production -#### **1. Can abap2UI5 used in a productive system?** -The project is technically just an implementation of an HTTP handler and can be used as any other HTTP Service also in a productive scenario. -#### **2. Are there any dependencies or preparations needed before using abap2UI5 in a productiv scenario?** -No, but it is recommended to follow these steps before using abap2UI5 apps in a productive scenario: +abapUI5 is technically just an implementation of an HTTP handler and can be used as any other HTTP Service also in a productive scenario. + +#### Preparations + +You can transport abap2UI5 to production just like any other ABAP development. To ensure everything works smoothly, consider the following steps: 1. Transport the abap2UI5 HTTP service and the framework first 2. Sometimes an extra activation of the HTTP service is needed, along with an adjustment of the UI5 bootstrapping 3. Test the "hello world" app to ensure that abap2UI5 works correctly 4. Now continue with tranporting your custom apps... -#### **3. Does a stable version of abap2UI5 exist?** + +#### Stable Version The project will be continuously further developed. Therefore, there is no specific "stable" version. However, adjustments to the public APIs will be kept to a minimum to avoid frequent refactoring of apps. You can use [releases](https://github.com/abap2ui5/abap2ui5/releases/) instead of pulling the main branch and only update from time to time to reduce refactoring efforts. + + +#### Transport + +PICTURE wuth abapGit and then transport \ No newline at end of file diff --git a/docs/configuration/se80.md b/docs/configuration/se80.md new file mode 100644 index 0000000..1b41c02 --- /dev/null +++ b/docs/configuration/se80.md @@ -0,0 +1,3 @@ +# SE80 or ADT + +Abap2ui5 is workbench agnostic \ No newline at end of file diff --git a/docs/configuration/security_authorization.md b/docs/configuration/security.md similarity index 96% rename from docs/configuration/security_authorization.md rename to docs/configuration/security.md index d221707..f252d8a 100644 --- a/docs/configuration/security_authorization.md +++ b/docs/configuration/security.md @@ -1,6 +1,9 @@ # Security & Authorization + +PICTURE with + ## Content-Security-Policy ```abap @@ -10,4 +13,6 @@ ` ui5.sap.com *.ui5.sap.com sapui5.hana.ondemand.com *.sapui5.hana.ondemand.com ` && |\n| && ` sdk.openui5.org *.sdk.openui5.org "/>` ) ). -``` \ No newline at end of file +``` + + diff --git a/docs/development/errors.md b/docs/development/errors.md new file mode 100644 index 0000000..35c5064 --- /dev/null +++ b/docs/development/errors.md @@ -0,0 +1,69 @@ +--- +outline: [2, 4] +--- +# Errors + +### Uncatched Errors + +#### Assert +The most simple apporach is to just use an assert and output the error directly via the http handler: +```abap +CLASS zcl_my_app IMPLEMENTATION. + METHOD z2ui5_if_app~main. + + ASSERT 1 = `This is an error message!`. + + ENDMETHOD. +ENDCLASS. +``` +#### Exception +You can achieve the same behavior with an uncaught exception. The framework will convert it into an assert and stop execution: +```abap +CLASS zcl_my_app IMPLEMENTATION. + METHOD z2ui5_if_app~main. + + RAISE EXCEPTION NEW lcx_error( ). + + ENDMETHOD. +ENDCLASS. +``` + +### Catched Errors + +For end users, it’s better to create a UI5 popup that displays the error: + +#### Exception with Message Box +```abap +CLASS zcl_my_app IMPLEMENTATION. + METHOD z2ui5_if_app~main. + + TRY. + + "implementation here... + RAISE EXCEPTION NEW lcx_error( ). + + CATCH cx_root INTO DATA(lx). + client->message_box_display( |An error occured: { lx->get_text( ) }| ). + ENDTRY. + + ENDMETHOD. +ENDCLASS. +``` + +#### Popup Exception +Or use the built-in error popup to display more details: + +```abap +CLASS zcl_my_app IMPLEMENTATION. + METHOD z2ui5_if_app~main. + TRY. + + "implementation here... + RAISE EXCEPTION NEW lcx_error( ). + + CATCH cx_root INTO DATA(lx). + client->nav_app_call( z2ui5_cl_pop_error=>factory( lx ) ). + ENDTRY. + ENDMETHOD. +ENDCLASS. +``` \ No newline at end of file diff --git a/docs/development/general.md b/docs/development/general.md index a60bfbc..46cfd49 100644 --- a/docs/development/general.md +++ b/docs/development/general.md @@ -3,12 +3,11 @@ outline: [2, 4] --- # General -_Change the HTTP Handler and URL Paramters for various configuration possibilities: Theme, Bootstrapping, Conten-Security-Policy etc. -Check it out [**here.**](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/handler_config.md)_ -### Event +#### Event + +`client->_event( t_arg = value # ( ( ...` -#### client->_event( t_arg = value # ( ( ... ? Check the documentation [here.](https://openui5.hana.ondemand.com/#/topic/b0fb4de7364f4bcbb053a99aa645affe) There are different ways for adressing the event handler ($event, $source, $params) and you can select your value for example with /mProperties/property.
image
diff --git a/docs/development/image.png b/docs/development/image.png new file mode 100644 index 0000000..c450960 Binary files /dev/null and b/docs/development/image.png differ diff --git a/docs/development/messages.md b/docs/development/messages.md new file mode 100644 index 0000000..0170953 --- /dev/null +++ b/docs/development/messages.md @@ -0,0 +1,23 @@ +--- +outline: [2, 4] +--- +# Messages + +For translation, check this section. + +#### Message Toast + + +#### Message Box + + +#### Popup T100/BAPIRET +Most often you will get Message Popups in T100 or bairet format, you can use the following popup to display these messages: +PRs welcome + +#### Popup To Inform +Popup + + +#### Popup To Decide + diff --git a/docs/development/navigation.md b/docs/development/navigation.md new file mode 100644 index 0000000..87a8961 --- /dev/null +++ b/docs/development/navigation.md @@ -0,0 +1,12 @@ +# Navigation + + + +### Backend +Navigation + Backend + Frontend + + + +### Frontend (Launchpad) \ No newline at end of file diff --git a/docs/development/popups.md b/docs/development/popups.md new file mode 100644 index 0000000..d6bcfd8 --- /dev/null +++ b/docs/development/popups.md @@ -0,0 +1,31 @@ +# Popups + + +### Popup + + + +### Popover + + + +### Built-in Popups +a few you already saw at message and errors section. + +``` +. +│─ abap2ui5 + ├─ 01 + ├─ 02 + ├─ 01 (popups) +``` +Feel free to send a PR if you extend a need a new popup. + +#### Popup to Select + + +#### Popup to Confirm + + +#### Popup to + diff --git a/docs/development/translation.md b/docs/development/translation.md new file mode 100644 index 0000000..c2587e8 --- /dev/null +++ b/docs/development/translation.md @@ -0,0 +1,44 @@ +--- +outline: [2, 4] +--- +# Translation, i18n + +In UI5 development, translation is handled through i18n files, with translations stored in frontend artifacts. However, in abap2UI5, all apps are stored entirely in the backend ABAP stack, allowing us to utilize standard ABAP translation mechanisms such as text elements or message texts. + +### Text Elements +In this example, the message can be translated using the ABAP text element mechanism, making it available in different languages without changing the code: +```abap +CLASS z2ui5_cl_my_app DEFINITION PUBLIC. + PUBLIC SECTION. + INTERFACES z2ui5_if_app. +ENDCLASS. + +CLASS z2ui5_cl_my_app IMPLEMENTATION. + METHOD z2ui5_if_app~main. +// [!code focus] + data(lv_message) = 'this is a translatable message in english'(001).// [!code focus] + client->message_box_display( lv_message ).// [!code focus] +// [!code focus] + ENDMETHOD. +ENDCLASS. +``` + +### Messages +In this case, messages are translated using the ABAP message class, which ensures that translations are managed centrally and can be maintained easily in different languages: +```abap +CLASS z2ui5_cl_my_app DEFINITION PUBLIC. + PUBLIC SECTION. + INTERFACES z2ui5_if_app. +ENDCLASS. + +CLASS z2ui5_cl_my_app IMPLEMENTATION. + METHOD z2ui5_if_app~main. +// [!code focus] + MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno // [!code focus] + WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 // [!code focus] + INTO DATA(lv_message).// [!code focus] + client->message_box_display( lv_message ). // [!code focus] +// [!code focus] + ENDMETHOD. +ENDCLASS. +``` \ No newline at end of file diff --git a/docs/development/ui.md b/docs/development/ui.md new file mode 100644 index 0000000..a0d0e6c --- /dev/null +++ b/docs/development/ui.md @@ -0,0 +1,3 @@ +UI + The Ui is basically your freedom + There is a helper which shows \ No newline at end of file diff --git a/docs/get_started/hello_world.md b/docs/get_started/hello_world.md index 2359cb4..149bed2 100644 --- a/docs/get_started/hello_world.md +++ b/docs/get_started/hello_world.md @@ -3,8 +3,8 @@ outline: [2, 4] --- # Hello World -### First App -Create a new class and implement the abap2UI5 interface or just copy&paste this snippet: +### Basic Example +Every abap2UI5 app is an implementation of the `z2ui5_if_app` interface. Create a new class with the following code: ```abap CLASS z2ui5_cl_app_hello_world DEFINITION PUBLIC. PUBLIC SECTION. @@ -13,13 +13,68 @@ ENDCLASS. CLASS z2ui5_cl_app_hello_world IMPLEMENTATION. METHOD z2ui5_if_app~main. - client->message_box_display( `Hello World`) + client->message_box_display( |Hello World!| ). ENDMETHOD. ENDCLASS. ``` +Go back to the landing page in your browser and enter `z2ui5_cl_app_hello_world`. Your first app will then launch. -### More Functions -Now we add some features to get a data exchange between browser and abap: +### View +Now, let's add our first view to display a simple form: +```abap +CLASS z2ui5_cl_app_hello_world DEFINITION PUBLIC. + + PUBLIC SECTION. + INTERFACES z2ui5_if_app. + +ENDCLASS. + +CLASS z2ui5_cl_app_hello_world IMPLEMENTATION. + + METHOD z2ui5_if_app~main. + + client->view_display( z2ui5_cl_xml_view=>factory( + )->page( 'abap2UI5 - Hello World' + )->simple_form( )->content( ns = `form` + )->stringify( ) ). + + ENDMETHOD. +ENDCLASS. +``` + +### Event Handling +Next, we extend the app with an event: +```abap +CLASS z2ui5_cl_app_hello_world DEFINITION PUBLIC. + + PUBLIC SECTION. + INTERFACES z2ui5_if_app. + DATA name TYPE string. + +ENDCLASS. + +CLASS z2ui5_cl_app_hello_world IMPLEMENTATION. + + METHOD z2ui5_if_app~main. + + CASE client->get( )-event. + WHEN 'POST'. + client->message_box_display( |Hello World!| ). + RETURN. + ENDCASE. + + client->view_display( z2ui5_cl_xml_view=>factory( + )->page( 'abap2UI5 - Hello World' + )->simple_form( )->content( ns = `form` + )->button( text = 'post' press = client->_event( 'POST' ) + )->stringify( ) ). + + ENDMETHOD. +ENDCLASS. +``` + +### Data Exchange +Finally, we send data to the backend: ```abap CLASS z2ui5_cl_app_hello_world DEFINITION PUBLIC. @@ -36,12 +91,12 @@ CLASS z2ui5_cl_app_hello_world IMPLEMENTATION. CASE client->get( )-event. WHEN 'POST'. client->message_box_display( |Your name is { name }.| ). + RETURN. ENDCASE. client->view_display( z2ui5_cl_xml_view=>factory( )->page( 'abap2UI5 - Hello World' )->simple_form( )->content( ns = `form` - )->title( 'Input here and send it to the server...' )->label( 'Name' )->input( client->_bind_edit( name ) )->button( text = 'post' press = client->_event( 'POST' ) @@ -50,9 +105,8 @@ CLASS z2ui5_cl_app_hello_world IMPLEMENTATION. ENDMETHOD. ENDCLASS. ``` +And that's it! Set a breakpoint and observe the communication and data updates. Now you can easily play around and further modify the view, event and data exchange. ::: tip **ABAP Language Versions** - -While we need to differ between Standard ABAP and ABAP for Cloud in the HTTP Handler, her - +While we need to distinguish between Standard ABAP and ABAP for Cloud in the HTTP Handler, the apps themselves are independent. You can decide whether to develop your apps compatible with ABAP Cloud or not. ::: \ No newline at end of file diff --git a/docs/get_started/image-10.png b/docs/get_started/image-10.png new file mode 100644 index 0000000..9e0225a Binary files /dev/null and b/docs/get_started/image-10.png differ diff --git a/docs/get_started/image-11.png b/docs/get_started/image-11.png new file mode 100644 index 0000000..1e0bc18 Binary files /dev/null and b/docs/get_started/image-11.png differ diff --git a/docs/get_started/image-12.png b/docs/get_started/image-12.png new file mode 100644 index 0000000..919a567 Binary files /dev/null and b/docs/get_started/image-12.png differ diff --git a/docs/get_started/image-13.png b/docs/get_started/image-13.png new file mode 100644 index 0000000..ae1cc97 Binary files /dev/null and b/docs/get_started/image-13.png differ diff --git a/docs/get_started/image-14.png b/docs/get_started/image-14.png new file mode 100644 index 0000000..3ef01ad Binary files /dev/null and b/docs/get_started/image-14.png differ diff --git a/docs/get_started/image-15.png b/docs/get_started/image-15.png new file mode 100644 index 0000000..dd432ae Binary files /dev/null and b/docs/get_started/image-15.png differ diff --git a/docs/get_started/image-16.png b/docs/get_started/image-16.png new file mode 100644 index 0000000..66be6ef Binary files /dev/null and b/docs/get_started/image-16.png differ diff --git a/docs/get_started/image-17.png b/docs/get_started/image-17.png new file mode 100644 index 0000000..53f621e Binary files /dev/null and b/docs/get_started/image-17.png differ diff --git a/docs/get_started/image-18.png b/docs/get_started/image-18.png new file mode 100644 index 0000000..fbf3fef Binary files /dev/null and b/docs/get_started/image-18.png differ diff --git a/docs/get_started/image-19.png b/docs/get_started/image-19.png new file mode 100644 index 0000000..47dadfe Binary files /dev/null and b/docs/get_started/image-19.png differ diff --git a/docs/get_started/image-20.png b/docs/get_started/image-20.png new file mode 100644 index 0000000..cdd25c7 Binary files /dev/null and b/docs/get_started/image-20.png differ diff --git a/docs/get_started/image-3.png b/docs/get_started/image-3.png new file mode 100644 index 0000000..d36431d Binary files /dev/null and b/docs/get_started/image-3.png differ diff --git a/docs/get_started/image-4.png b/docs/get_started/image-4.png new file mode 100644 index 0000000..2256cd0 Binary files /dev/null and b/docs/get_started/image-4.png differ diff --git a/docs/get_started/image-5.png b/docs/get_started/image-5.png new file mode 100644 index 0000000..da49f8e Binary files /dev/null and b/docs/get_started/image-5.png differ diff --git a/docs/get_started/image-6.png b/docs/get_started/image-6.png new file mode 100644 index 0000000..44deb5f Binary files /dev/null and b/docs/get_started/image-6.png differ diff --git a/docs/get_started/image-7.png b/docs/get_started/image-7.png new file mode 100644 index 0000000..3035dd2 Binary files /dev/null and b/docs/get_started/image-7.png differ diff --git a/docs/get_started/image-8.png b/docs/get_started/image-8.png new file mode 100644 index 0000000..93bfa17 Binary files /dev/null and b/docs/get_started/image-8.png differ diff --git a/docs/get_started/image-9.png b/docs/get_started/image-9.png new file mode 100644 index 0000000..2718068 Binary files /dev/null and b/docs/get_started/image-9.png differ diff --git a/docs/get_started/introduction.md b/docs/get_started/introduction.md index b61d355..676252a 100644 --- a/docs/get_started/introduction.md +++ b/docs/get_started/introduction.md @@ -1,33 +1,50 @@ --- -outline: [2, 4] +outline: [2, 6] --- # Introduction -Welcome to abap2UI5 – an open-source framework that allows you to develop UI5 apps purely in ABAP. +Welcome to abap2UI5 – an open-source project for developing UI5 apps purely in ABAP. -#### Why abap2UI5? -This project offers a pure ABAP approach for developing UI5 apps - entirely without JavaScript, OData or RAP. Just like in the past, when a few lines of ABAP were enough to display input forms and tables using Selection Screens & ALVs. Designed with a minimal system footprint, it works in both on-premise and cloud environments. +##### Features +abap2UI5 offers a pure ABAP approach to developing UI5 apps, without the need for JavaScript, OData, or RAP. Similar to classic ABAP, where a few lines of code were enough to display input forms and tables using Selection Screens & ALVs. -#### Key Features +##### Evolution +Launched in 2023 as a personal project, abap2UI5 began with basic selection screen functionality for ABAP Cloud and an initial blog post on SCN. Thanks to contributions from the ABAP open-source community, the project has continuously evolved. Today, abap2UI5 boasts a wide range of features and is a thriving, community-driven initiative. -* **100% ABAP:** Developing purely in ABAP (no JavaScript, DDL, EML or Customizing) -* **User-Friendly:** Implement a single interface to create a standalone UI5 application -* **Minimal System Footprint:** Uses a simple HTTP handler (no BSP, OData, CDS or RAP) -* **Cloud & On-Premise Ready:** Supports both ABAP Cloud and Standard ABAP -* **Broad System Compatibility:** Runs on all ABAP releases (from NW 7.02 to ABAP Cloud) -* **Easy Installation:** Install via abapGit, no additional app deployment required +##### Compatibility +![alt text](image-15.png){ width=50% } +abap2UI5 runs on all ABAP releases, from NW 7.02 to ABAP Cloud. It is compatible with on-premise landscapes, including S/4HANA Private Cloud, On-Premise, and R/3 NetWeaver AS ABAP 7.50 or higher. It also works in cloud environments like BTP ABAP Environment and S/4HANA Public Cloud. -#### Compatibility +##### Installation +![alt text](image-14.png){ width=50% } +The framework consists only of classes and interfaces and can be easily installed via abapGit – no additional app deployment is required. To communicate with the client, you simply need to create a new HTTP service. -* BTP ABAP Environment (ABAP for Cloud) -* S/4 Public Cloud (ABAP for Cloud) -* S/4 Private Cloud or On-Premise (ABAP for Cloud, Standard ABAP) -* R/3 NetWeaver AS ABAP 7.50 or higher (Standard ABAP) -* R/3 NetWeaver AS ABAP 7.02 to 7.42: Use the [downported repositories](https://github.com/abap2UI5-downports) +##### Development +UI5 apps are created by defining a new ABAP class and implementing a single method from the abap2UI5 interface. Each app is fully supported as an abapGit project, making installation across various systems straightforward. -#### Get Involved -* Questions, feedback or bugs? Check out the [documentation](https://github.com/abap2UI5/abap2UI5-documentation/), [FAQ](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/faq.md) or create an [issue.](https://github.com/abap2UI5/abap2UI5/issues) -* Want to help out? Review our [contribution guidelines](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/CONTRIBUTING.md) to get started. -* Stay updated! Follow us on [LinkedIn.](https://www.linkedin.com/company/abap2ui5) +##### Cloud Ready +abap2UI5 relies solely on released APIs, making it suitable for on-stack and side-by-side extensions using the new ABAP for Cloud language version. In your app implementation, you have full freedom to use new features like CDS, ABAP SQL, and EML. -_We welcome all contributions! Share your knowledge, hunt for or fix bugs, submit a PR, write a comment, give us a like, or simply tell your friends how much you love abap2UI5. This project thrives on your support! 🚀_ \ No newline at end of file +##### Clean Core +By ensuring your app only uses released APIs, your development remains "cloud-ready & upgrade-stable," adhering to clean core principles and ensuring future compatibility. + +##### ABAP Classic +The abap2UI5 framework does not use any newer ABAP syntax features. This makes it also compatible for on-premise and R/3 NetWeaver systems, enabling development in classic ABAP (Tier 3) extensions. A downported version is also available for systems below ABAP 7.50. + +##### Architecture +The abap2UI5 system footprint is kept minimal. In its base version, it includes only the essential classes and interfaces. Additional functionality can be added by installing optional addons. + +##### Security +Since you manually create the HTTP handler for client communication, you have complete control over all external interactions, ensuring security. + +##### Use in Production +abap2UI5 is simply an implementation of an HTTP handler and can be used like any other HTTP service in a productive environment. + +##### Support +Support is provided by the community on a best-effort basis. Submit an issue or join the abap2UI5 community on Slack for help. + +##### Contribution +Contributions are always welcome. Share your knowledge, hunt for or fix bugs, submit a pull request, expand this documentation, leave a comment, or help spread the word about abap2UI5. The project thrives on your involvement! + +##### Sponsor +abap2UI5 is maintained by dedicated developers volunteering their time. If you or your company use abap2UI5 in production but cannot contribute directly, consider supporting the project in other ways. More details can be found [here.](/resources/sponsor) \ No newline at end of file diff --git a/docs/get_started/next.md b/docs/get_started/next.md index 5f1b12c..4cff840 100644 --- a/docs/get_started/next.md +++ b/docs/get_started/next.md @@ -1,18 +1,18 @@ -# Overview +# What's Next? -Next check out the [Development Category](/development/development) to learn more or jump directly to: +Expand your skills and explore more! -### Addons -Spruce up your apps 💅
-https://github.com/abap2UI5-addons +#### Development +Looking to sharpen your development skills? Explore advanced guides and best practices to take your abap2UI5 projects to the next level. Start learning [here.](/development/development) -### Connectors -ABAP apps everywhere 🪐
-https://github.com/abap2UI5-connectors - -### Apps -Put ABAP to work 🚜
-https://github.com/abap2UI5-apps +#### Configuration +Ready to prepare abap2UI5 for production? Follow the configuration guides to ensure a smooth, optimized setup for your system. Get started [here.](/configuration/configuration) +#### Addons +Enhance your abap2UI5 experience with additional features and functionalities by installing new add-ons. Discover them [here.](/addons/addons) +#### Apps +Explore a variety of ready-to-use apps to jumpstart your projects. Find them [here.](/addons/apps) +#### Blogs +Stay connected with the community, learn from others, and share insights by checking out the latest blog posts. Dive into the community content [here.](/resources/blogs) \ No newline at end of file diff --git a/docs/get_started/quickstart.md b/docs/get_started/quickstart.md index 60c0794..3664f30 100644 --- a/docs/get_started/quickstart.md +++ b/docs/get_started/quickstart.md @@ -7,15 +7,21 @@ outline: [2, 4] ### 1. Installation with abapGit Install the project with [abapGit.](https://abapgit.org) + ![alt text](image.png) -### 2. Create HTTP Handler -Create a new HTTP service with the appropriate handler implementation for your system: +::: details ABAP Cloud +![alt text](image-4.png) +::: + + +### 2. Implement HTTP Handler +Create a new package and define a new class for the HTTP implementation: ::: code-group ```abap [ABAP] -CLASS zcl_my_handler_onprem DEFINITION +CLASS zcl_my_abap2UI5_http_handler DEFINITION PUBLIC CREATE PUBLIC. @@ -26,7 +32,7 @@ CLASS zcl_my_handler_onprem DEFINITION PRIVATE SECTION. ENDCLASS. -CLASS zcl_my_handler_onprem IMPLEMENTATION. +CLASS zcl_my_abap2UI5_http_handler IMPLEMENTATION. METHOD if_http_extension~handle_request. @@ -38,7 +44,7 @@ ENDCLASS. ``` ```abap [ABAP Cloud] -CLASS zcl_my_handler_cloud DEFINITION +CLASS zcl_my_abap2UI5_http_handler DEFINITION PUBLIC CREATE PUBLIC. @@ -49,7 +55,7 @@ CLASS zcl_my_handler_cloud DEFINITION PRIVATE SECTION. ENDCLASS. -CLASS zcl_my_handler_cloud IMPLEMENTATION. +CLASS zcl_my_abap2UI5_http_handler IMPLEMENTATION. METHOD if_http_service_extension~handle_request. @@ -61,37 +67,22 @@ ENDCLASS. ``` ::: -Your system structure now looks like this: -``` -. -├─ abap2UI5 -│─ package -│ ├─ zcl_my_handler -``` - - -### 3. Create HTTP Endpoint -Create a new HTTP service and assign the handler implementation you created.
-Now, you can access abap2UI5 from your browser. The abap2UI5 framework and your custom HTTP handler have been successfully installed.
-Your system structure should now look like this:
-``` -. -├─ abap2UI5 -└─ package - ├─ zcl_my_handler - └─ icf artifact -``` - -### 3. Start your App -Call your HTTP service in the browser, press check, and start your app: -image
-image +### 3. Create HTTP Service +Create a new HTTP service. Follow [this guide](https://developers.sap.com/tutorials/abap-environment-create-http-service..html) for ABAP Cloud. +![alt text](image-5.png) +::: details ABAP Cloud +![alt text](image-20.png) +::: +::: tip Security +This project communicates solely with the HTTP service you define, giving you complete control over accessibility, authentication, and other security aspects. +::: -::: warning Information Security 💡 +### 4. First Start +The abap2UI5 framework and your custom HTTP handler have been successfully installed. You can now access the HTTP endpoint from your browser. +image +Press check, and start the test app. -This project communicates solely with the HTTP handler that you define. You have complete control—decide who can access this handler and customize authentication methods. As your needs evolve, you can further refine the handler. See more details [here.](/configuration/general) -::: diff --git a/docs/get_started/sample_apps.md b/docs/get_started/sample_apps.md index 083c3f4..20e6261 100644 --- a/docs/get_started/sample_apps.md +++ b/docs/get_started/sample_apps.md @@ -7,15 +7,19 @@ outline: [2, 4] The [samples repository](https://github.com/abap2UI5/abap2UI5-samples) is the easiest way to learn how to develop with abap2UI5. Try out samples for various use cases, such as tables, lists, trees, and many other UI5 controls. Quickly copy & paste code snippets and accelerate your development process. ### Samples -With over 200 samples available, you can dive right in and start experimenting: +With over 250 samples available, you can dive right in and start experimenting: ![alt text](image-1.png) ### Jump into the Code Don’t forget to press Ctrl+F12 for an in-depth look: ![alt text](image-2.png) -Check out the source code for every sample, and soon you’ll be an abap2UI5 expert! 😉 +Check out the source code for each sample, and soon you’ll be an abap2UI5 expert! ### Live Demo -No system available? You can also run the samples directly in your browser [here.](https://abap2ui5.github.io/web-abap2ui5-samples/) \ No newline at end of file +Don’t have a system available? You can also run the samples directly in your browser [here.](https://abap2ui5.github.io/web-abap2ui5-samples/) + +### Contribution + +The samples are continuously evolving. Have a sample you'd like to share? Feel free to open a PR so others can learn from your example! \ No newline at end of file diff --git a/docs/get_started/use_cases.md b/docs/get_started/use_cases.md new file mode 100644 index 0000000..62e8221 --- /dev/null +++ b/docs/get_started/use_cases.md @@ -0,0 +1,30 @@ +--- +outline: [2, 4] +--- + +# Use Cases + +abap2UI5 can be applied to a variety of use cases, whether you're working in a fully cloud-ready environment or using classic ABAP and calling unreleased APIs. + +Get an overview of all possibilities in [this article](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/?trackingId=6iIX%2FNk%2BCT0%2B4JorQjpRSQ%3D%3D) + + +### On-Stack Extension + +#### Tier 1 Extension +Development that respects the "keep the core clean" principles, ensuring your apps are cloud-ready and upgrade-stable. +![alt text](image-11.png){ width=60% } + +#### Tier 3 Extension +Classic extension — use unreleased APIs and benefit from the freedom to make extensive changes to your system. +![alt text](image-10.png){ width=60% } + +### Side-by-Side Extension + +#### Basic +Separate the development lifecycle of your apps from your S/4 system using only remote API calls. +![alt text](image-8.png){ width=60% } + +#### Software as a Service +Use the same code line across different S/4 systems. +![alt text](image-9.png){ width=60% } diff --git a/docs/insights/general.md b/docs/insights/general.md deleted file mode 100644 index 56de422..0000000 --- a/docs/insights/general.md +++ /dev/null @@ -1,3 +0,0 @@ -# General - -Check out [this blog article](https://community.sap.com/t5/technology-blogs-by-members/abap2ui5-7-technical-background-under-the-hood-of-abap2ui5/ba-p/13566459) to get an understanding of the inner workings of abap2UI5. \ No newline at end of file diff --git a/docs/insights/insights.md b/docs/insights/insights.md index 099cef3..da79a94 100644 --- a/docs/insights/insights.md +++ b/docs/insights/insights.md @@ -1,5 +1,5 @@ -# Technical Insights +# Under The Hood -Gain a deeper understanding of the internal mechanics, architecture, and technical aspects of the framework. +Check out [this blog article](https://community.sap.com/t5/technology-blogs-by-members/abap2ui5-7-technical-background-under-the-hood-of-abap2ui5/ba-p/13566459) and dive into the inner workings of abap2UI5. Work in progress... 🚧 \ No newline at end of file diff --git a/docs/insights/open_abap.md b/docs/insights/open_abap.md new file mode 100644 index 0000000..c57cdf3 --- /dev/null +++ b/docs/insights/open_abap.md @@ -0,0 +1,53 @@ +--- +outline: [2, 4] +--- +# Setup + + [Repository](https://github.com/abap2UI5/setup) + +abap2UI5 can be used with open-abap, providing the ability to run unit tests in GitHub Actions, perform frontend testing, and execute samples directly in your browser—without needing a backend. + +image + +### Functionality +* Downporting with [abaplint](https://abaplint.org/) +* Transpiling to JS with [abaplint/transpiler](https://github.com/abaplint/transpiler) +* Running on Node.js with [open-abap](https://github.com/open-abap/express-icf-shim) +* Service exposing via [express-icf-shim](https://github.com/open-abap/express-icf-shim) +* Browser Tests with [Playwright](https://playwright.dev/) +* Webpacking, Unit Testing... + +### Tasks + +Pull the repository and try out: + +#### Downport & Transpile +``` +npm run init +npm run build +``` +#### Run Unit Tests +``` +npm run unit +``` +#### Run Webservice +``` +npm run express +``` +#### Run Playwright Tests +``` +npm run init_play +npx playwright install --with-deps && npm i +npx playwright test +``` + +#### Webpack Build Strategy + +1. Clone repositories into /src/ +2. Downport /src/ into /downport/ +3. Transpile with express-icf-shim into /output/ +4. Webpack backend + frontend + database into folder build + +``` +npm run webpack:build +``` \ No newline at end of file diff --git a/docs/resources/blogs.md b/docs/resources/blogs.md index 3011e26..b64c3d3 100644 --- a/docs/resources/blogs.md +++ b/docs/resources/blogs.md @@ -1,11 +1,35 @@ +--- +outline: [2, 4] +--- # Blogs & Articles -## 2023 +### 2024 +
-#### General +##### General +- Renaming of ABAP Artifacts - The Power of abaplint & abapGit in ABAP Development [(06.10.2024)](https://www.linkedin.com/pulse/renaming-abap-artifacts-power-abaplint-github-actions-development-kqede/) +- Use Cases in On-Stack & Side-by-Side Extension Scenarios [(04.08.2024)](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/) +- Compatibility for old R/3 Releases: Project Setup, Downporting & Installation [(14.07.2024)](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle/) +- Calling Apps Remotely via RFC [(25.06.2024)](https://www.linkedin.com/pulse/calling-abap2ui5-apps-remotely-via-rfc-abap2ui5-btoue/) +- Community Feedback, New Features & Outlook 2024 [(08.01.2024)](https://blogs.sap.com/2024/01/08/abap2ui5-12-update-ii-community-feedback-new-features-outlook-january-2024/) + +##### SAP Fiori Launchpad Integration +1. Installation & Configuration [(03.06.2024)](https://www.linkedin.com/pulse/copy-abap2ui5-host-your-apps-sap-fiori-launchpad-abap2ui5-ocn2e/?trackingId=Eot1XiIJHbM2a2ebDSF3dg%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B4FqT5lkFQBioKDKsj%2F3ZTw%3D%3D) +2. Setup Title, Parameters & Navigation [(06.06.2024)](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-23-features-abap2ui5-upche/?trackingId=WdScbzEUGgKY%2FS2Ibiy5fA%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B4FqT5lkFQBioKDKsj%2F3ZTw%3D%3D) +3. Integration of KPIs [(07.06.2024)](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/?trackingId=RedZMaZUkHn%2Bv6oSTwtVQw%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B4FqT5lkFQBioKDKsj%2F3ZTw%3D%3D) + +##### SAP BTP Integration +1. Installation & Configuration [(09.06.2024)](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re/?trackingId=jFrPiQOaJTZn6WCiK5gS3g%3D%3D) +2. Setup SAP Build Workzone Websites [(16.06.2024)](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-23-setup-ujdqe/?trackingId=bIEcH1OFtZU8kU2PCwcp%2BA%3D%3D) +3. Setup SAP Mobile Start [(17.06.2024)](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-33-setup-uzure/?trackingId=He2W8FnZZ5UxpbGKHOeLEg%3D%3D) + +### 2023 +
+ +##### General - Development of UI5 Selection Screens in Pure ABAP [(SCN - 22.01.2023)](https://community.sap.com/t5/technology-blogs-by-members/abap2ui5-development-of-ui5-selection-screens-in-pure-abap/ba-p/13553176) -#### Development & Technical Background +##### Development & Technical Background 1. Introduction: Developing UI5 Apps Purely in ABAP [(SCN - 22.02.2023)](https://blogs.sap.com/2023/02/22/abap2ui5-development-of-ui5-apps-in-pure-abap-1-3/) 2. Displaying Selection Screens & Tables [(SCN - 23.02.2023)](https://blogs.sap.com/2023/02/22/abap2ui5-output-of-lists-and-tables-toolbar-and-editable-2-3/) 3. Popups, F4-Help, Messages & Controller Logic [(SCN - 30.03.2023)](https://blogs.sap.com/2023/03/30/abap2ui5-3-4-flow-logic-pop-ups-f4-help/) @@ -18,21 +42,3 @@ 10. Extensions I: Exploring External Libraries & Native Device Capabilities [(SCN - 04.12.2023)](https://blogs.sap.com/2023/12/04/abap2ui5-a3-extensions-i-exploring-external-libraries-native-device-capabilities/) 11. Extensions II: Guideline for Developing New Features in JavaScript [(SCN - 11.12.2023)](https://blogs.sap.com/2023/12/11/abap2ui5-a4-extensions-ii-guideline-for-developing-new-features-in-javascript/) -## 2024 - -#### General -- Community Feedback, New Features & Outlook 2024 [(SCN - 08.01.2024)](https://blogs.sap.com/2024/01/08/abap2ui5-12-update-ii-community-feedback-new-features-outlook-january-2024/) -- Calling Apps Remotely via RFC [(LinkedIn - 25.06.2024)](https://www.linkedin.com/pulse/calling-abap2ui5-apps-remotely-via-rfc-abap2ui5-btoue/) -- Compatibility for old R/3 Releases: Project Setup, Downporting & Installation [(LinkedIn - 14.07.2024)](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle/) -- Use Cases in On-Stack & Side-by-Side Extension Scenarios [(LinkedIn - 04.08.2024)](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/) -- Renaming of ABAP Artifacts - The Power of abaplint & abapGit in ABAP Development [(LinkedIn - 06.10.2024)](https://www.linkedin.com/pulse/renaming-abap-artifacts-power-abaplint-github-actions-development-kqede/) - -#### SAP Fiori Launchpad Integration -1. Installation & Configuration [(LinkedIn - 03.06.2024)](https://www.linkedin.com/pulse/copy-abap2ui5-host-your-apps-sap-fiori-launchpad-abap2ui5-ocn2e/?trackingId=Eot1XiIJHbM2a2ebDSF3dg%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B4FqT5lkFQBioKDKsj%2F3ZTw%3D%3D) -2. Setup Title, Parameters & Navigation [(LinkedIn - 06.06.2024)](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-23-features-abap2ui5-upche/?trackingId=WdScbzEUGgKY%2FS2Ibiy5fA%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B4FqT5lkFQBioKDKsj%2F3ZTw%3D%3D) -3. Integration of KPIs [(LinkedIn - 07.06.2024)](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/?trackingId=RedZMaZUkHn%2Bv6oSTwtVQw%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B4FqT5lkFQBioKDKsj%2F3ZTw%3D%3D) - -#### SAP BTP Integration -1. Installation & Configuration [(LinkedIn - 09.06.2024)](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re/?trackingId=jFrPiQOaJTZn6WCiK5gS3g%3D%3D) -2. Setup SAP Build Workzone Websites [(LinkedIn - 16.06.2024)](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-23-setup-ujdqe/?trackingId=bIEcH1OFtZU8kU2PCwcp%2BA%3D%3D) -3. Setup SAP Mobile Start [(LinkedIn - 17.06.2024)](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-33-setup-uzure/?trackingId=He2W8FnZZ5UxpbGKHOeLEg%3D%3D) \ No newline at end of file diff --git a/docs/resources/contribution.md b/docs/resources/contribution.md index 98a5586..c708fc5 100644 --- a/docs/resources/contribution.md +++ b/docs/resources/contribution.md @@ -1,18 +1,17 @@ # Contribution -This project is open source and developed alongside other projects or during free time. Contributions are greatly appreciated! +abap2UI5 is an open-source project developed in collaboration with the community, often during free time or alongside other projects. Contributions of all kinds are warmly welcomed! +### How You Can Contribute +There are many ways to get involved and make a difference: +* Extend the view by adding a new property +* Create a new control to enhance the existing functionality +* Build custom controls for specific use cases +* Share your demos and apps to showcase what can be achieved with abap2UI5 +* Propose something entirely new—every contribution, no matter the size, is appreciated! -## Contribution -You can contribute in various ways: +### How to Submit a Pull Request (PR) +Ready to contribute? Check out the guidelines on how to create and submit a PR. Don’t hesitate to dive in and start contributing today. -extend the view with a new property (link) -add a completely new control (link) -add a new custom control -share your demos and apps -Or feel free to develop something new - every PR is welcome! - -How to create a PR -See this guidelines here. - -Just try it out and create an issue if you run into problems! \ No newline at end of file +### Need Help? +If you encounter any issues or have questions, feel free to open an issue. \ No newline at end of file diff --git a/docs/resources/image-1.png b/docs/resources/image-1.png new file mode 100644 index 0000000..ec29e42 Binary files /dev/null and b/docs/resources/image-1.png differ diff --git a/docs/resources/image.png b/docs/resources/image.png new file mode 100644 index 0000000..ec29e42 Binary files /dev/null and b/docs/resources/image.png differ diff --git a/docs/resources/references.md b/docs/resources/references.md index debb9d6..79ea0b4 100644 --- a/docs/resources/references.md +++ b/docs/resources/references.md @@ -1,29 +1,22 @@ +--- +outline: [2, 4] +--- # References -### Social Media -* Find abap2UI5 on ABAP Open Source Projects [(dotabap.org)](https://dotabap.org/) -* Featured on SAP Developer News [(youtube - 26.01.2023)](https://www.youtube.com/watch?v=6BDK55xYttM) -* Highlighted in the Boring Enterprise Nerdletter [(newsletter - 08.03.2023)](https://boringenterprisenerds.substack.com/p/34-abap2ui5-sap-cva-burnout-c2c-shortwave) -* Part of the SAP Developer Code Challenge [(SCN - 17.05.2023)](https://groups.community.sap.com/t5/application-development/sap-developer-code-challenge-open-source-abap-week-2/m-p/260727#M1372) -* Showcased at SAP TechEd 2023 [(youtube - 02.11.2023)](https://www.youtube.com/watch?v=kLbF0ooStZs&t=3052s) -* Join the Advent of Code 2023 with abap2UI5 [(SCN - 27.11.2023)](https://blogs.sap.com/2023/11/27/preparing-for-advent-of-code-2023/) -* Featured on SAP Developer News [(youtube - 15.12.2023)](https://www.youtube.com/watch?v=CfH9L03WUCg&t=350s) -* Highlighted in the Boring Enterprise Nerdcast [(youtube - 29.01.2024)](https://youtu.be/svDZKFBvqR8?t=1050) -* Running abap2UI5 Backend in Browser [(LinkedIn - 02.04.2024)](https://www.linkedin.com/pulse/running-abap2ui5-backend-browser-lars-hvam-petersen-l8zff/?trackingId=4mhMb1v%2FSoa8SmDSiuCEpg%3D%3D) -* Check out Cust&Code Videos with abap2UI5 [(youtube - 20.05.2024)](https://www.youtube.com/watch?v=SD1vIt_ty0k) +#### 2024 * Featured on SAP Developer News [(youtube - 14.06.2024)](https://youtu.be/7n16u-Rx8IY?t=7) - -### ABAP Open Source -| Repository | Description | -| ------------- | ------------- | -| [The Quest](https://github.com/nomssi/axage) | A wizard's adventure game based on a fork of the AXAGE game engine (ABAP teXt Adventure Game Engine) and abap2UI5. | -| [Advent of Code](https://github.com/joltdx/abap-advent-2023-template) | Template for the Advent of Code 2023 in ABAP | -| [Generic DDIC Searchhelp](https://github.com/axelmohnen/a2UI5-generic_search_hlp) | Generic DDIC searchhelp generator | +* Check out Cust&Code Videos with abap2UI5 [(youtube - 20.05.2024)](https://www.youtube.com/watch?v=SD1vIt_ty0k) +* Running abap2UI5 Backend in Browser [(LinkedIn - 02.04.2024)](https://www.linkedin.com/pulse/running-abap2ui5-backend-browser-lars-hvam-petersen-l8zff/?trackingId=4mhMb1v%2FSoa8SmDSiuCEpg%3D%3D) +* Highlighted in the Boring Enterprise Nerdcast [(youtube - 29.01.2024)](https://youtu.be/svDZKFBvqR8?t=1050) - _Your app is not listed her? Feel free to send a PR and extend this file!_ +#### 2023 +* Featured on SAP Developer News [(youtube - 15.12.2023)](https://www.youtube.com/watch?v=CfH9L03WUCg&t=350s) +* Join the Advent of Code 2023 with abap2UI5 [(SCN - 27.11.2023)](https://blogs.sap.com/2023/11/27/preparing-for-advent-of-code-2023/) +* Showcased at SAP TechEd 2023 [(youtube - 02.11.2023)](https://www.youtube.com/watch?v=kLbF0ooStZs&t=3052s) +* Part of the SAP Developer Code Challenge [(SCN - 17.05.2023)](https://groups.community.sap.com/t5/application-development/sap-developer-code-challenge-open-source-abap-week-2/m-p/260727#M1372) +* Highlighted in the Boring Enterprise Nerdletter [(newsletter - 08.03.2023)](https://boringenterprisenerds.substack.com/p/34-abap2ui5-sap-cva-burnout-c2c-shortwave) +* Featured on SAP Developer News [(youtube - 26.01.2023)](https://www.youtube.com/watch?v=6BDK55xYttM) -### Companies -Are you using abap2UI5? - _Your app is not listed her? Feel free to send a PR and extend this file!_ -... \ No newline at end of file +#### More +* Find abap2UI5 on ABAP Open Source Projects [(dotabap.org)](https://dotabap.org/) \ No newline at end of file diff --git a/docs/resources/sponsor.md b/docs/resources/sponsor.md index 7f3b921..8a90750 100644 --- a/docs/resources/sponsor.md +++ b/docs/resources/sponsor.md @@ -1,15 +1,18 @@ # Sponsor +![alt text](image-1.png){ width=75% } -### Contributors -This project greatly benefits from its [contributors](https://github.com/abap2UI5/abap2UI5/graphs/contributors) +##### Why Sponsor? +abap2UI5 is a community-driven project built by developers who invest their free time to create, maintain, and improve it. Your sponsorship helps support their efforts and ensures the continued growth and enhancement of the project. Whether you're a company using abap2UI5 or an individual who finds value in it, sponsoring is a way to give back and ensure the longevity of this open-source initiative. +##### Support the Contributors +abap2UI5 thrives on the contributions from its passionate developers. Every contributor brings unique value to the project. Consider sponsoring these developers to help them continue their work. You can find a full list of contributors [here.](https://github.com/abap2UI5/abap2UI5/graphs/contributors) +##### abapGit – The Foundation of ABAP Open Source +abap2UI5 would not be possible without abapGit, the backbone of ABAP open-source development, and the consistently supportive people behind it. If you find abap2UI5 useful, you are also benefiting from abapGit! Explore its contributors and consider sponsoring them [here.](https://abapgit.org/sponsor.html) -### Used Tools - - and supporting tools: -* Code versioning & distribution via [abapGit](https://abapgit.org/) [(authors)](https://abapgit.org/sponsor.html) +##### Tools That Make It Possible +Several open-source projects extend the functionality of abap2UI5, ensure compatibility across different ABAP stacks, and streamline its development process. Consider sponsoring their maintainers: * Code analysis & testing via [abaplint](https://abaplint.org/) & [open-abap](https://github.com/open-abap) [(larshp)](https://github.com/larshp) * JSON handling through [ajson](https://github.com/sbcgua/ajson) [(sbcgua)](https://github.com/sbcgua) * Runtime serialization using [S-RTTI](https://github.com/sandraros/S-RTTI) [(sandrarossi)](https://github.com/sandraros) @@ -18,7 +21,5 @@ This project greatly benefits from its [contributors](https://github.com/abap2UI * Namespace renaming via the [mirror repository](https://github.com/abap2UI5/abap2UI5-mirror-renamed) by [abaplint](https://abaplint.org/) [(larshp)](https://github.com/larshp) * Browser testing with [Playwright](https://playwright.dev/) & [web-abap2UI5](https://github.com/abap2UI5/abap2UI5-web) [(larshp)](https://github.com/larshp) * Live demos running via [web-abap2ui5-samples](https://github.com/abap2UI5/web-abap2ui5-samples) [(larshp)](https://github.com/larshp) -* Developed on an [ABAP Cloud Dev Trial 2022](https://hub.docker.com/r/sapse/abap-cloud-developer-trial) [(hosted by Nuve Platform)](https://www.nuveplatform.com/) - -### Social Media \ No newline at end of file +_Supporting any of these projects and contributors, whether through financial sponsorship or by spreading the word, helps keep abap2UI5 and the entire ABAP open-source community thriving!_ \ No newline at end of file diff --git a/docs/resources/support.md b/docs/resources/support.md index 6538157..aa48546 100644 --- a/docs/resources/support.md +++ b/docs/resources/support.md @@ -1,7 +1,9 @@ # Support -If you find any bugs or unexpected behavior, please open an issue. If you require a missing functionality, opening an issue can also help to determine if the project can be extended in this direction. +Support for abap2UI5 is provided by the community on a best-effort basis. -It is always helpful if you could provide a working code snippet of your application that reproduces the problem. This enables quickly identifying the cause of the error by copying and pasting it into another system. +If you encounter any bugs or unexpected behavior, please open an [issue.](https://github.com/abap2UI5/abap2UI5/issues) Including a code snippet that reproduces the issue is always helpful, as it allows others to quickly test and identify the problem. +Join the abap2UI5 channel on [Slack](https://communityinviter.com/apps/abapgit/abap) to ask questions, share insights, or get help from fellow developers. +_If you need a specific feature that isn’t available yet, opening an issue is a great way to discuss potential extensions to the project._ \ No newline at end of file