{"id":13698711,"url":"https://github.com/oxgl/AbapOOReports","last_synced_at":"2025-05-04T03:31:55.732Z","repository":{"id":190374447,"uuid":"116696249","full_name":"oxgl/AbapOOReports","owner":"oxgl","description":"ABAP Object Oriented Reporting","archived":false,"fork":false,"pushed_at":"2024-05-15T09:20:03.000Z","size":25,"stargazers_count":4,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-02T19:01:49.066Z","etag":null,"topics":["abap","object-oriented","object-oriented-programming","reporting","sap"],"latest_commit_sha":null,"homepage":null,"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/oxgl.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}},"created_at":"2018-01-08T15:48:51.000Z","updated_at":"2024-05-15T09:20:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"29972b35-86c9-44a0-9a23-e17c96b894e9","html_url":"https://github.com/oxgl/AbapOOReports","commit_stats":null,"previous_names":["oxgl/abapooreports"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgl%2FAbapOOReports","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgl%2FAbapOOReports/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgl%2FAbapOOReports/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgl%2FAbapOOReports/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxgl","download_url":"https://codeload.github.com/oxgl/AbapOOReports/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224383756,"owners_count":17302257,"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","object-oriented","object-oriented-programming","reporting","sap"],"created_at":"2024-08-02T19:00:52.116Z","updated_at":"2024-11-13T03:31:26.059Z","avatar_url":"https://github.com/oxgl.png","language":"ABAP","funding_links":[],"categories":["Categories"],"sub_categories":["💡 Code Templates \u0026 Generators"],"readme":"# AbapOOReports\nABAP Object Oriented Reporting\n\nABAP reports are usually written in non-object oriented blocks of code. Project goal is to create a bridge between this non-OO and OO world. So with this bridge you can create an object oriented report. There are still some limitations.\n\nSo how to create an OO report:\n1. Create an executable report in ABAP editor\n  \n2. Include ZBC_OO_REPORT_BRIDGE:\n```ABAP   \nINCLUDE zcrm_oo_report_bridge.\n```\n\n3. Create a selection screen (if needed)\n```ABAP   \nSELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.\n PARAMETERS:\n   gv_param      AS CHECKBOX.\nSELECTION-SCREEN END OF BLOCK b01.\n```\n  \n4. Create your own report class definition (let's say lcl_report), inherit from the class lcl_report_base and implement abstract method \"start\".\n```ABAP   \nCLASS lcl_report DEFINITION INHERITING FROM lcl_report_base FINAL.\n  PUBLIC SECTION.\n\t METHODS:\n\t   start REDEFINITION.\n...\n```\n     \n5. Add this single line, this will initialize the \"bridge\"\n```ABAP\nset_report_class lcl_report.\n```\n\n6. Implement your class:\n```ABAP\nCLASS lcl_report IMPLEMENTATION.\n\tMETHOD start.\n\tENDMETHOD.\n...\n```\n     \nYou can copy the provided example class ZBC_OO_REPORT_BRIDGE_EXAMPLE. \n\nTo handle selection screen events just redefine the following methods from superclass:\n1. on_load_of_program\nevent is triggered by the ABAP runtime environment when one of the executable programs mentioned above is loaded into the internal session. \n\n2. on_initialization\nmethod for initializing an executable program\n     \n3. on_sel_screen_output\ntriggered by the dynpro event PBO of a selection screen\n     \n4. on_sel_screen_user_command\nfirst you have to register user command handling using the method SET_SEL_SCREEN_VALID_FOR_UCOMM in method ON_INITIALIZATION:\n```ABAP   \nset_sel_screen_valid_for_ucomm( 'FC01' ).\n```\n     \n5. on_sel_screen_exit_command\ncalled when exit command is called on selection screen\n     \n6. on_sel_screen_validation\ncalled before report execution (START-OF-SELECTION)\n     \n7. on_sel_screen_value_request\n     you have to register fields using macros:\n```ABAP   \nregister_value_req_for_param \u003cparam_name\u003e.\nregister_value_req_for_selopt \u003cselopt_name\u003e.\n```\nto get the current values on selection screen do not read directly the parameter/selopt, but call method get_sel_screen_value\n\t \n\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxgl%2FAbapOOReports","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxgl%2FAbapOOReports","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxgl%2FAbapOOReports/lists"}