cancel
Showing results for 
Search instead for 
Did you mean: 

Stuff SAP could easily fix - rant / wish list

Jelena
Active Contributor
4,183

Since SAP still has not opened any Idea-Place-like site for the improvement suggestions, this place seems as good as any to start a wish list / rant combination.

And I'm not even talking about big stuff like why there is no version control for the forms or why there is no billing status for the orders in the delivery-related billing scenario or anything like that. It's the "small potatoes" that I bet would take SAP all but 5 lines of code and some goodwill to make work.

For example, in SE80 I right-click on the report and pick Create -> Transaction from the menu. Even though clearly I'm creating a transaction for a report (did I mention I right-clicked on it?), it's still proposing 'program and screen' transaction type. Oh-kay... But even after I chose the right transaction type why on earth can't SAP fill in the report name here?

Hmm, which program could this transaction be for... How about the one that I've just right-clicked on?! Ugh...

Accepted Solutions (1)

Accepted Solutions (1)

JL23
Active Contributor

I wish they would fix all the links in their KBAs which are  pointing to OSS notes on  css.wdf.sap.corp... which cannot be opened by the normal folks.

Jelena
Active Contributor
0 Kudos

Good point. I'm also not sure why there is no easy way to signal documentation issues with the note  or incorrect links? E.g. Amazon has a link 'report an issue with this page' where anyone can tell them that product description is wrong and such. Does SAP really believe the customers need to go through all the trouble of entering an incident for that?

ErvinSzolke
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi Jürgen,

I pinged the KBA Process Owner to look into this.

Cheers,

Ervin

JL23
Active Contributor
0 Kudos

Here is example, this KBA has links to 4 different notes and for all I get the error "host name css.wdf.sap.corp not resolvable" : 1915844 - How the system valuates a Goods Receipt for a Purchase Order

matt
Active Contributor
0 Kudos

Every time I see KBA, I automatically render it as a "Keep up at the Back Article", or, depending on mood, Kan't Be ...er... bothered...

Former Member
0 Kudos

when i see those i usually put in the 'websmpxxx.sap-ag.de' and that usually works for the 'released' notes.

Answers (52)

Answers (52)

former_member221827
Active Participant

The compiler is having a bad day and is tired of my crap.  I think I finally sent it over the edge.

Former Member
0 Kudos

Not yet "over the edge" I think. It's standing right at the edge, trying out the echo...

Jelena
Active Contributor
0 Kudos

LOL Chris - it's the SAP equivalent of "umbrella... ella... ella". I've mentioned a similar case in another post ("Coded humor", I think). I've seen quite a few of those, not sure what's the deal there. I wonder if might know.

While I'm here, here is another good one. When creating the background jobs in SM36 and adding the steps, my own user ID is always proposed by default. But in Production we never use the personal user IDs in the steps. Yet instead of remembering the last user ID entered, every step is proposing my own again and again. It's rather annoying when creating large jobs.

Actually it would be nice to see some improvements in SM36 UI overall, those screens must have not changed since the 70s.

Matt_Fraser
Active Contributor
0 Kudos

I think the idea is to encourage us all to move to the Redwood central scheduler tool.... why would we do that if SM37/SM36 were to actually have the needed functionality?

horst_keller
Product and Topic Expert
Product and Topic Expert
0 Kudos

A well know bug in translation of TRMSG that should be fixed by now (if I remember correctly, I was  one who reported it) ...

Former Member
0 Kudos

Have you tried SM36WIZ?

Cheers,

Julius

hardyp180
Active Contributor
0 Kudos

I just had a play with SM36WIZ. Apart from looking pretty I can't see how it is any faster, or involves less button clicks than the normal SM36.

It also didn't seem to ask me what user to run the job under, which was the point of the original post.

Former Member
0 Kudos

I understood the comment to be about ancient screens and more user friendly UI.

I speculate that SM36WIZ not being capable of changing the step user is that it's functional intention was a more user friendly way for non-admins to schedule jobs in the system without the ability to change the step user.

But that the job can be made periodic then contradicts this assumption so should not be there either and can be controlled via S_BTCH_ADM = 'P' ( SAP Note 1716340).

I also agree that the step user should be there because that can since the beginning of time be controlled via S_BTCH_NAM.

What IMO is also missing if it is meant to be an end user transaction is that the end user can select the program here. That is functionally equivalent to SA38 authorization to attempt to run any report. Correct would be to offer a transaction which checks AUTHORITY_CHECK_TCODE and is limited to report type transactions and parameter transactions for reports, such that the job then runs with the report behind the authorized transaction and cannot be changed to arbitrarily run anything.

Worth mentioning to SAP as an improvement opportunity as well.

Cheers,

Julius

hardyp180
Active Contributor
0 Kudos

I have a brand spanking new ABAP 750 system to play with and it's still doing the "umbrella" thing as in "the exception ZCX_STATIC_ELECTRICTY is neither caught nor declared in the raising clause of "I HEARD YOU THE FIRST TIME. THE FIRST TIME. THE FIRST TIME. THE FIRST TIME"

Credit where it is due, I like the fact the SE24 transaction has been changed to use the full width of the screen. Now if the same could be done for SE93 that would be wonderful.....

Jelena
Active Contributor
0 Kudos

I understood the comment to be about ancient screens and more user friendly UI.

