Total Pageviews

Wednesday, February 8, 2012

Career in SAP ABAP

SAP – one of the ERP system has @40% share in the ERP market & is one of the leading ERP software in the market. Almost 40-50% of the Fortune 500 companies have their businesses running on SAP. The demand for SAP has consistently being growing. This eventually has lead to a lot of career opportunities in SAP.

There are various modules in SAP & following are few which have requirement in most of the projects
  • Sales & Distribution  (SD)
  • Materials Management (MM)
  • Production Planning (PP)
  • Quality Management (QM)
  • Finance/ Controlling (FI-CO)
  • Human Resource (HR)

All the folks who work on above modules are called as Functional Consultants & those who work on SAP ABAP are called as Technical Consultants


Here we will discuss about career in SAP ABAP.



Min. Education required/Eligibility for Freshers
Most of the Indian IT companies prefer a MCA or B.Tech candidates but from any stream of engineering. It is not limited to Software or IT engineering branch due to demand supply ratio. So any B.Tech candidate from any stream is eligible.



Training
There are 2 options :-
1. You may try to directly apply to top 5 IT companies as a fresher. The companies have their own selection process after which they provide training in SAP ABAP.

2. There are many private small IT training firms in most of the leading cities which provide ABAP training. If you get any first hand positive feedback about the quality & content of SAP training, then you may opt for such institutes. Institute like Genovate, Siemens, SAP also have their training centre’s across India.



Areas in SAP ABAP which have good demand

  1. A normal developer with knowledge of Reports, ALV, Dialog programming , Smartforms, Sapscripts, User Exits
  2. A Workflow Consultant – This is treated as a niche skill
  3. Webdynpro, Adobe Forms, XI/Portal – This is again a new area which is in need of highly skilled developers
  4. Advanced ABAP – Enhancements, LSMW, IDocs, BADI, RFC, Interfaces, BSP
  5. ABAP HR – This is again treated as a niche skill



Certification
  1. Candidates with SAP ABAP certification always have an edge over those who are not SAP certified
  2. Most of the companies do insist on SAP ABAP Certification, so having it will always be beneficial




Job Market
  • The Top 5 Indian IT companies always look for experienced SAP ABAP developers with a minimum experience of 2 years
  • If you are SAP ABAP certified then many IT companies give brownie points. Entry at fresher level with a SAP ABAP certification always adds a weight to the CV in the job market





Disclaimer : You are most welcome to use any information available in this blog at your own risk. The recommendations and opinions expressed in this blog are mine and not of any company or any of my employer.









Thursday, January 19, 2012

ABAP in SAP Upgrade R/3 4.7 to ECC 6.0

Common issues faced during SAP Upgrade

Introduction

While working on the upgrade projects, we came across many issues for which we found some responses on SDN but all were scattered & there is no single source/document. Hence this article so that other SAP folks who are working on upgrade would have the benefit of a reference document which they would find of some help in case of crisis. Hope this will help you to reduce some sleepless nights J during your upgrade project. All the best!
This is presented in a Q & A format so that it doesn’t become more descriptive but directly talks about the issue & its resolution.

Workflows

Q         : Will the upgrade affect open work items
A             : It is perfectly fine to have open work items when upgrading. Any open work items of old version can be executed in the upgraded ECC 6.0 version. Ensure that all the associated notes listed in Note 1068627 are applied in your system. [1068627 - Composite note about workflow upgrade].

Spool – SP01

Q         : Is there any impact on spools created in the old version
A             : Yes. All the old spools which are reflected in SP01 in the old version can’t be retrieved post upgrade + Unicode conversion to ECC 6.0. Hence the old spools which are required post upgrade has to be either archived/converted to PDF/printed before the upgrade. Please refer note 842767 for additional details.



Obsolete Tables

