abap-lsmw..etc

63
Day 2 Reports

Upload: api-3733155

Post on 11-Apr-2015

1.357 views

Category:

Documents


1 download

DESCRIPTION

good abap stuff

TRANSCRIPT

Page 1: abap-lsmw..etc

Day 2

Reports

Page 2: abap-lsmw..etc

Basic Functions of the ABAP Editor

Display/change mode

(Ctrl+F1).

Syntax CheckSyntax Check (Ctrl+F2)

Activation (Ctrl+F3)

Execution (F8)

Where used list (Ctrl+Shift+F3)

ABAP help (F1)

Find and Repeat Find

Standard toolbar

Page 3: abap-lsmw..etc

DATA Definitions

• DATA Statement

DATA <Name> TYPE or LIKE VALUE DECIMALS

- All variables used within the ABAP/4 program must be declared with DATA statements

- <Name> up to 30 characters in length, containing any characters other than (, ), +, ., :

- <TYPE> Indicates the variable type

Example:

DATA: p_bukrs LIKE bkpf-bukrs.

DATA i_val TYPE i VALUE 99.

Page 4: abap-lsmw..etc

DATA Definitions

• TYPES Statement

TYPES <name> TYPE or LIKE DECIMALSSAP allows the creation of new user defined data types. And this does not create a variable, BUT just a new type that can be used in creating a variable.

Example : TYPES : cc LIKE bkpf-bukrs

DATA : c_cc TYPE cc.

Page 5: abap-lsmw..etc

TYPES

• Field String Type TYPES: BEGIN OF <type>... END OF <type>.

ExampleTYPES: flight(25) TYPE C.

TYPES: BEGIN OF flightrec1_type,

flag TYPE C,

carrid LIKE spfli_carrid,

name TYPE flight,

sum_field TYPE sum_field_type,

END OF flightrec1_type.

TYPES: f_type TYPE flightrec1_type.

Page 6: abap-lsmw..etc

Selection screen Elements

• Parameters cannot have data type F. The data type F is not supported in the Selection Screen

• To suppress the display use NO-DISPLAY option

– PARAMTER P_TELNO NO-DISPLAY.

• To make a parameter a required input field, the OBLIGATORY option of the PARAMETERS statement is used.

REPORT ztraining.

PARAMETERS: value TYPE i DEFAULT 100, name LIKE sy-uname DEFAULT sy-uname , date LIKE sy-datum DEFAULT sy-datum.

Page 7: abap-lsmw..etc

Selection screen

• To define a checkbox for parameter input, the option AS CHECKBOX of the PARAMETERS statement is used.

• Syntax – PARAMETERS <p>...... AS CHECKBOX.

• To define groups of radio buttons for parameter input, the RADIOBUTTON GROUP option of the PARAMETERS statement is used.

• Syntax – PARAMETERS <p>...... RADIOBUTTON GROUP <radi>.

Example

PARAMETERS: yes AS CHECKBOX, no AS CHECKBOX DEFAULT 'X'

Page 8: abap-lsmw..etc

Program Selections

• SELECT-OPTIONS Statement

SELECT-OPTIONS <Name> FOR <Table field>

NO EXTENSION

OBLIGATORY

LOWER CASE

• SELECT-OPTIONS allows specification of multiple values and ranges. This can only be declared for fields within tables defined in the TABLES statement.

Example

SELECT-OPTIONS: s_kunnr FOR kna1-kunnr.

Page 9: abap-lsmw..etc

Specifying Blank Lines

• To produce blank lines, the SKIP option is used.

Syntax – SELECTION-SCREEN SKIP [<n>].

• To underline a line or part of a line, the ULINE option is used.

Syntax – SELECTION-SCREEN ULINE [[/]<pos(len)>]

• To write text on the selection screen, the COMMENT option is used

Syntax – SELECTION-SCREEN COMMENT [/]<pos(len)> <comm>

[FOR FIELD <f>]

