SAP AND ABAP TIPS AND FACTS

Wednesday, April 30, 2008

SAP ABAP Editor Icons

SAP ABAP Editor Icons

If the help of the icons in the SAP ABAP Editor you can do the following from the initial screen.




Check the Program:

The program is checked for syntax errors. One the program is free of Syntax errors you can activate it.

Activate the Program:

Only activated version of the Program can be executed. You can have 2 versions of the program, Active and Inactive.

Run the Program

The program can be executed by this Icon.

Check the where used list.

You can check where all the current program is used in the SAP system. This can be useful for Includes and Function Modules.

Do the Environment Analysis

Gives a list of Objects used in the Program along with short description and development class.

Online Manual

Gives online documentation for ABAP Statements, Keywords, Objects

Delete the Program

Deletes the Program. Make sure that you have a backup of the program before deleting it. If you have transported the program to Quality or Production then it is possible to retrieve the program. As a general rule always back up the program.

Copy the Program

Makes a copy of the Program.

Rename the Program

Renames the Program

Start Debugging

You can start the debugger from here.

Execute the Program with a Variant

Execute the Program with a variant. You need to create a Variant first.

Get the Variant List.

If you have created a Variant you can get a list and choose the desired Variant.




SAP ABAP Function module to calculate the difference between 2 dates

SAP ABAP Function module to calculate the difference between 2 dates.

The function module HR_HK_DIFF_BT_2_DATES in SAP ABAP can be used to calculate the difference between 2 dates.

HR_HK_DIFF_BT_2_DATES