It was just the last comment, I actually wrote about the user ID that defaults to my own in every step, even though we never use such user IDs in Production. In SM36WIZ I did not see an option to set a different user at all (I guess it's one of the solutions ).

I'll check on the parameter, thanks!

Former Member
0 Kudos

Ideal would be the option in the report transaction itself when choosing "execute in background" to make it more user friendly - but with S_BTCH_ADM = 'P' you can prevent the periodic options.

Nice for admins to make the WIZ more user friendly as a policy reminder would be table BTCOPTIONS prohibitive semantic -> admins cannot schedule jobs as themselves and must use a SYSTEM user and the default could be set as a preference in a user PID.

That would certainly help end users and admins from immortalizing themselves into the background processing.

Cheers,

Julius

Lukas_Weigelt
Active Contributor

I know it's my own fault, but still. I don't click around, I just tab tab tab <object name> F7... can't be bothered clicking that damn radio button everytime.

Cuneyt
Advisor
Advisor

Dear all,

just have read thorugh this interesting coversation and am wondering whether you cannot use the official "influence process" at SAP to submit your specific needs and where you actively can participate in a variety of other influencing projects we are currently offering across different SAP products and solutions.

I think it would be a great choice for you, helping you in addressing your need for quick and easy improvements. Here is the hyperlink to the dedicated space: influence.sap.com called "Customer Influence", a collaboration platform we are offering for all SAP customers of mainstream products. It is a chance for everybody who would like to improve his/her daily life and so influence SAP products. You will find all information necessary within the mentioned site. On the same platform, you may also address innovational needs on our products.

The SAP Customer Connection program is dedicated to be the channel for addressing improvement requests for SAP products which are in use already. More details about the program is also available at www.sap.com/cc, our official site with a quick overview, as well as on our SCN Space under

http://scn.sap.com/customer-connection.

As mentioned by other users above as a kind of "wish list", I recommend to take the opportunity and have a look there. It is for sure much more than just a wish list!

Hope you will use this chance provided in future as it totally fits to your needs.

Best regards,

Cueneyt Cam

SAP SE

Communications - SAP Customer Connection Program

Message was edited by: Cueneyt Cam Just forgot to mention our dedicated SCN space with further details about our Customer Connection program: scn.sap.com/customer-connection

ErvinSzolke
Product and Topic Expert
Product and Topic Expert
0 Kudos

small correction:

Jelena
Active Contributor
0 Kudos

Are you guys aware that Customer Connection is limited to the specific Focus Topics? The current and upcoming topic list is available here, there are only 6 of them total (out of the whole vast SAP universe) and ABAP ain't one of them. And new Focus Topics can only be submitted by the whole user group. It's quite a long shot for fixing a minor thing I've mentioned here.

I understand what you're saying about priorities, resources, etc. We have the same challenges when supporting SAP systems in our companies. But we ask our customers to put all their requests into the ticket system and we somehow manage make most of the changes they ask, even the small ones.

ErvinSzolke
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi ,

do you have a recommendation for minor change requests as pointed out?

Thanks and Regards,

Ervin

Cuneyt
Advisor
Advisor
0 Kudos

Jelena,

the SAP Customer Connection program already provides more than 800 improvements available for several SAP products and solutions across our whole mainstream portfolio. All you need to do is to have a look at www.sapimprovementfinder.com and search for the ones which are already delivered to our customers. May be there is the minor fix already you have been looking for?

On the other side, Customer Connection is the SAP way to address your minor changes on mainstream products - and believe  up-to-now there are various so-called "improvement requests" submitted to us already within the last few years. Most of them are of the sort minor changes which make the life for the customer much easier. As you already say, the way to collect these requests needs to be well-organized, structured and transparent for everyone so that the requests first express the customer's urgent needs on the one side (meaning that it is not a single request by one customer only - expressing the urgent need of the whole customer community) and that you are able to follow-up the status of your request at any time since you have submitted. That's why we simply offer you to go via your corresponding regional SAP user group or customer community who are well-briefed about the SAP influencing programs and are more than willing to help you in related activities. Means for you, contact related persons in charge in one the ASUG chapters or directly within the ASUG headquarter to help you.

The collaboration platform for influencing SAP products is called "Customer Influence" and is available at http://influence.sap.com. Everybody with a valid user account is free to drop-in there and influence our products and solutions offered currently. And if you don't have an user account, you are free and able to create one yourself - it's that easy! And there are currently many various projects already running and developing related improvements, besides the ones which are currently in the so-called collection phase were the speciifc products is open for collecting improvement requests.

I hope and believe that you have already a user account there and maybe also had a look into the currently offered projects where you can participate right now.

I strongly recommend to everyone who is in need of an enhancement or improvement to visit our tools as mentioned above as well as get more insights and information within our dedicated web pages under www.sap.com/cc or even easily on our SCN space under SAP Customer Connection Program.

Hope you will use this chance provided in future as it totally fits to your needs.

Best regards,

Cueneyt Cam

SAP SE

Communications - SAP Customer Connection Program

JL23
Active Contributor
0 Kudos

Long story but no clear answer (maybe I am just unable to find it in this text).

The influence.sap.com focuses on certain topic at certain times, this is well understood. But is it possible and wanted to submit an improvement idea which does not fall into those "focus topics"?

Cuneyt
Advisor
Advisor
0 Kudos

You are free to discuss such ideas with your corresponding user group/community and they can/will help you in how to act in these cases. In Customer Connection it is only possible to be involved in the currently provided topics (which are a result of these kind of discussions of customers with their user groups/communitties and the subseqent Focus Topic request).

So, this way projects are expressing the most urgent needs of our customers as a backing from others is automatically granted and the cooperation in the platform is a great opportunity to capture related feedback. Submitting single requests which do not fall into these focus topics is not possible.

Jelena
Active Contributor
0 Kudos

I'm curious - are there no ABAPers that work for SAP who ever noticed this? It's not some kind of a customer issue, it affects anyone who uses ABAP Editor to create a transaction, including SAP's own employees. Do they also go "ugh!" when they see that (and do they have some internal forum to communicate "we should really fix this")? Or do they always use only SE93 or some kind of jedi mind trick to create transactions?

Meanwhile in the ABAP swamps... SE91 prompts for the target language for the translation of every message:

Had to translate about a dozen of messages to Spanish today and enter ES for every single one of them. We only have two languages for cripes sake. Is it so difficult to remember the last one used?

Former Member
0 Kudos

AFAIK SAP does not use their own translation tools for their translations. There is an API for translation and they use an external translation service. Up until a while ago it had a hardcoded user and password in it, so you could also "dock in" and enjoy the ride... but I reported it and it was blocked. Sorry.

Anyway, that explains the general neglect of this applications user experience on the SAP side. Specifically for the popup, we found a way to set the value using session parameter IDs for the choice of the user and then you can get an overview of all translation status of a package and with double-click go directly to SE91 / SE61 into the translation dialog without any silly popups and clumsy things to look for or click on.

All you need is an Otto and then you will be fine..  😉

Cheers,

Julius

Jelena
Active Contributor
0 Kudos

Yes, "an Otto" might be a solution to many problems.

Went to check SAPLEXT program, the field actually has SPR parameter ID yet it's somehow not working even if I add an entry to my user profile. So maybe this one actually is an incident material...

Former Member
0 Kudos

Yep, Otto is way up there on the essentials check list along with toothbrush, passport and pocket knife.. 😉

The GET PARAMETER is not passed even if you set it and then asks again. You could probably report that but first check whether a note already fixes it beyond 7.31 SP 12 (which is what you are on).

Cheers,

Julius

OttoGold
Active Contributor
0 Kudos

*blushing*

davsamuels86
Discoverer

My favorite this week...Eclipse ADT, have an active working DDL/ABAP CDS view. click on CDS Navigator tab and get the message "CDS Navigator not available" Why? it works with some things but not others, and only when logged into a project. Where is the log about this? This is like the message "I dont know what happened...contact your system administrator" ...and I am the admin! //end gripe...

Jelena
Active Contributor

Just added an output condition record (MN04) and got this gem of a message:

Transportation is not defined for master data

Message no. VK251

Diagnosis

You work in Customizing. You maintain master data but the transport of master data has not been defined.

System Response

None.

Procedure

If you require the data in a different system, you must create the master data in this system.

As Trevor Noah says, "I have so many questions!". So am I in customizing or in master data? If "system response = none" then why am I seeing this message? Is message not a "system response" (am I hallucinating?)? Is "transport of master data" defined for anything else? E.g. I'm not getting this message in VD01, so why here? I'm just testing a form and don't care about any transportation, so why am I shown this (repeatedly)? And I'm not a wiz in English grammar but if I wanted the data in a different system, wouldn't I need to create it in "that" system, not "this"?

Somehow we survived till EHP6 without this message. Everyone with Google access knows that condition records can't be transported. If this communication was super-necessary then at least why not add "do not show me this again" checkbox? Do I really have to be reminded about something I already knew every time when I open transaction?

JL23
Active Contributor
0 Kudos

the resolution in KBA 2072050 - Message VK 251 wrongly issued

is even topping it: This message is for information purposes only and can be misleading to endusers. It is however correct for the system to issue this message and this is part of the standard.

matt
Active Contributor
0 Kudos

Sounds like someone raised the issue to support, and rather than address it, support decided to issue a KBA that is quite silly. I pretty sure that support are measured by how many incidents they close at first level. Unfortunately, some of them don't seem to be able to tell when the incident really should be escalated beyond their level of competence.

hardyp180
Active Contributor
0 Kudos

This is exactly what I was talking about with "for all entries".

Software Company X (SAP in this case, but they are far from alone) does something, it turns out to be incorrect/fatal/just plain stupid and people start complaining.

The last thing Company X is willing to do is admit they have made mistake. So they can't fix the problem, as that would be an admission they had made an error, which is viewed as the end of the world, despite the fact that no human being on the face of the planet can get through even one day without making an error of some sort.

So they document the error, making 100% sure that after they have explained the weird behaviour, they explain again and again that this is not in fact an error it is a desirable feature as in the quote above "it is however correct for the system to issue this message" which is a thumping great lie, of course it is not correct to output, what is, in essence, utter nonsense, to an end user. But, as we have seen, now it is viewed as a desirable feature to annoy the end users by shoving an annoying message which tells you something you already know, in very broken English, again and again and again.

Also if you fixed something that was obviously broken, but had been for a very long time indeed,  it would not be downward compatible, because a broken thing would start working properly and that would be a change in the behaviour of the system.

Jelena
Active Contributor
0 Kudos

Thanks for finding the note, Juergen. Wow, this is even worse than I thought. "We know you don't like it and it's not needed but it's The Standard, so bwahaha". Where is this "standard"? I really want to see it. Why does the same message not appear in VK11, for example? It's the same thing - create condition records. So what gives?

And the message itself doesn't even make any sense. I'm really curious what's the story behind this. Here comes material for another blog.

Former Member
0 Kudos

I know this behavior all too well, but my explanation for it is that the person you are talking to is not permitted to make any changes to any code... as a correction would require up-stream release compatibility.

If you insist, then quite often you see it corrected in the next release. Whether you were alone you will never know. Your message will be left to "closed automatically" after more than 5 interactions...

If you give up, then the 1st level supporter is probably as thankful to you as what you would have been for a solution because they don't have to talk to the real developer.

Solution (if you are sure that you are onto something): ask in a polite but authoritative way to pass the message on to 2nd level support. A trick is also to look in the coding for a D- or I- number and then search via SCN for the person's name (if they ever posted here), google them and then mention their name in the incident ticket. Eg. "Yeah, well... I was chatting to Engineer XYZ last Saturday about this problem when they came for a BBQ (our kids go to school together) and they told me to open this OSS note and it will be taken care of properly..." etc..

Just getting past 1st level support should be your primary goal in most component areas... 🙂

Cheers,

Julius

Former Member
0 Kudos

I don't want to provoke being called a "company man", but I think I can anticipate the sense in this...

Some customers treat some historical master data type objects as being sensitive enough and want to keep them consistent in the landscape (without dirty RFC connections...) that they activate the transport connection in transaction SOBJ for them.

SAP is giving you a "heads up" here that VK11 is going to change and is recommending it and there is customizing option to enforce it even, but via the weapon of choice (the transaction you use) you can still make your own choice whether to treat condition records as local or transportable data -> authorize the users accordingly.

I have seen the same in OKEON. It generally makes sense to transport this data, but it was not historically enforced. PFCG is the same now as well (transport connection to change roles in production can be activated, which deactivates it if that is what you have selected. Another popular example is bank master data in the treasury module - it is master data but with option for transport connection because of the sensitivity and need consistency.

Did you check the code where this message came from? There are often a lot of hints there which are more useful than the documentation... 🙂

Cheers,

Julius

Jelena
Active Contributor
0 Kudos

Julius, if you read the message it says there is no option to transport and no option to change this. The output conditions are not transportable AFAIK. There are some good reasons for that and it's perfectly fine IMHO. Specific issues with this message:

1) Inconsistency - it does not occur in other similar transactions. I gave VK11 as an example where the message does not occur. If this message had any value then wouldn't it be logical to add it to all such transactions? But that's not how it works. I guess the teams who worked on other modules realised it was not needed.

2) As I pointed out, the message verbiage is not clear.