Q         : Are any table made obsolete in ECC 6.0 as compared to R/3 4.7
A             : Yes. Table TVARV is replaced with TVARVC & table TTXER is replaced with TTXERN.
Table TVARV is replaced with TVARVC
Ø      Check if any entries are read from table TVARV in any of the custom programs.  If yes then all those custom programs have to be changed to read data from TVARVC. Refer note 557314.
Ø      Execute program “RSTVARVCLIENTDEPENDENT”.  This program transfers entries of table TVARV to TVARVC (program doesn’t have selection screen. Check the number of entries in both the tables before & after executing the program).
Table TTXER is replaced with TTXERN
Ø      Check if any entries are read from table TTXER in any of the custom programs.  If yes then all those custom programs have to be changed to read data from TTXERN.
Ø      Execute program “SDTXT1AID” to copy entries from table TTXER to table TTXERN. Check the number of entries in both the tables before & after executing the program. Refer note 900607.
Ø      Output of program “SDTXT1AID”.  There could be some entries which won’t get copied from TTXER to TTXERN. They either would be duplicate or incorrect entries which you can ignore.

 

 

Program Variants

Q         :  Are variants affected due to upgrade.
A             : Yes, variants are affected after upgrade. After Upgrade, run program RSVCHECK which will list down all the variants which are affected. Run program RSVARDOC_610 with necessary values to adjust those variants.  However if a selection screen field has become mandatory for a tcode due to upgrade it has to be addressed by assigning a value to it manually.
Ø      Screen of RSVARDOC_610. Here we are fixing variant BOM_X of program ZMM_BOM_REPORT. If you want to fix all the variants of the program, then give “*” in S_VARI.



Q         : After upgrade, the query dumps when we try to execute it
A             : ABAP Queries are affected due to upgrade. We need to regenerate the queries post upgrade.  We can re-generate the queries using FM “RSAQ_GENERATE_PROGRAM” which uses work area, query name and user group as input. If the queries are more in number we can write a small program using above FM and table AQGQCAT- for global query and  table AQLQCAT- for local/client specific query




Q         : ALV layouts previously created from SAP queries no longer function correctly after   upgrade
A             : Refer note 725468

SPDD

Q         : There are many objects reflected under “DELETED OBJECTS” node. How do we fix this?
A             : Objects reflected under “DELETED OBJECTS” should be ignored & need not be fixed.

Q         : How to handle the transport of SPDD as BASIS wants the SPDD TR to be imported at OS level
A             : Ensure that all the fixes wrt SPDD are captured in a single Transport. Multiple transports are not acceptable for SPDD fixes. While releasing the task of your SPDD TR, click on “SELECT FOR TRANSPORT” button which is in SPDD tcode – 2nd screen.  System will prompt to confirm the TR for subsequent system.  Confirm the TR number & proceed. The SELECT FOR TRANSPORT step is extremely important else your BASIS team won’t be able to import the SPDD TR at OS level in the subsequent system.



SPAU/ fixing core code modifications

Q         : Can the Enhancement framework be used to fix SPAU objects
A             : Yes. SAP has introduced Enhancement framework along with ECC 6.0. For all the core code mods reflected in SPAU, check if there exists a possibility of moving the core code mod to an implicit enhancement. If yes, then remove the core code mod & paste it in the new enhancement. Custom code which is inserted at the start and end of a INCLUDE or a SUBROUTINE can be moved to implicit enhancements. This will help during subsequent upgrades & will save an object from core code mod.

Third Party objects

Q         : How to handle 3rd party SAP programs
A             : Check with the 3rd party vendor for the programs of ECC 6.0 version. Normally all the 3rd party SAP certified vendors maintain the set of programs for each version. So once you upgrade to ECC 6.0, you need to contact your vendor & ask him to provide the set of programs for ECC 6.0 version. Vendor would have a team which would take care of making the 3rd party objects in your system Unicode compatible for ECC 6.0.

Obsolete Transactions

Q         : Are there any obsolete transactions in ECC 6.0
A             : Yes.  E.g. VOTX is replaced by VOTXN in ECC 6.0. Goto table PRGN_CORR2 & check list of old & corresponding new tcodes against your SAP Version.

Obsolete FM’s