Please check the following program. Experiment with the OUTPUT FORMAT (Example '01', '02', '03', '04', 05'). Make sure that Date1 is greater than Date2

REPORT ZEX_DIFFBETW2DATES .


Data: d_date1 like P0001-BEGDA,
      d_date2 like P0001-BEGDA,
      d_yrs  like P0347-SCRYY,
      d_months like P0347-SCRMM,
      d_days like P0347-SCRDD.


* Date1 should be greater than date 2
d_date1 = '20050101'.
d_date2 = '20000104'.

* This function calculates the diference between date 1 and date 2
CALL FUNCTION 'HR_HK_DIFF_BT_2_DATES'
     EXPORTING
          DATE1                   = d_date1
          DATE2                   = d_date2
          OUTPUT_FORMAT           = '05'
     IMPORTING
          YEARS                   = d_yrs
          MONTHS                  = d_months
          DAYS                    = d_days
     EXCEPTIONS
          INVALID_DATES_SPECIFIED = 1
          OTHERS                  = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


write:/ 'Years = ', d_yrs, 'Months = ', d_months, 'Days = ', d_days.

The output of the the above program is as follows.

Difference Between 2 dates                                                                
                                                                                          
Years =  4.0000  Months =    11.0000  Days =      29                                      

                                                                                          


Tuesday, April 29, 2008

SAP ABAP Upload File with Path Selector Dialog Box

SAP ABAP Upload File with Path Selector Dialog Box

SAP ABAP provides a function modules to upload and download files. It also has a function module to call windows dialog box to select the path. We will examine the following function modules.

F4_FILENAME
GUI_UPLOAD

In SAP ABAP F4_FILENAME calls the file selector dialog box and GUI_UPLOAD actually uploads the file to an internal table defined in the code.

EXAMPLE


REPORT ZEX_READFILE_FROMDIR .


Data: d_filename like IBIPPARMS-PATH,
      d_file type string.

data : begin of itab occurs 0,
           values(1000) type c,
           end of itab.

* The following function module calls the File/Path Selector Dialog Box

CALL FUNCTION 'F4_FILENAME'
 EXPORTING
   PROGRAM_NAME         = SYST-CPROG
   DYNPRO_NUMBER        = SYST-DYNNR
   FIELD_NAME                 = ' '
 IMPORTING
   FILE_NAME                   = d_filename.

d_file = d_filename.

* The following function module uploads the file into the internal table

   CALL FUNCTION 'GUI_UPLOAD'
     EXPORTING
      FILENAME                             = d_file
      FILETYPE                               = 'ASC'
      HAS_FIELD_SEPARATOR           = ' '
      HEADER_LENGTH                 = 0
      READ_BY_LINE                      = 'X'
      DAT_MODE                           = ' '
*    IMPORTING
*      FILELENGTH                       =
*      HEADER                             =
     TABLES
       DATA_TAB                          = itab
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                            = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                             = 5
      NO_AUTHORITY                          = 6
      UNKNOWN_ERROR                      = 7
      BAD_DATA_FORMAT                    = 8
      HEADER_NOT_ALLOWED             = 9
      SEPARATOR_NOT_ALLOWED       = 10
      HEADER_TOO_LONG                   = 11
      UNKNOWN_DP_ERROR                = 12
      ACCESS_DENIED                          = 13
      DP_OUT_OF_MEMORY                 = 14
      DISK_FULL                                    = 15
      DP_TIMEOUT                                = 16
      OTHERS                                       = 17.


   IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.

* Output the internal Table

loop at itab.
   Write:/ ITAB.
endloop.


The output of the above program would be as follows.

Reading File From Dirctory                  
                                            
Filed1,Filed2,Field3,Filed4,Field5,Filed6   
                                            


Monday, April 28, 2008

SAP ABAP Data Dictionary Tables

SAP ABAP Data Dictionary Tables

Find below a list of SAP ABAP Data Dictionary Tables.

  
Table Name Short text
DD01L Domains
DD01T R/3 DD: domain texts
DD02ALL Table Parameters for ALLBASE
DD02DB2 DB2/390: Table Parameters
DD02DB6 Table Parameters for DB2 Version 2
DD02INF Table Parameters for INFORMIX, Version 6
DD02L SAP tables
DD02MSS Table Parameters for Microsoft SQL Server
DD02ORA Table parameters for ORACLE, version 6
DD02SYB Storage Parameters for Tables in SYBASE
DD02T R/3 DD: SAP table texts
DD03L Table Fields
DD03T DD: Texts for fields (language dependent)
DD04L Data elements
DD04T R/3 DD: Data element texts
DD05S Foreign key fields
DD06L Pool/cluster structures
DD06T R/3 DD: texts on SQL tables
DD07L R/3 DD: values for the domains
DD07T DD: Texts for Domain Fixed Values (Language-Dependent)
DD08L R/3 DD: relationship definitions
DD08T Texts on the relationship definitions
DD09C ABAP/4: Sytem-dependent attributes of tech. settings
DD09L DD: Technical settings of tables
DD10L Lock table for DD activation
DD12DB2 DB2/390: Index Parameters
DD12DB6 Index Parameters for DB2 Universal Database Version 2
DD12INF Index parameter for INFORMIX
DD12L R/3 S_SECINDEX: secondary indexes, header;
DD12MSS Index Parameters for MS SQL Server
DD12ORA Index Parameters for ORACLE
DD12SYB Index Parameters for SYBASE System_10
DD12T Text Table for DD12L (Short Descriptions of Sec. Indexes)
DD14S R/3 DD: components of SAP objects
DD15L R/3 DD: SAP objects
DD15T R/3 DD: texts on SAP objects
DD16S R/3 DD: SQL table fields
DD17S R/3 S_SECINDEX: secondary indexes, fields
DD20L Matchcode objects
DD20T AS400-T_MCOBJECT: MC Object Texts
DD21S S-MCIDTABLE: Tables for a MC ID
DD23L Matchcode ID
DD23T AS400_L-MCID: Matchcode ID Texts
DD24S Fields of a matchcode ID
DD25L Aggregate Header (Views, MC Objects, Lock Objects)
DD25T Short Texts for Views and Lock Objects
DD26S Base tables and foreign key relationships for a view
DD27S Fields in an Aggregate (View, MC Object, Lock Object)
DD28S Lines of a selection condition
DD29L Selection Condition for Views and MC IDs
DD29T AS400_L-SELCOND: Selection Condition Texts
DD30L Search helps
DD30T Search help texts
DD31S Assignment of search helps to collective search helps
DD32S Search Help Parameter
DD33S Assignment of search help fields
DD35L Search help attachments to structures: Headers
DD36S Parameter-field assignments for search help attachment
DD40L Table types (internal tables defined in DD)
DD40T Text on table types
DD42S Key fields for table types (internal tab. defined in DD)
DD90L Header Information for External Index
DD90T R/3-DD: Text for External Index
DD91S DocID Key Definition of External Index
DD92S Mapping of R/3 Data on External Index
DD93S Attribute of an External Index
DD94S Languages of an Index Category
DD96S Synchronization Tables
DD97S Statements for Trigger and Stored Procedures
DDACL Exclusion times for ABAP/4 Dictionary actions
DDALIAS DD: Second name for accessing tables
DDART DD: Data Class in Technical Settings
DDBUF DD: For transferring the new buffering parameters
DDCDIM DD: Conversion, number of table lines
DDCNVEXIT DD: External conversion methods
DDCNVSTAT DD: Statistical Data for Conversion
DDCNVTABL DD: Contains incr. conv. tables depend. on release/component
DDCNVTIMES DD: Exclusion times for conversion
DDCNVUSR DD: Exception table of converter
DDCPRO DD: Conversion projects
DDCPROT DD: Text on conversion projects
DDCPROTAB DD: Table for conversion projects
DDCQUEUE DD: Queue for CNV Operations
DDCSTA DD: Conversion, number of table lines
DDCSTAT DD: Statistics table for conversions
DDDTRENUPG DD: Table for Renaming Data Elements During Upgrade
DDF4PSINDX Contains Information for Personalizing the F4 Help
DDFTX Run-time object with Screen Painter texts
DDFTX*  
DDFTX2  
DDFTX3  
DDFTX4  
DDFTX5  
DDFTX6  
DDFTX7  
DDFTX8  
DDFTX9  
DDICNVCTRL Control String for Transaction ICNV
DDICNVDAYS DD: Days of Week
DDICNVDIST Distribution of data records of base tables
DDICNVLST Contains information on converter exits
DDLBBUFTST Test: Recognize Access to Buffered Tables
DDLOADD R3load-data table for migration
DDLOADH R3load-header table for migration
DDPAMSCTRL DD: Controls Parallel Handling during Mass Activation
DDPART DD: Partitioned form of TBATG
DDPATH DD: Definition of access paths
DDPRH R/3 DD: Log header
DDPROF DD: Settings for DDIC programs
DDPRS R/3 DD: log lines
DDPRTUVAR User settings for printing DD objects
DDSERVPERF DD: Performance Key Figures of Server for Par. Execution
DDSHDEFSH Default value - search help per user and collective s.h.
DDSHENTITY Table of data elements which need the value table help
DDSHHVALUE Historic Help Values
DDSHLPVERS Current Version of Search Help Activator
DDSHPVALUE Personal Help Values
DDSPAR Storage clause for tables and indexes
DDSPAR1 Storage clause for tables and indexes
DDSPAR2 Storage clause for tables and indexes
DDSTATHIST DD: Statistical Data for Conversion
DDSTORAGE Storage clause for tables and indexes
DDSTORAGE1 Storage clause for tables and indexes
DDSTORAGE2 Storage clause for tables and indexes
DDSYN Parameters for Buffer Synchronization
DDTYPES Table of all Dictionary types and classes
DDTYPET ABAP/4 Dictionary: Texts for type groups
DDVE1 Value Table for Domain DDVERINT4
DDVEPR Check Table with Two Key Fields
DDXTF Nametab field structure for delayed writing
DDXTT Nametab header structure for delayed writing
DDYTF Substitution Nametab (shadow-shadow-nametab for DDXTF)
DDYTT Substitution Nametab (shadow-shadow-nametab for DDXTT)

SAP ABAP COMPUTE ADD COLLECT and APPEND

SAP ABAP COMPUTE ADD COLLECT and APPEND

COMPUTE The COMPUTE statement is used to assign the result of the mathematical statement to a variable. The use of COMPUTE statement is optional. Please examine the following program.

Data: d_result type i,
          d_num1 type i,
          d_num2 type i.


COMPUTE d_result = d_num1 + d_num2.

is the same as

d_result = d_num1 + d_num2.
 

Note: If you want to add 2 numbers then it can also be done as follows in SAP ABAP. 

add d_num1 to d_num2.
In this case the result is stored in d_num2.
COLLECT To Sum up the entries in the internal table you can use the COLLECT statement. The syntax is as shown below.
COLLECT wa INTO itab.
 

Please note that when using COLLECT you should ensure that all the fields that are not a part of the table key  should be numeric. This means that fields that are not part of the table key should be either f,i or p.

Example

DATA: BEGIN OF d_collect,
        key(5) TYPE c,
        num1(2) TYPE n,
        num2    TYPE i,
      END OF d_collect
.
DATA itab LIKE STANDARD TABLE OF d_collect.
d_collect-key = 'First'.
d_collect-num1 = '20'.
d_collect-num2 = '30'.
 
COLLECT d_collect into itab.
 
d_collect-key = 'First'.
d_collect-num1 = '20'.
d_collect-num2 = '15'.
 
COLLECT d_collect into itab.
 
d_collect-key = 'Second'.
d_collect-num1 = '20'.
d_collect-num2 = '15'.
COLLECT d_collect into itab.
 

The result is as follows. 

After first collect

    First 20 30 >>>>> First 20 30  

After Second Collect

    First 20 15 >>>>> First 20 45  

After Third Collect

    Second 20 15 >>>>> First 20 45  
            Second 20 15  

Please make a not that the first and the third COLLECT statements act as insertion statements and they just append the row to the table.


APPEND

The APPEND statement will just insert lines in the internal table. See the example given below.

Example:

DATA: BEGIN OF d_append,
        key(5) TYPE c,
        num1(2) TYPE n,
        num2    TYPE i,
            END OF d_append
.
 
DATA itab LIKE STANDARD TABLE OF d_append.
 
d_append-key = 'First'.
d_append-num1 = '20'.
d_append-num2 = '30'.
 
APPEND d_append to itab.
 
d_append-key = 'First'.
d_append-num1 = '20'.
d_append-num2 = '15'.
 
APPEND d_append to itab.
 
d_append-key = 'Second'.
d_append-num1 = '20'.
d_append-num2 = '15'.
APPEND d_append to itab.

After first APPEND

    First 20 30 >>>>> First 20 30  

After Second APPEND

    First 20 15 >>>>> First 20 30  
            First 20 15  

After Third Collect

    Second 20 15 >>>>> First 20 30  
            First 20 15  
            Second 20 15  

Sunday, April 27, 2008

SAP ABAP Program Types

SAP ABAP Program Types

We will examine the different types of programs in ABAP. Please find below a list of program types.

Type 1
Type M
Type F
Type K
Type J
Type S
Type I

Type 1 Programs in SAP ABAP

These are controlled by the runtime environment. In these types of programs user action defines further processing. Type 1 programs are called as Executable programs as they can be executed by typing the name of the program. In these types of programs there is no need for the programmer to define his own screen. For defining and designing your own screen please refer to Module Pool Programming. Most of the times a Type 1 program is used for reporting, here the data is fetched from the database using queries, and the data is processed and finally displayed on the screen. Basically a report is an executable program which can be run using it program name, or a transaction. Reports or executable programs (Type 1 Programs) can also be run using a SUBMIT statement.

Type M Programs in SAP ABAP

Type M programs are used for Module Pool Programming. These types of programs are controlled by screen flow logic, these programs start with a Transaction Code. The programmer has to define his own screens and the screen flow logic. In these type of programs the programmer creates a series of screens and controlled is passed in between them using the logic. These types of programs are very useful for designing screens for external systems for example custom screens can be designed for Radios Frequency Devices (RFID), complex SAP transactions can be simplified by using Module Pool Programming if the data input fields is less for a particular transaction. For example if only a few fields need to be inputted for a purchase order or a Sales order from regional offices then a custom screen can be created for such users.

TYPE F Programs in SAP ABAP

Type F programs are basically containers for Function Modules, these types of programs cannot be started using a transaction code or a program name. These can be called from other executable programs or Module Pool programs by inserting the code of the Function Module. Type F programs are basically function groups. A function group can have several Function Modules. Function Modules and Function groups can be created using transaction code SE37 or SE80.

TYPE K Programs in SAP ABAP

Type K programs are basically containers for global classes in ABAP Objects. These type of programs cannot be started by using a program name or using a Transaction Code. These types of programs are created using a Class Builder.

Type J Programs in SAP ABAP

These are basically containers for Global Interfaces in ABAP Objects. These programs cannot be run using a program name or a transaction code.

Type S Programs in SAP ABAP

These types of programs are basically containers for subroutines., these subroutines can be called from other ABAP programs externally. They are called as subroutine Pools. These types of programs cannot be run using a program name or a transaction code.

Type I Programs in SAP ABAP

These type of programs are called as Includes. They are used to make code more simpler by breaking it into smaller units. This is also a modularization technique. Basically you can use small pieces of code that can be used in multiple programs into includes. These types of programs cannot be run using the program name or a transaction code.

Friday, April 25, 2008

Important Transaction Codes For SAP IDOCs

SAP R/3 can be interfaced with other systems using various techniques. EDI is one of them. For interfacing SAP R/3 with its partners (Vendors/Customers) the best way is using EDI. Please find below some of the important transaction codes used for IDOCs (intermediate document).

IDOC Monitoring

Transaction Code Description
WE02 IDOC Display
WE05 IDOC List
WE07 IDOC Statistics
WE20 Maintain Partner Profiles Manually
BD82 Generate Partner Profiles Automatically
WE21 Port Definitions
SM59 RFC Destination
BD64 Maintain Customer Model

Message Control

Transaction Code Description
NACE Maintain condition records for various applications
VOK2 Message Control components for Sales and Distribution
VOK3 Message Control components for Purchasing
VOFM Maintain requirements for Message Control
V/86 Field Catalog for condition Tables

Important Menus

Transaction Code Description
WEDI Main Menu for EDI related activities
BALE Main menu for ALE related activities
SWLD Main menu for workflow related activities
SALE ALE Configuration
NACE Message Control Configuration

IDOCs

Transaction Code Description
WE31 Segment Editor
WE30 IDoc Editor to create and extend IDoc type
BD53 Reduce IDoc Types for Master Data
WE60 IDoc documentation (IDoc structure and segment definition)
WE61 IDoc documentation (Control Record, data record, and Status Record)
WE19 Test Tool fro IDOCs
WE12 Convert an Outbound IDOC to an Inbound IDOC
WE16 Process an incoming IDOC
WE17 Process an incoming status file
BD87 Manual processing of IDOCS

Thursday, April 24, 2008

Some important Function Modules for Date Conversion in SAP ABAP

Some important Function Modules for Date Conversion in SAP ABAP

The function module DATE_TO_PERIOD_CONVERT can be used to get the current period by passing the current date. This function module need the following import parameters

I_DATE         Current Date
I_MONMIT     First day of the second half of the month
PERIV           Fiscal year variant

I_DATE in this field you can pass todays date or sy-datum.
I_MONMIT in this field you can pass '00'
PERIV in this filed you can pass the FISCAL YEAR for a list of Fiscal years run transaction OB37

DATA: D_PERIOD          T009B-POPER,                 determined posting period
  D_Year              T009B-BDATJ.                 determined fiscal year


CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

     EXPORTING
          I_DATE         = SY-DATUM
          I_MONMIT   = 00
          I_PERIV        = 'K4'
     IMPORTING
          E_BUPER        = D_PERIOD
          E_GJAHR        = D_YEAR
     EXCEPTIONS
          INPUT_FALSE          = 1
          T009_NOTFOUND  = 2
          T009B_NOTFOUND = 3
          OTHERS                  = 4.


PERIOD_DAY_DETERMINE

The above mentioned function module will determine the first of the the Fiscal Year. If you want to know the first day of the Fiscal year for a Company, then you can use this function module. While trying this function module for company codes of different countries.


REPORT ZEX_PERIODDAYDETERMINE .


Data: d_gjahr     like BKPF-GJAHR,   "Fiscal year
      d_monat     like BKPF-MONAT,   "Posting period
      d_periv     like T001-PERIV,   "Period version
      d_fday      like BKPF-BUDAT,   "First period day
      d_lday      like BKPF-BUDAT,   "Last period day
      d_SPERIOD   like BKPF-BSTAT.   "Special period indicator


    Move: '2008' to   d_gjahr,
          '01'   to   d_monat,
          'K4'   to   d_periv.

CALL FUNCTION 'PERIOD_DAY_DETERMINE'
  EXPORTING
    I_GJAHR                    = d_gjahr
    I_MONAT                    = d_monat
    I_PERIV                    = d_periv
  IMPORTING
    E_FDAY                     = d_fday
    E_LDAY                     = d_lday
    E_SPERIOD                  = d_SPERIOD
  EXCEPTIONS
    ERROR_PERIOD               = 1
    ERROR_PERIOD_VERSION       = 2
    FIRSTDAY_NOT_DEFINED       = 3
    PERIOD_NOT_DEFINED         = 4
    YEAR_INVALID               = 5
    OTHERS                     = 6
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


Write:/ 'First Day Of the Fiscal Year =',d_fday.


Output of the above program is as follows.

Period Day Determine                                  
                                                      
First Day Of the Fiscal Year = 01/01/2008             
Last Day Of the first period Fiscal Year = 01/31/2008


Change the Fiscal Year Variant to some other country and see the result. In my system I got the following result.

Period Day Determine                                   
                                                       
First Day Of the Fiscal Year = 04/01/2008              
Last Day Of the first period Fiscal Year = 04/30/2008  

















ABAP TIPS

PREVIOUS                  NEXT                    RANDOM

 ABAP TIPS


Since your web browser does not support JavaScript, here is a non-JavaScript version of the image slideshow:

 ABAP TIPS
Always specify your conditions in the Where-clause instead of checking them yourself with check statements. The database system can then use an index (if possible) and the network load is considerably less.


 ABAP TIPS
For all frequently used Select statements, try to use an index. You always use an index if you specify (a generic part of) the index fields concatenated with logical Ands in the Select statement's Where clause. Note that complex Where clauses are poison for the statement optimizer in any database system.


 ABAP TIPS
If there exists at least one row of a database table or view with a certain condition, use the Select Single statement instead of a Select-Endselect-loop. Select Single requires one communication with the database system, whereas Select-Endselect needs two.


 ABAP TIPS
It is always faster to use the Into Table version of a Select statement than to use Append statements.


 ABAP TIPS
To read data from several logically connected tables use a join instead of nested Select statements. Network load is considerably less.


 ABAP TIPS
If you want to find the maximum, minimum, sum and average value or the count of a database column, use a select list with aggregate functions instead of computing the aggregates yourself. Network load is considerably less.


 ABAP TIPS
If you process your data only once, use a Select-Endselect-loop instead of collecting data in an internal table with Select Into Table. Internal table handling takes up much more space.


 ABAP TIPS
Use a select list or a view instead of Select * , if you are only interested in specific columns of the table. Network load is considerably less.


 ABAP TIPS
For all frequently used, read-only tables, try to use SAP buffering. Network load is considerably less.


 ABAP TIPS
Whenever possible, use array operations instead of single-row operations to modify your database tables. Frequent communication between the application program and database system produces considerable overhead.


 ABAP TIPS
Whenever possible, use column updates instead of single-row updates to update your database tables. Network load is considerably less.


 ABAP TIPS
Instead of using nested Select loops or FOR ALL ENTRIES it is often possible to use subqueries. Network load is considerably less.


 ABAP TIPS
Use the special operators CO, CA, CS, instead of programming the operations yourself. If ABAP/4 statements are executed per character on long strings, CPU consumption can rise substantially.


 ABAP TIPS
Some function modules for string manipulation have become obsolete and should be replaced by ABAP/4 statements or functions: STRING_CONCATENATE... -> CONCATENATE, STRING_SPLIT... -> SPLIT, STRING_LENGTH -> strlen(), STRING_CENTER -> WRITE...TO...CENTERED, STRING_MOVE_RIGHT -> WRITE...TO...RIGHT-JUSTIFIED


 ABAP TIPS
Use the CONCATENATE statement instead of programming a string concatenation of your own.


 ABAP TIPS
If you want to delete the leading spaces in a string, use the ABAP/4 statement SHIFT...LEFT DELETING LEADING... .Other constructions (with CN and SHIFT...BY SY-FDPOS PLACES, with CONDENSE if possible, with CN and ASSIGN CLA+SY-FDPOS(LEN) ...) are not as fast. In any case, avoid using SHIFT inside a WHILE-loop!


 ABAP TIPS
Use the SPLIT statement instead of programming a string split yourself.


 ABAP TIPS
Use the strlen( ) function to restrict the DO loop to the relevant part of the field, e.g. when determinating a check-sum.


 ABAP TIPS
Use "CLEAR f WITH val" whenever you want to initialize a field with a value different from the field's type-specific initial value.


 ABAP TIPS
Try to keep the table ordered and use binary search or used a table of type SORTED TABLE. If TAB has n entries, linear search runs in O( n ) time, whereas binary search takes only O( log2( n ) ).


 ABAP TIPS
A dynamic key access is slower than a static one, since the key specification must be evaluated at runtime. However, for large tables the costs are dominated by number of comparison needed to locate the entry.


 ABAP TIPS
If you need to access an internal table with different keys repeatedly, keep your own secondary indices.With a secondary index, you can replace a linear search with a binary search plus an index access.


 ABAP TIPS
LOOP ... WHERE is faster than LOOP/CHECK because LOOP ... WHERE evaluates the specified condition internally. As with any logical expressions, the performance is better if the operands of a comparison share a common type. The performance can be further enhanced if LOOP ... WHERE is combined with FROM i1 and/or TO i2, if possible.


Always use Pretty Printer and Extended Program Check before releasing the code. Do not leave unused code in the program. Comment the code thoroughly. Align the comments and the Code. Follow the SAP Standards and SAP Best Practices guidelines. It’s a good practice to take a dump of the code on your local drive.

Ole Automation Part1
Ole Automation Part 2
Processing Blocks in ABAP
Simple ABAP Report
ALV Grid - Changing Colors
ALV Report Example
Creating Variants For ABAP Reports
Recording BDC using Transaction
Sales Document Flow in ABAP
User Exits in SAP SD
SAP ABAP Naming Standards
SAP SD Tables
SAP ABAP Data Dictionary Tables
MM Important Transaction Codes in SAP
Passing g Data From One ABAP Program to Another
ABAP Compute Add Collect and Append
SAP ABAP Determining Attributes of Data
SAP ABAP Editor Icons
BAPI for Displaying Material Data
BAPI to get customer bank details
EDI Outbound Process
SAP EDI Process Overview
Function Module for Vendor Bank details
SAP IDOC
Creating a Valid Password in SAP
SAP BADIs Introduction
SAP ABAP MACROS
POP UP function Module to Confirm and Save Data
Select Options
BAPI for availability check
String to Numerical
SAP Goods Movement Process
Getting a List of Plants for a Material
SAP R3 Clients Concept
ABAP Adobe Forms
Authorization Object Tables
SAP Industry Specific Solutions

Sap Scripts and SmartForms Bar Codes
Standard Reports and Sap Scripts
Important Standard Reports in SAP
Abap Tricks and Tips
Bapi Sales Order
BAPI Purchase Order
Creating Function Modules in SAP
Creating Tables in SAP
Finding User Exits in SAP
Function Module Create Text and Read Text
Important Transaction Codes in SAP
ABAP Function Module for Submitting a Program
ABAP Game Tic Tac Toe
ABAP Internal Table To Excel Sheet
ABAP Function Module to create Directory
Different Types of Menus in SAP
Function Modules in SAP to check Loged in Users
ABAP Function Module for Adding Days to Dates
Call a Transaction From a Remote System
SAP MM simple Procurement Cycle
BAPI Material EDIT
Finding Decimal Places in Currency
Getting negative sign before a number in ABAP
Program Editor Lock Unlock
Restricting Select Options
List of BAPIs in the system
SAP Function Module Scramble a String
LSMW
POP up table contents on the screen
SAP R3 Bookmarking Websites
Stock Requirements List Function Module
Retail Transaction Codes
ABAP Debugger Break Points
ABAP Debugger WatchPoints
Drill Down Reports Concept
Creating a HOT SPOT
Interactive Programs and Hide Technique
String Concatenate
Get Week of the Year
SAP ABAP to Add Days to a Date
Add Months to a Date
Get Month in the Year
Display Clock

ABAP Code For Progress BAR
ABAP Function Module For Caluclator
ABAP Function Module For Calender
Displaying Messages in ABAP
Function Module Pop Up To Confirm
Conversion Routines in SAP
SAP ABAP Authorization
SAP ABAP Module Pool Tutorial
SAP ABAP RFC

Finding Path to SAP Transaction in Menu
SAP Purchasing Documents
SAP and ABAP Shortcuts
Logical Databases
Advantages of Logical Databases
Copy to Clipboard
BAPI Create Material
Finding and Running Programs in ABAP
Program Syntax Check and Extended Syntax Check
Select Options upper lower case
BAPI Sales Order Simulate
Get PLANT and Description for a Material
MRP List Function Module
Production Planning and Controlling
Applications in SAP R3
Tool Based Reports
Important Transaction Codes in SAP
SAP Stock per Bin
Pop Up a Calender
Module to Read a File
Module to Reverse A String
Run an Executable Program with Parameters
Program for POP up Screen
Printing Selection Parameters for a Report
Uploading and DownLoading a Report
SAP ABAP Version Management
SAP ABAP Short Cuts
List of Important System Variables

ABAP MACROS
ABAP Calling a File Selector
Some Important Function Modules
ABAP String Operations

ABAP Function Module to Check Validity of Date
Transfer Internal Table Contents to a File

SAP ABAP Program Types
BAPI to Read Customer Data
Checking Validity of Date
Download to Application Server
ABAP Debugger Breakpoint and Watchpoint
BAPI to get Company Code Details
Creating Material Using BAPI part 2
Generating a Valid Password
Logical Databases Structure
Making Fields OBligatory in Selection Screen
ABAP Views
Getting a Company Code for a Plant
Importing contents of Clipboard in SAP
Getting a Plant for a Material
Plant Material and Storage Location
SAP Production Planning Standard Reports
NetWeaver Components
Supported Databases and Operating Systems