Page 10: abap-lsmw..etc

Elements on a Single Line

• To position a set of parameters or comments on a single line on the selection screen, the elements are declared in a block enclosed by the following two statements:

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN END OF LINE.

Example

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(10) text-001. “ Text Symbol for Title

PARAMETERS: p1(3), p2(5), p3(1).

SELECTION-SCREEN END OF LINE.

Page 11: abap-lsmw..etc

Positioning in the Selection Screen

• To position the next parameter or comment on the selection screen, the POSITION option is used.

• Syntax – SELECTION-SCREEN POSITION <pos>.

• For <pos>, you can specify a number, POS_LOW, or POS_HIGH.

• To create a logical block of elements on the selection screen, mark the beginning of the block with the BEGIN OF BLOCK option of the SELECTION-SCREEN statement, then define the individual elements and mark the end of the block with the END OF BLOCK option as shown below:

– SELECTION-SCREEN BEGIN OF BLOCK <block>

[WITH FRAME [TITLE <title>]]

[NO INTERVALS].

SELECTION-SCREEN END OF BLOCK <block>.

• Blocks can be nested.

Page 12: abap-lsmw..etc

Blocking Selection Screen

• Example – SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE text-002.

PARAMETERS vendor RADIOBUTTON GROUP gr1.

PARAMETERS customer RADIOBUTTON GROUP gr1.

PARAMETERS material RADIOBUTTON GROUP gr1.

SELECTION-SCREEN END OF BLOCK rad1.

Page 13: abap-lsmw..etc

Data Definitions

• Internal TablesDATA : BEGIN OF <name> OCCURS x, (variable definitions) END OF <name>.

Internal Tables are defined as an extension of a structure, with the addition of an OCCURS clause. Internal Tables can be created with or without header lines.

Example 1 (with header line)DATA : BEGIN OF t_wrk OCCURS 0 WITH HEADER LINE, t_kunnr LIKE kna1-kunnr, sw TYPE C, END OF t_wrk.

Page 14: abap-lsmw..etc

Data Definitions

Example 2 (without header line)

DATA : BEGIN OF t_wrk OCCURS 0,

t_kunnr LIKE kna1-kunnr,

sw TYPE c,

END OF t_wrk.

• Internal Table records are added by a number of statements, including INSERT & APPEND.

• Only one line can be referenced at a time in the program via the header line.

• Lines to be referenced must be loaded into the header line via statements such as READ and LOOP.

Page 15: abap-lsmw..etc

Data Definitions

• You can Include another structure into Internal table.

DATA : BEGIN OF t_tab1,

field1 LIKE bkpf-belnr,

field2 LIKE bseg-buzei,

END OF T_TAB1.

DATA : BEGIN OF t_tab2 OCCURS 10.

INCLUDE STRUCTURE t_tab1.

DATA : END OF t_tab2.

In this example, t_tab2 will contain the fields field1 & field2.

Page 16: abap-lsmw..etc

Program Level Statements

• CLEAR Statement– CLEAR <var1>.

– Initializes the var1 to Zero

• REFRESH Statement– REFRESH <var1>.

– Deletes and Initializes the var1 to Zero

• This has differences only in Internal Tables with header line and without header line.

• CLEAR will initialize the header line, if the Internal table is with header line otherwise it is same as REFRESH.

Page 17: abap-lsmw..etc

Data Definitions

• Appending Internal Table

DATA : BEGIN OF t_tab1 OCCURS 0, field1 TYPE C,

field2 TYPE C, END OF t_tab1.

t_tab1-field1 = ‘A’.t_tab1-field2 = ‘B’.APPEND t_tab1.CLEAR t_tab1.

t_tab1-field1 = ‘C’.t_tab1-field2 = ‘D’.APPEND t_tab1.CLEAR t_tab1.

Page 18: abap-lsmw..etc

Internal Tables

• Modifying Internal Table

MODIFY <Internal Table> <Options>

