Monday, September 26, 2011

SAP ABAP System Fields

SYSTEM Fields related with R/3 System

SY-DBSYS  - R/3 DBMS like ORACLE.

SY-HOST - Application server .

SY-OPSYS - Application server Operating system .

SY-SYSID - R/3 System ID.


SYSTEM Fields about Current Terminal Session

SY-LANGU - One-character language key with the user’s logon language such as E

SY-MANDT - Login client e.g. 600

SY-MODNO - Index of the current external session starting from 0.

SY-UNAME - Login name of the user.


SYSTEM Fields related with current Date and Time

SY-DATUM - Date on the application server in YYYYMMDD format e.g. 20060414

SY-FDAYW - Day of the week according to Factory calendar e.g  Monday = 1.

SY-TIMLO - User’s local time.

SY-UZEIT - Time on the application server.




SYSTEM Fields related with Current ABAP Program

SY-CALLD - If the program is started using CALL TRANSACTION / DIALOG, or SUBMIT … [AND RETURN] its value is 'X'. 
If the program is started using LEAVE TO TRANSACTION or using a transaction code from a screen or when a batch input session is in progress its value is ' ' .

SY-CPROG - The name of the current program and name of the calling program within a procedure.

SY-DBNAM - The name of the logical database linked to an executable program.

SY-DYNGR - Screen group to which the current screen belongs.

SY-DYNNR - Number of the current screen.

SY-LDBPG - In executable programs, the database program of the associated logical database.

SY-REPID - Name of the current ABAP program.

SY-TCODE - The transaction code of the current program.



SYSTEM FIELDS for Background Processing and batch input

SY-BATCH - X if the ABAP program is running in the background, otherwise space


SYSTEM FIELDS for Batch Input

SY-BINPT - X while a batch input session is running and when an ABAP program is called using CALL TRANSACTION USING, otherwise space.


SYSTEM FIELDS For ABAP Programming

SY-ABCDE - It is a constant and contains alphabets(AB..Z). What ever the code page its value remains same.

SY-ULINE - Contains a horizontal line with length 255 used in  creating lists.

SY-VLINE - Contains a vertical line , used in  creating lists.

Loops

SY-INDEX - WithIn a loop it  contains the number of loop passes including the current pass and is set by ABAP commands DO,WHILE.

Strings

SY-FDPOS - It contains the location of a hit in string operations. used with CO,CN, CA, NA, CS, NS, CP, and NP, offset values are assigned to SY-FDPOS depending on the search result.

Internal Tables

SY-TABIX - Current line of an internal table. It is set  only for index tables. The field is either not set or is set to 0 for hashed tables. It iset by ABAP commands APPEND,COLLECT,LOOP AT,READ TABLE,SAERCH itab FOR .

SY-TFILL - After the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TFILL contains the number of lines in the relevant internal table.

Database Access

SY-DBCNT - It contains  the number of table entries processed. In an  loop it  is not set until after the ENDSELECT or ENDEXEC statement.  It is set by ABAP commands DELETE,FETCH,INSERT,MODIFY and UPDATE.

SY-SUBRC - Return code set by the last ABAP statement. if it is 0 it means the statement was a success.


SYSTEM FIELDS for Screens

A group of system fields is set in the PAI event of each screen. Exceptf SY-DATAR, SY-LOOPC, and SY-STEPL, these can be used in list processing.

SY-CUCOL - Horizontal cursor position. Counter begins at column 2.

SY-CUROW - Vertical cursor position. Counter begins at line 1.

SY-DATAR - This field contains 'X' if at least one input field on the screen was changed by the user , otherwise it is  space.It can be used to determine if user has made any changes and a popup can be called with a prompt e.g. POPUP_TO_CONFIRM_CHANGE.

SY-LOOPC - Number of lines currently displayed in a table control. Can be used to determine the step loop blocks in the screen and for scrolling functionality.

SY-PFKEY - GUI status of the current screen. This can be set in the PBO event using the SET PF-STATUS statu OF PROGRAM rep statement.

SY-SCOLS - Number of columns on the current screen.

SY-SROWS - Number of rows on the current screen.

SY-STEPL - Index of the current line in a table control. This is set in each loop pass. SY-STEPL does not have a meaningful value outside the loop (for example, during the POV event for a table line).

SY-TITLE - It contains the text that appears in the title bar of the screen. For selection screens and lists it is the program name,it can  be set using the SET TITLEBAR statement.

SY-UCOMM - It contains the function code that triggered the PAI event.ENTER triggers the PAI but this field will remain blank if no function code is attached to ENTER key.

 Selection Screens

SY-SLSET - Variant used to fill the selection screen.


SYSTEM FIELDS for Creating Lists

SY-COLNO - It contains the current column during list creation starting  at 1. The field is set by the  output statements  WRITE,ULINE,SKIP,POSITION,NEW-LINE,NEW-PAGE and BACK (sets it to 1).

SY-LINCT - It contains  length of  the page in the list.Its value is  0 if the length of page is infinite.

SY-LINNO - It contains the current line during list creation begining from 1, and includes the page header. SY-LINNO is set by the ABAP output statements which are same as SY-COLNO.