3) Is there an actual need to display this every single time you go to the transaction? We can't transport this, OK, I get it, now stop telling me the same thing over and over.

4) WTF it's displayed in QA/PRD? We don't create transports there whether it's customizing or whatever. In PRD the only people who access MN04 are our business users. What are they supposed to do with this message? And again - every single effin time...

I can at least pretend to understand some things that SAP does and calls "the design". But this case just defeats any common sense. And what does SAP do when people get confused (like here) and eventually contact support? Instead of removing stupid message that adds no value they issue a KBA. Useless KBA for a useless message, wow.

Of course, I checked "where-used" for the message and I see what conditions trigger it. But it does not explain "the design". What could possibly be the business requirement for such nonsense? KBA does not say.

matt
Active Contributor
0 Kudos

I think KBA must stand for Kan't Be Ar...  er... bothered.

VeselinaPeykova
Active Contributor
0 Kudos

A few years ago I had to answer the following question during an interview (non-SAP related): 'What is the difference between an incident and a change request?'

My answer was something like that: "If a user is unhappy because a certain functionality does not work as documented, explained or agreed upon, then this is an incident. In this case the cost is OPEX and we need to fix that without expecting additional project budget.

If a user complains that a certain functionality does not work as he wants, but it works as designed, documented and explained, then this is a change request, which is CAPEX and they need to pay for an improvement."