t_tab1-field1 = ‘Y’.t_tab1-field2 = ‘Z’.

MODIFY t_tab1 INDEX 1. This will modify the Internal Table of first row. MODIFY t_tab1. This will modify the entire Internal Table. MODIFY t_tab1 INDEX sy-index. This will modify the Internal Table where the current index pointer is pointing.

Page 19: abap-lsmw..etc

Internal Tables

• Deleting Internal Table

DELETE <Internal Table> <Options>

DELETE t_tab1 INDEX 1. This will delete the Internal Table of first row. DELETE t_tab1 FROM 1 TO 4. This will deletes from 1 to 4 lines in Internal Table. DELETE t_tab1 INDEX sy-index. This will delete the Internal Table where the current index

pointer is pointing. DELETE t_tab1 WHERE t_tab1-field1 = ‘C’. This will delete the satisfied records of the above condition.

Page 20: abap-lsmw..etc

Internal Tables

• Reading Internal Table

READ TABLE <itab> INDEX <idx>.

READ TABLE <itab> INTO <wa> INDEX <idx>.

READ TABLE <itab> WITH KEY <fld1= “string”> [BINARY SEARCH]

ExampleREAD TABLE itab INDEX 1.

This will read the first line of Internal Table

READ TABLE itab INTO wrk_tab INDEX sy-tabix.

This will copy the line into another work area where current index is pointer

is pointing

READ TABLE itab WITH KEY lifnr eq ‘V001’ BINARY SEARCH

This will read the internal table with specified key in binary search mode

Page 21: abap-lsmw..etc

Internal Tables

• The SORT Statement

SORT <Int. Tab.> BY <f1>..<fn> [<order>]

– The internal table <Int. Tab.> is sorted by its standard key if the BY option is– not used. – If BY option is used, it will be sorted by the order of the fields <f1>, <f2>,.. <fn> – By default, it will sort by ASCENDING, – To sort in the descending order we have to specify as DESCENDING.

Page 22: abap-lsmw..etc

Reports

• Creating an ABAP/4 Program– Any customer-developed program should begin with “Y” or “Z”

as a first character.– A statement is a sequence of words that ends with a period “.” .– A word in a statement always begins with an ABAP/4 keyword.

A literal is enclosed by single quotation marks– * at the first column denotes the entire line is commented – “ can be inserted at any place in line, after this double quotes,

everything will be treated as comments.– Transaction Code : SE38.– Menu Path: Tools>ABAP Workbench>ABAP Editor

Page 23: abap-lsmw..etc

Types of programs

Type 1

• run on its own

• Can be started it in the R/3 system without a

transaction code

• Can be executed in background

Type M ( Module pool)

• Program cannot run on its own and can be called via

a transaction code

Page 24: abap-lsmw..etc

Types of programs…

Type I ( Include program )• Contains the program code that can be used by

different programs• It modularizes the source code which consists of

several different, logically related parts• Readability is improved and thus easy

maintenance

Page 25: abap-lsmw..etc

Sample Program

REPORT ZFIRSPRG.

WRITE ‘This is the First Sample ABAP Program’.

WRITE / ‘This is in Second Line.’.

WRITE: / ‘This is in Third Line.’,

‘I am also in Third Line’.

/ - Line feed

: - Chain declaration.

Page 26: abap-lsmw..etc

REPORT Statement

• REPORT Statement– LINE-SIZE - Specifies, in columns, the width of the list to be

displayed.– LINE-COUNT - Specifies the no. of lines per page– MESSAGE-ID - Allows the use of the Message statement

without explicitly specifying the message id.– NO STANDARD PAGE HEADING - Builds a header for the list

displayed from your report by default.

Example :REPORT ZTEST LINE-SIZE 250 LINE-COUNT 65.

WRITE / ‘Width of the Line Statement’.

Page 27: abap-lsmw..etc

WRITE Statement

• WRITE <Format> <Field> <Options>– <Format> Output Format specification

• Being with a “/” to indicate a new line

