Skip to Content
Personal Insights

The ABAP wishlist from the community

Hi everyone, a few days ago I asked myself what I want to archive in 2019 and also reflected what I have done in 2018. Thinking about that one part also was what I expect from ABAP and all the related stuff around it.

And because I have some wishes I also thought ask if someone else have a wish which I do not see or even do not see as problem.

And as you may know, a lot of my blogs are designed with bullet points and because I like best practice I stay with it 🙂

 

1 A Boolean – a real Boolean

When starting with programming (long time ago) I can remember one sentence from my teacher. Always use a Boolean when possible. Do not reinvent the wheel. So this is a wish, I also have, because the Char Boolean is something which hurt me again and again. Not because it is named abap_boolean… a lot developers just put things like that in the coding:

IF var = ‘X’. ##notext

…

better example

IF var = c_x.

or even better


IF var = var_x

"(a few lines above)

var_x = c_x.

This wish comes from James Wood

 

2 Official Editable ALV

Do I have anything to add… this wish comes from Jelena Perfiljeva and you got my vote:-)

 

3 Inline Declarations for Function modules (corrected.. Don’t drink and write)

Something which might be “easy” to add. This is something I do run in frequently, because I always think it’s there. Thomas Fiedler maybe you and your team has some time left next year 😉

Christian Drumm want this and a lot others for sure also (including me)

 

4 LHS (Left hand side) Deklarations