The interviewer asked: "And what about the case, when a functionality does not work as expected, but the user is happy about that?"

Me: "I am yet to see a case where people are happy with what vendor XXX delivers for free, but if this happens, we will call it a feature".

I hope you get the idea.

Former Member
0 Kudos

How about the foreign client dependent edit function in the interface of SE16N? That was bad design, not really intended and everyone who found it absolutely loved the thing... so much so that for several years no one reported it...

Trying to understand the rationale for something is a completely different pair of shoes to agreeing with it. That also helps with keeping calm and moving on. That is the point I was trying to make...

Cheers,

Julius

Former Member
0 Kudos

Have you checked on Ehp8 (a.k.a. 7.50)? I don't get that message there anymore... seems like the pixie dust was already used to make it go away..  .-)

Cheers,

Julius

matt
Active Contributor

No matter how much authorisation you might have, you should absolutely not be able to delete your own userid.

Former Member
0 Kudos

And -surprise- in SapMarketPlace and SCN you can't. But in their product palette, SAP doesn't care

matt
Active Contributor

Guess how I found out about this feature!

It did make my colleague's day though.

Jelena
Active Contributor

The other day I had to wear my SD hat and play around with some copy control settings. Exhibit A below shows the VTAA transaction where we can configure how one sales document type is copied to another. Many other config transactions look the same way.

There are tons of entries in the table and "Position..." button (what's the deal with ellipsis? something left unsaid?) at the bottom is supposed to help navigate it. If you click it, the "Another entry" pop-up appears. Hmm, do I use "SalesDoc Type" or "SalesDoc Type"? Decisions, decisions...

Well, thankfully it doesn't matter much because only one of them works anyway. If you put something in the first type field, it will take you to the entry where this type is in the "Target" column. So far so good. But if you leave the first field blank and put something in the second field then it does not take you to the entry where that value is in the "Source" column, as one might logically expect. In fact, it does absolutely nothing, you can click all you want. It's not going to tell you that it doesn't work if you don't put anything in the first "SalesDoc Type" and that there is no option to search by the Source column only. Bwahaha.

Good thing I'm not some helpless SD consultant but an ABAPer, so I go to SE16 and simply browse TVCPA table there, like a boss.

Hopefully "the guided configuration" will put an end to this nonsense. Or will it?

VeselinaPeykova
Active Contributor
0 Kudos

In VTAA the helpless SD consultants use selection-> by contents and get some meaningful results with a few more clicks.

Speaking about decisions, this is V/06 and it is from the same popup.

This is not even a rant/wish... I foolishly assumed that the German translation will be better than the English one... in the English version we get only one identical set of choices there and I always pick the wrong one.

Jelena
Active Contributor
0 Kudos

Veselina Peykova wrote:

In VTAA the helpless SD consultants use selection-> by contents and get some meaningful results with a few more clicks.

Thanks for the tip! But OMG, it's the gift that keeps on giving.

Good luck looking for "Source" there because it's now called "From SalesDoc Type". By this logic "Target" should be called "To SalesDoc Type" but who cares about the logic. (And I'm sure the labels like "Data transfer FPLA" totally make sense to an SD person. Or a human.)