• WRITE 9 … means on the current line, begin in column 9

• WRITE /03(5)… means begin a new line, begin in column 3, for a length of 5

– <Field> Can be a data variable, text literal, or numbered text– <Options> Specify a number of formatting options like NO-

ZERO, NO-SIGN, CURRENCY w, DECIMALS d, ROUND r, DD/MM/YYYY, NO-GAP

• Example

Write / p_text NO-GAP

Page 28: abap-lsmw..etc

Reports…

REPORT ZTEST NO STANDARD PAGE HEADING

WRITE ‘1’,’2’,’3’ NO-GAP.

WRITE : / 3 ‘Column 1’,

15 ‘Column 2’, 25(7) ‘ ------’,

35 ‘Column 3’.

SKIP.

WRITE ‘End of Line’.

SKIP - Will leave a blank line.

Page 29: abap-lsmw..etc

Events in ABAP

• ABAP is a event driven language. The different events in an ABAP report are– Initialisation– At Selection Screen– At Selection Screen Output– Start of Selection– End of Selection– Top of Page– End of Page

– At Line Selection– At User Command

Page 30: abap-lsmw..etc

Program Level Events

• INITIALIZATION.– This event is triggered prior to the first display of the selection

screen.

Example

INITIALIZATION.

CLEAR s_blart.

s_blart-sign = ‘I’.

s_blart-option = ‘EQ’.

s_blart-low = ‘WA’.

APPEND s_blart.

CLEAR s_blart.

Page 31: abap-lsmw..etc

Initialisation

SAP AG 1999

Initializing the Selection Screen

REPORT sapbc405_sscd_initialization....

INITIALIZATION.

MOVE: mark TO pa_all.

MOVE: 'I' TO so_carr-sign, 'BT' TO so_carr-option, 'AA' TO so_carr-low, 'LH' TO so_carr-high. APPEND so_carr. CLEAR so_carr. MOVE: 'E' TO so_carr-sign, 'EQ' TO so_carr-option, 'DL' TO so_carr-low. APPEND so_carr....

INITIALIZATION.

Output ...

Selection Colors Icons

INITIALIZATION.INITIALIZATION.

Airline

Flight date

LHAA to

to

All

AvailableOccupied

Seats ...

Page 32: abap-lsmw..etc

Program Level Events

• AT SELECTION-SCREEN– This event is processed after user presses “Enter” on the

selection screen. Its main purpose is to verify user input prior to program execution. Used during validating the data entered by the user

• AT SELECTION-SCREEN OUTPUT– This event is processed before display of the selection screen.

Example

AT SELECTION SCREEN.

IF p_wrbtr < 1. MESSAGE e999 WITH ‘Greater than 1.’

ENDIF..

Page 33: abap-lsmw..etc

Program Level Events

• START-OF-SELECTION.– This event begins the main processing of the program. The

event is triggered upon the user pressing “Execute” on the selection screen.

Note : An implicit START-OF-SELECTION is defined by the REPORT statement. Any code placed between the REPORT statement and the first event declaration is executed during the START-OF-SELECTION event.

• END-OF-SELECTION– This event is triggered following the execution of the last

statement in the START-OF-SELECTION. Note : STOP Statement causes an automatic branch to END-

OF-SELECTION.

Page 34: abap-lsmw..etc

Program Level Events

• TOP-OF-PAGE.– This event is triggered by the first WRITE statement to display

data on a new page; it is not triggered by the NEW-PAGE statement, but the first WRITE statement following a NEW-PAGE.

• END-OF-PAGE.– This event is triggered as soon as the LINE-COUNT reached.

NEW-PAGE statement causes this event to be ignored.

Page 35: abap-lsmw..etc

Program Level Event

• AT LINE-SELECTION.– This event is activated from the displayed list when the user

selects “Choose” or double-clicks on a line.

• AT USER-COMMAND.– This event gets activated when the user executes a function

defined within the menu for the displayed list.