Q         : How do I know if any of the custom programs are using obsolete FMs?
A             : Table TFTIT would reflect obsolete FM’s. Please use following steps to get the list of obsolete FM’s. You may create a small program to check all your custom programs for usage of obsolete FM’s. Such FM calls should be replaced with appropriate replacement FM.



Usage of Internal SAP FM’s in Custom programs

Q         : What if my system has some custom programs using FM’s which are not released to customer?
A             : As per SAP, any objects which are not released to customer can be changed by SAP at any point of time. Such objects need not be backward compatible. The output of programs using such FM can vary. SAP won’t be taking any responsibility nor will provide any note/solution if customer has used a non-released (internal SAP) object. Any kind of data loss or any other impact would be sole responsibility of customer.  E.g. FM “SO_OBJECT_SEND” is internally released for SAP use & should not be used in any custom programs. If it’s used by customer, then they need to replace the call to this FM with another FM “SO_DOCUMENT_SEND_API1”. PDF files created using ‘SO_OBJECT_SEND’ can’t be opened in ECC 6.0 as the FM has undergone some changes in ECC 6.0. Hence all the custom programs which are using “SO_OBJECT_SEND” should be replaced with appropriate FM.
Customers should create a tool to identify a list of custom programs where non-released (Internal SAP ) FM’s are being used. Programs which are calling such FM’s should be modified to point to suitable replacement FM.
If a FM was released to customer in old version (say 4.7) & later on was changed to “Internal SAP only”, then in such case SAP would provide a note.



Q         : Will there be any manual activities involved post Unicode conversion
A             : Yes. While doing the upgrade on Development system, you would come across few fixes which can’t be captured in a transport request. Such task has to be documented in a “Post Upgrade Activity Tracker” & such activities have to be carried out in all the subsequent system post Unicode conversion.
E.g.  1. Execute program “SDTXT1AID” as per note 900607
      2. Execute FM "RSAQ_GENERATE_PROGRAM" for all the queries to regenerate them

Ensure that you get authorization to necessary tcodes before hand as there would be a very small window to perform Post Upgrade activities on Production system. In order to reduce the entire downtime, documenting the post upgrade activity tasks & providing necessary authorization, keeping the related notes handy would definitely help.


Cloned Programs

Q         : Do we need to fix cloned programs as well?
A             : Well there would be some cloned programs which have few standard includes & few Z Includes which are copy of standard includes. If these standard includes have undergone some change / deletion / modification etc, then there is a possibility of the cloned program giving dump/error. Hence as a preventive step, all the cloned programs should be validated (syntax check) & tested. There is a possibility of the Main program undergoing lot of changes due to upgrade. Customer has to take a call to decide if they want to create a clone program of the upgraded version of std. program or would like to continue with the old version of the cloned program.


Objects to be ignored for UCCHECK

Q         : Which objects can be ignored for UCCHECK?
A             : Following objects can be ignored for UCCHECK:-
·         All the $TMP Objects
·         Objects which exist in development system but not yet transported to Quality. If you fix these objects, you might end up including it in the UCCHECK transport which would be forwarding such type of objects to subsequent systems without testing/UAT/sign-off from customer.
·         Objects under Local Workbench TR
·       Inactive Objects/Objects having error in old system (E.g. A custom program which is having error in R/3 4.7 system need not be fixed in ECC 6.0 for UCCHECK)


Checkbox declaration to be changed

Q         : Do we need to change parameter declaration of “TYPE CHECKBOX “
A             : Yes. In SAP 4.6c version “TYPE CHECKBOX” used to create a checkbox on the left hand side with the corresponding text on the right hand side. But after upgrade the same code is creating Checkbox on the right hand side with the text on the L.H.S.
Few users prefer to have the same selection screen, the way it was in the earlier version. Hence modify the custom programs to replace “TYPE CHECKBOX” with “AS CHECKBOX”.
You may identify all the programs using “TYPE CHECKBOX” with the help of search string program “RPR_ABAP_SOURCE_SCAN”.