Question: what happens if you enter the document type and click the green checkmark in this pop-up?

The correct answer is... ding-ding-ding... NOTHING! Nothing happens. Because you need to click "Choose" button. But wait, there is more: [+] and "Append" buttons do the same exact thing. Why?!

hardyp180
Active Contributor
0 Kudos

Talking about buttons that do not do anything, looking at indexes on a database table in SE11 is always fun. In the pop up box listing the indexes, I am always tempted to press the green tick, even though I know it does not do anything, it is there purely as some sort of twisted joke.

Also you can create an index that is three characters long e.g. Z01, but I have a feeling that only the first two characters make it to the database, at least in an Oracle situation.

Jelena
Active Contributor

Another one I ran into again today: why are the translations for the report's text elements not added to the transport automatically?

Why do we have to add it to the transport manually or resort to some silly tricks (quite a few posts on SCN, e.g. this one)?

Jelena
Active Contributor

Back in the Bizarro world - in the infoset (SQ02) when trying to delete a table from the JOIN the following message appears:

... and the table does not get deleted. After trying deletion again and wondering whether I have gone insane (as doing the same thing and expecting a different result would clearly indicate) I realized the message just needed to be translated from SAPanese. Apparently in English this means that the table fields are used in a field group and first need to be deleted from there. Quite silly of me to expect that deleting table from infoset altogether would take care of that (or at least provide accurate information on the action expected from the user).

vwegert
Active Participant
0 Kudos

Also, you can never delete tables from a quick view join (SQVI) again...

Jelena
Active Contributor

Feel like reviving this old thread today - why, oh why SE16 keeps showing us this stupid message?

ABAP Dictionary type FLTP is not allowed for screen element

Message No. 37048

Uhm... What am I supposed to do with this information? I've only added VBAP-MATNR to the selection, it's not FLTP type last time I checked.

Before anyone asks - it's in EHP7 and all versions before that. I've been casually dismissing this message for about 10 years. At this rate I bet it will make its way to S/4HANA too.

P.S. Also if you go to the menu 'Fields for selection' but then change your mind and just close it without making any changes this menacing red message appears:

Abend during choice of selection criteria

Message No. MO450

Yes, and Guten Abend to you too! How thoughtful!

hardyp180
Active Contributor

I have just come up with four things which annoy the hell out of me in my day to day work and could be fixed in minutes by SAP development. That is never going to happen, but I thought I would share anyway.

When I create a database table, the system will moan and groan during activation  if I do not choose an "enhancement category". So I take the menu option to choose one and what do I get?

That takes the biscuit for stupid messages. A message to tell you that you have not yet done the thing that you are attempting to do, and that message never appears UNLESS you are trying to do that right thing.
If you do not do the right thing you can save with no warning at all. Is that crazy, or am I?

Next, if I have ten transport requests open, because I am working on ten things at the same time, and I take the option to choose a transport request - what do I get?

A tiny box, which highlights the numbers (the meaningless bit) and my name (which I already know, hopefully most developers know their own name and in this context you only get your own transport request) but truncates the text (the important bit). SAP has a fixation with numbers and GUIDS and hexadecimal strings. Does the enormous amount of hexadecimal numbers in an ST22 dump ever help anybody? If so, can someone tell me how? Anyway, how long would it take someone at SAP to make that box wider? I could do it myself in ten seconds but that would be a "repair" and hence naughty.

Next, if you have a custom table, and you want to be able to maintain it via SM30 (like in the IMG) then after creating the table maintenance, you might like to give a specific transaction to maintain just this table rather than giving users blanket access to SM30.

So you create a Parameter transaction, and at the bottom, what do you get?

A little box, thinner than a super-model, and when you try to enter values suddenly you cannot see both fields at once. That is such a pain. Once again, how long would it take to make the box wider so us developers do not have to keep scrolling from left to right, never knowing what row we are on?

Lastly, I note that when creating a view cluster, on save you are firstly warned if you have not chosen a "compare flag". Then if you choose one, and save again you get another warning this time telling you that you have chosen a compare flag. I am sure both warnings are valid, but if you pop seemingly stupid warnings (i.e. two choices, both seemingly wrong) in peoples face they just ignore them.

Anyway, good to get that off my chest. When "idea place" came out all those years ago I thought that would be just the place to report things like this, but I quickly learned that ABAP ideas (ideas that help developers) just got laughed out of the room.

Cheersy Cheers

Paul

Jelena
Active Contributor

Paul - ROTFL! Actually I don't even get the major significance of the 'enhancement category'. It's a custom table - if I need to "enhance" it I'll just change it. Can't it just be set as 'not classified' by default? Why do we even need this warning for every freaking table? And the message just reminds me of the scene from Kindergarten Cop. Thanks for the tip, SAP!

hardyp180
Active Contributor
0 Kudos

Oh yes, and when creating a view cluster, whatever name you give it you get the following message:-

Last I heard I was allowed to create tings starting with Z.

And then if I decide to cancel and not go through with creating it - I can't get off the screen. The BACK, CANCEL and EXIT icons all have the same effect as pressing the CREATE button. You have to blank out the cluster name and then you can leave.

bruno_esperanca
Contributor
0 Kudos

Some structures can be enhanced "deeply".

Example, a structure that you use for a web service. You can include other structures, with strings in them, etc, no problem.

Some structures can't be enhanced as much.

Example, a structure for a database table or something like that.

I believe this category is used to make sure no one makes a change that would destroy some database or something.

This is my suspicion, anyway.

Cheers,

Bruno

hardyp180
Active Contributor
0 Kudos

I don't think we have an issue with the concept of classifying structures and tables.

The point here is that SAP want you to make a setting.

If you do not make such a setting you get no warning.