Page 36: abap-lsmw..etc

Sample Report

Sample Report

Page 37: abap-lsmw..etc

Events in ABAP Runtime Environment

Page 38: abap-lsmw..etc

Control Statements

• IF…ELSE…ENDIF

• CASE….ENDCASE

• LOOP….ENDLOOP

• DO…..ENDDO

• WHILE….ENDWHILE

Page 39: abap-lsmw..etc

IF StatementIF Statement

Option 3 :

IF <condition1>.

<statement block>

ELSEIF <condition2>.

<statement block>

.....

ELSE.

<statement block>

ENDIF.

Option 1 :

IF <condition1>

<statement block>

ENDIF

Option 2 :

IF <condition1>.

<statement block>

ELSE.

<statement block>

ENDIF.

Page 40: abap-lsmw..etc

IF …

• IF <logical expression><logical expression> is one of the following :

F1 <operand> F2

Any logical or relational operators can be used.

F1 BETWEEN F2 AND F3

Field F1 is checked for the value between F2 and F3

F1 IS INITIAL

Field F1 is Initial I.e. Value is equals Zero

F1 IN <selection>

<selection> is an internal table of Select-Options.

NOT ( F1 IS INITIAL)

Field F1 is not Initial I.e. Value is not equals Zero

Page 41: abap-lsmw..etc

OPERANDS= , EQ Equal to.

<>, ><, NE Not Equal to.

>, GT Greater than.

<, LT Less than.

>=, =>, GE Greater than or equal to

<=, =<, LE Less than or equal to

CO Contains only. Left side contains only characters from right side.

CN Contains not only. Equivalent to NOT ( c1 CO c2 ).

CA Contains any. Left side contains at least one character from the right side.

NA Contains not any. Equivalent to NOT ( c1 CA c2 ).

CS Contains String. Left side contains the full string in right side.

NS Contains no string. Equivalent to NOT ( c1 CS c2).

CP Contains pattern. Similar to LIKE in WHERE clause. “*” matches any multiple characters, the “+” matches a single

character. Use the “#” to indicate the character immediately following to be matched literally; For eg., to find an actual “*” in position 1, use “#*…”

NP Contains no pattern. Equivalent to NOT ( c1 CP c2 ).

Page 42: abap-lsmw..etc

CASE <var>.

WHEN <val1>.

<statement block>

WHEN <val2>.

<statement block>

......

WHEN OTHERS.

<statement block>

ENDCASE.

CASE StatementCASE Statement

Page 43: abap-lsmw..etc

• Example DATA: txt1 VALUE 'X',

txt2 VALUE 'Y',

txt3 VALUE 'Z',

strng VALUE 'A'.

CASE strng.

WHEN text1.

WRITE: / 'String is', txt1.

WHEN text2.

WRITE: / ’String is’, txt2.

WHEN text3.

WRITE: / ’String is’, txt3.

WHEN OTHERS.

WRITE: / ’String is not’, txt1, txt2, txt3.

ENDCASE.

The output appears as follows: String is not X Y Z

CASE..

Page 44: abap-lsmw..etc

LOOP AT <itab>

FROM <n1>

TO <n2>

WHERE <logical expr>

ENDLOOP.

<itab> Internal Table within the program

<n1> If specified, the LOOP begins with record number n1.

<n2> If specified, the LOOP ends with record number n2.

WHERE Comparison to be performed before processing the statements.

System fields : sy-index, sy-tabix.

LOOP StatementLOOP Statement

Page 45: abap-lsmw..etc

LOOP…

• Nested Loops are also possibleLOOP AT ITAB1.

LOOP AT ITAB2.

….

ENDLOOP.

ENDLOOP.

Within the loop, the statements CHECK and EXIT can also be used; a

failed CHECK statement skips the processing of the current record and

returns to the top of the LOOP. EXIT resumes processing with the

statement immediately following the ENDLOOP.

Page 46: abap-lsmw..etc

Control Breaks in Loop

