{"id":166898,"date":"2026-09-29T16:00:00","date_gmt":"2026-09-29T14:00:00","guid":{"rendered":"https:\/\/e3mag.com\/?p=166898"},"modified":"2026-09-29T15:01:52","modified_gmt":"2026-09-29T13:01:52","slug":"green-abap-for-the-sap-world","status":"publish","type":"post","link":"https:\/\/e3mag.com\/en\/green-abap-fuer-die-sap-welt\/","title":{"rendered":"Green ABAP for the SAP World"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Every digital system requires energy to operate. While hardware is becoming increasingly efficient, inefficient software still forces servers to perform at unnecessarily high levels. Large companies typically manage their business processes using complex SAP systems. The ABAP programming language is at the heart of these applications. In the past, developers often wrote ABAP code with a focus solely on functionality. Today, however, it\u2019s worth paying attention to energy consumption as well. That\u2019s because poor code artificially drives up electricity consumption.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Green ABAP and Clean Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is where the \u201eGreen ABAP\u201c approach comes in. This method directly links sustainability goals to software development. \u201eClean code\u201c plays a huge role in this. This term describes code that is easy to read and maintain. Clean code reduces errors and simplifies future programming optimizations. Code that is easy to read prevents technical debt, conserves hardware resources in the long term, and contributes to achieving climate goals.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">How the Test Was Conducted: The Methodology<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We examined the resource consumption of ABAP code in an empirical analysis. We conducted the tests in a standardized SAP S\/4HANA environment on a training system. The SAP Workload Monitor (ST03N) accurately recorded the performance metrics.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Throughout the process, we consistently compared old, inefficient programs with optimized versions. The comparison is based on four key metrics: CPU time, database response time, total response time, and the amount of data requested.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each test was run exactly ten times to prevent random fluctuations in the measured values. Direct power consumption cannot be easily measured in joules in an SAP system. However, the CPU and database times determined are generally considered reliable indicators of energy consumption. The less processing time a program requires, the less power the server consumes. We examined nine typical programming scenarios, and we present the findings and corresponding code examples below.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 1: Avoid Database Queries in Loops<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We identified repeated database queries as a major performance issue. The inefficient version reads records from the database one row at a time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_select_loop.\n\nDATA: lt_flights TYPE TABLE OF sflight,\n ls_flight  TYPE sflight,\n lv_carrname TYPE scarr-carrname.\n\n\" Load all flight records\nSELECT * FROM sflight INTO TABLE lt_flights.\n\n\" Inefficient: SELECT inside the loop\nLOOP AT lt_flights INTO ls_flight.\n\n  SELECT SINGLE carrname INTO lv_carrname\n    FROM scarr\n    WHERE carrid = ls_flight-carrid.\n\n  WRITE: \/ ls_flight-carrid, ls_flight-connid, lv_carrname.\n\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To optimize performance, all data is loaded into memory in advance. The program then uses fast internal tables for data matching.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_eff_select_loop.\n\nDATA: lt_flights TYPE TABLE OF sflight,\n lt_scarr   TYPE TABLE OF scarr,\n ls_flight  TYPE sflight,\n ls_scarr   TYPE scarr.\n\n\" Load both tables once\nSELECT * FROM sflight INTO TABLE lt_flights.\nSELECT * FROM scarr INTO TABLE lt_scarr.\n\n\" Efficient: in-memory lookup\nLOOP AT lt_flights INTO ls_flight.\n\n  READ TABLE lt_scarr INTO ls_scarr WITH KEY carrid = ls_flight-carrid.\n\n  IF sy-subrc = 0.\n    WRITE: \/ ls_flight-carrid, ls_flight-connid, ls_scarr-carrname.\n  ENDIF.\n\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As a result of this optimization, the database time was reduced by nearly 99 percent.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 2: Inefficient Removal of Duplicates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We tested the ABAP command for deleting duplicates. Without first sorting the data, the system removes only immediately adjacent duplicates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_delete_dupl.\n\nDATA: lt_data TYPE TABLE OF sbook,\n ls_data TYPE sbook.\n\nSELECT * FROM sbook INTO TABLE lt_data\n  WHERE customid = '00001234'.\n\n\" No sorting before deleting duplicates\nDELETE ADJACENT DUPLICATES FROM lt_data\n  COMPARING carrid connid.\n\nLOOP AT lt_data INTO ls_data.\n  WRITE: \/ ls_data-carrid, ls_data-connid.\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In the optimized version, we added a simple sort command before the deletion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_opt_delete_dupl.\n\nDATA: lt_data TYPE TABLE OF sbook,\n ls_data TYPE sbook.\n\nSELECT * FROM sbook INTO TABLE lt_data\n  WHERE customid = '00001234'.\n\n\" Efficient: Sorting before deleting duplicates\nSORT lt_data BY carrid connid.\n\nDELETE ADJACENT DUPLICATES FROM lt_data\n  COMPARING carrid connid.\n\nLOOP AT lt_data INTO ls_data.\n  WRITE: \/ ls_data-carrid, ls_data-connid.\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This small adjustment improved the system's response time by nearly 47 percent. The system now compares the entries much more efficiently.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 3: Radically Reduce Data Volumes at the Source<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We examined the behavior of unfiltered database queries. The inefficient version thoughtlessly loads the entire data table into memory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_select_where.\n\nSELECT * FROM sflight INTO TABLE @DATA(lt_flights).\n\nLOOP AT lt_flights INTO DATA(ls_flight).\n  \" Process all flights, even when not needed\n  WRITE: \/ ls_flight-carrid, ls_flight-connid.\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We moved the filtering process in the optimization directly to the database level by using a specific \u201cWHERE\u201d clause.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_opt_select_where.\n\nSELECT * FROM sflight\n  WHERE carrid = 'LH'\n  INTO TABLE @DATA(lt_flights_filtered).\n\nLOOP AT lt_flights_filtered INTO DATA(ls_flight).\n  \" process only relevant flights\n  WRITE: \/ ls_flight-carrid, ls_flight-connid.\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As a result, the amount of data retrieved immediately dropped by more than 73 percent.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 4: Comparing Tables Effectively<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nested loops often result in exponential computation times when dealing with large amounts of data. We compared this approach with efficient lookup tables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_nested_loop.\n\nDATA: lt_conn    TYPE TABLE OF spfli,\n lt_flights TYPE TABLE OF sflight.\n\nSELECT * FROM spfli INTO TABLE lt_conn.\nSELECT * FROM sflight INTO TABLE lt_flights.\n\nLOOP AT lt_conn INTO DATA(ls_conn).\n\n  LOOP AT lt_flights INTO DATA(ls_flight).\n\n    IF ls_conn-carrid = ls_flight-carrid AND\n ls_conn-connid = ls_flight-connid.\n\n WRITE: \/ ls_conn-carrid, ls_conn-connid, ls_flight-fldate.\n\n    ENDIF.\n\n  ENDLOOP.\n\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We converted the second table into a \u201chashed table\u201d for optimization, so that the program can find matching entries without having to perform extensive searches.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_opt_hashed_lookup.\n\nTYPES: BEGIN OF ty_flight_map,\n carrid TYPE sflight-carrid,\n connid TYPE sflight-connid,\n fldate TYPE sflight-fldate,\n END OF ty_flight_map.\n\nDATA: lt_conn TYPE TABLE OF spfli,\n lt_flight_map TYPE HASHED TABLE OF ty_flight_map\n WITH UNIQUE KEY carrid connid.\n\nSELECT * FROM spfli INTO TABLE lt_conn.\n\nSELECT carrid, connid, fldate\n  FROM sflight\n  INTO TABLE @DATA(lt_flights_small).\n\nLOOP AT lt_flights_small INTO DATA(ls_flight).\n  INSERT ls_flight INTO TABLE lt_flight_map.\nENDLOOP.\n\nLOOP AT lt_conn INTO DATA(ls_conn).\n\n  READ TABLE lt_flight_map INTO DATA(ls_match)\n    WITH KEY carrid = ls_conn-carrid\n             connid = ls_conn-connid.\n\n  IF sy-subrc = 0.\n    WRITE: \/ ls_conn-carrid, ls_conn-connid, ls_match-fldate.\n  ENDIF.\n\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This reduced CPU time by more than 71 percent.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 5: Modularization of Logic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We examined the effects of well-structured code in detail. Logic executed directly within the program runs linearly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient Code (Inline):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_no_function.\n\nDATA: lv_sum TYPE i VALUE 0,\n lv_i   TYPE i.\n\n\" Calculate the sum of the first 10,000 numbers\nDO 10000 TIMES.\n  lv_sum = lv_sum + sy-index.\nENDDO.\n\nWRITE: \/ 'Sum of the first 10,000 numbers:', lv_sum.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We then moved this calculation logic into a separate function module. This minimizes the structural overhead in the system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_with_function.\n\nDATA: lv_result TYPE i.\n\nCALL FUNCTION 'ZTHESIS_CALC_SUM'\n  EXPORTING\n    p_limit = 10000\n  IMPORTING\n    p_sum   = lv_result.\n\nWRITE: \/ 'Sum of the first 10,000 numbers (Function Module):', lv_result.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The corresponding function module:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FUNCTION zthesis_calc_sum.\n\n  DATA lv_index TYPE i.\n\n  p_sum = 0.\n\n  DO p_limit TIMES.\n    lv_index = sy-index.\n    p_sum = p_sum + lv_index.\n  ENDDO.\n\nENDFUNCTION.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The modular version delivered virtually identical performance figures. The main advantage here is that it is easier to maintain for future modifications.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 6: Procedural vs. Object-Oriented<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We compared a simple counting loop with an object-oriented, recursive approach to measure the resource overhead associated with object-oriented programming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Iterative code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_factorial_iterative.\n\nSTART-OF-SELECTION.\n\nDATA: lv_number TYPE i VALUE 10,\n lv_result TYPE i VALUE 1.\n\nDO lv_number TIMES.\n  lv_result = lv_result * sy-index.\nENDDO.\n\nWRITE: \/ 'Iterative factorial (loop) of', lv_number, ':', lv_result.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Object-oriented code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_factorial_oop.\n\nCLASS lcl_factorial DEFINITION.\n\n  PUBLIC SECTION.\n\n METHODS: calculate\n IMPORTING iv_number TYPE i\n RETURNING VALUE(rv_result) TYPE i.\n\nENDCLASS.\n\nCLASS lcl_factorial IMPLEMENTATION.\n\n  METHOD calculate.\n\n    IF iv_number calculate( 10 ).\n\nWRITE: \/ 'Recursive factorial (OOP) of 10:', lv_result.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The object-oriented version consumed about 22 percent more CPU time and is not energy-efficient for such simple operations. However, in large-scale architectures, the advantage of scalability outweighs this in the long run.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 7: Avoiding \u201cSELECT \u201c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Many developers use the \u201cSELECT *\u201d database command for convenience. When they do, the system blindly loads all the columns in a table.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_select_star.\n\nSELECT * FROM sflight\n  INTO TABLE @DATA(lt_flights).\n\nLOOP AT lt_flights INTO DATA(ls_flight).\n  WRITE: \/ ls_flight-carrid, ls_flight-connid, ls_flight-fldate.\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We modified the code so that we explicitly queried only the exact three columns we needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_opt_select_fields.\n\nSELECT carrid, connid, fldate\n  FROM sflight\n  INTO TABLE @DATA(lt_flights_reduced).\n\nLOOP AT lt_flights_reduced INTO DATA(ls_flight).\n  WRITE: \/ ls_flight-carrid, ls_flight-connid, ls_flight-fldate.\nENDLOOP.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This minimal reduction saved over 73 percent of the data volume retrieved.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 8: Clear Control Flow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Clean code requires a clear and predictable flow. We analyzed a loop with many scattered termination conditions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_control_flow.\n\nSELECT carrid, connid, fldate\n  FROM sflight\n  INTO TABLE @DATA(lt_flights).\n\nDATA(lv_found) = abap_false.\n\nLOOP AT lt_flights INTO DATA(ls_flight).\n\n  IF ls_flight-carrid IS INITIAL.\n    CONTINUE.\n  ENDIF.\n\n  IF ls_flight-connid IS INITIAL.\n    CONTINUE.\n  ENDIF.\n\n  IF ls_flight-fldate IS INITIAL.\n    CONTINUE.\n  ENDIF.\n\n  IF ls_flight-carrid = 'XX'.\n    CONTINUE.\n  ELSEIF ls_flight-carrid = 'YY'.\n    CONTINUE.\n  ENDIF.\n\n  IF ls_flight-connid = '9999'.\n    lv_found = abap_true.\n    EXIT.\n  ENDIF.\n\n  WRITE: \/ ls_flight-carrid, ls_flight-connid, ls_flight-fldate.\n\nENDLOOP.\n\nIF lv_found = abap_true.\n  WRITE: \/ 'Special connection found.'.\nENDIF.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To optimize the code, we combined the many jumps into a single, clean control statement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_opt_control_flow.\n\nSELECT carrid, connid, fldate\n  FROM sflight\n  INTO TABLE @DATA(lt_flights).\n\nDATA(lv_found) = abap_false.\n\nLOOP AT lt_flights INTO DATA(ls_flight).\n\n  IF ls_flight-carrid IS INITIAL\n OR ls_flight-connid IS INITIAL\n OR ls_flight-fldate IS INITIAL\n OR ls_flight-carrid = 'XX'\n     OR ls_flight-carrid = 'YY'.\n\n CONTINUE.\n\n  ENDIF.\n\n  IF ls_flight-connid = '9999'.\n    lv_found = abap_true.\n    EXIT.\n  ENDIF.\n\n  WRITE: \/ ls_flight-carrid, ls_flight-connid, ls_flight-fldate.\n\nENDLOOP.\n\nIF lv_found = abap_true.\n  WRITE: \/ 'Special connection found.'.\nENDIF.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This change had virtually no effect on execution time. However, the code is now much more readable and easier to understand.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Case 9: Reducing Unnecessary Memory Usage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Some programs copy large data tables multiple times into memory. They also create huge text buffers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inefficient code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_ineff_memory.\n\nSELECT carrid, connid, fldate\n  FROM sflight\n  INTO TABLE @DATA(lt_flights).\n\nDATA(lt_copy1) = lt_flights.\nDATA(lt_copy2) = lt_copy1.\n\nDATA lv_buffer TYPE string.\n\nLOOP AT lt_copy2 INTO DATA(ls_flight).\n\n  CONCATENATE lv_buffer\n ls_flight-carrid\n ls_flight-connid\n ls_flight-fldate\n    INTO lv_buffer\n    SEPARATED BY space.\n\nENDLOOP.\n\nWRITE: \/ lines( lt_copy2 ).<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We processed the original data directly in the optimized version and avoided creating unnecessary intermediate copies.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Optimized code:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zthesis_opt_memory.\n\nSELECT carrid, connid, fldate\n  FROM sflight\n  INTO TABLE @DATA(lt_flights).\n\nDATA lv_count TYPE i.\n\nlv_count = 0.\n\nLOOP AT lt_flights INTO DATA(ls_flight).\n  lv_count = lv_count + 1.\nENDLOOP.\n\nWRITE: \/ lv_count.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">CPU time dropped by more than 33 percent as a result of this direct access.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Overview of Savings<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Some of the results of the optimization experiments are quite clear. Eliminating database queries within loops reduced database time by nearly 99 percent. CPU time fell by almost 94 percent in this particular test.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Filtering using a \u201eWHERE\u201c condition reduced the amount of data retrieved from the server by over 73 percent. Avoiding the convenient \u201eSELECT *\u201c statement also saved more than 73 percent of the requested data. Clever hashed tables reduced the CPU load when comparing tables by a remarkable 71 percent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Across all nine cases examined, CPU time was reduced by a remarkable 20 to 90 percent in most instances. Database times also decreased dramatically, by 30 to nearly 99 percent. Table 1 provides a complete overview.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Green ABAP has yet to receive much attention, but it is a solid strategy for a far superior software architecture. Optimized code drastically reduces a system\u2019s power consumption. It reduces the load on hardware, lowers a company\u2019s energy costs, and is good for the environment. Development teams need to break a few old habits. Database queries must be strictly bundled, and the amount of data transferred must be kept to a minimum. Tools such as the SAP Code Inspector help with systematic implementation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ever since the introduction of HANA database technology, SAP has been promoting \"code pushdown\"\u2014that is, the systematic offloading of computational tasks to the database layer. Sustainable programming combines technical excellence with important climate protection. Every optimized block of code thus makes a tangible contribution to greener information technology.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-1200x608.png\" alt=\"\" class=\"wp-image-166920\" srcset=\"https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-1200x608-1.png 1200w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-400x203.png 400w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-766x388.png 766w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-100x51.png 100w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-480x243.png 480w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-640x324.png 640w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-960x486.png 960w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-720x365.png 720w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-1168x592.png 1168w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-18x9.png 18w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1-600x304.png 600w, https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/tabelle1.png 1317w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-element-caption\"><em>Table 1: Overview of Savings by Various Key Metrics<\/em><\/figcaption><\/figure>","protected":false},"excerpt":{"rendered":"<p>Software consumes electricity. Especially in large SAP systems, inefficient lines of code add up to massive energy wasters. The \u201eGreen ABAP\u201c concept outlines concrete steps toward a system landscape that is both sustainable and high-performing.<\/p>","protected":false},"author":5881,"featured_media":166899,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","footnotes":""},"categories":[5,45071],"tags":[453,45244,45240,45246,45237,45249,45238,45245,45241,45239,65,38402,45248,45242,45250,236,45247,5959,45243,953],"coauthors":[45234,45236,45235],"class_list":["post-166898","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-management","category-mag-26-10","tag-abap","tag-clean-code","tag-code-pushdown","tag-code-optimierung","tag-cpu-zeit","tag-datenbankoptimierung","tag-datenbankperformance","tag-energieeffizienz","tag-green-abap","tag-green-it","tag-hana","tag-nachhaltigkeit","tag-performance-optimierung","tag-programmierung","tag-ressourceneffizienz","tag-sap","tag-sap-code-inspector","tag-sap-s4-hana","tag-softwarearchitektur","tag-softwareentwicklung","pmpro-has-access"],"acf":[],"featured_image_urls_v2":{"full":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"thumbnail":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-150x150.jpg",150,150,true],"medium":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-400x180.jpg",400,180,true],"medium_large":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-768x346.jpg",768,346,true],"large":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"image-100":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-100x45.jpg",100,45,true],"image-480":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-480x216.jpg",480,216,true],"image-640":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-640x288.jpg",640,288,true],"image-720":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-720x324.jpg",720,324,true],"image-960":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-960x432.jpg",960,432,true],"image-1168":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"image-1440":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"image-1920":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"1536x1536":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"2048x2048":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"trp-custom-language-flag":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-18x8.jpg",18,8,true],"bricks_large_16x9":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"bricks_large":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"bricks_large_square":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku.jpg",1000,450,false],"bricks_medium":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-600x270.jpg",600,270,true],"bricks_medium_square":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-600x450.jpg",600,450,true],"profile_24":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-24x24.jpg",24,24,true],"profile_48":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-48x48.jpg",48,48,true],"profile_96":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-96x96.jpg",96,96,true],"profile_150":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-150x150.jpg",150,150,true],"profile_300":["https:\/\/e3mag.com\/wp-content\/uploads\/2026\/09\/2610_it_rku-300x300.jpg",300,300,true]},"post_excerpt_stackable_v2":"<p>Software verbraucht Strom. Besonders in riesigen SAP-Systemen summieren sich ineffiziente Codezeilen zu gigantischen Energieverschwendern. Das Konzept \u201eGreen Abap\u201c zeigt konkrete Wege zu einer nachhaltigen und gleichzeitig performanten Systemlandschaft auf.<\/p>\n","category_list_v2":"<a href=\"https:\/\/e3mag.com\/en\/category\/it-management\/\" rel=\"category tag\">IT-Management<\/a>, <a href=\"https:\/\/e3mag.com\/en\/category\/mag-26-10\/\" rel=\"category tag\">MAG 26-10<\/a>","author_info_v2":{"name":"Sven Treutler, RKU","url":"https:\/\/e3mag.com\/en\/author\/sven-treutler\/"},"comments_num_v2":"0 comments","_links":{"self":[{"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/posts\/166898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/users\/5881"}],"replies":[{"embeddable":true,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/comments?post=166898"}],"version-history":[{"count":2,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/posts\/166898\/revisions"}],"predecessor-version":[{"id":166925,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/posts\/166898\/revisions\/166925"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/media\/166899"}],"wp:attachment":[{"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/media?parent=166898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/categories?post=166898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/tags?post=166898"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/e3mag.com\/en\/wp-json\/wp\/v2\/coauthors?post=166898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}