If you TRY to make such a setting then you do get a warning.

That is insanity.

The person who designed this is either a sadist, or obviously mad, or does not have the ability to relate to their fellow human beings. All three are all too common in the world of computer programming.

hardyp180
Active Contributor
0 Kudos

By the way, using ABAP 750 and creating a structure using ABAP in Eclipse, it defaults to "NOT EXTENSIBLE" so better late than never.... at least for structures ....

Ryan-Crosby
Active Contributor
0 Kudos

I have come late to this game, but I have to say I laughed my way through the majority of the content this morning after it was bumped with a comment. This one has always annoyed me... doesn't the "Pass IDoc Immediately" imply a package size of 1 given the definition?

kevin_neale
Explorer
0 Kudos

I believe SAP is trying to force their "New" debugger on us. This is slow, clumsy, grabs and extra session from which you can easily get lost on which session is for what. What do people who use this do with their spare time while they are waiting for it to load.

I will keep using

/hset debugger=classic

to avoid having to use this waste of time and resources

Private_Member_7726
Active Contributor
0 Kudos

Please... just put the listboxes/dropboxes here and other appropriate places already

And generally (since there is no easy editable SALV...), I don't know how "easily" it would be done in Dynpro/Table control legacy (probably not that easy), but there are more than 10 years worth of questions on ABAP forum as to how to set up dynamic (differing from line to line) listboxes on Table Control columns... Some are even pretending that there is a solution, but nothing seems to work.

Former Member
0 Kudos

Jānis B wrote:

Please... just put the listboxes/dropboxes here and other appropriate places already

On the other hand, it may prevent easy cut&paste...

Private_Member_7726
Active Contributor
0 Kudos

*Sigh* you're right, I think. But in a "good software" it wouldn't, right?

matt
Active Contributor
0 Kudos

I'm doing a proof of concept for HANA expert scripts (AMDP) in BI transformations. The AMDP class name is generated and placed in $TMP. It has a different name in each instance as you transport it through. Presumably because it is generated, you can only put code in the PROCEDURE method. You can't add your own, private methods to modularise and encapsulate.

So I created my own Z AMDP class to contain procedures I can call. The problem here is that I can't reference the types of the generated AMDP class, because the name of the class varies across instances.

How hard could it have been to generate a class in the customer namespace, in a customer package that can be transported, and can have its own private methods? Why go for this so restrictive generation - is it only because that's how it's been done even when routines were written in ABAP, and no-ones had the wit to redesign according to modern techniques? Even though the opportunity was there since 7.0?

It's like the people who design these things assume that there will only be a few lines of code and, in fact, don't really know much about programming.

hardyp180
Active Contributor
0 Kudos

Here is one from yesterday.

When creating a data element you can use a domain, or can be lazy and use a predefined type.

I was lazy, and choose predefined type DEC.

The description of DEC is "Counter or amount field with comma and sign"

So you might expect this to allow negative numbers. Sometimes it does, however any sort of dynamic analysis of the data element e.g. POPUP_GET_VALUES will return a structure with the SIGN flag being set to FALSE.

The moral of the story is to always use domains, but it is a still a bug.

horst_keller
Product and Topic Expert
Product and Topic Expert
0 Kudos

Data elements and domains of the ABAP Dictionary have technical and semantic properties.

While the semantic properties have no impact on ABAP programs, they are evaluated by the classical dynpro framework (as UI5/OData frameworks evaluate CDS annotations).


GUI technologies such as classic dynpros or Web Dynpro are closely integrated with ABAP Dictionary.

If you look up the Semantic Attributes of Domains, you find:


If a data type of a dynpro field defined in ABAP Dictionary is numeric, the "Sign" attribute must be set so that negative numbers can be displayed on the screen. This attribute can only be specified using a domain.

Not a bug but a well documented feature ...

hardyp180
Active Contributor
0 Kudos

Microsoft also think that if you document a bug really well it ceases to be a bug and becomes a valuable desirable feature.

My favourite IT term is the "principle of least astonishment" which says that in an ideal world the behaviour of software should never shock/surprise you e.g. recently when people got a pop up box saying "do you want to install Windows 10?" and pressed the red X cancel button, they were astonished to learn that instead of cancelling they had said "yes" and the install had begun. Microsoft had to fix that one, though no doubt at the start they would have claimed this was a well documented feature.

If I picked up a box in the supermarket that said "chicken pie" I might reasonably expect that it contained chicken. In the same way if I bought a bottle with green glass that said "extra strong beer" on the front, and found out it actually contained water I would take it back. Possibly the guy in the off licence/liquor store would say "a-ha, if you looked it up on the internet, in our ten thousand pages of documentation you would see that it says that Extra Strong Beer sold in green glass bottles is actually water. So this is better than extra strong beer because this is a well documented feature". Or he might not.

In this case I wanted negative numbers (with sign) so I picked from the list of options the option which had "with sign" in it's name. If a chicken pie with no chicken in it is a bug, why is something that describes itself as having a sign, but does not actually, not a bug?

Or is a chicken pie with no chicken actually a feature? You call it "chicken surprise" and the surprise is there is no chicken.

It is rather like our old friend "for all entries". No one in their right mind would have expected passing in an empty selection table to cause the entire database table to be retrieved. When that happens they are astonished. If I gave you an empty list and said "bring me everything on that list:" you would bring me back nothing as opposed to everything in the world.

Nonetheless SAP refuse to acknowledge this as undesirable behaviour and so document this bizarre behaviour in great detail, magically making it a valuable desirable feature, and now we also have a code inspector check as well.

One possible alternative approach would be to alter the behaviour so that the "for all entries" behaves as any sane person would expect, but in order to fix a problem you have to acknowledge that it IS a problem in the first place, which is not happening here.

Cheersy Cheers

Paul