• Four forms of the AT statement exist for processing within a LOOP.

1. AT FIRST … ENDAT for Statements to be executed before any records are processed.

ExampleLOOP AT itab. AT FIRST.

WRITE : SY-ULINE.

ENDAT.…….ENDLOOP.

Page 47: abap-lsmw..etc

Control Breaks

2. AT LAST … ENDAT for Statements to be executed after all records are processed. For both AT FIRST and AT LAST, all fields in the header line of the internal table will contain an “*”

Example

LOOP AT itab.

AT LAST.

WRITE : SY-ULINE.

ENDAT.

……

ENDLOOP.

Page 48: abap-lsmw..etc

Control Breaks

3. AT NEW <Field Name> … ENDAT for Statements to be executed at the beginning of a group of records containing the same value for <Field Name>. All fields in the internal table header line defined AFTER <Field Name> will contain an “*”

Example

AT NEW I_LIFNR.

WRITE : SY-ULINE

ENDAT.

Page 49: abap-lsmw..etc

Control Breaks

4. AT END OF <Field name>. Statements to be executed at the end of a group of records containing the same value for <Field Name>. All fields in the internal table header line defined AFTER <Field Name> will contain an “*”.

ExampleAT END OF I_LIFNR.

SUM.

WRITE : SY-ULINE.

ENDAT.

Note : AT NEW and AT END OF only make sense for a sorted table.

Page 50: abap-lsmw..etc

DO [<n> TIMES] [VARYING <f> FROM <f1> NEXT <f2>].

<statement block>

ENDDO.

Do LoopDo Loop

Example

DO 2 TIMES.

WRITE SY-INDEX.

SKIP.

DO 3 TIMES.

WRITE SY-INDEX.

ENDDO.

SKIP.

ENDDO.

Output11 2 321 2 3

Page 51: abap-lsmw..etc

WHILE <condition> [VARY <f> FROM <f1> NEXT <f2>].

<statement block>

ENDWHILE.

ExampleDATA: length TYPE I VALUE 0,

strl TYPE I VALUE 0,

string(30) TYPE C VALUE 'Test String'.

strl = STRLEN( string ).WHILE string NE SPACE. WRITE string(1). length = sy-index. SHIFT string.ENDWHILE.

WRITE: / 'STRLEN: ', strl.

WRITE: / 'Length of string:', length.

WHILE LoopWHILE Loop

Output

T e s t S t r i n g

STRLEN: 11

Length of string:

11

Page 52: abap-lsmw..etc

LOOP

• To terminate the processing of a loop, one of the following keywords is used.

• CONTINUE

-Terminating the current Loop Pass Unconditionally• CHECK

- Terminating the current Loop Pass Conditionally • EXIT -

Terminating a Loop Entirely

Page 53: abap-lsmw..etc

Other events

• NEW-PAGE.– This will trigger a new page to be displayed. – This can be used to skip from the current page.

Page 54: abap-lsmw..etc

Data Retrieval

SELECT * FROM <database table>

WHERE …

ENDSELECT.

<database table> is table defined within the TABLES statement.

WHERE clause identifies which records to retrieve.

Note : SY-SUBRC, 0 If records are retrieved, 4 if none are found.

SY-DBCNT, Number of database records retrieved.

Page 55: abap-lsmw..etc

Data Retrieval

• SELECT * FROM <dbtable> INTO <workarea>. <workarea> must be defined in your program, and be at least as wide as the record

length of the <dbtable>. In this case, the record is read into the <workarea> and not into the database table buffer.

• SELECT * FROM <dbtable> INTO TABLE <itab> … <itab> must be defined as <workarea> above. The contents of the internal table are

replaced with the records retrieved. This form does not require an ENDSELECT, as no loop processing is performed.

• SELECT * FROM <dbtable> APPENDING TABLE <itab> … same as INTO TABLE, but the records are added to the end of <itab>, leaving the

original contents.

Page 56: abap-lsmw..etc

