{"id":15148469,"url":"https://github.com/furkancosgun/abap-easy-ui","last_synced_at":"2026-01-31T21:38:18.858Z","repository":{"id":256157146,"uuid":"854247281","full_name":"furkancosgun/ABAP-EASY-UI","owner":"furkancosgun","description":"ABAP Easy UI is a library designed to simplify the creation of user interfaces in ABAP.","archived":false,"fork":false,"pushed_at":"2024-09-09T07:20:32.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-22T18:08:42.466Z","etag":null,"topics":["abap","abapgit","custom","easy","layout","oop","screen","widget"],"latest_commit_sha":null,"homepage":"","language":"ABAP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/furkancosgun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-08T18:59:38.000Z","updated_at":"2024-09-09T07:21:43.000Z","dependencies_parsed_at":"2024-09-09T10:06:21.337Z","dependency_job_id":"bdacb5f9-d898-4603-a406-142ebd47a8df","html_url":"https://github.com/furkancosgun/ABAP-EASY-UI","commit_stats":null,"previous_names":["furkancosgun/abap-easy-ui"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/furkancosgun/ABAP-EASY-UI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2FABAP-EASY-UI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2FABAP-EASY-UI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2FABAP-EASY-UI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2FABAP-EASY-UI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/furkancosgun","download_url":"https://codeload.github.com/furkancosgun/ABAP-EASY-UI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkancosgun%2FABAP-EASY-UI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261338999,"owners_count":23143900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abap","abapgit","custom","easy","layout","oop","screen","widget"],"created_at":"2024-09-26T13:03:57.349Z","updated_at":"2026-01-31T21:38:18.831Z","avatar_url":"https://github.com/furkancosgun.png","language":"ABAP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# ABAP Easy UI\n\nABAP Easy UI is a library designed to simplify the creation of user interfaces in ABAP. It provides a flexible and powerful way to create and manage screens, layouts, and widgets with minimal code. This project supports various UI components such as labels, inputs, radio buttons, checkboxes, and buttons, and offers easy integration with subscreens.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE). See the LICENSE file for details.\n\n## Contents\n\n- [Row-Column Example](#row-column-example)\n- [Label-Input Example](#label-input-example)\n- [Radiobutton-Checkbox-Pushbutton Example](#radiobutton-checkbox-pushbutton-example)\n- [Custom Container Example](#custom-container-example)\n- [Subscreen Example](#subscreen-example)\n\n### Row-Column Example\n\nThis example demonstrates how to use rows and columns to organize UI components.\n\n```abap\nINITIALIZATION.\n  DATA(lo_screen) = NEW zcl_easy_ui_screen(\n    repid = sy-repid\n    dynnr = '0100'\n  ).\n\nSTART-OF-SELECTION.\n  DATA(lo_main_col) = NEW zcl_easy_ui_col( ).\n  DATA(lo_row)      = NEW zcl_easy_ui_row( ).\n  DATA(lo_sub_col)  = NEW zcl_easy_ui_col( ).\n\n  \" Add widgets to the main column\n  lo_main_col-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label( 'Hello from COL' )\n  ).\n\n  \" Add multiple widgets to the row\n  lo_row-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( 'Hello from ROW 1' ) ).\n  lo_row-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( 'Hello from ROW 2' ) ).\n  lo_row-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( 'Hello from ROW 3' ) ).\n\n  \" Add widgets to the sub-column\n  lo_sub_col-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( 'Hello From Other COL 1' ) ).\n  lo_sub_col-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( 'Hello From Other COL 2' ) ).\n  lo_sub_col-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( 'Hello From Other COL 3' ) ).\n\n  \" Nest layouts: Add sub-column to the row, and row to the main column\n  lo_row-\u003eadd_col( io_layout = lo_sub_col ).\n  lo_main_col-\u003eadd_row( io_layout = lo_row ).\n\n  \" Set the screen layout\n  lo_screen-\u003eset_layout( io_layout = lo_main_col ).\n\n  \" Call screen 0100\n  CALL SCREEN 0100.\n```\n\n### Label-Input Example\n\nThis example shows how to create a UI with labels and input fields.\n\n```abap\nTABLES: scarr.\n\nINITIALIZATION.\n  DATA(lo_screen) = NEW zcl_easy_ui_screen(\n    repid = sy-repid\n    dynnr = '0100'\n  ).\n\nSTART-OF-SELECTION.\n  DATA(lo_layout) = NEW zcl_easy_ui_col( ).\n\n  \" Add header label\n  DATA(lo_title) = NEW zcl_easy_ui_label(\n    label = 'Scarr Table Example'\n  ).\n  lo_layout-\u003eadd_widget( io_widget = lo_title ).\n\n  \" First row: Label and input for Carrid\n  DATA(lo_row1) = NEW zcl_easy_ui_row( ).\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label(\n      label  = 'Carrid:'\n      width  = 10\n    )\n  ).\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_input(\n      fieldname = 'SCARR-CARRID'\n    )\n  ).\n\n  \" Second row: Label and input for Carrname\n  DATA(lo_row2) = NEW zcl_easy_ui_row( ).\n  lo_row2-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label(\n      label  = 'Carrname:'\n      width  = 10\n    )\n  ).\n  lo_row2-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_input(\n      fieldname = 'SCARR-CARRNAME'\n    )\n  ).\n\n  \" Add rows to the layout\n  lo_layout-\u003eadd_row( io_layout = lo_row1 ).\n  lo_layout-\u003eadd_row( io_layout = lo_row2 ).\n\n  \" Set the screen layout\n  lo_screen-\u003eset_layout( io_layout = lo_layout ).\n\n  \" Call screen 0100\n  CALL SCREEN 0100.\n```\n\n### Radiobutton-Checkbox-Pushbutton Example\n\nThis example demonstrates the integration of radio buttons, checkboxes, and push buttons into a screen.\n\n```abap\n\nDATA: BEGIN OF gs_context,\n        BEGIN OF gender,\n          man   TYPE boolean,\n          woman TYPE boolean,\n        END OF gender,\n        chckbox TYPE boolean,\n      END OF gs_context.\n\nINITIALIZATION.\n  DATA(lo_screen) = NEW zcl_easy_ui_screen(\n    repid = sy-repid\n    dynnr = '0100'\n  ).\n\nSTART-OF-SELECTION.\n  DATA(lo_layout) = NEW zcl_easy_ui_col( ).\n\n  \" Radio button section\n  DATA(lo_row1) = NEW zcl_easy_ui_row( ).\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label( label = 'Choose your gender:' )\n  ).\n\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label( label = 'Man' )\n  ).\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_radiobutton(\n      fieldname = 'GS_CONTEXT-GENDER-MAN'\n      group     = 'GENDER'\n    )\n  ).\n\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label( label = 'Woman' )\n  ).\n  lo_row1-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_radiobutton(\n      fieldname = 'GS_CONTEXT-GENDER-WOMAN'\n      group     = 'GENDER'\n    )\n  ).\n  lo_layout-\u003eadd_row( io_layout = lo_row1 ).\n\n  \" Checkbox section\n  DATA(lo_row2) = NEW zcl_easy_ui_row( ).\n  lo_row2-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label( label = 'Bla Bla Bla:' )\n  ).\n  lo_row2-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_label( label = 'I agree' )\n  ).\n  lo_row2-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_checkbox(\n      fieldname = 'GS_CONTEXT-CHCKBOX'\n    )\n  ).\n  lo_layout-\u003eadd_row( io_layout = lo_row2 ).\n\n  \" Pushbutton section\n  DATA(lo_row3) = NEW zcl_easy_ui_row( ).\n  lo_row3-\u003eadd_widget(\n    io_widget = NEW zcl_easy_ui_button(\n      label  = |{ icon_system_save } Save|\n      fcode  = 'SAVE'\n    )\n  ).\n  lo_layout-\u003eadd_row( io_layout = lo_row3 ).\n\n  \" Set the screen layout\n  lo_screen-\u003eset_layout( io_layout = lo_layout ).\n\n  \" Call screen 0100\n  CALL SCREEN 0100.\n```\n\n### Custom Container Example\n\nThis example illustrates how to use custom containers to manage complex layouts and widget arrangements.\n\n```abap\nDATA: gt_scarr     TYPE TABLE OF scarr,\n      go_salv      TYPE REF TO cl_salv_table,\n      go_container TYPE REF TO cl_gui_custom_container.\n\nCONSTANTS: gc_container_name TYPE char2 VALUE 'CC'. \" Custom container name\n\nINITIALIZATION.\n  DATA(lo_screen) = NEW zcl_easy_ui_screen(\n    repid = sy-repid\n    dynnr = '0100'\n  ).\n\nSTART-OF-SELECTION.\n  \" Fetch SCARR data\n  SELECT * FROM scarr INTO TABLE gt_scarr.\n\n  \" Create main layout\n  DATA(lo_layout) = NEW zcl_easy_ui_col( ).\n\n  \" Add a custom container widget to the layout\n  lo_layout-\u003eadd_widget( io_widget = NEW zcl_easy_ui_container(\n    fieldname = gc_container_name\n    width     = 100\n    height    = 20\n  ) ).\n\n  \" Set the screen layout and call screen\n  lo_screen-\u003eset_layout( io_layout = lo_layout ).\n  CALL SCREEN 0100.\n\n*\u0026---------------------------------------------------------------------*\n*\u0026      Module  STATUS_0100  OUTPUT\n*\u0026---------------------------------------------------------------------*\nMODULE status_0100 OUTPUT.\n  SET PF-STATUS '0100'.\n\n  \" Create the container and SALV table if not already created\n  IF go_salv IS NOT BOUND.\n    TRY.\n        \" Create the GUI container for the custom area\n        CREATE OBJECT go_container\n          EXPORTING\n            container_name = gc_container_name.\n\n        \" Create the SALV table and bind it to the container\n        cl_salv_table=\u003efactory(\n          EXPORTING\n            r_container = go_container\n          IMPORTING\n            r_salv_table = go_salv\n          CHANGING\n            t_table = gt_scarr\n        ).\n\n        \" Optimize columns and enable all functions\n        go_salv-\u003eget_columns( )-\u003eset_optimize( ).\n        go_salv-\u003eget_functions( )-\u003eset_all( ).\n        go_salv-\u003edisplay( ).\n\n      CATCH cx_salv_msg INTO DATA(lx_salv_error).\n        MESSAGE lx_salv_error-\u003eget_text( ) TYPE 'E'.\n    ENDTRY.\n  ELSE.\n    \" Refresh the table if it already exists\n    go_salv-\u003erefresh( ).\n  ENDIF.\nENDMODULE.\n```\n\n### Subscreen Example\n\nThis example shows how to use subscreens to modularize and organize UI components effectively.\n\n```abap\n\nCONSTANTS: gc_subscreen_name1 TYPE fieldname VALUE 'SUBSCR1',\n           gc_subscreen_name2 TYPE fieldname VALUE 'SUBSCR2'.\n\nINITIALIZATION.\n  DATA(lo_screen_0100)  = NEW zcl_easy_ui_screen( repid = sy-repid dynnr = '0100' ).\n  DATA(lo_screen_0001)  = NEW zcl_easy_ui_screen( repid = sy-repid dynnr = '0001' ).\n  DATA(lo_screen_0002)  = NEW zcl_easy_ui_screen( repid = sy-repid dynnr = '0002' ).\n\nSTART-OF-SELECTION.\n  \" Create main layout\n  DATA(lo_layout) = NEW zcl_easy_ui_row( ).\n\n  \" Add subscreens to main layout\n  lo_layout-\u003eadd_widget( io_widget = NEW zcl_easy_ui_subscreen(\n    fieldname = gc_subscreen_name1\n    width     = 30\n    height    = 20\n  ) ).\n\n  lo_layout-\u003eadd_widget( io_widget = NEW zcl_easy_ui_subscreen(\n    fieldname = gc_subscreen_name2\n    width     = 30\n    height    = 20\n  ) ).\n\n  lo_screen_0100-\u003eset_layout( io_layout = lo_layout ).\n\n  \" Prepare subscreen 1 layout\n  DATA(lo_layout1) = NEW zcl_easy_ui_col( ).\n  lo_layout1-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( label = 'Hello From 0001 Subscreen' ) ).\n  lo_screen_0001-\u003eset_layout( io_layout = lo_layout1 ).\n\n  \" Prepare subscreen 2 layout\n  DATA(lo_layout2) = NEW zcl_easy_ui_col( ).\n  lo_layout2-\u003eadd_widget( io_widget = NEW zcl_easy_ui_label( label = 'Hello From 0002 Subscreen' ) ).\n  lo_screen_0002-\u003eset_layout( io_layout = lo_layout2 ).\n\n  \" Call main screen\n  CALL SCREEN 0100.\n```\n\n## Usage\n\nRefer to the examples provided in the `Contents` section to understand how to use various components and features of the ABAP Easy UI library.\n\nFeel free to adjust these suggestions based on your specific needs or the context of your project!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkancosgun%2Fabap-easy-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurkancosgun%2Fabap-easy-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkancosgun%2Fabap-easy-ui/lists"}