EDIFCT custom table entries  

Q         :   While upgrading to ECC 6.0, custom entries in table EDIFCT are deleted
A             : Yes, the upgrade deletes the custom entries from EDIFCT table. Before upgrade take a backup of EDIFCT table entries as per note 865142

Replacing ‘WS_DOWNLOAD’ FM

Q         : ‘WS_DOWNLOAD’ FM should be replaced with ‘GUI_DOWNLOAD’ FM?
A             : Yes, the new replacement is FM ‘GUI_DOWNLOAD’. While replacing check if the “MODE” parameter is passed with value “A” in the program. If yes then you need to ensure that for FM ‘GUI_DOWNLOAD’ APPEND parameter is set to ‘X’.
Similarly check if the “FIELDNAMES” is assigned to any internal table. If yes, then in ‘GUI_DOWNLOAD’ pass the same internal table to “FIELDNAMES”.



SAP Notes
Q         : Notes listed under INCONSISTENT node are reflected as "Obsolete version implemented" in SNOTE
A             : Ignore the notes reflected under SNOTE-Inconsistent Notes as the notes are already applied during upgrade

Transport Request Numbering

Q         : New TR number conflicts with transports created from other development systems.   Basically the TR number generated in the current dev system (that is a copy of existing dev system) is having a corresponding TR no. in the original system that would have reached Prod/Quality.                                                                                                                                                  A    : If system id is changed after upgrade and not before upgrade, transport request number conflicts will arise.  To prevent this, ask the basis team to increase the transport number sequence to such a number that the conflict will not arise at all.

SAP Workflow Debugging

·       Introduction

Upgrading SAP system from one to another version results is some issues. Workflow is one of the object which might be affected due to upgrade. SAP states that workflows normally wont be affected due to upgrade & we do not have to take any pre-requisite steps before upgrade. But there is a possibility of surprise issues. SAP has provided few comprehensive notes wrt SAP Upgrade workflow which one should go through before doing an upgrade. Following are few issues which we encountered while doing an upgrade from 4.6c to ECC 6.0.



Email not delivered in User’s Inbox, Event not triggered, and Trace doesn’t reflect event being triggered etc

Ø      Check whether the BOR object type is linked, Event & the task are linked/activated – Tcode SWE2. Many a times users report issue of Email not received, events not triggered etc. The reason behind such issue is of linkage not being maintained in SWE2.





Event linkage gets deactivated after the workflow is executed once

Ø      If the event linkage is getting deactivated automatically after the workflow is triggered, then goto SWE2 & goto the details of your linkage


Details (Control + Shift + F2)


Change the “Behavior upon Error Feedback” from ‘Deactivation of linkage’ to ‘System defaults’ & save the changes.




How to activate Workflow trace & what is the use of activating it

Ø      In order to check whether the events are triggered properly, you need to activate the Workflow Trace => Tcode SWELS



Click on Switch On.
After the trace is switched on, execute your workflow. The system will capture the trace of all the events , FM’s being called etc.
Once the workflow steps are completed, goto tcode SWEL => To view the workflow trace

Enter the date on selection screen of SWEL & execute


        You will be able to see the log wrt your workflow


Here in the highlighted block, an IDOC is triggered of type IDOCORDCHG ( Order Change) which goes into exception. This event trigger’s the Workflow through FM ‘SWW_WI_CREATE_VIA_EVENT_IBF’ Double click on the line item.


The log is split into 3 :-

Here it provides the details of the EVENT which triggered Workflow. In above case IDOCORDCHG was called which created an IDOC 4330398 & it went to errors because of some issue. So event INPUTERROROCCURRED was triggered.

Here the Workflow details are provided. WF task 90100001 was called through FM SWW_WI_CREATE_VIA_EVENT_IBF. ( This event is specified in the attributes of the task 90100001 in tcode PFTC).




You want to simulate the Workflow triggering event so that you can do the analysis

Ø      To Simulate the Workflow triggering, goto tcode SWUE 