Data Retrieval

• SELECT * FROM <dbtable> … ORDER BY <f1> <f2> … specifies a sort order for records retrieved. By default is ascending order; if the field

should be in descending order use …<f1> DESCENDING

• SELECT * FROM <dbtable> … CLIENT SPECIFIED For client-dependent tables, the first field is always the client or MANDT. This does

not normally need to be specified; SAP will automatically only retrieve records from the client from which the report is being executed.

Page 57: abap-lsmw..etc

Data Retrieval

• SELECT SINGLE * FROM <dbtable> WHERE …This statement retrieves one and only one record from the database. This form does not require an ENDSELECT, as no loop processing is performed.

• ABAP/4 is more like SQL. In addition to SELECT * form, individual fields or columns can be selected. In this case, the INTO clause must be specified:

SELECT belnr blart INTO t_bkpf-belnr t_bkpf-blart FROM bkpf ….

• The addition INTO CORRESPONDING FIELDS OF <structure> can also be used. Also, the GROUP BY clause has also been added, with the following aggregate functions available :

– MIN, MAX, AVG, SUM, COUNT

• Finally, the table name in the FROM clause can now be a variable; thusSELECT * FROM (var1)

Page 58: abap-lsmw..etc

• Joins are more efficient than logical database and nested selects.

• They access multiple tables with one select statement.

Joins

Page 59: abap-lsmw..etc

Inner Joins

• Inner Joins allow access to multiple tables with a single select

statement by creating a temporary table based on the conditions in

the ON Statement. Multiple tables are joined based on the key fields

specified by the join condition.

• Inner Joins are equivalent to views created in the Dictionary.

Syntax for inner join SELECT scarr~carrname sflight~carrid sflight~connid sflight~fldate INTO (carrname,carrid,connid, date) FROM scarr INNER JOIN sflight ON scarr~carrid = sflight~carrid. WRITE:/ carrname,carrid,connid,date. ENDSELECT.

Page 60: abap-lsmw..etc

Inner Joins Syntax.

SELECT <table1~field1 table1~field2 table2~field3….>

into (<target>)

FROM <table1> INNER JOIN <table2>

ON <table1~keyfield1> =<table2~keyfield1>

AND <table1~keyfield2> = <table2~keyfield2>

AND…

WHERE….

ENDSELECT.

Page 61: abap-lsmw..etc

Left Outer Joins

• Like inner joins, left outer joins create a temporary table based on the conditions specified in the ON clause

• Unlike inner joins: - Based on conditions expressed in the ON statement, fields in the driving (left-hand) table that do not correspond to fields in the right-hand table are still added to temporary table.There they are populated with initial values

SELECT <table1~field1 table1~field2 table2~field3….> into (<target>) FROM <table1> LEFT OUTER JOIN <table2> ON <table1~keyfield1> =<table2~keyfield1> AND <table1~keyfield2> = <table2~keyfield2> AND… WHERE….ENDSELECT.

Page 62: abap-lsmw..etc

Joins Accessing More than Two Tables

SELECT <table1~field1 table1~field2 table2~field3….>

into (<target>)

FROM (<table1> INNER JOIN <table2>

ON <table1~keyfield1> =<table2~keyfield1>

AND <table1~keyfield2> = <table2~keyfield2>

AND…)

INNER JOIN <table3>

ON <table1~keyfield > = <table3~ keyfield >

AND…

WHERE….

ENDSELECT.

Page 63: abap-lsmw..etc

System Variables - List

• The system fields used in interactive reporting

– SY-CUROW - Cursor position (line)

– SY-CUCOL - Cursor position (column)

– SY-CPAGE - Number of the current page

– SY-STACO - First displayed column of the list on display

– SY-STARO - First displayed line of the list on display

– SY-LSIND - Index of the displayed list level

– SY-LISTI - Index of the selected list level

– SY-LILLI - Number of the selected line

– SY-LISEL - Contents of the selected line