horst_keller
Product and Topic Expert
Product and Topic Expert
0 Kudos
One possible alternative approach would be to alter the behaviour so that the "for all entries" behaves as any sane person would expect,


You really propose incompatible changes in a downward compatible release line?


Just to mention it, in NGAP (Release 8.x), where we didn't had to care about downward compatibility too much, the behavior was changed and an empty table leads to an exception ...

hardyp180
Active Contributor
0 Kudos

Do I really propose an "incompatible" change?

Yes I do, and for this reason.

I put it to you, ladies and gentleman of the Jury, that no-one has ever intentionally passed in a blank table to a FOR ALL ENTRIES with the express intention of getting the entire database contents back.

It only ever happens by accident. If you wanted everything from the table you would have no SELECT criteria at all.

Moreover I am sure as sure can be that there are hundreds, if not thousands of "customer" programs out there with FOR ALL ENTRIES tables with no checks, that every so often get a blank table passed in and the TIME OUT or give wildly unexpected results. I found one in our system this very day that had been sitting there for ten years, a time bomb waiting to go off. I added in a check, just because it had never happened, did not mean it might not happen next week as it was feasible that a blank selection table could occur in some rare circumstances.

If you did introduce such an incompatible change in behaviour, for wildly illogical to logical, then suddenly a load of holes would be fixed overnight.

If you think about it when would you deliberately take advantage of the bug in FOR ALL ENTRIES and use it to bring back the whole table? SELECT-OPTIONS do the job far better.

I would imagine the whole idea of making things downwardly compatible would be to avoid the situation where something that works fine suddenly starts working differently.

Surely it is a different kettle of fish to fix something that has NEVER worked properly?

As an example, when I worked in Country X (named changed to protect the innocent) in the  legacy system there was not room for the totals of the report to be at the bottom where they logically should be.

So in the old system they were printed on the side of the report, at right angles to the rest of the report. You had to print out the report and rotate it 90 degrees to read the totals.

So when I rewrote the same report in SAP I proudly said you can now have the totals at the bottom, each total underneath the column of figures it was totalling.

The powers that be thought about it, and then asked if could I make SAP print the totals at right angles along the side, just like the old report, as that is what people were used to?

i.e. they wanted a downward compatible change to replicate something that did not work in their old system and so was worked around. They were very upset when I told them it could not be done in SAP.

How about a check box in all new programs with "make FOR ALL ENTRIES work properly" which is on by default for all new programs? Rather like what happened when "fixed point arithmetic" was introduced? Probably technically impossible for some reason or another, but would have been a nice compromise.

Cheersy Cheers

Paul

horst_keller
Product and Topic Expert
Product and Topic Expert
0 Kudos

