Manage Multiple Languages in Custom Developments for OM
I posted this document in my non-SCN blog and it seems some people find it quite useful. So, I thought SCN members, particularly HR technical people, might find it useful as well:
For objects in OM (as indeed for other PD-modules like Training and Events Management, Qualifications, etc.) you can easily capture texts in several languages. But you need to be aware of the concepts behind it, most notably, when you design custom developments for OM in a multi-lingual environment
Capturing texts for all objects in all languages the system is used in can be quite an effort, so many organisations choose to be selective about which languages are used for which parts of the organisational structure. E.g. you might decide that:
- everything needs to be available in English
- all orgunits and jobs need to be available in the language the corporate HQ
is using, say, for the sake of the argument, in Spanish
- and data in other local languages are only used for the objects used in that
So, if everybody is following these rules (and we strongly recommend to define and communicate these rules as part of your global template), it can already be difficult enough, but then you can be sure that sometimes there will be an orgunit in, say, Germany, which hasn’t been translated into English or Spanish.
SAP provides a good tool to manage this problem. In table T778L, you can define, in which sequence the system should look for data, if it can’t be found in the logon language:
So, in this example, if you are logged in in Japanese and some orgunit you are seeing on the screen doesn’t have a Japanese description, the system will show it in English instead. If English is not available, it will show it in Spanish, and so on. So, the SAP standard deals quite well with this issue, but how about your custom programs?
Most developers follow the best practise of selecting language dependant content using the logon language of the user (available in system table as SYLANGU) and many think that this is enough. However, it is not necessarily. As shown above, a user might be logged on in a language where there is no text available and in this case, to be as good as SAP standard, you’d need to select using the language sequence of T778L. Failing to observe the language issue might not only lead to objects displayed with no description text. It might even lead to omitting whole orgunits from your report.
If you use a simple statement like
“SELECT * FROM HRP1000 WHERE … and LANGU = SY-LANGU”
then you would miss any orgunits in the system, which are only captured in other languages completely and without any hint something might go wrong. Imagine your CEO running a global headcount report and missing a whole country, because its top orgunit doesn’t have its text translated into English! Therefore, to be really clean, you should always select without using a language key first and then use the language sequence to determine the right description. Or make sure the SAP function modules or methods you are using are doing this for you.
Of course, there may be bespoke circumstances in your organisation allowing for a simpler solution. It might be the case that you know for sure your org management is always going to be there in English only. In that case, you can go for a simpler solution. In that case, you might not even use SY-LANGU, but rather hard code the selection on “EN” to make sure anybody, who happens to log in with a different language, would still get a result.