Enter the Object type, Event & click on Object Key. Since our object type is IDOCORDCHG, the object key is nothing but the IDOC number which is reflected in SWEL trace. Enter the IDOC number 4330398


Tick the Trigger receiver FM synch. Check box & click on CREATE EVENT. If the system finds receiver then it will display “Event created, one receiver found”.
Click on Event receiver. It will display the details along with the status. Since the event was triggered successfully & the receiver was found, we have the status ‘No errors’ under STATUS column for the above scenario.


In case of errors wrt Event, Receiver type etc, the Status Column would display the details.




You are facing Agent issues after upgrade

Ø      If you have done any change in org. agent assignment it is advisable to refresh the buffer => Tcode SWU_OBUF

Click on Start Synchronization





Workflow analysis
Ø       Tcode SWI1

Enter the date/time &  execute

Select the record & click on ‘Display Workflow Log’.



Click on Agent


Click on Agents :
It will show a list of users to whom the workflow email is sent. Check if they are the intended recipients. If they are not the intended recipients then we will have to check the Rule & Binding in PFTC tcode

Click on Details: This will display whether the Work item is created successfully.


       

The agents are not assigned properly to the workflow task. Many users who are not related are also receiving emails of the workitem. Also users are facing issues in forwarding a workitem.

Ø      Use PFTC tcode to check Rule/Agent assignment  & Binding



Goto Triggering events tab & Click on Binding



Click on Generate automatic binding & SAVE

Goto DEFAULT RULES tab. Delete the existing binding & click on Generate automatic binding. The default rule decides the criteria based on which the agents are to be picked up.

Check whether the agent assignment is done properly:-



If you are not able to forward a work item to another user, goto PFTC => Agent assignment => Maintain. Click on Attributes where you would get above popup. Make sure that you select radio button ‘General task’ or ‘General forwarding allowed’.



Validate Workflow customizing settings after upgrade
Ø      After upgrade check whether the workflow customizing settings are same in old & new system using tcode SWU3



You want to create/modify a agent group/assignment
Ø      To create/modify a agent group/assignment use tcode PPOMW



You want to do Workflow diagnosis
Ø      SWUD tcode is used for Workflow diagnosis. This will help to check the WF customizing settings, WF hanging etc issues.


Enter the Task type & task no. => Hit enter key
You will get a list of different issues/activities. Execute each of the activity & check the details for any discrepancy



The old rule of 4.6c is overwritten by a standard rule in ECC 6.0. Hence the workflow task for which you had assigned the rule is not picking up correct agents
Ø      Current a new custom rule with same details. ECC 6.0 has a different number range for std. & custom objects. So the possibility of old rules being overwritten after upgrade is ruled out post ECC 6.0.
The tcode is PFAC_RULE. Enter the necessary details by referring to your old rule & then assign the new custom rule to the Workflow task which was referring to the old rule.


Issues faced wrt Workflow for a upgrade from 4.6c to ECC 6.0

Workitem missing from users inbox i.e. Workflow emails not delivered to intended recipients
Ø      The issue was because of the custom workflow task being overwritten by standard SAP task in ECC 6.0. We created a new WF task within the customer name range & changed the SWE2 task assignment to the new WF task.
Ø      The org. assignment was refreshed using SWU_OBUF
Ø      The agent assignment in PPOMW was changed from the old task to the new task


User not able to forward the workitem
Ø      The issue was because of the task being defined as ‘General forwarding not allowed’. We changed the attribute to ‘General forwarding allowed’ & ensured that the rules are defined. This is done in PFTC tcode under Additional Data => Agent Assignment => Display.


Workitem was received by user  who were not assigned as agents
Ø      The issue was because of the custom rule created with standard name range. In ECC 6.0 the custom rule was overwritten by standard rule because of which workflow item was sent to all the users. We created a new custom rule with tcode PFAC_RULE within the customer name range & assigned the new custom rule to the workflow task.
Ø      The binding was deleted & regenerated using automatic option for TRIGGERING/TERMINATING/RULE binding in PFTC.