To answer shortly:

  • You don't imagine how many fixes of  known ABAP bugs/pecularities and how many ABAP renewal attempts were already hindered by the downward compatible trap.
  • The checkbox would rather be a "clean ABAP" Checkbox and entail a little bit more than "FOR ALL ENTRIES works properly" (in fact I'd expect no FOR ALL ENTRIES at all any more). I am proposing that since long. But who am I? Only the documentation writer. Where are all the architects, customers, really demanding that? But I don't give up. Meanwhile, we have the technical possibility for ABAP versions for other purposes and maybe I will live to see a reuse of that concept for a "clean" ABAP version.
former_member182550
Active Contributor
0 Kudos

As far as I care,  FOR ALL ENTRIES emulates select options,  so it's not a bug when an empty table is passed and you get the whole world back.  You are placing NO restrictions on your select.  Simple enough to understand.

Rich

matt
Active Contributor
0 Kudos

Can you update the documentation for FOR ALL ENTRIES so it says "Don't use this unless you really really have to. Use a JOIN instead. It's usually better".?

horst_keller
Product and Topic Expert
Product and Topic Expert
0 Kudos

Thin ice.

Joins circumvent table buffering. FOR ALL ENTRIES in most cases not.

We'll declare FOR ALL ENTRIES as obsolete in the moment, we have that Problem solved.

Former Member
0 Kudos

Richard Harper wrote:

As far as I care,  FOR ALL ENTRIES emulates select options,  so it's not a bug when an empty table is passed and you get the whole world back.  You are placing NO restrictions on your select.  Simple enough to understand.

Richard,

Your logic does make sense.

However, when FOR ALL ENTRIES table is empty, the whole where statement is being ignored and not only the FOR ALL ENTRIES-relevant criteria.

matt
Active Contributor
0 Kudos
Joins circumvent table buffering


I use HANA. What do I care?


But FAE does have its uses and I'm not sure it can be entirely made obsolete. For example, in BI transformations, there are routines where we are supplied with a data package in an internal table. Often we have to enrich this data from db tables. FAE is perfect for that.



Jelena
Active Contributor
0 Kudos

  • Where are all the architects, customers, really demanding that?

They are right here, on SCN. What other channels do ABAPers have?

I've checked all the "customer engagement" etc. stuff - there is no ABAP track anywhere. As an SAP employee, you should have access to the private SAP Mentor Jam space (otherwise email Jason Cao to hook you up). In that space I created a discussion not so long ago on how can we get a function added in SAP because it seemed desirable to many customers (myself included). All I got was crickets.

I do agree with Paul that no one (except for Richard Harper apparently ) expects to pass an empty FAE table and get something as a result. And no, it's not like selection options where you specify the restrictive selection criteria, so if no criteria is entered it is quite logical that all data is selected (= I do not care to restrict my query, just give me everything). "For all entries" should mean 0 result for 0 entries. I wouldn't mind that changed retroactively everywhere. Somehow when my authorization stops working after a support pack it's "we fixed the glitch" and no one cares if it technically "broke" my access.

The reality though is that the business does not really care and SAP doesn't make any more money from ABAP, so this thread is as far as it will go, I suspect.

raghug
Active Contributor
0 Kudos

Shai Sinai wrote:

Richard,

Your logic does make sense.

However, when FOR ALL ENTRIES table is empty, the whole where statement is being ignored and not only the FOR ALL ENTRIES-relevant criteria.

Please don't change it, I like wondering why my program is suddenly slow and the sy-subrc didn't work after a FOR ALL ENTRIES with an empty table. Keeps me on my toes, and gives me another novelty to show off to ABAP newbies.

hardyp180
Active Contributor
0 Kudos

Two element have come in the "for all entries" which I would like to address.

In regard to FAE being like a select-option I would say there is both a semantic and a technical difference.

Semantically speaking a SELECT-OPTION is used in the initial database SELECT and if you were to phrase the request in the from of a sentence it would come out "I would like all the records in this table filtered by the following restrictions". If there were no restrictions (all select options blank) you would logically expect the entire table to come back.

With a FAE you are doing a subsequent read. You may have got a big list of sales orders, looped through the list and got a selection table full of material numbers. semantically you then say "for all of these materials, give me the material name". If there was no list of materials, bringing back any result at all would be unexpected behaviour.

Technically a FAE is more like a PARAMETER than a SELECT-OPTION. In the above example a FAE is rather like

LOOP AT material_table INTO material_structure.

  SELECT matnr makt

     FROM makt

     APPENDING CORRESPONDING FIELDS OF material_name_table

     WHERE matnr = material-structure-matnr

      AND      spras = sy-langu.

ENDLOOP.

When a parameter is blank, you would expect no record to be returned. If the table in the above example was empty you would expect the SELECT not to be called at all. as I mentioned before this is all about what you would logically expect as opposed to bizarre behaviour which astonishes you.

The next point is all about how databases work. About ten years ago I read in the SAP Press book with an Egg on the front about improving the quality of ABAP development, a highly technical explanation about how you should not do a JOIN on transaction data and maser data. In their example there were a large number of sales order items, 75% of which had the same material.

They talked about how in such a case the database would have to do far more work than it should have to do, accessing the name of the same material again and again. So they recommended doing a JOIN on VBAK/VBAP, getting a filtered list of unique materials, and then doing an FAE. They said this would lower the overall run-time.

I did a test (ST05) at the time, and the results in my system bore this out. Naturally, if the master data table was also buffered, as Horst alluded to, then it would be virtually mandatory not to have the buffered table in the JOIN, which is why you get a code inspector warning.

The caveat here is thus - I did my test two database versions ago. In the interim ten years have databases got cleverer and thus the original problem with joining transaction and master data has gone away? the guy who sits next to me says they are bound to have, but I just don't know. If someone does know, please tell me.

Lastly, Horst says I just cannot imagine how frustrating it is to go to the powers that be and say 'something is broken, can I fix it" and being told that fixing it is against the rules, it has to stay broken forever. In actual fact in one place I worked I found myself in that situation on a regular basis.

I honestly do not think the original intent of the "everything must be downward compatible" rule at SAP was to ensure that once broken, something stayed broken for all time. That is just an unfortunate side affect of blind adherence to a rule, obeying the wording of the rule strictly and not thinking about the original purpose of the rule.

UK singer Fred Wedlock said it best:-

"Jobsworth, Jobsworth, it's more than me job's worth. I don't care, rain or snow, whatever you want, the answer's no"

Cheersy Cheers

Paul

matt
Active Contributor
0 Kudos

It didn't used to be mandatory to have super->constructor( ) in constructors. It is now. Just sayin'... 

How hard is it to scan all uses of FOR ALL ENTRIES and see if there is any code that doesn't check for empty driver table, and that really is the desired functionality?

SuhaSaha
Advisor
Advisor
0 Kudos

Matthew Billingham wrote:

How hard is it to scan all uses of FOR ALL ENTRIES and see if there is any code that doesn't check for empty driver table, and that really is the desired functionality?

My 2 cents ...

You can define a "custom" code inspector variant which checks the following:

  1. Can FAE be replace by better performing JOIN?
  2. Are the relevant checks for empty driver table in FAE implemented?

The standard CI check variant 'DEFAULT' doesn't include these checks.

BR,

Suhas

PS: I am working on an ABAP740 SP12 system

Peter_Inotai
Active Contributor
0 Kudos

For super->constructor( ) at least there was a warning ().

From other hand a new statement or option would make more sense, instead of making FOR ALL ENTRIES working in a new way. Anyway JOIN is better most of the case, but there are some cases when it's not.

jrgkraus
Active Contributor
0 Kudos

In the ABAP editor (SE80), CTRL+D doubles a line. So far so good. But what happens, if you select a bunch of lines and then press CTRL+D?

Beautiful, isn't it?

I happen to tap into this trap almost every day...

SuhaSaha
Advisor
Advisor
0 Kudos
I happen to tap into this trap almost every day...

I have read it somewhere that SAP is not investing time & money on developing the SE80 Editor. So i guess you'll have to live with it or (still better) switch to Eclipse

jrgkraus
Active Contributor
0 Kudos

As far as I understood I can not use eclipse to create dynpro based applications, right?

raghug
Active Contributor
0 Kudos

Jörg Krause wrote:

As far as I understood I can not use eclipse to create dynpro based applications, right?

As of now, Eclipse does not have a mechanism to create screens, so it falls back to the older SAP GUI based screen editor. Once you create the screen, you can use Eclipse to write the actual code with no problem. I usually keep an instance of SAP GUI open to create the program (type M - Module Pool) and create the screens, and then work on the code within Eclipse.

The Eclipse group appears to be rapidly adding features and capabilities. If you read their discussion boards, they are also one of SAP teams that appears to be really responsive to user feedback. I wish that group would become a model for the rest of SAP.

FYI - to see the features that have been added recently see

Juwin
Active Contributor