SY-LINSZ - It contains the line width in the list. The default value is the default window width. You can change the line width of the list using the LINE-SIZE addition in the REPORT or NEW-PAGE statement. The default value is 84 .

SY-PAGNO - Current page during list creation.

SY-TVAR0 ... SY-TVAR9 - You can assign values to these variables in your programs. Their contents replace the placeholders in the list and column headers of the program in the TOP-OF-PAGE event.


SYSTEM FIELDS For Messages

With call of MESSAGE statement following system fields are set.

SY-MSGID  - contains the message class

SY-MSGNO - contains the message number

SY-MSGTY - contains the message type

SY-MSGV1,…,SY-MSGV4 - These fields hold the place holders in the  message.

Tuesday, September 6, 2011

ABAP Remove spaces in the text

The function CONDENSE with the addition of NO-GAPS is used to remove the space in the text.


Sample:


DATA: inputText(20) VALUE ' Testing 1 2 3 ... ',
length TYPE I.

length = STRLEN( inputText ).
WRITE: 'Input :' , inputText.
WRITE: / 'Length: ', length.

* Use CONDENSE to remove the leading and trailing spaces.
CONDENSE inputText .
length = STRLEN( inputText ).
WRITE: 'Input :' , inputText.
WRITE: / 'Length: ', length.

* Use CONDENSE .. NO-GAPS to remove the spaces in between words in the text .
CONDENSE inputText NO-GAPS.
length = STRLEN( inputText ).
WRITE: 'Input :' , inputText.
WRITE: / 'Length: ', length.

Output:
Input: Testing 1 2 3 ...
Length: 19


Input:Testing 1 2 3 ...
Length: 17
* leading and trailing spaces has been removed.


Input:Testing123...
Length: 13
*Spaces in between the words in the text has been removed.

ABAP Length Of Character

The function is used to retrieve the length of the input text.

Function: STRLEN (INPUT TEXT)

Sample: 

DATA: output TYPE I,
input1(20) VALUE '12345',
input2(20) VALUE ' ABCD EFGH',

output = STRLEN( input1). 
WRITE output.

output = STRLEN( input2 ). 
WRITE / output.

Output:

5
10

Note: The spaces will be included in the character length count.

To remove the leading & tailing spaces or spaces within the text, please refer to CONDENSE ... NO-GAPS

Monday, September 5, 2011

SAPScript: Total number of pages display problem

Symptom:

When displaying the total number of pages in the SAPScript form, if the total pages are more then 10 pages, the total number of pages display is incorrect:

For example, the result having 16 pages with the script :

Page: &PAGE& OF &SAPSCRIPT-FORMPAGES(C)&

When scrolling the Page 1 to 9, the result shown:

Page : 1 of 1
Page : 2 of 1
Page : 3 of 1

When scrolling the Page 10 above, the result shown:

Page : 10 of 16
Page : 11 of 16
Page : 12 of 16


Reason:

When using the  &SAPSCRIPT-FORMPAGES(C)& without specify the length, SAP will compress the total number of pages using the length of the &PAGE& variable.


Solution:


1) Specify the length:
&SAPSCRIPT-FORMPAGES(3)&

2) Not using (C) option:
&SAPSCRIPT-FORMPAGES&

















Friday, September 2, 2011

Function Module to split input text

The function is used to split the input text to multiple line of data based on the number of character given.


Function Module: RKD_WORD_WRAP

Sample:

CALL FUNCTION 'RKD_WORD_WRAP'
    EXPORTING
      TEXTLINE       = lw_itcsy-value  "input text
*    DELIMITER    = lw_delimiter      "Default = space
      OUTPUTLEN  = 30                    "Default = 35
    IMPORTING
      OUT_LINE1      = lv_desc1
      OUT_LINE2      = lv_desc2
      OUT_LINE3      = lv_desc3
    TABLES
      OUT_LINES      = lt_output
    EXCEPTIONS
       OUTPUTLEN_TOO_LARGE = 1.

If the output having more then 3 lines, you can retrieve using the table.

Thursday, September 1, 2011

Function Module Replace Strange Char

Replace non-standard characters with standard characters
for example ǽ will be replaced by "." 
É will be replaced by 'E'.

Function Module: SCP_REPLACE_STRANGE_CHARS

Sample:


CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
  EXPORTING
     intext =                   " Input Text
*   intext_lg = 0           " i Number of Bytes in the Input Text
*   inter_cp = '0000'   " tcp00-cpcodepage  Intermediate character set with replacements
*   inter_base_cp = '0000'   " tcp00-cpcodepage  Basis Code Page for 'INTER_CP'
*   in_cp = '0000'             " tcp00-cpcodepage  Char. set of INTEXT (if not system char. set)
*   replacement = 46       " '0' or the replacement character
  IMPORTING
    outtext =                       " Output text
    outused =                    " Output text length
    outoverflow =              " 'X':Output text incomplete, ' ':otherwise
  EXCEPTIONS
    INVALID_CODEPAGE = 1   " Unknown character set
    CODEPAGE_MISMATCH = 2  " Intermediate character set does not fit the system character set
    INTERNAL_ERROR = 3     " Internal error
    CANNOT_CONVERT = 4     " There was no replacement for a char. in INTEXT
    FIELDS_NOT_TYPE_C = 5. " Fields passed must be type C