Have to be true… never used it in my other languages, because I never realized how awesome the construct is. Never felt a lot of pain to declare different constants, but yes, right now I know how LHS work and what I could do with, I miss it here;-(

This wish comes from Raphael Pacheco

he also provided a link to learn a more https://en.wikipedia.org/wiki/Immutable_object

 

5 A new Dynpro Painter with Events

A huge wish, but hey, think beyond is my personal mindset and I think also the mindset of Bjoern Goerke

So, what do I expect from a new painter. We do not need to develop everything new… SAP and Microsoft are partners and Microsoft can learn a lot from SAP, but also SAP can learn from Microsoft. I recommend before developing the dynpropainter have a look into the dotnet-IDE . This painter is just awesome.

The webdynpro painter is better, but still far away from this. So please do a painter for the next generation… maybe with the cloud, for the cloud

This wish comes from me.

 

6 Overload for Methods

That’s something I really really really miss. Way back when I have done my ABAP-Certification the trainer said something like: “We decided to not implement it, because we haven’t seen an advantage here”

This statement wondered me at that time and still wondering about it today. So why do we have optional parameters and returning parameters and more over preferred parameters, but no overloading…

Without overload we mix different things in one method implementation which make code not good to read, not good to enhance and not easy to understand. This should be enough reasons to go for it. Of course, we and I can live without it, but please, whoever is responsible to make it happen.. maybe Karl Kessler ?

go_example->do_something( var1 )

go_example->do_something( var1 , var2)

go_example->do_something( var1 , var2, var3)

Again, a wish from me and from some colleagues which aren’t around here…

 

7 Console applications with input-parameter support

I cannot write down here how much I love the ABAP-Console. I use it frequently and also do a lot of presentations with it. Not because it’s so much better than a write-list. No, it’s because it is build in my Eclipse installation and the examples are just there. No need for a second UI… That make presentations so much smoother and of course, if there is a dump… wanted or not it stays exactly where I want it.

Buuuuut, I would love to have also input parameters.. imagine what’s possible

“The secret of ABAP island: LeEclipse Revenge”, “ABAP Wars” or even “What should I code tomorrow questionary”

ok, more serious, you know what I mean and that would help a lot for mock ups or even see how a coding line works together without having all the UI-Problems to test it more flexible.

My personal “please come true” wish.

 

8 A better comment function

This is something I even did not think about. But after I read it I recognized that it could be really better. Why not have a plugin for eclipse, which give you the chance to navigate direct to the ticket in your ticket system. At least if you use Solman it could be an enchancement to the tooling.

The wish comes from Renald Wittwer with this information:

My wish since years: A better comment function. With links to other objects (Mails, Incidents, Word Documents…). I see a changed code, click on the attached document an see the reason of the change.

 

9 RFC and dynpro-support in classes

Ok, now that I’m not sure about wish number 5, maybe this could come true.

A wish by Enno Wulff

 

10 SCP-Account for every SAP-System by default

Is this still ABAP-Related.. I don’t know, but ABAP is in the cloud, so I want to make use of it. But atm it’s not easy to start with, because the customer (also the new ones) need to put extra money on the table, which is perfectly fine for me, but should be direct in the start-price included, to also make use of all the different possibilities to keep the core clean.

A wish from every ABAPer around the world, at least those who want to get the hands dirty with all SAP give us to play with.

 

 

What do you want from ABAP. What have we missed. Comment with your wishlist. Just when we as community share our wishes with SAP there is a chance to bring it in. I realized, that there are wishes I never have thought about and it’s awesome to see, that others have thought about problems (and have possible solutions) I never thought how to solve these.

That’s what I call an outstanding community. Going beyond while sharing and caring.

Merry christmas, happy holidays and we’re going to have an awesome 2019

29 Comments
You must be Logged on to comment or reply to a post.
  • Dear Santa,

     

    Thank you for all the nice features you have spent to ABAP in the last few years. It would be so nice if you will extend the next NextGen ABAP and its environment with enclosed features:

    1.  Extended Object Name Length

    Developers do waste their and other developers time by finding / reading cryptic abbreviations for coding artifacts ( e.g. class / method / FuMo names). This waste can be stopped if the naming restriction for development object will be extended at least to 60 digits. Especially in test methods of abap unit tests this will bring a huge benefit for documenting test method behavior directly in the method name.

     

    2. Downport  SQL / CDS Test Double Frameworks to ECC 6 

    The most important progress in efficient unit testing is coming with the SQL and CDS Test Double Frameworks. Unfortunatlly these frameworks are only available in the latest netweaver stacks which are unavailable for the good old ECC6 where the main important music is playing for us in the next few years. With some systems we are already at the latest S/4 stack but our developers are working in both worlds. To increase acceptance and to reduce the steep learning curve it will be great to participate in this feature  also in the legacy world.

     

    3. Increase the Features for Acceptance of the ABAP Development Tool in eclipse

    ADT is my favorite IDE for writing ABAP code. But unfortunately I am working most of my time with develops in brownfield environments with tons of procedural ABAP code. In this area I it is very hard for me to convince other developers to use this tool. Especially in departments where developers are working in both environments (S/4 and ECC6) they hate the “half baked” ADT IDE because of the missing feature support like:

    • Refactoring of function module / form / module names
    • Missing dynpro support
    • Missing converter for local to global classes (in lower releases?)

    It would be so nice if the complexity of which IDE the developer has to use for what kind of development can be reduced to a single IDE with all needed features included in to make the developers life great again.

     

    4. Add a real Package based Namespace Concept to the ABAP Kernel 

    OK… this sounds like Utopia but dreams are still dreams and  it will be Christmas  tomorrow … so thumbs up…  within our huge custom code base we are working with namespace prefix tags to separate the development from each other. But using this prefix tag in combination with a custom namespace and some technical naming conventions can make it really hard to give the created objects meaningful names. In the  worst case we have constellations like [:cust.namespace:]_[:technical prefix:]_[:prefix tag:]_[:descriptive name:]  where up to 15 digits are blown away by conventions and only 15 digits are available for a semantic description of my object.

    With a package based namespace concept, where the customer namespace will be the part of the first package of my package hierarchy, I will have the freedom for giveing my development objects names for a good readability and have the opportunity to use the same object name in different domain contexts  (e.g. [:cust.namespace top level package:].[:sub level package:].[:object name:]).

     

    Thanks Santa for taking care about this tiny wishes…

     

    I wish all of you a merry X-Mas and a happy new year!

     

    Cheers

     

    Jens

  • Syntatic sugar causes cancer of the semi-colon so I will just ask to make the language more regular. I should not have to understand all those expressions, functions, operand positions to do expression oriented programming:

    • reader position
    • writer position
    • result position
    • functional operand position
    • numeric expression position
    • declaration position
    • character-type expression position
    • general expression position (yes, this always work)
    • etc

    And I want to edit CDS in SE80.

    Please. please please…

    JNN

     

      • If it was so easy, I would be using Marmolata.

        I can maintain my Eclipse installation on my machine, but for many clients, I log into the private network and have no way to install software.

        And I do see why we cannot even have at least display only for CDS in SE80.

          • No problem.

            I am not sure about the needed prerequisites (or  implemented SAP Notes) to make it running, but it is available on my current customer (Netweaver 7.50 SP11)

            If you really need it urgently maybe it is worth the question to the software logistic guys 🙂

            Best regards,

            Sebastian

          • I actually have my poor man’s viewer. But it cannot handle views CDS where SDDLAR has no problem… And editing is still on my wish list.

            REPORT zz_display_cds_view.
            
            PARAMETERS p_cds TYPE ddlname DEFAULT 'DEMO_CDS_SPFLI'.
            
            CLASS lcl_cds_viewer DEFINITION.
              PUBLIC SECTION.
                CLASS-METHODS:
                  display_source IMPORTING iv_name TYPE ddlname,
                  display_content IMPORTING iv_name TYPE ddlname.
            ENDCLASS.
            
            START-OF-SELECTION.
              lcl_cds_viewer=>display_source( p_cds ).
              "lcl_cds_viewer=>display_content( p_cds ).
            
            CLASS lcl_cds_viewer IMPLEMENTATION.
            
              METHOD display_source.
                cl_dd_ddl_handler_factory=>create( )->read( EXPORTING name = iv_name
                                                                      langu = 'E'
                                                            IMPORTING ddddlsrcv_wa = DATA(ls_wa) ).
            
                cl_demo_output=>write( ls_wa-ddtext ).   " Title
                cl_demo_output=>display( ls_wa-source ).
              ENDMETHOD.
            
              METHOD display_content.
                TRY.
                    cl_salv_gui_table_ida=>create_for_cds_view( CONV #( iv_name ) )->fullscreen( )->display( ).
                  CATCH cx_root INTO DATA(lx_error).
                    MESSAGE lx_error TYPE 'I'.
                ENDTRY.
              ENDMETHOD.
            
            ENDCLASS.
    • If blogs.sap.com would have a dislike function, chances would be good that the wish of “editing CDS in SE80” could make it to the top disliked comments 🙂 (no offense)

      Moving to Eclipse is crucial for each ABAP Developer – enabling the editing of CDS in SE80 would be a step in the wrong direction.

  • Wow that is a great wish list. I have a very small wish

    • Flexibility  to use “;” or “.” marking the end of line. It gets confusing when juggling between JS/ABAP
    • Ability to use // or /* to comment lines another much needed feature.

    Thanks

    Nabheet

  • Hi ABAP community,

    Happy new year to all of you. Unfortunately the ABAP-Santa was too busy over XMas to catch up the topics earlier.

    So here at least some comments from my side concerning the wishes to the ABAP development tools.

    1.) CDS Editor for SE80: Since a couple of years the message is clear: Eclipse is the way forward. SE80 is in pure maintenance mode. That means that all new feature will only delivered in ADT and not in SE80 anymore.

    2.) New Dynpro Painter: For sure this is one of the biggest gaps in eclipse that we do not support the development of dynpros with native eclipse editors. Our focus is on web based applications via the Fiori paradigm. So our goal is to have a first class developer experience for these kind of applications based on the RAP programming model. Therefore we do not have any plans to offer dynpro tools in Eclipse.

    3.) Editable ALV: The programming model around the editable ALV is error-prone and not documented. There are no plans to change this. So there will be no offical version of an editable ALV in future.

    4.) Better comment function: I think with ABAP Doc we now have a much better concept in place. In the latest release we support now ABAP Doc Links. Maybe we can extend this concept with links to external sources like tickets in the future.

    5.) Support for GUI/RFC in classes: Indeed we had plans in the past to support this as well. But currently I do not see remote method innovation in the near future.

     

    Regards,

    Thomas.

     

     

     

     

     

    • Hi Thomas,

      First of all, good presentations back in Vegas. Really enjoyed participating on those.

      A quick question on current ABAP strategy.

      Currently, we are moving forward implementing Eclipse ADT right now as main IDE at the company I work.

      However, there are some people mentioning there is a web based ABAP IDE currently begin developed that will replace Eclipse ADT as the main tool. Could you clarify if this is real? as it might impact our current strategy.

      Thanks in advance!

      Best regards.

  • TRY.
        data(includes) = cl_oo_classname_service=>get_all_class_includes( classname ).
      CATCH cx_sy_uncaught_exception.
    ENDTRY.

    instead of

    cl_oo_classname_service=>get_all_class_includes(
      EXPORTING 
        class_name     = classname
      RECEIVING 
        result         = DATA(includes)
      EXCEPTIONS 
        no_such_class = 1 ).
  • Request:

    Open dynpro fields for further enhancements. For eg. We got requests add a search help on a dynpro field which didn’t have one. We got requests to change a field description on a dynpro field where data element enhancement was not feasible (check SAP Note: 440343 where SAP took care of it on a report, but not on the actual table definition). Such simple requests shouldn’t require us to do a ‘modification’ of a screen.

     

  • Hello Everyone,

    is it possible to add to eclipse Package-tree descriptions of packages or other elements.

    For now I can see in tree only IDs but not descriptions.

    Here:

  • system generated variables:

    Here is a feature I would love to have. I’m not sure if this makes sense but I’m gonna put it on the wish list anyway.

    When we use function modules/class methods. The pattern should automatically generate the importing variables instead of the developer typing them in.

    I’ll quote an e.g. from the SAP CRM system. There is this function module called CRM_ORDER_READ which is used quite often in the CRM system. Here is how the function module looks like:

    CALL FUNCTION 'CCRM_ORDER_READ'
    *  EXPORTING
    *    it_header_guid              =     " List of GUIDs
    *    it_item_guid                =     " List of GUIDs
    *    iv_mode                     =     " Processing Mode of Transaction
    *    iv_only_spec_items          =     " Logical Variable
    *    it_requested_objects        =     " Objects to be read
    *    iv_no_auth_check            =     " Logical Variable
    *    it_item_usage_range         =     " Table with Areas for Item Category Usage
    *    iv_subitem_depth            = -1    " Lesen von Unterpositionen (-1 = nicht spezifiziert)
    *    it_object_filter            =     " Filter Criteria When Reading
    *    iv_only_changed_obj         = FALSE    " Logical Variable
    *    iv_status_h_check_relevance = FALSE    " Skip irrelevant items when reading STATUS_H
    *    iv_text_log_single          = FALSE    " Return single text IDs for text log
    *  IMPORTING
    *    et_orderadm_h               =     " Liste mit Admin Header Daten (Datenbank + dynami
    *    et_opport_h                 =     " Opportunity: Communication Structure
    *    et_lead_h                   =     " List with Lead Header Data
    *    et_activity_h               =     " Activity Header: Communication Table
    *    et_lawref_h                 =     " Law Reference Header Segment Object Workarea table type
    *    et_orderadm_i               =     " Item: Database + Dynamic Part
    *    et_opport_i                 =     " Opportunity Item Data: Database + Dynamic Part
    *    et_activity_i               =     " Activity Journal: Database + Dynamic Part
    *    et_product_i                =     " Product Data: Database + Dynamic Part
    *    et_finprod_i                =     " Financing Product Data: Database + Dynamic Part
    *    et_batch                    =     " Batch Properties - Work Table
    *    et_config                   = 
    *    et_struct_i                 = 
    *    et_sales                    =     " Sales Set: Kommunikationstabelle
    *    et_pricing                  = 
    *    et_pricing_i                = 
    *    et_orgman                   =     " Orgdaten Set: Workarea Tabelle
    *    et_shipping                 =     " Shipping Set: Table of Communication Structures
    *    et_customer_h               =     " Header: Database + Dynamic Part
    *    et_customer_i               =     " Item: Database + Dynamic Part
    *    et_service_h                =     " Service Header: Database + Dynamic Part
    *    et_service_i                =     " CRM Service Item: Database + Dynamic Part
    *    et_service_assign           =     " CRM Service Assignments for WFM Core Interface
    *    et_qualif                   =     " Qualification Requirement Set
    *    et_payplan                  =     " Communication Table
    *    et_payplan_d                =     " Communication Table Payment Plan Dates
    *    et_appointment              =     " External Transfer Table for Date Management
    *    et_text                     =     " Text Extension: Work Table
    *    et_schedlin                 =     " Einteilungen: Kommunikationstabelle
    *    et_partner                  =     " Transfer Table for Partners to Partner Processing
    *    et_service_os               = 
    *    et_refobj                   =     " CRM Service: Reference Object - Work Area and Buffer
    *    et_subject                  =     " CRM Service: Subject - Work Area and Buffer
    *    et_cumulat_h                =     " Header Totals
    *    et_status                   = 
    *    et_status_h                 =     " Header Total Status
    *    et_schedlin_i               =     " CRM Schedule Line: Item Work Structure
    *    et_cancel                   =     " Cancellation set: Work table
    *    et_cancel_ir                =     " Cancellation set: Work table
    *    et_cancel_cr                =     " Table Type: Alternative Cancellation Dates
    *    et_billplan                 =     " Work Table
    *    et_billing                  =     " Billing Data: Work Table
    *    et_ordprp_i                 =     " Daten zum PRP
    *    et_ordprp_i_d               =     " Product Detail Data PRP - Table of Work Area
    *    et_ordprp_objl_i_d          =     " Int. Table Object List
    *    et_cumulated_i              =     " Cumulated_I: Internal Tables with Data
    *    et_doc_flow                 =     " Table Type Object Reference
    *    et_exception                =     " One Order: Return Values for Multiple Document Processing
    *    et_pridoc                   =     " Table Category for Document Conditions
    *    et_price_agreements_crm     =     " CRM Price Agreements
    *    et_price_agreements_bbp     =     " BBP Price Agreements
    *    et_config_filter            =     " Config. Filter Data Complete: Communication Table
    *    et_serviceplan_i            =     " Table of Work Areas and Object Buffers in Service Plan
    *    et_serviceplan_ie           =     " Table for Service Plan Extension 1:1
    *    et_extension                =     " Additional Sets and Extensions: Work Structure
    *    et_creditvalues             =     " CRM Credit Values: Table Type for Work Table
    *    et_survey                   =     " CRM Survey: Work Table
    *    et_ac_assign                =     " work table object buffer ac_assign
    *    et_apo_i                    =     " Temporary APO Item Data (for APO 2.0)
    *    et_ext_ref                  = 
    *    et_ubb_ctr_i                =     " UBB Contract Extension Work Table
    *    et_ubb_cr_i                 =     " Work Table: Credit Overview
    *    et_ubb_vol_i                =     " Work Table UBB Volume Set
    *    et_chngproc_h               =     " Change Process Control Data: Work Area
    *    et_chngproc_i               =     " Change Process Control Data: Work Area
    *    et_doc_flow_pnt             =     " Objektpuffer PNT Verknüpfungen Attribute
    *    et_fund_h                   =     " Fund Header Segment Object Workarea table type
    *    et_cla_h                    =     " Claim Header - Data List
    *    et_srv_req_h                =     " Table Type for Service Request data corresponding to DB tabl
    *    et_approval                 =     " Table Type for Approval Header # Work Area Buffer
    *    et_extension2               =     " Additional Sets and Extensions: Work Structure
    *    et_cla_i                    =     " Claim Item - Data List
    *  CHANGING
    *    cv_log_handle               = 
    *  EXCEPTIONS
    *    document_not_found          = 1
    *    error_occurred              = 2
    *    document_locked             = 3
    *    no_change_authority         = 4
    *    no_display_authority        = 5
    *    no_change_allowed           = 6
    *    others                      = 7
    .
    IF sy-subrc <> 0.
    * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    *            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

     

    In the real world you will not be needing all the IMPORTING parameters.  But even if I need half the importing parameters it is a strenuous process to type in the variable for these importing parameters. If we can have a mechanism to generate the variables along with the function module I believe that would be a neat trick.

    Cheers,

    Sai

     

    PS: what would also be awesome is to make this comment box bigger to write such lengthy comments 😛

     

     

      • Yes Florian,

        This option is available in the ABAP editor as well. Hold the ALT key and select the block of code you’d like to copy.

        I’ve started using eclipse for ABAP extensively for the past couple of weeks.

        Cheers,

        Sai

    • Sai Krishna Kowluri, Florian Henninger, Similar functionality is available in SAP GUI editor as well
      This will not create the variables, but will provide the texts which are same as the formal parameters.
      In eclipse it is even better. Just click on the generated texts and press ctrl + 1 command. then it proposes for the creation of that particular variable or for all other variables. Once you select all other variables, then it will be like below:
      Thanks,
      Mahesh