Vous êtes sur la page 1sur 266

! !

" #
$ !
"

! " !# # $ % & ! !%' ( !# ) )*


!%' )! (! + # !%' + + ,
! !%-. #!' -/ !!)- # !' ! # & & ) # ! !%
0! (! ! ,
12 - 2 - 2 3 -/ - ( 4- $ - 15- 67 - -
/ 67 -/ - -( -4 -8 -8/ - -1 & -. (+ -
9 % -: ! - #1 %! 4 # ) !# & & ) # 12 0! (! ! #
3 #!# # ;< # ,
/ & & ) # / 0! (! !,
3915-5 /( -/ =- # ! % # & & ) # /( " ! (,
0 4-10 - !& 9 &+ ! +!!#- -. -$ # ! - # . #
) !# & & ) ! 0 4 -1 ,
>: ;-5 ;-5>: ; #. 60 # ) !# & & ) # . 60?-. ! #. #
. 0! ! - + 1 !%: + !!& ,
@ & & ) ! ! -1 ,
@ ( & & ) # ! -1 ,
- ' # # ; 8 8#
! 9 ( ' ) # ( : + !!& ,
4 2 ) ! ; 2- +' # ,
- 6- - ,! -4 (( -4 (( #' : 4 '<+ A !# ) #
A & !' # ( + # ;!&! # ) !# & & ) #
" + # # # ;< # ' ' , # 9 ! !# ) #
& # ) # B' & , & :4 # # + #
# #& +8 1 %! ! 8' ) , !# ) )* < # ( 8% + 3 + #
%' ,
1# ) ! + 1 %! ! )* !+ ! + & )C #& && < #
' # , ! & # & ' # ! " # + D! 8 + EF A
D! 8 GH & ## + I +1 %! ! 8' ) , AD! 8
C ) > % &!# " %C + !# 3 ! < #&) # ) !,
AD! 8 + #& +%C !# ) # & +# I& -#
# $ &C # B' & !# ) # & # C ) +& & ,
# # ) ! + 1 %! ! & +) ' %C+ # > % &,
&

% & '
( ) "

%
* +(
+( ,
- .
( + ( / )! (

9! !( (
:+ ! ,:+ 4( ! (! # # ! !
! ! # # &+ ,:+ ( ( J+ # !!) ! (
%! ! !' #!' ! ! + ## ! ,
$

, !
" " )
!0

1
$
! "
# ! $
%
!
# ! $

& ! #'# ( "


# % !! #
!
!
) #*+
% "
!
#'# ( "

, # #

! #*+ -
. . !
&
& /, #
& 0
& 1
& 2
& 3 #

!
,4 !! !
,5 ! ,) !
,/ 6 !
#'# ( "
$

!
"
# !
# ' ## #

% #
& % #
) +

#
#

$# ( $# (

# #
)
$ * #

! "
#$ # !" % #$ # ! % &
' !"
( ) * *
% ! % "' ( ) % + ,
! ) "
# ! ) ,! " ! %
"
- )

) , # ! ! !

," $
//0$
//
//
//0
//0
- .)

//
$ $ $
," // $

#$ # ! ( "
. ( *
( ""
# ! ) % % ) ( ! ) "
. ! ! ) * + "

-
- # .

4 $ $ ( # $
4 $ (1 #
4 ," , #

, - , # 2 2

4 ,"(13 1 #3
4 ,"(3$ $ #
!!!
4 )
4 $ $ ##
4 !!!
4 " -

- #

% "0
!% 1 ! !
"
!" .
! ! + "
0 ( % !
" ! + % %
2% ! "

/
) " -

) " -
+
#(
#
#
5
+#
- - #
# -
#
, #
-

, 3
3
+
-

$# 3
$# -
" -
+

0 % !% ! ) # !2 % ! "
( % %% ! ) "
) ! % , # !2 % ! ,! ( 4
2 !*%! + 5 +
56 + 6* ! ! ) (
7% 7"
2%*% 1 ! *!
* ! ) ! % "

3
#

-
/
," .) //

- /
%
//

+
, #
$# #

& . + %% % ! ) " (
, %, ( ! " %
! ) 4
% 9*
% % * ! *
% 5 ! % 6*
% % 5 * * *% +!
6*
% % *
% "
,! % ( 4
) !% 1 ! "
. +, ! " # 4 ( ! , ) +
% % " &! + ) ! ( "
' + ( % + "

8
- 3 %

, ## 7

#
%

)
$ 6
)
$ 6 !!!

!!!

; ) <( ( , 4
( ! ) ! *
* , + ! "
0 ! ! "
0 % % 9 , , "2 *! !
% % ! ) ,
"0 9 , 5 %! ( %
% * , % 6"

:
%
Application
hierarchy
Package
Package Program
Function group
BC400 Class/Interface
...
Inactive objects
7 6 . (# #
Local objects
# #

&
#
$899

"$ * ,

- $899 01+ "%10-


- $899 01+ "%10-
,
$899 %
$# #( #
$30 $899

# ! ) !4
( ( "
( %% ! ) 4 *% *
& ' ! ) "
! ) ( ) 4
= 4 *! *( *
= % 4 *%
0 ! % ) ) % ( "
) ! ( "
' + ) ) ! ) "
' + ) ) ! )
"
0 ( , ) "
0 ) ! %> ! ! =( "
% #
7 6 , -
#

0 , , ,% ( " ! ,
) ! ( ! ! ; ) <( "
) ! ! "
/ #

#
#

#( #
6

<( ( " , (
( !% 9 !"
& % > 4
0 ! ! + ) %
( " ! ! ( % ) !
( "
0 ! ) ! !
! "
0 9 % ) ! ! % ) " 2% !%
> ) ! 9 ) *! ! ) ! +
"
$

$ #

<

: $899099
- +6 99

# $ #

- . /+ # ;

# : +5
#
% #
;

0 + % ; ) <( 4
. # "/ ! ) ! %
+ % "? + ! !, " 2%
+ 9 * 9 , ! + "
. # "/ $ ! ( "1
% + !% "
+ % % , 4
$ % 2%! ! ! , ( * ! %
( "
% % !% )
+ "0 % ( "
&' ( %0 ! ( HOME" 0 , %
% = % % "
( %' , +
!"
$ ) =

+ # =

: $899099

) = " >?@99AB =
C6 $899

!!! (*

+ # =

#( #

! "#$ %& ' ()


! "#$ % ' ()
! "#$ %"
! "#$ % &

% ! ) > %
( ) "= * > % )
! " #$$" 1 +, > "
0 ! > , ! ( + % &! "
! ! ) 5 + * 6 ) "
! ! + !"
- 6"

1 #
XXX YYY
#
D ( E

- #
...

DATA wa_scarr TYPE scarr .

SELECT * FROM scarr


INTO wa_scarr .
NEW-LINE.
WRITE wa_scarr-carrid .
WRITE wa_scarr-carrname .
WRITE wa_scarr-url .
ENDSELECT.

& ( "
1 , "
% , + !, "
. ! + "
"
9 ( ( "
; ( "
& ! , , + !, *
" + * + !, ,
, "
0 ! % ( , 4
! "

-
- 6""

* comments ...
* comments ... $
D # # E
* comments ...

DATA wa_scarr TYPE scarr. " comments ...


$ ( #
SELECT * FROM scarr " comments ...
INTO wa_scarr. " comments ...
NEW-LINE.
WRITE : wa_scarr-carrid ,
wa_scarr-carrname , $
wa_scarr-url .

ENDSELECT.

0 (( , +*" !
& ! "
2%! , % ! *! (
> + ""
0 ( ( ' ( 4
% , "
% % , , "
+ % % 5 * * 6"
< ( % %
& ! * % "

/
-F(-& )$ ) $

REPORT ...

PARAMETERS pa_carr TYPE scarr-carrid.

DATA wa_scarr TYPE scarr.

SELECT SINGLE * FROM scarr


INTO wa_scarr
WHERE carrid = pa_carr.

IF sy-subrc EQ 0.
NEW-LINE.
WRITE: wa_scarr-carrid,
wa_scarr-carrname,
wa_scarr-url.
ELSE.
WRITE 'Sorry, no data found!'.
ENDIF.

= ! & * & ! , ( ! %
sy-subrc , % 9 % , "
( ,! , 9 % !"
0 % , , ( (
% ( "

3
$
$

: $89909901-

# $ # <

!!!

. / B
!!!

+6 #
-
#
!!! ,6

% , ( % % ' ( 4
2 ( * ( ) ! "? + ! !
, " 2% 9 * ! + !
> "5 ! %# "/
"6
' ! + % , "@ 9 % +
( > % "
" ( "
< , "
= * ( ) * ! 5 , *! 9,
( 6"
%9 ! 9"
4* ( % & "

8
START-OF-SELECTION.
+ SELECT SINGLE * FROM scarr
INTO wa_scarr
WHERE carrid = pa_car.
IF sy-subrc = 0.
WRITE
MOVE-CORRESPONDING wa_scarr
C TO sbc400_carrier.
# CALL SCREEN 100.
6 MOVE-CORRESPONDING sbc400_carrier
!!!
TO wa_scarr.
,B
WRITE:
WRITE wa_scarr-carrid,
? wa_scarr-carrname,
wa_scarr-currcode.

ENDIF.

% ( % ! + !, % &
4
#$ + ! ! % ,
! "
+ ! !% % %% ( , % + !,
"
@ % ! , % ( %
& . + "

:
" #

-
,- - . / 0 1 ,- 0 2 / 1

D E D E

D E

$ $
D E D E

2%! ( ) ( * # # ,!
#$ # !% "
! ) 9 # # % ( ! *
,( " ( ( %! , , , 9 !
*% 9 "
2%! 9 ( *! , , , ( ! "
2%! ( * % ( ) ! ( ! %
' ". ! ( * % , 4
2 ( *, ( ( ( , "
! 9 + "
( ( ( , "
1 )

-
,- - . / 0 1 ,- 0 2 / 1

D E

D E

$ $
D E D E

6 D E' 6 '
#
# ! !

. ( ) * ) 5A; '6 5 6
#$ # ! "
) 9 5 6"
) !* 9 !"
2%*% 9 * , 9 ! ( 9 *
( ( + "
0 ! % , ( ! , 9 4
2%! ! % ( * ( ( + % "
2%! 9 % * ,( * ( ( + "
! ( "
+ % ! % ( ' (
" ( ) ! 7 7 ! , )
( " * ( , #$ # !, ( ( *
, % * ( (*"
$ $

- . #

:991-
: $89909901-
: $899099
6 !!!
: $89909901-
!!!

$#
#&
+

!!!
!!!

2%! , % =( ! 1 !
*! ( "
* ! ) % ! ; ) <( "2 9 %
* & "? + ! !,
"
( + * ,*% !
( "
1 % > " - * "
( ! "
! ) *! ( +
> > "
" $ ,

- . #

,
% !!!
"
- / !!!

+ ##

:991-

=( % ! * % ,4
<( 5 1 ! 6"
2 . 9 * * "
1 9"
9% . "0 9
% , ( "
!!! 7 #

!!!

!!!
, "

- /
" "

!!! !!!

! % ) "
! % % ! %( 5 6
% , "
! % $ % ( % "
= 9 * "
3 # ! 1# #

# # 1# #
D # #E D #
E

, "

- /
" "

!!! !!!

' ! % , & 5 *+ !, $+ 6 &


' !5 6" ! ( ! 4
! ( ! ) " (
! % ! %% > % !"
( ! ( & ' !5% /! / 6"
% ! ( *
, % "
"
. % ! *! % + ! +
, "; ! ,! ! % ! 9 ( % %
%! "

-
+#

1# #

# # #
TYPES type_name TYPE ...

" #
D- E
DATA myvar TYPE type_name .
D P
T N
DATA myvar2 LIKE myvar.
I C
F X
STRING
XSTRING

0 & ! * ! ! ) "
% , & ! 4
d ' 5 *% 4 YYYYMMDD6
t 5$ *% 4 HHMMSS6
i 2 5, 6
f = 5 6
string 5 *( 6
xstring &! > 5B - *( 6
% % % , ! 4
c 5 6
n < 5" 6
x &! 5B - 6
p + 5 + C ! 6" 0 ( %!

% "
0 , % % % & ! + !, %
TYPES DATA"
0 LIKE % & ! & "

/
# 5 #
...
TYPES t_percentage(3) TYPE p DECIMALS 2.

DATA: percentage1 TYPE t_percentage,


S_CARR_ID ,3 / 1
percentage2 TYPE t_percentage,
number1 TYPE i VALUE 17,
number2 LIKE number1, SBC400FOCC , 1
city(15) TYPE c,
carrid TYPE s_carr_id,
connid TYPE sbc400focc-connid.

& 4
4
/ & &5

.
.

% & ! * **&* . " !


% ! ) % ! % , , !4
$ D $+ % D & D! "
. % & ! *** .! ( "
! % % !! 4
$+ ! D / 0 $+ % D & D! 1
0 % ) 4
$ D $+ ! D 1
= ! *! % , 2
"
. 3 24 ! ( % ! ) "
= ! * ) $ ,
% ! ! $+ "
= & ! ( % ! * ! %
! ( "
2% ! % * !! ) % % "
0 , % , % % + !, %
$+ $ "
. ! ! * ! 9 % % ! 4
$ D $+ D! D 1

3
,6

,6
3 #

% # # 6 # #

123 $ 'Hallo'
-123 # '123.45'
,# '123.45E01'

,6
$

CONSTANTS myconst TYPE type_name VALUE { literal | IS INITIAL } .

0 ! ( %9 ) 9" ( %
"
. ! % %9 ( & " ( .
" !> +"
0 5, % ( 6 " !
! % ! , ( % ! "A
! "
0 ( 5 *% *"""6 9 "
! ! ( *% !"
2% 9 ( *! ( , "
% , " $ "$ " ! + ,!
% % ( ) , $ " 3 24 ( %
" ( % "
(( 4
( % , ( ! "
" + ! "

8
5 #

#
CONSTANTS c_qf TYPE s_carr_id VALUE 'QF'.
DATA: carrid1 TYPE s_carr_id,
carrid2 TYPE s_carr_id VALUE 'LH',
counter TYPE i.

6 - 78 .& .
9+

MOVE c_qf TO carrid1. 78 9+

carrid2 = carrid1. 78 78

ADD 1 TO counter. 78 78 &

CLEAR: carrid1,
carrid2,
counter.

2% * 9 (
( % ) "
1 ! ) ( ( ! *
%% ( ! % 3 24 "
0 3 ! % ) " , ! 9(
( % 4
3 $ 1
5 1
2% ) %% ! * ! ( !% (
9 "
0 , % % ! ( + !,
% 3 "
2 % ) ( % ! "0 ,
% % ( % ! + !, %
2 "

:
$ # #

DATA: max TYPE sbc400focc-seatsmax,


occ TYPE sbc400focc-seatsocc,
percentage TYPE sbc400focc-percentage.

COMPUTE percentage = occ * 100 / max .

? $ / & + #

percentage = occ * 100 / max .

2 & ! ( . 7 7 ! , "< +
+ !, % ! + "E
4
+
-
* ?
/ '(
** ,
DIV 2 ( ,
MOD # , (
% % %% ! & ( "
= 9 * % , ( % % 4
5 $ 2 "/ & ( 01
. % * + % "
! + "
! !% # ) * , *%
+ 9 * % *% , ! , * $( * % !
$ "
0 , % % % + !,
% 4$ "
$ #

IF var > 0 .
-

ELSEIF var = 0 .
-

ELSE .
-

CASE mycarrid.
ENDIF .
WHEN 'AA'.
-

WHEN 'LH'.
-

WHEN OTHERS .
-

ENDCASE .

2 & ! ( , % 9 %% > "


. " * ! % ) % 9
+" 2% % * $6 9 * ( 9 "
@ % 76 " * "
. , " , ! ! 9 ! , " 2%
%% * ( > 9 " 2% %% * 2 9 *
( 9 "
@ % > !* "
. * ! + ( 9 * !% & # "
(( 4
2%! ! +% !, ( *! "
"2 ( # % "
; ! 6 8 %, " > ! 9 %
& " 2% % * !
, % % 9 +"
3
DO. 3
- sy-index
IF <abort_condition>. EXIT. ENDIF.
ENDDO.

DO n TIMES. 3
sy-index
-
ENDDO.

WHILE <condition>.
-
ENDWHILE. 3
sy-index

SELECT ... FROM <dbtab> ...


-
ENDSELECT.

LOOP AT <internal table> ...


-
ENDLOOP.

2 & % "2 " 2 2 $ " 2 $


". % , % ! , * %
! ! 9 .% ". ! ,!
"
4 .9
, " 9 9
" %! % * , !
"

, 76,2 " 76,2 ! 9 % F D9 G


%% "
. 6 8 -,$ ! % %% , !" =
9 *! "
# /

MESSAGE tnnn(message_class) [ WITH v1 [ v2 ] [ v3 ] [ v4 ] ] .

/ # /

i " # # 6

s - - 6

w $ 6( -

e + $ 6( -

a # # 6

x - ) MESSAGE_TYPE_X -

0 , : "0 ( %!
% "
0 7,$6 % ( " ! !*
9"
! 2' ( " 9 %% > % % 4
a % 9"
x 1. , "
e ( 9 "
w 7 ( 9 "
i , % % 9"
s % , "
0 , % % % ( ! 9% :
+ !, "
1# #) -

#
, #
DATA wa_focc TYPE sbc400focc.
- - $899, $$
DATA wa_spfli TYPE spfli.
-
# - ,3"

#
#
#

. . -. / :
* 6-

/ . . . 2- 2- / - / 2
* 6 -

2 & ! % ) 5+ , % 6" 0
( ! ) "
* * ( % ( "
, %% ,! % % 4
. $ D $+ D! ! ! D! "
. $ 2 D D! % !
"2 D D!
D D! "
7% 7% ( * , *
!! "
%# " ! ! > $ 2 % % % "
- 3 #)

TYPES: BEGIN OF st_flightinfo,


carrid TYPE s_carr_id, #
connid TYPE s_conn_id, # #
fldate TYPE s_date,
seatsmax TYPE sflight-seatsmax,
seatsocc TYPE sflight-seatsocc,
percentage(3) TYPE p DECIMALS 2,
END OF st_flightinfo.

DATA wa_flightinfo TYPE st_flightinfo.


#

. . -. / :
* 6- -

0 % ! !, $+ "
!
:," D! D ;
111 ;
" D! D
"1 ( ( !! ! , "
0 , % % % + !, % $+ "
0 % ) % , !"
= ! * ) % !4
$ % :," D ;
111 ;
" D 1

-
- $

DATA wa_scarr TYPE scarr.

wa_scarr - carrid = 'LH'.

SELECT SINGLE * FROM scarr


INTO wa_scarr
WHERE carrid = wa_scarr - carrid.

WRITE: / wa_scarr - carrid,


wa_scarr - carrname,
wa_scarr - url.

/ . . / .
* 6 9+ 9- ;<' *** - /

,! , ! 4
D 9 D "
= *! ! "

/
5 # -

DATA: wa_sflight TYPE sflight,


wa_focc TYPE sbc400focc.
...
MOVE-CORRESPONDING wa_sflight TO wa_focc.

/ . . . -. 2 / :
* 6-

* 6-
. . -. / :

3 9 " ,": D $ D %
D % D " %
( ( "
1

3
# #
- #

,# #

2 ) , , ! % ,
, + !" % "2 ! !
! ! ! "
% ( ! ( ("
( ! , , + !"
( % + , " (
% + , ( % "
! % ! & ! " ! !*
( ( "
2 % ( ! , ( ! ( % (
% " ! % 4
# % % *
% *
% ! ( "

8
" # #

B 3 $ ))" $ %%" "- %$+

" 6 H ?
=$
B 99BG H!AGH
=& =
H 3. 9899 I!BIH =- =
> 3. 989H G!HG>
8 J, 999A B9!999
> #
A -J 9KII B!IHA
=-
I & 999G H!AGH =-
=.

! % ! % % , 4
2
% ( ( % "0 ! %! ! *
,( * ! ! "
8 &
+! > % %! " +!
% ) 9 ) * ! ". > +!
, + !"

. * ,! % !, ! %%
"
. ( 4# , <4 ===>< , > +!
, "", ( , ! 9 ! "
, . 42 * ! * *
% " , .
"
. ( 4 , 9- %% %
"

:
#

" 6 # . #
# )3 '3 9; (' ;3 9; + +;3 9;
" 6

?
=
% %(&%"J&+ &%"J&+ L % %(&%"J&+ &%"J&+

6#
&
6

! % ! "2 (
! ! 4
. * !" & 9 +!
"
. * ,! ( + !" .
* 9 ! "& 9 +! "
. * ( (' & ( " >
+! > % ". ! ! +! "
! ( ,! ,
! 4
! % 9 4
% > +! %9 "
. * ! % , > +!
! "
2 * ! , * ! 9 &
, 9 "
1# # #

# SBC400_T_SBC400FOCC

3 SBC400FOCC

- #

?
? ( =
? CARRID, CONNID, FLDATE

DATA itab_flightinfo TYPE sbc400_t_sbc400focc.

. . -. / :
6- -

! % !% ! & ' !"


. $ D $+ D! ! ! D! "
0 , % % % ! & ' !
A ! " 0"0 ) 1 " / 0"0 * * * 2
3 # #

TYPES tt_flightinfo 3 # #
TYPE STANDARD TABLE OF sbc400focc

WITH NON-UNIQUE KEY carrid connid fldate.

DATA itab_flightinfo TYPE tt_flightinfo. " # #

. . -. / :
6- -

0 % ! ! * $+ "
! % , $+ $ 2 "
! % , $ 2 "
+ !% % 7,$6 "< > % + !%
"
0 , % % % % !
+ !, % $+ "
0 % ) % , !"
= ! *! % ! 4
$ D $+ D+ $ 2 D! 7,$6 + !D %1
$ #6

DATA wa TYPE spfli. # - ,3"


SELECT ... FROM spfli BG !!!
SPFLI I8 !!!
INTO wa ... !!! !!! !!!
3. 899 !!!
D E 3. 89H !!!

DATA wa TYPE sbc400focc. -


SBC400FOCC

DATA itab TYPE


#
sbc400_t_sbc400focc.
SBC400_T_SBC400FOCC
- #

APPEND wa to itab.

"
INSERT wa INTO TABLE itab <condition>.

)
READ TABLE itab INTO wa <condition>.

$
MODIFY TABLE itab FROM wa [ <condition> ].

#
DELETE itab <condition>.
1

- # LOOP AT itab INTO wa < . > .


# ...
D E
# # ENDLOOP .

# # DELETE itab < . > .

" # INSERT LINES OF itab1 < . &>


#
INTO itab2 < . > .
# #

# APPEND LINES OF itab1 < . >


#
TO itab2.
# #

% , ( % "' % (
( % 4
2 111 " 2 2 , % %
% ,"$ "
, ". * ! %
"
2 $ % %! ? @ > "
," $ % ( % "
" % ( "
0 , % % & ( + !,
"

-
" - #)

* define internal table and workarea


DATA: itab_flightinfo TYPE sbc400_t_sbc400focc,
wa_flightinfo LIKE LINE OF itab_flightinfo.

6- -

* 6- -

* fill structure with values


wa_flightinfo-carrid = ... .
wa_flightinfo-connid = ... .
wa_flightinfo-fldate = ... .
wa_flightinfo-seatsmax = ... .
wa_flightinfo-seatsocc = ... .
wa_flightinfo-percentage = ... .

* insert structure into internal table


INSERT wa_flightinfo INTO TABLE itab_flightinfo.

0 !% % , > (
," $ "
. * *, , *
! % + !"

/
) 3

* define internal table and workarea


DATA: itab_flightinfo TYPE sbc400_t_sbc400focc,
wa_flightinfo LIKE LINE OF itab_flightinfo.

6- -

* 6- -

LOOP AT itab_flightinfo INTO wa_flightinfo.


WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
wa_flightinfo-seatsmax, sy-tabix
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDLOOP.

0 % 2 !
, "
2 9 * % % 7 ,$ "
2%! , % *% ( %
, ( , , + "

3
) " 6

LOOP AT itab_flightinfo INTO wa_flightinfo


FROM 1 TO 5 .
WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
sy-tabix
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDLOOP.

READ TABLE itab_flightinfo INTO wa_flightinfo


INDEX 3 .
WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.

0 ," - % "2 9 !
% 9 " ! % ! % "
2 ( 9 * ! % %( % "
2 9 ,* % "

8
) ?

LOOP AT itab_flightinfo INTO wa_flightinfo


WHERE carrid = 'LH' .
WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
wa_flightinfo-fldate,
sy-tabix
wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDLOOP.

READ TABLE itab_flightinfo INTO wa_flightinfo


WITH TABLE KEY carrid = 'LH'
connid = '0400'
fldate = sy-datum .

IF sy-subrc = 0. sy-tabix
WRITE: / wa_flightinfo-seatsmax,
wa_flightinfo-seatsocc,
wa_flightinfo-percentage,
'%'.
ENDIF.

0 76 , % ( "H !
% "
. ! % + !*+ ! ! +
+! "
2 ( 9 * ! , %
( 7AB7"
5 % 4 % + % "6
9 , , ! 9% , !
% + !" 9 % 9
"
5 % 4 % ! % ,
% # "6
< % !+ !, .2B$ 2 H10 + !%
" 2%! , % *! ( 7,$6 8 + "

:
- - #

SORT itab_flightinfo.

SORT itab_flightinfo BY carrid.

SORT itab_flightinfo BY percentage DESCENDING


carrid ASCENDING .

REFRESH itab_flightinfo.

FREE itab_flightinfo.

0 %! ! %! %
+ % $ "
$ A " ,": B " ,": C
A + % A " ,": B " ,": C
1""
% A " ,": B " ,": CC
A $ -$ C
A$ 2 C1
+! % % > 4.
"
. $ -$ ! + % % ,
! % "
. * ( > % %% +!
, $ 2 "
2 9 * %
9 , % *9 "
0 , % % + !, % $"

-
" # # . 3
" ! "
DATA itab DATA itab
TYPE STANDARD TABLE OF scarr TYPE STANDARD TABLE OF scarr
WITH NON-UNIQUE KEY carrid. WITH NON-UNIQUE KEY carrid
DATA wa LIKE LINE of itab . WITH HEADER LINE .

. #

" # # " # #

INSERT wa INTO itab INDEX n. INSERT itab INDEX n.

DELETE TABLE itab FROM wa . DELETE TABLE itab.

READ TABLE itab INTO wa INDEX n. READ TABLE itab INDEX n.

WRITE wa-carrid. WRITE itab-carrid.

2 % , , 5 7,$6 6 2," 6"


' % , + 5 6 ! %
"" & ) ( ( I %
9" . 3 *% 9 * % *, 6%
! % "
2 ( % *, ! ' "
! ( , "; *, ,
* ! 9 % 5 " *," $* , +* 22 $*
2 $ * *2 $6" . & ) * ! '
, "
0 ,! ! % > ! ! % , ! 94
AC" %, "
. (
$ D$+ $ 2 7,$6 6 2," 1
$ E2,8 D1
D 5 E1 * !
DAC5 EAC1 *

-
#

-J3 % -J3

% -J3

F2 % F2 % ! & "
! , & ( % * % ! "
& ( ; JA JA "

-
# ## )

# ( #
- # #

( #

- = #

- 6 - SELECT
, 6
D27 2E SELECT

& # # #
42 #" 2' #( #
# # 6 2 (& (3 #, # 2

. % *! ( ( 4@ 0 3
"
2%! !+ , > 4
%
2 $ ( "
%
% 2 $ 9"
, & %
2%! + , , % % ! + %*
! #$ + %
% ( & ' !" %> ! % "' +
( ( "0 7 94 92 %
, % ! "

-
)

SELECT >- . ? FROM > ? INTO > ? WHERE > . ? .

# ; #; ; # ;

#7 # ##

0 , JA 2 $"
2 $ % % , %% +4
2 $ , (
( ( * , % "
5 ( ,6 % ,
"
,"$ ) , "
76 ( % % "2 %
"
0 , % + !, % 2 $"

-
) - #)

#
0
-$ ))

SELECT SINGLE *
FROM scarr
INTO wa_scarr
WHERE carrid = pa_car .

IF sy-subrc = 0.
...
ENDIF.

. 2 $ ,":2 G *! % "
> * + !% 76 ( " +G
! % , % %
" 2%! !, * > %
"
,"$ %! , % ! "
, % ,! >
% "
. " ,": , 2 % ,"$ ! % %
"; ! (
". * % %*,
+ "
2% , % * 9 ( "
,":2 % !
" % "=
2 $ ,":2 %% 2 $ ,
+ !% , "

--
) - #3

0 #
-,3"1.
0 899

SELECT carrid connid fldate


seatsocc seatsmax
FROM sflight
INTO wa_sbc400focc
" INTO CORRESPONDING
" FIELDS OF ...
WHERE carrid = pa_car .

ENDSELECT

IF sy-subrc = 0.
sy-dbcnt ...
ENDIF.

. ,":2 % 2 $ * ! ( %
" ( , ! % "
% > ! 76 "
. 76 * & ( % % "
% "
% , 76 + , " "
% + " & !
!
, 2 $ " 2 $1 > !
% " 2 $ * % 2 $ " 9
( % > ! "
% " 2 $ * 9 % "

-/
) - #3 " # #

0
#
-,3"1.
0

SELECT carrid connid fldate


seatsmax seatsocc
FROM sflight
INTO TABLE itab_focc
WHERE carrid = pa_car .

IF sy-subrc = 0.
sy-dbcnt ...
ENDIF.

,"$ $ 2 & ! ! %
% ! " "
!= 9 *! " 2 $ "
2%! , ( , * ,
! % *! " ,": $ 2 "
9 ( % , "

-3
-

DATA wa_sbc400focc TYPE sbc400focc.

SELECT SINGLE carrid connid fldate seatsmax seatsocc


FROM sflight
INTO wa_sbc400focc
WHERE carrid = pa_car
AND connid = pa_con
AND fldate = pa_date.
-
#
0 899

2 * !! ) 9 % > !
"= * ) ! ! !
) " ,"$ ) , %
" , 4
%2! *! % %
> % 2 $ "2 ! %! %
,"$ " , % " % %
"
, # ! %0 %! % ) ,"$ "
19 4
' 4
D 0 1 % *
D 0 1 % *
D% 0 1 % % *
D 9 0 1 % 9*
D 0 1 % "
# ;= 1A1 2;<"
1A1 % 9
=#;? %
,"$ / H ; H ; H& ; H ( .; H 0
. B1#1 """

-8
- # - $

DATA wa_sdyn_conn TYPE sdyn_conn.

SELECT SINGLE carrid connid fldate seatsmax seatsocc


FROM sflight
INTO CORRESPONDING FIELDS OF wa_sdyn_conn
WHERE carrid = pa_car
AND connid = pa_con
AND fldate = pa_date . -
#
0 0

2%! 2< ; ;##1 ;<'2< =21A' * % ,


"
( % 4
( , % ,! %
"
! * 9 % % >
* ( % % ! 9 "
2%! , != % *
,"$ " ,": , 2 $ 2 "

-:
$# ( - #

3 # 899
# - ,3"

SELECT * FROM spfli / % ''!3 ())!3 ! @8'(A


INTO ...
899 &5 );B @('#
WHERE carrid = 'AA'.
899 8' )#8<'

89B &5 );B @('#


SELECT * FROM spfli 89B 8' )#8<'
CLIENT SPECIFIED
INTO ...
WHERE mandt = 402 89H &5 );B @('#
AND carrid = 'AA'. 89H 8' )#8<'

2 * % + !% ,! " $5 ! 2"$6"
2%! % * & '
*, % % "5 & ! ( 2 $
!"6
2%! 9 !, % 76 *! ( 2, "$
, , % "
( 9 % * % !
% "

/
- # "

PARAMETERS pa_from TYPE spfli-cityfrom .


- #
SELECT * FROM spfli
INTO ... 8' )#8<'
WHERE cityfrom = pa_from .
...

- 6
# - ,3"
$" F,) / #
/ % $" F,) / A )3 ''!3 ())!3 ! @8'(A

8' )#8<' &5 );B @('#


8' )#8<' 8' )#8<'
8' )#8<' C9 5 (#@(
);B @('# 9+ 8' )#8<'
(#@( 9+ 8' )#8<'

& ;'9!) & &5 );B @('#


& 8' )#8<' & 8' )#8<'
& 8' )#8<' & 9+ 5 ;'9!)
& );B @('# & < $& 8' )#8<'

! ( % % & ' !*! %


% % "
% , % ( % %% 4
8 & % 2% > % + !% *
' ; ! 9"
.% 2% > % %
! 9* ' ; "
2%! + ' !* ! 9 !
9" 2%! + 9 9* ! !
% 9. % !
9"

/
) 3 #

- ,3" M # -$ ))
A )3 ''!3 ())!3 ! @8'(A A )3 ''!3 '') A;

=A2? <' 5 ## ? <'


M
=A2 ##2' 5 ## ##2'

M
# #
A )3 ''!3 ())!3 ! @8'(A '') A;

2%! , % , ! *!
> ! "A !* % , % % 4
. K
B , + +K2 * %
+ " !% % ( %
+ "
. K. *! (
%! % , "

/
5 M

5
4 - # D E

: $

SELECT ... SELECT ...


FROM zabc FROM spfli INNER JOIN scarr
WHERE ... ON spfli~carrid = scarr~carrid
WHERE ...

+ % ! ! !"
% & ' ! ( ," %%
! %( , " 0 , % % A ! " 0"0
) 1 " 0"0 4 %"
0 ! + & "2 + , & L "
* > ! % "0 , %
% + !, % 2 $ "

/
- $

INSERT

UPDATE

SELECT
DELETE

MODIFY

. ; JA* , 2 $ ! 4 $ *," $*
2 $ , +"
0 ! % ,
"
; JA 9 " % ,
% ! * ! % 9 *% , %*
> "
? % ( ( + !, "

/
/ -

! !
! !
! ! /

- ## + 4
...
... !
... !
!
!
! - ##
! -
!
!
... !
...
... 6 - ##
! !
! # !
! !

...
...
... -
!
! ...
! ...
...

(" 2 ! %
( ! % $ >
( "
' 9 % " ! % %
%% ) " ( 9 , "
% * * %% ) %
% "
% + ! ( & 42 ( +
% ! "
@ * + ! "0
7 + 7 !( , " ! !
%! % % "
& %
! " "
% % % % "
9 "

/-
$ $ ## -
REPORT ...
DATA: a TYPE ... ,
b TYPE ... ,
c TYPE ... .

$ ## D ' ' E
!!
!

$ $

- , # B ' H ' >


$ ## $ ## 5 # $ ##
... 5 # ) # )
...
...

' ' % 5 ( 6 %
) % 5& ( ( 6 & "
4
9 9#
% % " (
% ( & "
9 9 &
& % % "
( % ( &
" ( % ! ! !
"
9 9# 9 9
% ' # % "
( % % '
. "0 % ! , ! ,
( , !"

//
- $ ## "
REPORT ...
DATA: a TYPE ... ,
b TYPE ... ,
c TYPE ... .

PERFORM xyz
$ ##
USING
a
CHANGING
b
c.
FORM xyz
USING
value(f1) ... " 2D
CHANGING
value(f2) ... " 2D .'
f3 ... . E 2' -
...
ENDFORM.

2 % % ! & ( ( % ( ! ! %
!" ) %9 % = ! ( 4 ,": *
6 ":,": ". ! % %
"
. * , 4 ,":
6 ":,":"
0 % ! % % 4
9 9# 5&D6
A + % % 4 ,": + , # /% 0 "
9 9 & 5&E6
A + % % 6 ":,":"
5= % ! % % ! 4 ,":
"6 = ( *4 ,": 6 ":,": ( %% "
5B , ( *%! 4 ,": *
, ( 1"6
9 9# 9 9 5& 6
A + % % 6 ":,": + , # /% 0 "

/3
5 # $
TYPES t_perc TYPE p DECIMALS 2.
TYPES t_perc TYPE p DECIMALS 2.
DATA: a TYPE i,
DATA: a TYPE i, b TYPE i ,
b TYPE i , c TYPE t_perc .
c TYPE t_perc .
...
...
PERFORM calc_perc
PERFORM calc_perc USING
USING a
a b
5
b # CHANGING
$
CHANGING ) c.
c. # 4
#
FORM calc_perc FORM calc_perc
USING USING
value(f_part) TYPE ANY value(f_part) TYPE i
value(f_all) TYPE ANY value(f_all) TYPE i
CHANGING CHANGING
value(f_pc) TYPE ANY . value(f_pc) TYPE t_perc .

CHECK f_all <> 0. CHECK f_all <> 0.


f_pc = f_part * 100 / f_all . f_pc = f_part * 100 / f_all .

ENDFORM. ENDFORM.

% ) 5 6 % ". (
! , ! , ! % % "
&! ! % ! ! % % !
% " ( ! %! * ! 9 +
! + !! % "
$+ "+ ( ! "5 % % % %
!"6 2 * ! 7 7% %
" 2% ! *
( I
2%! ! , * * .* (! % 7 7 " 2%!
, % *! ( ! % ! ". . *
% ! ( ( "
! *&* * * ! % "

/8
- " # #

DATA wa_flightinfo DATA it_flightinfo


TYPE sbc400focc. TYPE sbc400_t_sbc400focc.
... ...

PERFORM fill_wa PERFORM fill_itab


CHANGING wa_flightinfo . CHANGING it_flightinfo.

... ...

- #
FORM fill_wa FORM fill_itab
CHANGING CHANGING
f_wa TYPE sbc400focc . f_itab TYPE sbc400_t_sbc400focc .

f_wa-carrid = ... . LOOP AT f_itab ... .


f_wa-connid = ... . ...
ENDLOOP.
ENDFORM.
/
.. ENDFORM.

% ( ! " !
% , "
! % * ! ,
! 9"
. *! ! % ,
! 9"
& ( 4
. % *! ! 9 9 &
% ! * %% > ! , "

/:
3 # 1# #" # #

DATA: it_flightinfo TYPE sbc400_t_sbc400focc,


1# # #
wa_flightinfo LIKE LINE OF it_flightinfo .

...

PERFORM fill_itab CHANGING it_flightinfo .


...

FORM fill_itab
CHANGING
f_itab TYPE sbc400_t_sbc400focc.
3 # #
DATA l_wa LIKE LINE OF f_itab .

LOOP AT f_itab INTO l_wa.


...
ENDLOOP.

ENDFORM.

0 + % , "
& % ) ! ( "
! !
% % 9 " ! % ! %
"
) % % "0
( % * , ( "; , *! ! % !
"
. % ) ) *
( ( ) % ,
) % " + , # # "
(( I # %
) % (
% "
! % ) "
( % + % !" @ %9 &H111 % 7%
7 H111 % 7 ) 7 "

3
$ ## -
DATA: carrid TYPE sbc400focc-carrid,
it_flightinfo TYPE sbc400_t_sbc400focc,
lines TYPE i.
PERFORM count_lines
USING
carrid
it_flightinfo
CHANGING
lines.
FORM count_lines
USING
f_carr TYPE sbc400focc-carrid
f_itab TYPE sbc400_t_sbc400focc
CHANGING
value(f_lines) TYPE i.
DATA l_wa LIKE LINE OF f_itab.
CLEAR f_lines.
LOOP AT f_itab INTO l_wa WHERE carrid = f_carr.
ADD 1 TO f_lines.
ENDLOOP.
ENDFORM.

9 , % %
%% "
= % * &H ( &H %
! % &H ( !"
, + > % " %
! % % "

3
+ -

- . #

:990, )/ ...
PERFORM count_lines
USING
4 f_carr
N

f_itab
CHANGING
f_lines . &
- ... #
$ &% 03"%+-

FORM count_lines
USING
f_carr TYPE ...
f_itab TYPE ...
CHANGING
value(f_lines) TYPE ... .
...
ENDFORM.

, "
. * % ) "
0 ,! ! % % "
' ( %% ! 40 (
7 7 !7 ( "
( !*! % "
! % 9 ! % " B , ( *! (
% , "

3
-

# #
!

) !
# ##
!

3
3
$ % &

'

!"

#
! .

( )
& &

*+ ,
-+ ,
*+ *+ -+ *+ *+

!"#$% &'
() * ) )(+ ) , ( ) ) -)(
. * '/ -01- 0 )(/ ** ) )(+ ) &'
1) () * ), )(+ ) ) 2 ,)( . * !
)(+ ) ) 2 ,)() 2 -3&'
( ,)( )(+ ) ) 2 ! ) ( )( ! ) ) ),* (
4 ,)( )(+ ) , ), )(+ ) ) 2 '
) ( )(+ ) & ,)(4 () )(+ ) ) 2 '
3 ( *(), ( )( ( ) - & )(+ ) *(), )
( ) 5' () ( 4 ), %6 ('
# ,)( ) ) ) 5 ) ), )
)2 5 5 5), )(+ ) *(), '
7 )4 ) ,)( ) ( 4 )* 7) 8 8 88& /
)(+ ) )(+ ) *(), ( ) + )2 ! 5 5 ) ) 4
) ) ( * 9! :&' 5 ) 4 ( )( ) ( (!
) 4 ('
)(+ ) ) 2 !) 2 , ( 4 )* )2 9 )(
: ) ( * &'
' & &

&
&

$#/). 2 3)! 43$#/ 2 2 3)

3$/ 3$#/
7
3/5 *3$#/

0 3/ 3 6

3 ) 63% )/

% !)/. 2 32 .!13% % 2 2 3$

03/5 *3$)1 .

$!1)# 3 ) % 3$1) 0

)(+ ) , ) * 5 ) & 4 5& ( ! ) ) (!


,) ) )(+ ) ) 2 /
!" #" / )(+ ) )( ) 4) ,)( ( ) * 5 ) '
$" %$" )(+ ) )*() ) ,)( ( ) * 5 ) '
$" & '" )(+ ) ) ) ( (( )( ,)( ( ) * 5 ) '
3 )(+ ) ,)( ( * 4 )(+ ) ) 2 !5) ( 4 ,)(
. * !( ! ! * 5! )) & ( ) ) . *() ( ' <
)2 (),*) 4 ( ( ) ) ,)( ) 2 '
*) 4 & ( , ( ) = &'
9) , 4 4 ,)( )(+ ) ) 2 ( ( )
< 8&'

;
$#/). $#/). *888'-888
0
*888 -888 9888 0 8*'8-'89

$
$#/). $#/). *888'-888:9888
0
*888 -888 9888 0 89

)(+ ) ) 5) ) . 4 ( ! * 5 ) * 5
) '
)(+ ) " ) 5) ) . ) 5 * 5 45 ) * 5 ) !
'
3, ( )(+ ) "! )* ( 4 4 5' 3 ) ( )( ! (
. 4 ( ! * 5 ) * 5 ) '3 ) * 5
) ! ( ) 5 . * 5 4 5'

8
!

; $8-;

< & 5
.3 !+=
.
& . = 5

>

$ 7

; # 4 )7 >( 4! /; 5 "

? ( ) ( ! 5 *() ( * (,)( 4 () ) ( (
)(( *) )(+ ) '
' ( ( )(+ ) ( ( )' )(+ ) ) 2
( ) (& ) )(+ ) , ( ) ) &' # ( 4 )
4 )(+ ) ,)( ( ) ) 5 ) . ,)( . * -" !
@) &'
) ( )(+ ) ) 2 ) ( ) ) ' 3,
! 5 ( ( )(+ ) ,)( )(+ ) ) 2 '
( ) ) 6 )(+ ) ) 2 , '
A,) ), )4 4! ( ) ) ( 5 * 5
)(( *) '
3= A% 7 / )(+ ) ) 2 ) ( ) "
# BA%3 9 B< $' (( ) 5 " *() ( 5
( ) ( ) ( '

>
$8-
. 2 8?6

::::
#
# 4 )7 >( 4! /
$@! * 3$/ 3$#/*
& 3$/ 3$#/ 7 * 0 * 7!6 *8-*
$#/ 7 *$#/).* 7!6 $#/:
)
*888
7 .>(.#$) 5! 8:
2 !.. 1! !8A9 % 7 4 $#/:
!5 7 :
:::::

$#/ *888

)(+ ) ( (( ) *() ( " # BA%3 9 B< $'


*() ( ) 5 (), '
-)( . * ! ( ) ( ) -" ' # BA%3 9 B< $ *() (
" *() ( = - ;1 ( ) -" ' ,) ) )(+ ) /
)(+ ) ) 2 -0"$ -0"#$
)(+ ) , 4 5& ,)( 4 &'
)(+ ) , "#$% ) * 5 ) & ,)( 4 '
( ) 5 . ( ) , 6 )(+ ) ) 2 -0"$ -0"#$
)(+ ) , & "#$% & )(+ ) '
5 ( ( ( ( ) ,( )(+ ) ' 4 ( ( ) ,)( "
# BA%3 9 B< $ (/
/ ( )(+ ) ,)( )(+ ) ) 2 )(( , 4 '
/ ( )(+ ) ,)( )(+ ) ) 2 ! ) 4 (! 4 ( )
) (
/ ( ) )(+ ) ,)( )(+ ) ) 2 '

C
6 0 1

!
!

. (

!
"
!

#
!

$ ( * *() ( 4 ) 5 ,() ) (
*() ( ' 5 ) 5 , * * *() ( '
*() ( ( + '
- ) () * ( ) . *() ( ! ) ( )( ! 5 ) (
( ) ) )( 5 ( ), *() ( ' 5 (4 . 4 5 ,( )(
*() ( ,)( , ) ) '3 ) ! , ) () * ) 4( , )
) ),,(( , ) )()* ( ) '
, ) ) !, ) () * ) ) ,) ) /
@ ( ) ) )2 &
()
(
5 5 , ) ) , ) () *'

D
. 1

$ %& ' & ' ,


()!' &*
FUNCTION-POOL <fgrp>.
+ ! .
TYPES: …
INCLUDE L<fgrp>TOP. ! ' &
DATA: …
CONSTANTS: …

FUNCTION <name>.
,
INCLUDE L<fgrp>UXX. FUNCTION <name>.
...
INCLUDE L<fgrp>U01. FUNCTION <name>.
...
ENDFUNCTION.
...
ENDFUNCTION.
ENDFUNCTION.
INCLUDE L<fgrp>F<xx>. FORM <form_1>

... ENDFORM. + ,

INCLUDE L<fgrp>O<xx>. MODULE <mod_a> OUTPUT.


-
... ENDMODULE.

INCLUDE L<fgrp>I<xx>. MODULE <mod_b> INPUT.


...
ENDMODULE.

-() *) ),4 ,( *() ( ) ( ! , ) () * ) *(


,( )( *() ( ( ), *() ( ' ? 5) ( , ) () *!
,( )( *() ( *() ( ( ( ) 5' ), 4
) *) ( ( ,() ), , ) () * &' 4 *)
8 ( ('
, - + ) ) 537 1#@< ,)( ,) )
*() ( /
.%
*() ( ) -#7 3A7 AA1 )
( ) '

*() ( ) ) 37 1#@< ,)(


*() ( ! !''' ' () , ) ) '
$
*() ( ! !''' ) , () )
, ) ) () * 4 5 ( '
.
*() ( ! !''' ) , "A )
A# # & ,)( , ) () * ( '
/
*() ( ! !''' ) , 3 ) 37 # &
,)( , ) () * ( '
( ) ), *() ( ) ( . ) 5,)( ( 4 )
!'
1 :1

' &, + ,, ,

( 7 B
B . (

B ) (

B # (

B " (

4 '
*)( ) 2 )( ) * ( !*)5 )(* (, !
4 * 5), '- ) () * ) )* 5
*)( () *() ( ! ) 4 (' 3 ,) ) *)( ** )
5) ) ) ( 4 ), ) ) /

3 ) ( ) !, ) () * ) ( ' ) 5) ) * (
) , ) ) ))'
0
- ) ) ,() . ( 5 % ) - ) &'

* , ) ) ,)( * * , ) ) &' 5 ( )
. ( 5 ! ), 1) # ),? )( 1#? &'
0
, ) ) . *( *( )( *() ' *() ( )
) , ) ) , *() '
1

( , ) () *
(( ) <C
3 4 ) ( ! )2 ,)(, ) () *
< ( ), , ) () * :" 0<E = 1<& F ( )&
) ) @ * 5!G ( A 2 G*)* * F ( )&
) ,( G9 G!G3 ( - ) () *G*)* * F ( )&
2

(( ) <C
3 4 ) ( ! )2 ,)(, ) () *
< ( ), , ) () * :" 0<E = 1<& ) G@ * 5G
3 ( ( (!)* ) . ( ) & ,)( ** ( ) )
:" 0<E = 1<&
A* /G( G F G- ) =) G' F ( )&
< ( G( - ) =) G*)* *' F ( )&
2

! 1 # ! . 4

! " # $ %

! #
"

3 ! ( ( 4 !5) ) ( 0 /
1 ) ,() ) ( 5 '
( ,)( 4 ) , )
,)( * (*) '

;
7

! 1 # ! . 4

! " # $ "$
( +
% ", - . ' ( )%* .
% ", - * ' ( )%*
& ' ( ) ')

% "& ' ( )%*

3 (, *( ( ( ) . *() ( , ) ) '
% 0
9) ,) ) 5* ),* ( (/
/ *( ( ( ( ,(( ,() *() ( ) , ) ) '
*( ( ( ( ,(( ,() , ) ) ) *() ( '
+ +* ( ( ) *)( .*)( * ( ( ' 5 (
( ,(( ,() *() ( ) , ) ) ' , ) )
) ( ( ) *() ( '
*( ( ( * )* ) ,)( ( ,(( ( ' ( )
*)( .*)( ' 9) ) )) ( *( ( ,)( )( , )
) '3 !5) ) ( ,( ( ) (* ( ( 5* 5*
5* ,() @ ) (5)( ( 5* &'

8
FUNCTION bc402_fmdd_divide1_packed.
*"------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_NUMBER1) TYPE DEC8_2 DEFAULT 1
*" REFERENCE(I_NUMBER2) TYPE DEC8_2
*" EXPORTING
*" VALUE(E_RESULT) TYPE DEC8_2
*" EXCEPTIONS
*" ...
*"------------------------------------------------

IF i_number1 IS SUPPLIED. "optional parameter


...
ENDIF.

IF e_result IS SUPPLIED. "export parameter


...
ENDIF.

9) ( *)(! *( ( ' *( ( ) ) )
** 5 (' <.*)( * ( ( ( 5 )* ) ' 9) , 2 ,)(
)* ) *)( *( ( , () ) ( 54 '?
*() ( , ) ) 5) *() ( ,) * ) ( (
** )* ) * ( ( )( )' ) ) ! ) .*( ) ,)( ),H F3
# 13<@ )(H F 3 7A # 13<@! ( H F ,)( ), )* )
*( (' 7) <E A% * ( ( ( 5 )* ) * ( ('

>
!"

! 1 # ! . 4

! % #

& * (

0 + %( 1 ( ( /
+ 1 &+ 2 +

RAISE <exception>.

*** with default message:


MESSAGE <type><num>(<id>)
RAISING <exception>.

- ) ) ( (. *) )( ( ) * 5 (()( ) *() ( ' ) )


5) 4 ) ( . *) , ) ) (, ' )) ,)(
. *) , ) ) 5 ( ('
9) 4 ))* ) ,)( ( ( . *) , ) ) (()() (/
/ 3 45
3,H . * ) F * , , ) ) ! ) () ) ( 5 )
*() ( ' 3, ) . ! *() ( ( ( (()('
! 6 3- 43 473 48 / /&6 3 45
3, . *) * , !*() * ( ( )4 ' 3,
. *) ) * , *() ( ! H F ,() H F
' 5* H F ( ( *() ( (
)( ) )( ' & ( ( '

C
($ !"

! 1 # ! . 4

& ' $$

))

4 % ' %0 + ( 1 ( / 5
4% '% + 1 + %+ 1 &+ 2 3

RAISE EXCEPTION TYPE <exception class>


[EXPORTING ... ].

( 4 ) , , ( 5) ) (, ,)(
, ) ) ' ) ) ! " #$ %&'' ' ).' . *) ,(
( ) ) ) '<. * ) ' 5* )4 )/
<. * ) ' E0' )(': E0'&'
)( " " A 2 ( ) ) )( . *) ' )( (
. * ) !,)( . * !5)
/ 9 % /.& :% 3 45
3, ) ( )(,)( . *) *( (! <E A% 37 ) )
**5 '

D
C

&
% ", - .
% ", - * 5

( *8888888888888D 3 * D *8888888888888

- ) ) ) ) (*() ( ' )() ) ) ),


, ) (, (,)( * ( (5 *)( ' )
'
3 , ) ) ) ) !5) ( ),,( 5 , ) ) '
,)( ) ) ( ) ,, 5 ) 5 ), )(
) (5 )( ( ) , ) ) '
( , ) !5) ) ! )
) )'
9) , ) ) ) ) ) ,)( ( #
$ ($%
)
( #$ * )(% (+ #&#$ * ) !)( 5,) ) * , #-
(+ #&#$ '
3 *( () ) 5) ( ,)( ) ) 4
,)( , ) ) '
-)(* ( (!5) ( + !, (5! 2 + 2 '
? . * ) !5) ) ( *( 5,)( (()( . *) ( (
,, '
9) ) ) ,)(* ( ( . *) "# ) ),
( (6<. * ) 1 ( #$ ($%) '
. " 2

! 1 # ! . 4

# $

FUNCTION bc402_fmdd_divide1_packed.
*"---------------------------------
*"*"Local Interface:
*" IMPORTING
*" EXPORTING
*" EXCEPTIONS
*"---------------------------------
...

ENDFUNCTION.

? 5) ( , ) ) 5 ) 5 ( )(( *) # '
, ) ), , ) ) ( *() ( ' 9) ) ) #
( 5) )$# ! ) 4 (' 3 ) 5 *() '
-#7 3A7 <7@-#7 3A7 ( ), , )
) ' , ) ) (, * 5 ,)( ),+ '
( ) 5 * ) () (, ' (, 5 ,
) )(( *) '
2

! 1 # ! . 4

( ) $ *%

) +*

9) , ) ) ( #
$ ($%
) 5 ) * ) '#. " (#&'
( , - ,() 4 (, , ) ' B ( 5) 4 )**)( 5
)*()4 *)(! *( ( * 4 ' ) ( )( ( (
*( (! ) ) *( ( ' . , ) ) ( ( 5
* ) & )( ) ( $ * ) &'
) 2

B
REPORT sapbc400wbt_getting_started.

TABLES sbc400_carrier.
DATA wa_scarr TYPE scarr.
E$ F8838831. PARAMETERS pa_car TYPE scarr-carrid.
E$ F8838831. !"
:::
SELECT SINGLE * FROM scarr
INTO wa_scarr
:::
WHERE carrid = pa_car.

IF sy-subrc = 0.
MOVE-CORRESPONDING wa_scarr TO sbc4
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier T
...

9) 4 4 ( )* ) ,)( ( *() ( ,() / #0&1$&# )


) 4 ) *() ( /
3 4 ) ( ,)( *() ( ! )) " (# ( $ 2
3 ( ! (I ( *() ( ))
#. %# & $#' ( *() ( " (# $ #)(H-CF'
.

. 4

;G ; $
B !

;G ;

3,5) ) 5 ) ( * ( ), *() ( !5) ) ( ,( )


) ,)( ( ' ( ( )*) 5 ), ) /
)) 3'#+ #$%$#$' ( )( ( '
< (; ) , )) ( ) H # F'
. .
5

+ ))
9 .&

4 & .
. /00(1 - 2 " 3

SELECT SINGLE * FROM scarr


INTO CORRESPONDING FIELDS OF wa_scarr
WHERE carrid = pa_carr.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_scarr TO sbc400_carrier.
(
CALL SCREEN 100. &
MOVE-CORRESPONDING sbc400_carrier TO wa_scarr.

, 3 # ,
3 64

63 63 5 637 8 637688

9) . *() ( ,)( ) $ % # '


9) ) * 5 ) ), * ) )2 ' ) ) ! ( *
, ) , )( ) ) * 5 ) '

;
$
+ ))
9 .&

4 & .
" 3

SELECT SINGLE * FROM scarr


INTO wa_scarr
WHERE carrid = pa_carr.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_scarr TO sbc400_carrier.
CALL SCREEN 100.
MOVE-CORRESPONDING sbc400_carrier TO wa_scarr.

, 3 # ,
3 64

63 63 5 637 8 637688

9) ( *) 5 ) ,() ), )( .'
9) ) ( *) * , " /
& $# & $#&# #&#+ #2
3,5) ) #$( ! *() ( ( ,( . ( *) '
3,5) &1 ( *) ! 5 (( () ) 5) ( (( 5) ) )
5 '
? ( *) ! " ? )( ) ) ) 5,)( 4 )* ( )
( *) ' ) ( ( ( *() ( ( 5)( () ( *) '

8
G
% 6 < +

pa_carr

=
< +
G LH

%
5 :6 G
* 3 , 64
-
9
:::
*8
6 ) 5

*) ( *) * ) , ) / 9) ( ,) ) 5*
), *) /
$
*() ( ( ) ), , '
$ < < 2
*() ( ( , ) 5 , )
) ) ( ) ) 4 ,, '
$ < <
*() ( ( , ) 5 , )
) ) ( ) ) ) ), , ,, '
9) *) *) ) )* ( )( &= )(. '

>
.

+ ))
9 .&
,
2 & ' 4 & .
4!

SELECT SINGLE * FROM scarr


INTO CORRESPONDING FIELDS OF wa_scarr
WHERE
. carrid = pa_carr.
3 F88
IF sy-subrc = 0.
6
MOVE-CORRESPONDING <
wa_scarr + sbc400_carrier.
TO ?A
CALL SCREEN 100.
( 5 : sbc400_carrier TO wa_scarr.
6
MOVE-CORRESPONDING
* 2 5 9 A88
3 F88 - ))7 9
9 ))5 2 ! -8
F #)) ! ? #.
? 2 )/ * J
H ) 5. *- .2 7 4
63
I 72 ! H *F98?K
A ! A -88H*--F

9) ( , ) ), ( ( 5 ( ( ( , ) '
@) ) (5 ) ) *) * 5,)( ( ('

C
7

+ ))
9 .&

4 & .
" 3

LOOP AT it_flightinfo INTO wa_flightinfo.


WRITE: / wa_flightinfo-carrid,
wa_flightinfo-connid,
(
&
7 3 . 5 )
))7 557 6 ! ::: !) !5 1!
,
* 88*I -88H8?*- ::: HH
3 - 88*I -88H8I-F ::: *-8
9 88*I -88H8A-A ::: ?H8
F 88*I -88H*--F ::: FI8
? 64 8F88 -88H8H-H ::: -F8
H 64 8F88 -88H8I*? ::: *-9
63
I 64 8F88 -88H***9 ::: -I9
A 64 8F88 -88H*-*- ::: -A8

9) ( ) ), ( 5 ( , ) ' @)
) (5 ) * 5'

D
.
+ ))
9 .&

2 / 1 ( : 8 -
!" . " )
/ 1 ( : 8 - "

)2 #5 3675!.
...
FORM count_lines USING
f_carr TYPE ...
f_itab TYPE ...
CHANGING
value(f_lines) TYPE ... .
DATA l_wa LIKE LINE OF f_itab.
CLEAR f_lines.
...

, 3 # ,
3 64

63 63 5 637 8 637688

9) . () ) )** ) ' *() (


)** ,( () . '
( 4 5!5) . () ,)( $ % # '
3, (( () !5) 4 #( H->F& ) . ( (
), () ) )** ' *() ( )** ,( ()
. '
.

>
:
> :
> :
$ % + +

) ) ), .( !5) )/
• 5+ . , ) )
• () ( 5) () , ) )
• @ *() (
• ( )(+ ) ) 2 4 5 ( )
) *() (

5 ), 4( , ) ) " 30 A= 79 A@<0 < @< 31


( - ) " () 5+ , ) )
" 30 A= 79 A@<0 < @< 31'
? ), , ) () * , ) )
" 30 A= 79 A@<0 < @< 31 ) J B) 5, )
) ( ( ) , ) () *J ? ) () 2 5*
) () * 4 !) ( , ) ) J
? ( ), * ) * *( ( ,)( , )
) J
, ) ) /? ), + & 3 ) '>>>J
; B) 5, ) ) ( ( 5,() , ) )
" 30 A= 79 A@<0 < @< 31J
8 @) )(+ ) * J 3, )! ) * J
> -) ) . ) ), , ) ) ('
% + + -
( , ) () *90KK ) )2 '
5+ )(+ ) , "#$% ' ? )
( L M!L 8M L M,)( , 4J 3
5) , *( ( ,)( )(+ ) , "#$% J
@, )(+ ) ) 2 9KK )(+ ) L M
)(+ ) , L M'
@, () 9KK *(), 9KK0 ;8 ) '
)(+ ) ) 2 9KK ) () ' @ , )(+ ) 5 4
( ) )(+ ) ) 2 9KK,)( () 9KK!
4 G M L@ * 5M!,)( . * ' () 9KK )
5) ( ,'
; () ( , ) ) !9KK # BA%3: 3A7!,)( )(+ )
) 2 9KK *()4 )(+ ) ) ( ! * 5
* ) ) * 5 ) '
8 , ) ) ' 5 , ) ) 5 . 5) (
)(+ ) , ) ) ' @ 4 )*
) , ) ) !9KK"<%< B 3 #7 < !
,( ) '
$ % + +

5 ), 4( , ) ) " 30 A= 79 A@<0 < @< 31


( - ) " () 5+ , ) )
" 30 A= 79 A@<0 < @< 31'
( ( ) <> ( *
%' ! 1% + # ( #
$ ($%) '
- ) ) " 30 A= 79 A@<0 < @< 31
( ) L@ * 5M
? ), , ) () * , ) )
" 30 A= 79 A@<0 < @< 31 ) J B) 5, )
) ( ( ) , ) () *J ? ) () 2 5*
) () * 4 !) ( , ) ) J
* L ( M
, ) () * L M' ? 5) ) L@ * 5A 2
1 M 5! ( ( ( * 5 ) )2
, ) () *' ) ) () 2 ! ( ( ., ) )
() *' ( ( )) 2 ,)( G@@3 ( ( G!L- M!
L () M L3 M 5* ,)( () *'
? ( ), * ) * *( ( ,)( , )
) J
* L3 *)(M)(L<.*)(M
3* * ( ( A= 79 A@<3@
A * *( ( A= 79 A@<0@< 31
A= 79 A@<0 @@%<
%< #%7
, ) ) /? ), + & 3 ) '>>>J
( ) L 6<. M
A= 79 A@<3@
( ) L<. M
), ) * 5 ) L3@< M'

;
; B) 5, ) ) ( ( 5,() , ) )
" 30 A= 79 A@<0 < @< 31J
( ( ) <> ( * %'
! 1 % + # ( #$ ($%) 2
- ) ) " 30 A= 79 A@<0 < @< 31
( ) L@ * 5M
* L)( ) M
, ) ) ( ( 5
L- 6% * M* ) ( L - )M ( .'
-4 , ) ) ( ( 5'
8 @) )(+ ) * J 3, )! ) * J
9 ! )(+ ) '3 * 5
L B< $0 # BA%3 90 M () '
> -) ) . ) ), , ) ) ('
( ) L M
( ) L@ M

% + + -
( , ) () *90KK ) )2 '
( ( ) <C ( * %'
! 1 1$5 / #0&1$&# 2
L1) A 2 M
1) A 2 KK
L- ) () * M )2 ( '# ) .
) )) L ( M, )'
- ) () * 90KK
)( . N
() ( *) KK
( ) L 4M
( ) L1) A 2 M

8
5+ )(+ ) , "#$% ' ? )
( L M!L 8M L M,)( , 4J 3
5) , *( ( ,)( )(+ ) , "#$% J
( ( ) # ( * %'
! 1 % + # #! %'
(#! $6&#
$ / #' $%)'2
, ' )(( *) G G
,) 5 ) G@ * 5G'
( ) < 8 *()4 ) ,)( '
( 4 ,) ) /
3 ( )( (
8 @
)
3 ( ) # ! , "#$% ' )(( *)
G G ,) 5 ) G@ * 5G'
@, )(+ ) ) 2 9KK )(+ ) L M
)(+ ) , L M'
( ( ) # ( *
)) F " ? )( F@ 4 )* FA ( )) F
)(+ ) A 2 FA 2 '
)(+ ) ) 2 L M' 9) ) .
) ( )(+ ) ) 2 ,)( /
A 2 9KK
-
"#%$
, (5) 4 ( ) ) ! 4 5) ( '

>
@, () 9KK *(), 9KK0 ;8 ) '
)(+ ) ) 2 9KK ) () ' @ , )(+ ) 5 4
( ) )(+ ) ) 2 9KK,)( () 9KK!
4 G M L@ * 5M!,)( . * ' () 9KK )
5) ( ,'
( ( ) - ( *
%' )+$$'#&#$ ' *&$# & 4 % )+$$'#&#
$ 4 %'
( ) L( %) M
%) 9KK
N
( ) L 4M
* L )(+ ) M
( ) L ()*) (), 7 M
( ) L 4M
( ) L )(+ ) @ M
( ) L@)7) * M
( ) L= < (5), )(+ ) A 2 M
)(+ ) A 2 L9KKM
<.* ( ( ( ** ( ,( ) 4 '
L 4 5M '
( ) L M
( L M!L M L M!,)( . * '
( ) L 4L
L) * 5 ) M '
( ) L M
(5L M!,)( . * '
( ) L 4M
( ) L ( M
( ) L" M
* L# (M
3@ KK
( ) L 4L

C
; () ( , ) ) !9KK # BA%3: 3A7!,)( )(+ )
) 2 9KK *()4 )(+ ) ) ( ! * 5
* ) ) * 5 ) '
( ( ) < >!,)( . * '
- ) ) 9KK # BA%3: 3A7
( ) (
- ) () * 90KK
)( . N
* L3 *)(M
*( ( )( ) L)( .M ,)( )'
* L<.*)(M
*( ( )( ) L)( .M ,)( )'
* L<. * ) M
*( ( )( ) L)( .M ,)( )'
* L)( .M
,) ) *() ( . ),,( *) ) )' *)(
.*)( * ( ( ( ,( ) (L1) 3 (, M'
= ( ) , ) ) '
( ( ) <D !,)( . * ' (,( (
4 ,) ) )( ./
= )( .
# (O ) )(+ )
# (O ) )

D
FUNCTION Y##AUTHORIZATION.

*"----------------------------------------------------------------------

*"*"Local interface:

*" IMPORTING
*" REFERENCE(ID_ACTVT) TYPE ACTIV_AUTH

*" REFERENCE(ID_BUKRS) TYPE BUKRS

*" REFERENCE(ID_UNAME) TYPE SY-UNAME DEFAULT SY-UNAME

*" EXPORTING

*" REFERENCE(ED_ANSWER) TYPE CHAR2


*" EXCEPTIONS

*" NO_AUTHORITY

*" USER_UNKNOWN

*"----------------------------------------------------------------------

* data
DATA: ld_subrc LIKE sy-subrc.

* Check

AUTHORITY-CHECK OBJECT 'Y##'


FOR USER id_uname

* for activity

ID 'ACTVT'
FIELD id_actvt

* and for company code


ID 'BUKRS'

FIELD id_bukrs.

ld_subrc = sy-subrc.

* Evaluation of sy-subrc

CASE ld_subrc.
WHEN 0.

ed_answer = 'YES'.
WHEN 4 or 12.

ed_answer = 'NO'.

MESSAGE ID 'AC400' TYPE 'S' NUMBER '102'

WITH id_uname RAISING no_authority.

WHEN 40.
ed_answer = 'NO'.

MESSAGE ID 'AC400' TYPE 'S' NUMBER '103'

WITH id_uname RAISING user_unkown.


WHEN OTHERS.

ed_answer = 'NO'.

ENDCASE.
ENDFUNCTION.

8 , ) ) ' 5 , ) ) 5 . )(
5) ( )(+ ) , ) ) '
@ 4 )* ) , ) ) !9KK # BA%3: 3A7 < !
,( ) '
( , ) ) 9KK # BA%3: 3A7 < 5
5) ( 5) (, ) ) 9KK # BA%3: 3 A7' 3 ) ))
,) ) /

FUNCTION Y##AUTHORIZATIONTEST.

*"----------------------------------------------------------------------

*"*"Local interface:
*"----------------------------------------------------------------------

DATA: ld_answer TYPE char2.

BREAK-POINT.

* Test should deliver: ed_answer = 'YES'


* and sy-subrc = 0

CALL FUNCTION 'Y##AUTHORIZATION'


EXPORTING

id_actvt = '01'

id_bukrs = '1000'

id_uname = 'AC400-##'
IMPORTING

ed_answer = ld_answer

EXCEPTIONS

authority_incomplete = 1

no_authority = 2
user_unknown = 3

OTHERS = 4.
* Test should deliver: ed_answer = 'NO'

* and sy-subrc = 4

CALL FUNCTION 'Y##AUTHORIZATION'

EXPORTING
id_actvt = '01'

id_bukrs = '2000'

id_uname = 'AC400-99'

IMPORTING

ed_answer = ld_answer
EXCEPTIONS

authority_incomplete = 1

no_authority = 2

user_unknown = 3

OTHERS = 4.

* Test should deliver: ed_answer = 'NO'


* and sy-subrc = 40

CALL FUNCTION 'Y##AUTHORIZATION'


EXPORTING

id_actvt = '01'

id_bukrs = '2000'
id_uname = 'ODYSSEUS'

IMPORTING
ed_answer = ld_answer

EXCEPTIONS

authority_incomplete = 1
no_authority = 2

user_unknown = 3

OTHERS = 4.

ENDFUNCTION.
!" #

# # $% ! !
)

* PARAMETERS pa_carr TYPE s_carr_id .

PARAMETERS pa_carr TYPE spfli-carrid .

+
*# !

' ! %
& # # & #

&
#
# # %
#
( !
& #

! " # $ %
! $ ! &'
( )* + " ! # $ " '
)* + ! # $ " "! !
' "! $,! -! "
! " ""# " '
!
" # $ %
( )* + "! " !
-! " "! " '
"! ! "! " " " )* +
# "! # " "! " ' "! !
"! " " '
. ! ! $ " ! !
" # $ "'
/ " " ! " 0 -! "'
& # ,

)
, - .
...

PARAMETERS pa_city TYPE ... , % !


SELECT-OPTIONS so_carr FOR ...
& # ,

* / 0 # %
1 ! #
12
4
& * # %
#
1 ( #
12
4

& # #

( " & " ! !" $ '/ !


" ! ! & " "2 " '( ! &
" " " '
"! " "! ! ! $
" & " -! "'

1
)
...
DATA wa_spfli TYPE spfli.
PARAMETERS pa_car TYPE s_carr_id.
& # *#
#
3

!
SELECT * FROM spfli !
INTO wa_spfli
WHERE carrid = pa_car .

WRITE: / ...

ENDSELECT.

( " ! !" &! $ " " " "


'
( "
4 $,! " " ! !" !" $,!
'
" " # ! # ! " $,!
" " " '5 " ! " " " '

3
& #

)
...
DATA wa_spfli TYPE spfli.
SELECT-OPTIONS
so_car FOR wa_spfli-carrid .

/ ! *#
-& # # .
& #
# / 15 3
/ )
1 15 )

SELECT * FROM spfli !


!
INTO wa_spfli
WHERE carrid IN so_car .
WRITE: / ...

ENDSELECT.

/ ! ! 4 $,! %
( $,! " ! !" " " "
$ ' $ " "! "" ! &" ! '
( 0 " " $ "! $,!
" " %
" ! " # " "# $ ! ) + " &! " "
) +
# # " " ")$ '''+% / $ " " 7 "
! "
#% " " "# " # #
" " " "# '
( ! $ " " $,! " $ '(
$,! " "# " ! ! $ $
" # '*" " " ! " &' ! " $ !
2 " " ! "" ! " $ '
. %
" ! 2 " " ! '

6
1, 6 #7 & # &#

...
PARAMETERS pa_car TYPE s_carr_id.
CONSTANTS actvt_display(2) VALUE '03'.

* Event processed after leaving the selection screen


AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_car
ID 'ACTVT' FIELD actvt_display.
IF sy-subrc NE 0.
* Show selection screen again with error message
MESSAGE e045(bc400) WITH pa_car.
ENDIF.

START-OF-SELECTION.
...

0 & ! !7 "" " " "


" $$"# " $ & '
( "9 ! !7 $ "" ! !" %
" "9 " " " " " !
"! '
" "9 ! !" $
"" " $ "'

8
%

= /
(

% # #7

( ,!

:99 :89
#% # #7
899 :;9

<99

- " ! !" $ " "!


!'
0 " 0 -! " !! ! ! !7 " # $ " !"
' ! !7 ! " 7 ! !7 ! !7 &
# ' " " -! " ! " ! !7 '
( ! !7 ! $ & ! ! !7 ! ! " " '( ! # $ "
" ! " ! !7 2 ! 7 " " "" " "
!#" '
( ! $ " ! " # " &$ " $ ! !7$ &
$# $ $ " ! " "! " " " '
( " " # $ " " " ! !" %
*& $" " " !! " " & #
!! " % % !! " ! ! "" !
!! " ! " '

:
% #

% > #

:99 :89

899 :;9
CALL SCREEN 100.

<99

2 , % ?9

/ " " 2 !
$ ! " " " " " " ! ! $ ;
" ! ; "
$ ! " " 0 "! $ !7 " " '
" # " '
%

&#
%
( #
% 1 - # .

% ! ( PROCESS BEFORE OUTPUT.


& # 3 89 MODULE clear_ok_code.
% % >
1 %
2 , % PROCESS AFTER INPUT.
( ) MODULE user_command.

( ! $ "%
# (
( ! " " $" " " " & " $
" ) "& " !" +'
)# (
/ ! ! " "' < " " "!
'
(
( ! " " !" ! 9 '
! #% # #(
( ! "! ! $ "! $ " "
" "# ") $ + "! ! $ "! " "!
* ++
' # % 1

' # % 1

# %
#

!
1

/ ! " " ! " %


(
( $& "$ " !" '/ ! !
"$ "! $ &'
<& %= " > '
(
$& ! " " $ "
" $,! " " '
(
( " " " # "$ '
"$ ! $ ! "! " '
@

% :99
...

) CALL SCREEN 100.


MODULE abc. ...

MODULE abc OUTPUT.


:99 ...
ENDMODULE.
/
MODULE xyz. MODULE xyz INPUT.
...
ENDMODULE.

( 0 , - "" "! "! $ !7


! "'
( # $ !7 " # $ " ! "%
$ ! . . *$ / "! $ " " ' #
! $ ! " # !" "& '
! . * / "! " "! '( " " ! !
"! $ ! '
0 ! %
( "! & " 05 # !"
' 0 # $ !7 "" " ! "'
" ! "! " ) # 0 ?+ # $ "" "
!' ( " "! " 0. 4 +( !
0 "! $ !7 4 ! ! " 0 ! " '
# " "! $ !7 "! ! $ ! " !'
! $ 0 0. 0 0. '
%6 ( # /

% :99
...
PROCESS BEFORE OUTPUT. CALL SCREEN 100.
... ...

& ) #7

MODULE user_command_0100 INPUT.


PROCESS AFTER INPUT.
CASE ok_code.
MODULE user_command_0100. WHEN 'BACK'. ...
WHEN 'SAVE'. ...
ENDCASE.
ENDMODULE.

/ ! 9 "! '( "


1# 1 ) " " $ "+' 9 ! !
#21 # '
. %
*" "! " # "! ! #" $ ' !
!! $ 0 " " '
@ ( 2

&#
% #
!" #
PROCESS BEFORE OUTPUT.
... / &1 * @ @ 2 *:99
! +# #7 ,
PROCESS AFTER INPUT. % # !" # =
MODULE user_command_100.

/
!
)
1 ! )#
...
"# !
MODULE user_command_100 INPUT. *+ , $% " %&'% (%

ENDMODULE.

! " ) 05 + " 0. ! '(


# " !" 0 '
( " " "!" %
!# % 3" # % *" !" $ $ ! !7
!'
3" # % !" " $,! " " !
" " $,! ; 05 ; "; ;'
! $ ! " #" " )" $ +'
. ! 05 # 0. ''' . .
@ ! ! 0. +++ .
# '

1
(, &# & > #

% :99
...

) CALL SCREEN 100.


MODULE abc. ...

% ! MODULE abc OUTPUT.


:99 2 , % :99 ...
ENDMODULE.
/
MODULE xyz. MODULE xyz INPUT.
...
ENDMODULE.

& " " " " "! " '

3
1 % & > # +(,

% :99
...

) CALL SCREEN 100.


MODULE abc. ...

% ! MODULE abc OUTPUT.


:99 2 , % 9 ...
ENDMODULE.
/
MODULE xyz. MODULE xyz INPUT.
...
ENDMODULE.

0 ! & " " " " " $ !


"! "! ! "! '

6
1 % & > # + !

% :99
...

) CALL SCREEN 100.


MODULE abc. ...

% ! MODULE abc OUTPUT.


:99 2 , % :99 ...
9
ENDMODULE.
/
MODULE xyz. MODULE xyz INPUT.
SET SCREEN 0.
ENDMODULE.

( & "! $ ! " 0


'( " " ! "'
( " $" ! "" " & "$ ' "
"7 " " ! !7 "7 ! !7 " "
! "" "" " !$ ' / ! & $
" " ! '
. " " "! 05 "" '
! $ "! " 05 " #" "
! "$ " ! '

8
&% ,1, %6 ( #

DATA ok_code LIKE sy-ucomm.

START-OF-SELECTION.
...

AT LINE-SELECTION.
...
CALL SCREEN 100.
...

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK'.
SET SCREEN 0.
MESSAGE s057(bc400).
WHEN 'SAVE'.
* Saving changes in data base
...
SET SCREEN 0.
MESSAGE s058(bc400).
ENDCASE.
ENDMODULE.

* " "! " $ $ ! %


A 4$ 4& " ! '( 7 $ !7 ! ' "
! " " $ ! '( 16 " $"
!" '
A 4 5 4 " " $ # "4$ 4' " " $ !
#" " " $ "'
" " & ! "! " '

:
/ #

( 1 ' &% 3

4 4

' /
' /
@ !
!
# !
( # 7% ( # 7%

' $
) $
+ & $-

( " "! " %


( ! ! !" '
( ! & $ '
( ! ! ! &! " " 'B ! ! $
)! ! +' ( ; ; ;C ; " # $ ! !
!" => '. " ! $ ! " '
( ## ! ! " ! " # " "2 '( $ "!
! # " !" => ! 7 # $ " '(
! " ! ! $ &! ! !" " " '
( * # /2 ) "! $ " ! !7' ! ! $
&! $ $ &! $ $ ! 7 '
( # ## $ "2 ! 7 !" $ &! $
! !7 ! " $ '
"! !" " ! " " ! $ #' D ! $
!" " "! " " !" % E '
& @ ( # D %

@ ! @ !

# ! # !

( # 7% ( # 7%
!
BACK %EX RW %PRI %SC %SC+ P-- P- P+ P++
=

# # 7%
(8 PICK
(A <...> & #

+ # 7%
(B
(C

( 7 # " " %
## ( ! ! ! ! " "2 " " !
! " 7 ' ( ! "" ! 7
! ! ! ! $ "'
# # 2) "( * ! " " " " $
! ! ! 7 '
. # 2 )( " ! ! " " " !#"
$ " ! '/ ! 7 " $ 7 " " ! ! ! "! "
" " '
! $ ! $" " ! 7 "
"2 " ' ! " &! $ " " $ '
& @ @ )

@ ! @ !

( 1 '

, , ,
PRI PICK & # BACK
& E& F %SC & #
%EX 1, %SC+ 1, #
RW #

# ! # !

( # 7% ( # 7%

( " " " $" ! ! # "'


( $ "! ! & & " $
! " # ) " " '
/ # 1, & 1

& # /
! !" #
%

@ ! SCREEN

# ! SCREEN

( # 7% SCREEN

" " " ! $" " ! 7


# " $ ' & " " $" " !
7 '
- $ ! !7 ! ! " " ! $" !
7 " " '
# & ( #

& # E
8
#

( # #

@ ! @ !

( 1 '

,
: & # BACK + &
# #

# ! # !

( # 7% ( # 7%

( !# " !# " ! "! %


! ! $ $ ! !7 ! ! '
! !" " "2 " ! ! ! !7 !
! $"
"& 5 ! ! $ " !
$" " ! '( "" " ! $"
$ "' ! " $& 5 ! ! !
" $" $" !# "'
( ! $ 5 "& " 9
1# 16766'
' /

& + (+&1 1 / 2 ! #7 - .
SET TITLEBAR 'T_ABC'.
) - % .

! +
# #7

!" #

# ) %1 2.#
) . + ) /#)3
4 ! " )) % ) )0 56 )7

% (% /////

.#
) . +

.#
) 0 ( 1#
(0))#

1#
%

( " " " "!" " %


*" #8 " " $" "
$ #% 3" # " 0 < " "
"! '
! # & ! "! "'
. % !" " 05 4 $ " " #
$ 49994+ ! " ' " ! '
/ ! " $ "7 " $" '( !
!" $ " " # '

1
# !" # +

!" # - # . #

-( # !" # .
: G
!" # ! :
8 )
:
8
8

!" # : <
:
: 8 H0I
8
8

: B
:
8 &
8

( " " ! 7 ! " %


! $,! ) "$ + ! ) +' ( ! ! $ " !
" & " !! ' ( ! $ !! '
! " ! " # "! ! $ ! #" ' " " "
" $,! ! $ " " ! " ! " " ' " 7
! ! ! ! !" $,! ) ! +' $,! " "
# "$ " '( ! $ ! "
" # "' ( " "$ ! # " ! "! " !# '
! $ ! &! $ " " " $ '
" '3 0 " " " $,! " & '
C #" ! $ ! " " # $ " ! " '/
" $ F $"" '

3
/ !" # @

)
: 8
DATA ref1 TYPE REF TO myclass.
DATA ref2 TYPE REF TO myclass.

:
CREATE OBJECT ref1 ...
8
...

CREATE OBJECT ref2 ...


:
CALL METHOD ref1->meth1
EXPORTING ... 8
IMPORTING ...
EXCEPTIONS ...

CALL METHOD ref2->meth1


EXPORTING ...
IMPORTING ...
EXCEPTIONS ...

( " " ! ! ! " " ! #" $ ' ( " "


! '/ ! " " ! #" $
0 " " !4 ! ! 4 +
( $,! " !" " " " "'C # "$ ! !
# $ " " " ! #" $ " '
" ! " ! !
$: " " !4 +
( " " " " ! . # $ '
( ! &! " ! $ " '0 !
" ! ! " " '
/ ! " !
' 0 " " !4 - 4 +
! " ! ! ! ! "
#" ! ! " & " ! " " '/ " " ! #" $
$ $,! ! ! "- ! ! ! '

6
1 " %& &

*' /* *' / *' /* / 1

' # # #

*' /*3 @ * /1K 1 *&/@ 1* 11*@ 1

EE #

99:J
99C;
3
3 @ # 9;99
9;98
#

" '3 0 A "7$ ! " " " 8#) # # " !


! " ! "# " " "# "' ( " ! "
$,! " 7 ! ! # #! %# 2'
B ! " ! " " " 0 " " '( " *" "7 "
"2 " " "# " " " ! #" !! " ! "'
/ ! # " " " # " "# "' ( " ! #"
"$ " *" "7 " 0 " " ! " '
/ " $ <, ! " " *" "7
F $"" '

8
& '

& #

& ( %

:J 8999+9:+:J & B:<$CA <8:


:J 8999+98+89 & B:<$CA <8:
:J 8999+9<+:: & B:<$CA J;J+;99
C; 8999+9B+:A & <CA$99 J;J+;99
3 ;99 8999+9:+:< 1 :8<;$BC <:9+<99
3 ;99 8999+98+8C 1 :8<;$BC <:9+<99
3 ;99 8999+9<+8: 1 :8<;$BC <:9+<99
3 ;98 8999+9<+9; 1 :8<;$BC <:A
3 ;98 8999+9B+8G 1 :8<;$BC <:A

( FD " ! " " ""! ! $ '. " "


! " " '
! " ! ! $ " " " ! ""
$ # $ ! ' ! $ " $ !
! " " '
" ! " " ! " $ "' ( ! % &
! !" " " $ &'
( FD ! " " # " " $" ! '/ ! " ! &
" !" " "" ! ! " ! " "'
A ! ! "! "! ! " " ! "! "
" ) "! "! ;+'
( ! $ "2 " " " "!! 'E ' ! !
$ ! " # %/ ! ! ) "! + ! "
"# ! " # '
A ! & ! "! , ! !"
'
( "! 7 ! % '

:
% !" #

% :99 #
)

PBO module
...
# #
#

' ...
& # #

<, ! " $ $ ! "! " ' ( $


! " "# ! " "# 9 '
( ! "$ ! $ ! "'
!! " " # ! " ! $ "' (
"7 ! " $ &$ " '
/ "2 " ! " FD " ! " " FD " ! "
"" " '
& '

&& ) / 1
*' /* & @* 2 /21

*' /* *' /

# #
#

'
& # #

$ ! ) $,! + " # $ " " ! ! "


! " FD " ! " %
1<. 1 . 1 1<. 1 51< 0'
# @

*' /* & @* 2 /21 / # # %


& # CREATE OBJECT
@
2&

*' /* & @* 2 /21

/ # ! @ 1 / %

2&
# % #
.
.
@ %
2&
! CREATE
OBJECT

*" " " $ $ ! 1<. 1 . 1 #


%- $,! " ! # " #'(
) '( "! " # ! " ' " #
! $ ! !7 ! " 0 " " !! '
- ! !7 " "
$ "! " "'
( $ ! 1<. 1 . 1 . '
A ! " $: " " # " "
" " "# 1 '( ! ! "" "
$ " "" " "'
/ & ' @

/ # #
*' /* *' /
CREATE OBJECT L
& #
@ %
/ # i_parent
!
@

2&
@ %
it_outtab - % .

&1 * ) 1*( *(/ & * /& 0 i_structure_name


- ! # # !
! % .

1( 1&3* ) 1* /& 0

( $ ! 1<. 1 51< 0 " '' ( !


" $ FD " ! " ! & " "! '
. %
( " ! "! " ! $ " "" ! " ! "'
1 $ 1! 1! 10 %
( " $ $ $ " "" 1# " "'
( $ $ " $ "! " ! '
! ! " "2 " " " " ! '(
"! " " " " $ " " $
" " $ ' ! " "
1 1 " "'
" # ! ! "! ! ! " " 1 #"'
! '1 $ 10 %
/ &! ! " $ # ! !
" " '
# %

% #
2 2 /21 *:
6
# @ B
3 6 @ # 89

( " "# " " <, ! " " # )


$ + !" ! ! "" '
( $" & " ! !"
%
$ '( " 9 "
"' ( "! %/ " !" " "
$ " ! 7 " 'C $ "
$ " " "2 " "" ! " " " $ !" '
" $ "" ! " " & '
/ ! ! 9 " $ ;
$ ; " " '
" !" " ) "% 17+'
/ ! "$ % * * " ""
" $ & !! " " 9 "' "$ !
" 9 ! " ! $ " ! "$ +
+ '( " " $ 9 " '
!" #

DATA gdt_spfli TYPE sbc400_t_spfli. *

# *
DATA: container_r TYPE REF TO cl_gui_custom_container ,

grid_r TYPE REF TO cl_gui_alv_grid . *

DATA ok_code TYPE sy-ucomm. 7*#

START-OF-SELECTION.
* fill internal table ...
CALL SCREEN 100.

( " " ! #" $ " "2 " 0 " " '


( " " ! #" $ ! "! " ! ! # 1 "
$ ! 1" 1 # 1# '
( " " ! #" $ " ! " ! ! " 1 "
$ ! 1" 1 31" '

1
/

MODULE create_control OUTPUT.


IF container_r IS INITIAL.
CREATE OBJECT container_r # *
EXPORTING container_name = 'CONTAINER_1'

*
CREATE OBJECT grid_r
EXPORTING i_parent = container_r.

...
ENDIF.
ENDMODULE.

/ " ! " ! $: '


B 7 " !" " ' #
7 "" "' " ! ! ! "! "
" " ' $: "! " ! "! " '5 " " "
" ! '
" $ "! # " ' $ !
" "! " !# "' * " " "!
05 "'
( ! " $ ! $ " " '( ! $
" 9 $ 2 " ! " " ! #" $ '
! ! "! " ! "" 05
" ! ! "! "" ' "! " "
" $ "! $ # '
A " ! " ! " " " ! " !'
( ! "! " ! ! 7 " ! " "'

3
& '

MODULE create_control OUTPUT.


IF container_r IS INITIAL.
CREATE OBJECT container_r # *
EXPORTING container_name = 'CONTAINER_1' .

*
CREATE OBJECT grid_r
EXPORTING i_parent = container_r .

CALL METHOD
grid_r-
grid_r->set_table_for_first_display
EXPORTING i_structure_name = 'SPFLI'
CHANGING it_outtab = gdt_spfli .

ENDIF.
ENDMODULE.

( ! " $ " ! " # !


1 1# 1 1 )'
/ " " " $ 1# " "'
! " $ " " $ ! !
" " 1 1 " "'
0 ! " " ! " ! $ " '
! " $ ! " " " # !
1 1 ) $ " " '

6
& %

%
# %
)% # # $ #
! 7 % # %

8
=

. 7( 0 #" 5 #

! ! & "! 7 $ %
• ( " " $""
• ( $ !! ! " !
• ( ! ! " ! "
• - $ !!
• FD "!" " "

( " " $""


"! " ! ! " FD " ! " !
" " $"" '
! & " " " FD " ! " ' 9
" " 'E $ " " ' ! "! "
FD " ! " G

" " FD " "


" " 0 FD4 = -4-<B 5 $ $,! "
! $,! " /HH FD4 = -4-<B 5'
" " /HH FD4 = -4-<B 5 !
! '
!" '= # & I( $ " J'
( & 9 !" ! ! " &
!" ! '
< " IF ! ! J " "! ! '

:
# #

. 7( 0 #" 5 #

( " " $""


"! " ! ! " FD " ! " !
" " $"" '
, - $ ' -# &-* '
* ! $ !"$ F $""
! ( !
.# "! " "
, - - "
, - - %.
/ " " $ " " " " $ I5# "# J
I- ! J I<& J I" " 5$,! J'
! & " " " FD " ! " ' 9
" " 'E $ " " ' ! "! "
FD " ! " G
, - $ ' -# &-* '
.# "! " "
, - - %.
( $ I<& J
- - %/.*0!/! #
( ! ! " 4 E (5B 4 5.( .<= "
!" '( ! ! " I 05J '
4 E (5B 4 5.( .<= " I< F J $ "
" I J'
" " FD " "
" " 0 FD4 = -4-<B 5 $ $,! " !
$,! " /HH FD4 = -4-<B 5'
, - $ ' -# &-#'( )
D " "
" " 0 FD4 = -4-<B 5
! * "0 FD4 = -4-<B 5
&
( " " " /HH FD4 = -4-<B 5
! " "! " !
* !
* ! F! $,!

" " /HH FD4 = -4-<B 5 !


! '
*" # !" ! $ ! ! " '/
! "& $
, - $ ' -# &- #'( & '
( ! ! ! $ " * ! !! !
! ' - $ ! !7 7 '0 $
! !7 7 " " ! $ ( '
" ! '
* ! I* >= !J
* *F C(
= ! (
K
* ! I ! # J) ! # $ $,! +
( "" " '
!" '= # & I( $ " J'
( & 9 !" ! ! " &
!" ! '
< "I J' E " I" " J $ $
! " > 11'
* ! F
" # & I( $ " J'
( !! '
* ! "$
D 9 11
D 9 :3
* !
* ! !#
<& ! ! "' ( "
" " '

< " IF ! ! J " "! ! '


< "" " ' ! $ " *!
I 05J'
<( ( (F<0 = L L
'
- $ ! !7 M I !" '
( F ! !
* ! I J
* ! I ! # J) $,! +
( "" " '
!"

#$ ! !

!
0

%&'

() ) *
$ +

- * - ,

- *
. /!

! ! " ##$!%$ &


&' "!% !% ( ! " ! !% ) # !
! * !(# % # % !+ *
&' %!% %#( # ! # ! ""!# , " # !% -
! .!!(#/- !"! .!% ! *
& % ! (0 ! 1 * )" !
!"! . ! " (0 - . ! ( 0 $! % $
. ! *2 # * 3- ! ( " ## !% % !#!! * "
# * - ! !# 0 !# %# ( " 4 !"! !
! *
&' !% ! (0 ! % ! !
(0 *
&' !% ! (0 ! #! $! *
!+!% #!+!% !% "!% $! 3 ! 5 %! #*
.# - - !"! ! - -
% $! 3 6 7( #*
$ 1 $
!" !"

) * !" ) * !" ) * !"

$ $

!%! # (0 8! ! *) " (0 ! ( - 9 !%! #


9! # *: (0 # ! ! *: ! #!
( .# ## " ##$ *
)" $ (0 - (0 !%! # (0 ! .# *
#$ !% .# % !% 9 . # ! 9 7*
:! ! (0 " .# " ##$
*
%

$ 1 $

!" !"

) * !" ) * !" ) * !"


,
$
$
%

% !%! # (0 " *' ! -


% ! # %$! 7 " 9 .# ! 9*
)" ! % , !- (0 ! % ! !%! # /- ! % !! #
! 7 " 9 9* ! (0 7 $ *
6 7 ! $ (0 ," 8 #-" ##$!% % !
! /- # 7 % !%! # (0 ! .#
!% $ *

:! ! ! . !#(# " (0 ( !%! # . !#(# ! "


*
# # 7 !"! ! !" !#" ! !+!%
! ! * # # ( $ % ( 7% 7 $# % "
"#$ " #! ! ! !# ( !" !% !"! !
! " !% !% "" !. !"! ! % *

;
,

$ 1 $
!" !"

) * !" ) * !" ) * !"


,
$
$
"
,
"

"#! $ ! % - 7%-
" *
"#! # $ !" (0 (0 ! ! %! ( *
) ! - (0 ! ( ( !. (0 ! ! $! !
*
)" $ % - . " " (0 !
! * )" . !"! (0 - 8 ! ! (# # $
! ## % *
: ! ( $ .# " ##$ -$
" !"! ! 0 ! .# #* :
0 (0 " ##$ *

<
* 1
-

! " # -
$ % * -

)*

,
) *

)" " ! ( 1 ! !% . !#(#


!+!% #!+!% ! - . # 0 ( -!" . !#(#-
#! , > # "$ / ( * #! " #! !"!
( ! . !#(# .! 4 7 # #! "$ *
? .# 0 % .# !" ! !# " ! . !#(#
! *@ $! - (0 ( !" -
8! - !"! ! - ! " % *
4 !"! ! (# !( -" ##$!% % - $ . ! (
0 $! % !"! . ! *2 # * 3- ! ( "
## !% % !#!! * " # * - ! !# ! !# %#
( " 4 !"! ! ! *
' ! - # # !"! ! !"
: !+!% #!+!% ! !" !
! (# 8! . !#(# #
!% (0 ! ! #*

=
*. /! 0

%&'

() ) * $ +

,
* $ . ) * !"
, ! . ) *
!"
*
1 2

,
, 2

)
) 2

4 !"! ! % (0 ! *: &
B 8! , ( ! . " ! (0 $! ! /
C . ! !! ! ! (0 *
) .# - ! (0 ( ## " "! % *
58 #& $! % ## " ! #*
) - # . & ! (0 .
% ## ( % ! ( * 58 #& !% " ! # 8!
! ## ( *5 ( " ##$!%#. #&
) 3 % , /
) 2) , /
) " ! # !% ( ! .! ( , /
" % ! ( "!# , /
) (# " 3 ?! ! , /*

A
* 1 $

*** SAP program ***


*********************************

PROGRAM <name of SAP program>.

3 4
3 !" 4

2 2
1
,

: ( ! " % ! ## (0 ! *:
. ! $ " !% !&
8!
!# 8! " ! #! ## ( #! ! % *: " ! #
! " " ! % ! # ( ! !"! *
3 ! : ! 5.
" ! #! ## ! ## ( #! ! % !
*
3 ! )
: #! ! % ## " # ! " # * : ! # !!
*
* ) *

) *

2
1,
1 2

% (# "! !! # % #%! " #! !


% * - .! ! $ ( .*
: . % #! ! ! " ! ! !% !#!
#. !*
,

) *

) ** ) **
PROGRAM ... . PROGRAM ... .
... ...

*Original Coding.. *Original Coding..


... ...
... ...
... ...
* Added/changed by customer
* Coding
... ...
*Original Coding.. *Original Coding..
... ...

6 7 !"! ! - !" (0 ! ( ! #*
:! ! 8 ! " % * )" (0 ! ! % !-
. ! $ $ (0 ! ( !"! ! ( . #! !
*
2 # * 3- "! #. # "% #! $ ! !"! ! $ $
! (0 ! #"- ! # % *
" # * - !"! ! $! "! #. # "% # ! * : ! ! " !#! (
4 !"! ! ! -$ ! ! ! ! 2 ! 94 !"! ! 9*
: !"! ! 0 $ # %# .! #* : "
0 !% !"! ! ! # ! ! ! !*
*
INTERFACE
<badi-interface>.
,
DATA: a1 ...
1
METHODS m1
EXPORTING
1 e_par1
e_par2 9
* 1 IMPORTING
3 4 5 i_par1.

METHODS m2 ...

ENDINTERFACE.
) !

* ) 8) !
3 4 6766 )

3 ! ) % " * 3 ! ) .!
" ##$!% ! &
% &: ! " " % "! ! 3 !
) ! " "! " * : !! " ! ! # *:
% ## ! " " % 3 ) # *
4 &B!7 8! -" ! ( ! 3 )* :
!% ! ! # ! 2 "!!! .!!(# $ 3 )!
! # *
&B!7 8! - ( "! ! 3 )
! # *
. # $ "! 3 )&
) "
# ,3 ) # / ! # ! "
: % # ,3 ) # / " ##$!% 7&
'!# !%&)" 3 ) ! ( 8 ! !! #- 3 ) #
# . #! ! # ! ## *
#&: 3 ) # ## !. ! # ! *
1

)
0: ; < 8 0 %

= *

3! 4

: ! #! $ "#$ " % ! 3 ) ##* ! #!


# " #! ! ! "3 ! ) *
D $ & " . !(# " 3 )! " ( # ! # !
! *
(0 " !% ! "! * : !! ! ( .! #
BE5F):C D?B5 ! ( *: 8 8$!##( 8 #! # #! * :
! " ##!% " % " #"!## *
: 3 ) # ! # ! " !% ! 3 ) "!!! * : ! "
" 3 ) # ! ## ! ##, /* : 3 ) # " ## "
!. ! # ! " 3 ! ) ## ! # *
*

REPORT <program_using_badi>.
DATA: r_var
<badi-class>
TYPE REF TO <badi-interface>.
START-OF-SELECTION.

CALL METHOD =
cl_exithandler=>get_instance
CHANGING
instance = r_var. r_var

CALL METHOD r_var->method 7


EXPORTING
<i_variables>
IMPORTING
<e_variables>.

END-OF-SELECTION.

: (. 8! ! ## 3 ! ) *: ( $ ##
# #! *
'! - . "! " . !(# " 3 )! " *: "
" . !(# . ! " 3 )*
(0 " !% ! "! ##, /* : ! ! " % 3 )
# * : ! (0 " # " ! " *
: ! (0 " ( ## .! ( , /*
,

* 1
3! 4
3 4

,
3 4

, < 3! 4>3 4

8 , <

" ! # !% # * C $ . - " ##$


!% . ! *: ! "
D "!8- G
BE, " # /
)4 E, " ! # ! /
D " ! # ! ,$! "!8/
3 (# #!7!% " - % ! " ! # !% *
'! ##- . !. (0 *

;
* ,

, < 3! 4>3 4

00 , < 3 : 4 ;* % 89

8 , <

* ,

* 2
, $
3 : 4 8

) ! # !% # - !. ##" ! " *
: - ! ! # !% # ! #! # 3 !# * C - !.
! " * !" $ # ( .!!(# ! # !*

<
3 4

#. ! !. ! # ! " 3 ! ) *' ! !
- " ! # ! $ ##!% % ! 8 *
)" !. ! # ! - # % ## * : ## ! #! !
% !## *C $ . - ! " # ! # % (# "!
!. ! # ! * 2 #!7 ##9 BB 2 :@4 5 '2D :)@D9- ##9 BB
4 5:C@? BE5F):C D?B5 >H 5:E)D : D 59! !## 8 . % !
! # ! *: ! # #! ## ## " # *
!. !. 3 ) #! !%! # " ! # ! $!
.!% 7 # !"! ! * 6 - .
!. ! !. ! $ *
4 #!# ! # ! 8! ! " 3 ! ) . #
! # ! *@ # ! # ! ( !. ! *

=
@ ) $

, ! ) *
8 $
) *

A
!

#! " ! 8 !- $!##( (# &


• 58 #! "3 )
• ) # 3 )

3 )
!
2 ! ) " ! " @(0 D .!% "!
$ 3 ) ! " '! !# !%
!%*
:7 # # 7 3 ) ' BE 2:C@ ): E C5 I* : $ !
3 ) ' BE 2:C@ ): E C5 I ( # %JC $
3 ) .J
6 C5 IEB5? 5 E 2:C@ ): .J
C $ # " !+ ! 7J
C $ ! # ! # 8! " 3 )
' BE 2:C@ ): E C5 IJ
) # 3 ) ' BE 2:C@ ): E C5 I* 2
! # ! KK' BE 2:C@ ): * . ! # !
# # (0 * . !+ ! " # % B( .
!
+! !# " # % B*
! # ! - # " ! #
KK 2:C@ )G :)@D ! ! # ! .#
!+! % !% # % *) ! - .
" ! # !+ ! (0 *
; D $ ! # ! ! 3 ) .! *: B
7 !# *
"

3 )
!
2 ! ) " ! " @(0 D .!% "!
$ 3 ) ! " '! !# !%
!%*
2 ! 5= → →

@ 95 9" # ! (0 * B 7" 9? "!!! 9
93 ! ) 9* 2 " ##$!% ! !
#! ! ')L @L
4 8* * " !

:7 # # 7 3 ) ' BE 2:C@ ): E C5 I* : $ !
3 ) ' BE 2:C@ ): E C5 I ( # %JC $
3 ) .J
2 " ##$!% ! ! ! ! &
3 )D ' BE 2:C@ ): E C5 I
: 9 !( 9 ( % $ 7%
9' BE @ :)D E 5 M) 5 9* ? (# #!7 ! 7 % .!$
7% ! *: 7% (# % 9') B9* :
9) " 9 ( % #! 8 # N
9 C5 IEB5? 5 E 2:C@ ): 9*
6 C5 IEB5? 5 E 2:C@ ): .J
C $ # " !+ ! 7J
: 9) " 9 ( % #!
9 C5 IEB5? 5 E 2:C@ ): 9* ? (# #!7 .!$ !
*) !8! * .!$ 8 !
% ( !% 958 ! 9 ( *: # "
!+! 7! .! ( " 9D@E 2:C@ ): 9
8 ! *
C $ ! # ! # 8! " 3 )
' BE 2:C@ ): E C5 IJ
.!$ ! # ! " !!!# (
!% → *
) # 3 )' BE 2:C@ ): E C5 I* 2
! # ! KK' BE 2:C@ ): * .
! # ! # # (0 * . !+ ! " # %
B( . !+ ! !# " # % B*
! # ! - # " ! #
KK 2:C@ )G :)@D ! ! # ! .#
!+! % !% # % *) ! - .
" ! # !+ ! (0 *
$ ! # ! " !!!#
( !% → *@ 9) " 9 ( %-
(# #!7 % !*
; D $ ! # ! ! 3 ) .! *: B
7 !# *
@ 9) " 9 ( %- ( % *
#

!
"
"
$ %

& " !

"
& '

! "
)
"
(
*
&

!
( "
(

!" !" !#$


% $ &
' " $ ( # ) *
+ #$ % $ " $ ! $ , ! !&
$ $ &

$+
+ " ) )

")

) )

$
" $

% $ ! ) ! $+ ! $ &
% $ . % $ / . $ " 0"
+ /&
% $ ( $ $ )+
$ .$ $ !/&
$ $ $ 1 $ 2 $ )
# ) & $ $ + 1 $
$ ) # ) 2 % $ $ ! $ &
$ $ $ + $ ) !
% $ &% $ $ 2 $ &
$ $ $ % $ & + 0 !
! $ $ $ 3 ! !3&

-
. " ) )

%
) , -

% &
&
! " )
#
$ %
&
&

" $

0 $ ) + 1 $ 45 $
) & $ $ $ ) $ !
( .$ $ ) ( 2/&
45 $ ) " 31 $ 4+ 3 + + 1 $ 0
$ $ $ + $ ) # ) &
" " /

") # ) #44 8/44 # # 9:


# )

" % ) * ;
1# 3&/ & # #<&/ =
# ) #44 8/44 # # 9: #<&/ 9:
1#$// 5#6 # #$76 >
12/ + 3# / 2 " # #<&/ 91
" (
) ) ) /0:
2)&
) ?8/44##3& /

" " / #

# ) 0 " / " % + &


" % / " % +
1# 3&/ & 1# 3&/ & 1# 3&/ & 7 7/)
# ) #44 # ) #44 # ) #44 7 ) *
1#$// 5#6 1#$// 5#6 1#$// 5#6 & /)
12/ + 3# / 12/ + 3# / 12/ + 3# / 2/# /
1# ( 23# 1# ( 23# 1# ( 23# $7/)

$ 2 $ $ 2
$ $ $ &7 $ ( $ ! 0
&
7 $ ) )+ $ % 8 9 $
$ $ *
+ $ $ &
7 $ ! 0 ( $ &
7 $ 5 ! $ &: $ # + ! )$
+) )& $ ) % 8 9
$ $ $ &
7 $ ( ( $ ) ++ &

6
$ )

6 "

;
$ 0 ") $2
$ ) .$ 45/ # ) &7 $2 2 *
• 0+ + $ !1 $ 0
$ )
• + $ + ! $ !% $ !
)
• = 2 + ! 0 $ !$ $ &

! 0 $
$ $ 7>># &? 0 $
: ) &? ) $ $ $
"$ ! +
2 @ &A ! ! &
!$ ) $ $ $ 7>># 0 )+ ) !
7>>1 1 $ & )$ 1 $ "
3 B4 3 ++ + 0+
$ $ )$ $ $ 0 $ $ &
)$ 0 $ $!! ), 0 &
:! # ) &4 + 1 $ &

<
$ ) #
)$ ( + $ ) ) + !
1 $ ") $ # & ") $ (
( ) 1 $ &
1 CD7>>@ 2 + 37>> 3
% 8 9 # & )+ = 42 ! &
:= ( $ &1 2 !
$ *
8D 4C
8@ D 81C
#? D 4C
48'% D 4
4C D C4
CE ?44 8 &
% $CD7>>@ + 3 B# 3
$+ % 8 9 2 . CD7>>@ /
)& ! 1 $ 7>>1 % $ &%
$ " ! )$ # CD7>>@ $ B8 :&
) ! % ! &8 3 !3
+!" 3 % 8 9 3F 3?+ 3 + ! "
3'$ ?+ 3 3 $ 3 +!" 3 1
: % )3&
: $ ) &8 (
), $&
! 0 $
$ $ 7>># &? 0 $
: ) &? ) $ $ $
"$ ! +
2 @ &A ! ! &
0 $ ( *
→ → →

* →
→ → →
! →" # →$
" % & ' % %
7 $ + ) 0 ! B )
! → → →
→ ' "
% → &" '
B & $ )+
0+ + CD D1 &
!$ ) $ $ $ 7>># 0 )+ ) !
7>>1 1 $ & )$ 1 $ "
3 B4 3 ++ + 0+
$ $ )$ $ $ 0 $ $ &
1 $ 2 4 8 &
"# → ( ) * ' → +
→# →
" #
)$ 0 $ $!! ), 0 &
1 $ 2 4 8 &
"# → ( ) * ' → +
→# →
" #
7 $ $ 0 ) ! →+
&
:! # ) &4 + 1 $ &
$ ) #
)$ ( + $ ) ) + !
1 $ ") $ # & ") $ (
( ) 1 $ &
1 CD7>>@ 2 + 37>> 3
% 8 9 # & )+ = 42 ! &
:= ( $ &1 2 !
$ *
8D 4C
8@ D 81C
#? D 4C
48'% D 4
4C D C4
CE ?44 8
% $CD7>>@ + 3 B# 3
$+ % 8 9 2 . CD7>>@ /
)& ! 1 $ 7>>1 % $ &%
$ " ! )$ # 7>>DB8 : $ B8 :&
) ! % ! &8 3 !3
+!" 3 % 8 9 3F 3?+ 3 + ! "
3'$ ?+ 3 3 $ 3 +!" 3 1
: % )3&
: $ ) &8 (
), $&
!
(

" #

%& '

')
$

!
" ## # $ % & $ &' ( ) $#(
% % & * + % * &' % $ !
, $ # - #$ % !
)

('/--- #
('/---
# * +

( $
"' 1

) 0.

'
# )

)
,-----
,--.--

$ )

% $# #
% /% $ $# % $ $
/% !
, $ * & % - #% $
* $ /% % #$ % $# !
0 % - $ ( % $ #% #
$ %# & #% !
0 - * $ % ($ #% + 12!1
3 #% #%# % + 1 1!

.
%

)) .

5
--. ) 0.
#
) 03
) 0,
) 4 .- 5
.-
,- '
3-
4 3-
$ )6-- 1 3-

#
( /---

, # +& * $# % $#
% % - !
, $# & + !
, #+ #% (* ( % ( #+
#+ $!
, %$& # # !0 +
% - !
5 % ##% # % $ !

4
( : 5

) 4 ) 4 5 %

8
7
8

7 8
7 9 8

$# * (* & &' * ##
% $ /% ! $ % & $ % ( ) $#(
## & $# ! #( $ 6$ &#
$ 7 % & # ## & $# 8!
$# $ #% !9 #% # + (
+ /% !, * & & % ( ## & !
, #$ * " #- * *
/% ##!
;: ; :

) 4 ) 4 5 %

8
7
8
:
:
:

7 8
: <
9 8

9 $ % % # *
/% * & !5 % $# % % % # ##! 9
$# * !
, $ *& & $# ! 9 $
* $% $
* % ! % ! "%
* % $ % $ & &' ! %& $# * % # + $#
$# % % ! #%# * & % * %# $# "%
* % %# # #%# 6 $# #7! 0 $#
" 6 % % "% 7 ( #, : * $ #&#
$ & % 13&' 1 #% !

8
$ : >

))
$ .-. )
:

$ .-, #
8
: # 0 0
7
8

7 8

$ .-= >
7 :
9 8

9 &' $ # !5 %
!
9 $ %& !, # )
& !
9 %& ## $ %
$ %# %& !< ( % #
# # # %&
& % &' !
, $# (* $ * ( ##
% %& !

;
% $

% --. 2 $ .-?
(

$ .-,
% --, #
9

$ .-.
$
% )
' $ .-=
>

%& & (* %
* %& #&# $ &' ! < (
% %& # % #&# # $ %
(&% * % /% % % !
5 % % * % %& #!
% %& $ %* #)&# (& %
$ &' % #&# % !
0 % - ( % % * % # ## $# ! 0
##( % * % % % !" ( % %
% % #! < ( % /% #% &
$ ( # #% & % #&#!
: # :

! " @0 " 0 ( %(0# 0 A:B(# BA

#
!$
# % !&

, * + % = &# # " % !
&# # % ##* % % # &# & ##*
$ ( $$ !
" % /% % # &# #%
$ ( $$ !
>* % % & * $# % - !
? % * % ( % % & # # /%
) # ( # ( # #% !
<% & $ ( ( !
$

" !

+
#
% ) ( %* ##& &# =
• @ % %# $# ##

% * % %# $# ##
#- # < $#
# !A $ % ) B
% %# 5CC? D9>9 5 #%# %$%
* % % $ $ # % & (*
#% % %& ( ##* %#=
E #
% ) ) $ %
" % % %# 5CC? D9>9 5 & % $#
## ( % /% !< %*
/% !, (% F& #- % %#
# % $# ## !

@ % * % %# $# ##
< #- $ # < !
? $ # * /% BD * %$%
/% B
5CC9 G % $ % * # #%
1H #1 %& 6 #
$ % 7! % 5CC? D9>9 5 %
%# % !3 1@ 1 &$ &% $ (
##* % #%# /% !
$# 5CC! 0 $# ( /% &% $
; 61 # 17 #%# $ % * %
% $ # # #/%
!
% $# 5CC $# 3 %& $# !
. + $ % #$# &% $ ;
61 # 17!
4 #%# % % # < !
% * % %# $# ##
#- # < !A $ %
) B? # $ % #% B
HH & →
→ → → →
H # <
% &% 1 # 6 * 71
## A
## A
1 %1
#
#
, 1# A ! 1 &$ * $ % I
1# A ! 1 &$ * #% ! .H !5 % %
$% #$ $# 1, #0 1 # #! ,
$ & # !, # =
, $ % H ,9H "
J #% H J3F@H
J #% @ H J3F9D

.
" % % %# 5CC? D9>9 5 & % $#
## ( % /% !< %*
/% !, (% F& #- % %#
# % $# ## !
5 % F& &
→ → → →

0 $# # # % 6 ,@47( %
1H # J #% 1 % 1H #1
%& & ! → →
→ →
!, % %#
:G " GH ,9 0 FG<9 ,@ 9GJ F@9 & #- *
9 ( ) $#!
% %# 5CC? D9>9 5 #%# %$%
* % % $ $ # % & (*
#% % %& ( ##* %#=
E #
% ) ) $ %
* The table parameter RTABLE_VAL of type TPLIC_RVAL_TAB

* is defined in the type group TPLIC. This must be stored in the

* top include in the following format:


* TYPE-POOLS: tplic.

FUNCTION Y##WHENERGY.

*"------------------------------------------------------------------
----
*"*"Local interface:

*" IMPORTING
*" REFERENCE(ID_MATNR) TYPE MATNR

*" REFERENCE(PERIOD_FROM)

*" REFERENCE(PERIOD_CNT)

*" REFERENCE(CALL_PROG) TYPE SY-REPID


*" TABLES

*" RTABLE_VAL TYPE TPLIC_RVAL_TAB

*"------------------------------------------------------------------
----

* data

DATA: ls_mara TYPE mara.

DATA: ld_temp_faktor TYPE i.

DATA: ld_quantity TYPE tplic_rval-value.

DATA: ld_wa_rval TYPE tplic_rval.

* Clear output

CLEAR rtable_val[].

4
* Get master data

SELECT SINGLE *
FROM mara

INTO ls_mara

WHERE matnr = id_matnr.

* Master record found?


CHECK sy-subrc = 0.

* Evaluate temperature condition

CASE ls_mara-tempb.

WHEN '01'.

ld_temp_faktor = 1.
WHEN '02'.

ld_temp_faktor = 2.

WHEN '03'.

ld_temp_faktor = 3.
WHEN OTHERS.

ENDCASE.

* Evaluate volume and determine result

CASE ls_mara-voleh.
WHEN 'M3'.

ld_quantity = ls_mara-volum * 1000 * ld_temp_faktor.

WHEN OTHERS.

"nothing to do.

ENDCASE.

* if no periodic result, fill the result table for periods

DO period_cnt TIMES.

ld_wa_rval-period = period_from + sy-index - 1.


ld_wa_rval-value = ld_quantity.

APPEND ld_wa_rval TO rtable_val.

ENDDO.

ENDFUNCTION.

, % % %# # < !
@ % * % %# $# ##
< #- $ # < !
? $ # * /% BD * %$%
/% B
, # 6 : >7(
→ → → →
→ " #$ % →
H # <
#

, % % % #% 1H # 3 # ##0 1
$% &% !5 % % $% &% )$ # * ##
( $ %# ( # $ ! $ #
#
% % =
>% & K%
? + %# ; $

5CC9 G % $ % * # #%
1H #1 %& 6 #
$ % 7! % 5CC? D9>9 5 %
%# % !3 1@ 1 &$ &% $ (
##* % #%# /% !
$# ## % 6 ,@47&
! → → → →

# 1H #1 %& &' ! 1
<% 1 ) %!
<% 5CC9 G % $
&% 1F * F #1
, &$ 1" A 1
F ! <% > 5CC? D9>9 5
, &$ 10 $# 1
" <% > 5CC? D9>9 5
, &$ 1@ 1
, &$ 1 ## #% 1
# 1K% # 1 1"% 1 *!
% &% 1 1

8
$# 5CC! 0 $# ( /% &% $
; 61 # 17 #%# $ % * %
% $ # # #/%
!
$# ## % 6 ,@47 &

! → → → →

1 , $# =
, $# 5CC
9
9 *=
,$ 1"% 1
3&' 1 ; 1
# K% A %&# # + #
0 ( =
5CC9 G % $ 60AGH ,> E 3 H #7L
3 , #
K%
% &% 1 # K% 1
9 1 ,0J91 1# 1 #% !

% $# 5CC $# 3 %& $# !
$# ## % 6 ,@47 &

! → → → →

1 , $# 1=
, $# 3
9
9 *=
% &% 10 *1
,$ 1 %& $# 1
3&' 5CC
# 1 ,0J91

;
. + $ % #$# &% $ ;
61 # 17!
4&
→ → → →
$ & → #
J
< = % $
, % $
< #5 % #
% &% 3 *
H + % $ & !

4 #%# % % # < !
5 % # 6 : >7&
→ → →
→ → " #
$ % →
H # <
#

, % % % #% 1H # 3 # ##0 1
$% &% !5 % % $% &% )$ # * ##
( $ %# ( # $ ! 1 ; 1 *
/% * #%# % % % %#!
! " #$ % !!& &! '
• &!
• ! &! % &!
• !! !

( !!% ) !&! ) ! * '


! $+ % & % ! ! + ! & ) ,( + -!
-' . & +$ & / 0 - & !%1,( -!
& ) % % / , ) & ! +$ & )
% /2 /2 ,( - !
!% '
/ → → → → →

/ → → → → →

/2 → → →

. % &! ,3 $# 4 +& &


,

( !
!% * '
01 ( " ! -! -$
&!
0&1 ( & - &! +$ & -
& ! ,
01 ( ! ! - ! -$
&!,
01 3 & - &! ) - ) $ - &
,

( &! -$ &! 5 % 677 5 ,3


&! 677 5 !
!% & -!$ 08 !) $ 8 &- 1#
$ - ! 0&1& $ 9: ,
3 #% - - '
0183;3(38 ! ! 01
0&18 (3<8 ! ! 01
01859 (8 ! ! 01
. &! 677 5 -$ &! 5 , !
!% &! ,

. 677 (3=; !! 8 8,( $- 2 5 & ,


. # " ) ! 83;3(38 % - 83 !> 8#8 (3<8 %
- 8 ) 8# 859 (8 % - 8? 8,

. ! 677 (3=; % 8 8, 677 (3=;


! ,

. 677 ? (= 95 - ,
! ""

( !!% ) !&! ) ! * '


! $+ % & % ! ! + ! & ) ,( + -!
-' . & +$ & / 0 - & !%1,( -!
& ) % % / , ) & ! +$ & )
% /2 /2 ,( - !
!% '
/ → → → → →

/ → → → → →

/2 → → →

. % &! ,3 $# 4 +& &


,

( !
!% * '
01 ( " ! -! -$
&!
0&1 ( & - &! +$ & -
& ! ,
01 ( ! ! - ! -$
&!,
01 3 & - &! ) - ) $ - &
,

( &! -$ &! 5 % 677 5 ,3


&! 677 5 !
!% & -!$ 08 !) $ 8 &- 1#
$ - ! 0&1& $ 9: ,
3 #% - - '
0183;3(38 ! ! 01
0&18 (3<8 ! ! 01
01859 (8 ! ! 01

. &! 677 5 -$ &! 5 , !


!% &! ,

→ ! → " → # $%&&

@
! 8 & &!8
& &! 5
. 8 -$8

. ( &! 5
( ( &! 677 5

. AB !=&C D

→ ! → " → # $%&&
! 8 & &!8
& &! 677 5
. A D

( &- 8 !) $ 8
4 % E F -!$G !
!%

. 8 ) 8

. 677 (3=; !! 8 8,( $- 2 5 & ,


. # " ) ! 83;3(38 % - 83 !> 8#8 (3<8 %
- 8 ) 8# 859 (8 % - 8? 8,

→ ! → " → # $%&&
! 8 8
677 (3=;
. 8 8

- - 677
( &- 8 8
($- 8 2 58
; ,

( &- 8< ! 5 8
." < ! 3;3(3
(" 3 !>
." < ! (3<
(" )
." < ! 59 (
(" ?

:
. 8 ) 8
. AB !=&C D

. ! 677 (3=; % 8 8, 677 (3=;


! ,

→ ! → " → # $%&&
! 8 ($- 8
($- 677 (3=;
. 8 8

! 8 9! 8

(" - 677
( &- 8 ($- 8
! 89! $($- 8
! 8 8
677 (3=;

( &- 8. ! B & !
8
!& !
!& !
B !& !
2

. 8 ) 8
. 8B !=&C 8

. 677 ? (= 95 - ,

6 ! % & : %$ &
- 677 ? (= 95, $ ) - 0 & & !%1#$
! "
' → (% →$ (
&$ $,

→ ! → ) → !* +

< % B ! &C
B ! &C 77

H
! I( 77
" →

677 ? (= 95 0% - ! 1

(!
($- 8 9" &! 8
. 8 )8
. 8B !=&C 8

3 - - ! #% % !
! 8 8 86778,

*&---------------------------------------------------------------------

*& Report AC400CUSTOMER

*&
*&---------------------------------------------------------------------*

*&
*&

*&---------------------------------------------------------------------*

REPORT ac400customer.

* Tables

TABLES: kna1.

* Parameters

PARAMETERS: p_date TYPE date_from DEFAULT sy-datum NO-DISPLAY.

SELECT-OPTIONS: r_kunnr FOR kna1-kunnr.

PARAMETERS: p_action TYPE ac400action.

* Types

TYPES: yt_kunnr LIKE TABLE OF r_kunnr.

TYPES: yt_kna1 TYPE TABLE OF kna1.


TYPES: ys_kna1 TYPE kna1.

TYPES: ys_adrc TYPE adrc.

TYPES: yt_adrc TYPE TABLE OF ys_adrc.


TYPES: ys_ac400adrc TYPE ac400adrc.

TYPES: yt_ac400adrc TYPE TABLE OF ys_ac400adrc.

* Constants

CONSTANTS: gc_first_date LIKE sy-datum VALUE '00010101'.

CONSTANTS: gc_last_date LIKE sy-datum VALUE '99991231'.

CONSTANTS: gc_empty_nation TYPE ad_nation VALUE IS INITIAL.

* Call the main program

PERFORM main

USING p_date

r_kunnr[]

p_action.

*&---------------------------------------------------------------------*

*& Form main

*&---------------------------------------------------------------------*

* text
*----------------------------------------------------------------------*

* -->P_P_DATE text
* -->P_R_KUNNR[] text

* -->P_P_ACTION text

*----------------------------------------------------------------------*
FORM main

USING id_date LIKE sy-datum


it_kunnr TYPE yt_kunnr

id_action TYPE ac400action.

* data
DATA: lt_kna1 TYPE yt_kna1.

DATA: ls_kna1 TYPE ys_kna1.

DATA: ld_answer TYPE char3.

* Authorization check
CALL FUNCTION 'Y_AC400AUTHORITY'

IMPORTING

ed_answer = ld_answer.

CASE ld_answer.

WHEN 'IES'.
"ok

WHEN OTHERS.
J
MESSAGE e600(f1) WITH sy-uname text-001.

ENDCASE.

* select from kna1

SELECT *

FROM kna1

INTO TABLE lt_kna1

WHERE kunnr IN it_kunnr[].

* insert ykna1

LOOP AT lt_kna1

INTO ls_kna1.

* Evaluate according to action


CASE p_action.

* Initialize

WHEN 'INITI'.
PERFORM initialize

USING p_date
ls_kna1.

* Activate

WHEN 'ACTIV'.
PERFORM activate

USING p_date
ls_kna1.

* Reactivate

WHEN 'REACT'.
PERFORM react

USING p_date

ls_kna1.

* Undefined input
WHEN OTHERS.

MESSAGE ID 'AC400' TYPE 'E' NUMBER '600'

WITH 'Choose a valid action".

ENDCASE.

WRITE: / 'Vendor', ls_kna1-kunnr, 'has been maintained'.


ENDLOOP.

ENDFORM. " main

*&---------------------------------------------------------------------*

*& Form initialize

*&---------------------------------------------------------------------*

FORM initialize
USING id_date TYPE date_from

is_kna1 TYPE ys_kna1.

* data

DATA: ls_adrc TYPE ys_adrc.

DATA: ls_yadrc TYPE ys_ac400adrc.

SELECT SINGLE *

FROM adrc

INTO ls_adrc
WHERE addrnumber = is_kna1-adrnr

AND date_from = gc_first_date


AND nation = gc_empty_nation.

* Delete existing entries


DELETE FROM ac400adrc

WHERE addrnumber = is_kna1-adrnr.

* Insert new from kna1

MOVE-CORRESPONDING ls_adrc TO ls_yadrc.

ls_yadrc-date_from = id_date.
INSERT ac400adrc FROM ls_yadrc.

ENDFORM. " initialize

*&---------------------------------------------------------------------*

*& Form activate


*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_ID_DATE text

* -->P_LS_KUNNR text
*----------------------------------------------------------------------*

FORM activate
USING id_date TYPE date_from

is_kna1 TYPE ys_kna1.

* data

DATA: ls_adrc TYPE ys_adrc.

DATA: ls_ac400adrc TYPE ys_ac400adrc.

DATA: ls_adrc_old TYPE ys_adrc.

DATA: ls_adrc_new TYPE ys_adrc.

SELECT SINGLE *

FROM adrc

INTO ls_adrc

WHERE addrnumber = is_kna1-adrnr

AND date_from = gc_first_date


AND nation = gc_empty_nation.

SELECT SINGLE *
FROM ac400adrc

INTO ls_ac400adrc
WHERE addrnumber = is_kna1-adrnr

AND date_from = id_date

AND nation = gc_empty_nation.

IF sy-subrc = 0.

* init ls_kna1_new

MOVE-CORRESPONDING ls_ac400adrc TO ls_adrc_new.

ls_adrc_new-date_from = gc_first_date.

* Update customers

UPDATE adrc FROM ls_adrc_new.

* Archive previous entry


ls_adrc_old = ls_adrc.

ls_adrc_old-date_from = id_date - 1.

ls_adrc_old-date_to = id_date - 1.

MODIFY adrc FROM ls_adrc_old.

ELSE.

"nothing to do
ENDIF.

ENDFORM. " activate

*&---------------------------------------------------------------------*

*& Form react

*&---------------------------------------------------------------------*

FORM react
USING id_date TYPE date_from

is_kna1 TYPE ys_kna1.

* data

DATA: ls_adrc_r TYPE ys_adrc.

DATA: ls_adrc_f TYPE ys_adrc.


DATA: lt_adrc TYPE yt_adrc.

DATA: ld_len LIKE sy-tabix.

SELECT *
FROM adrc

INTO TABLE lt_adrc


WHERE addrnumber = is_kna1-adrnr

AND date_from <= id_date

AND nation = gc_empty_nation.

SORT lt_adrc ASCENDING BY date_from.

DESCRIBE TABLE lt_adrc LINES ld_len.

IF ld_len > 0.

* Incorrect sentence

LOOP AT lt_adrc

INTO ls_adrc_f

WHERE date_from = gc_first_date.

EXIT.
ENDLOOP.

ls_adrc_f-date_from = id_date - 1.

ls_adrc_f-date_to = id_date - 1.

MODIFY adrc FROM ls_adrc_f.

* Correct sentence

READ TABLE lt_adrc INDEX ld_len INTO ls_adrc_r.


ls_adrc_r-date_from = gc_first_date.

ls_adrc_r-date_to = gc_last_date.

MODIFY adrc FROM ls_adrc_r.


ENDIF.

ENDFORM. " react


#

"! $ "

! " #$ % !!& &! '


• &!
• ! &! % &!
• !! !
• -!$
• 9) ! - & - &$

3 > #- & - ! - ,( !) - '


, ' →- →- ' ! $ → →

. ! ) #$ % - - )! & &$ - +$ 0
1, $ -! +$ ,( - - - -
% .& $ , $# -! - - ,

. % &! )! - - ,3 $# 4 +& &


,

( !
!% &C * '
01 &! 0- !
1+ $ - )!
0&1 - % ) - - - , !
! #
- +$ - ) !) ,3 +$ & " # -
)! &$ - ,4 ) # % -!$ ,

3 -! &) * ,6 &! 677( 4,6 - -


- 677 <,

@
:
#

"! $ "

3 > #- & - ! - ,( !) - '


, ' →- →- ' ! $ → →

. ! ) #$ % - - )! & &$ - +$ 0
1, $ -! +$ ,( - - - -
% .& $ , $# -! - - ,

. % &! )! - - ,3 $# 4 +& &


,

. " -!# !
! - - '
, ' →- →- ' ! $ → → →
"

! ) 08
81, ., 8( !3 8- & ,( &!
8<K( 48 0 !!
$ &! ) %1,6 $0 9 1 + ! + ) %,(
&! ) % <K( 4 ( 4,( &! ( 4 0% $ ) %% 9 :1
- - > - - ,

( !
!% &C * '
01 &! 0- !
1+ $ - )!
0&1 - % ) - - - , !
! #
- +$ - ) !) ,3 +$ & " # -
)! &$ - ,4 ) # % -!$ ,

3 -! &) * ,6 &! 677( 4,6 - -


- 677 <,

. % - &! # ! +8
8,

*&---------------------------------------------------------------------*

*& Report AC400PV


*&

H
*&---------------------------------------------------------------------*

* The custom table ac400t001b referenced in the report is

* activated for maintenance and belongs to delivery class c.


* The technical settings are data type APPL2 and

* size category 0.

* The table has the following structure:

* Field Key Data element Data type Length

* Mandt x Mandt
* Rrcty x Rrcty

* Opvar x Opvar

* Mkoar x Mkoar

* Key date Numc 2

* Status 1000 referenced in the report uses the functions


* of the function keys:

* SAVE for save

* ENTR for continue

REPORT ac400pv.

* Types

TYPES: ys_t001b TYPE t001b.

TYPES: yt_t001b TYPE TABLE OF ys_t001b.


TYPES: ys_ac400t001b TYPE ac400t001b.

TYPES: yt_ac400t001b TYPE TABLE OF ys_ac400t001b.

* Parameters

PARAMETERS: p_opvar TYPE opvar OBLIGATORY.

* Data

DATA: ls_t001 TYPE t001.

DATA: ls_t001b_old TYPE ys_t001b.

DATA: ls_t001b_new TYPE ys_t001b.

DATA: lt_t001b_old TYPE yt_t001b.


DATA: lt_t001b_new TYPE yt_t001b.

DATA: ls_ac400t001b TYPE ys_ac400t001b.

DATA: lt_ac400t001b TYPE yt_ac400t001b.

DATA: ld_result TYPE c.

DATA: ld_day_found TYPE c.

* Set status
SET PF-STATUS '1000'.

* Load T001b with the open periods for selected variant


PERFORM load_t001b

USING p_opvar

CHANGING lt_t001b_old.

* Load ac400t001b with the key dates for selected variant


PERFORM load_ac400t001b

USING p_opvar

CHANGING lt_ac400t001b.

* Load Periv from reference company code for variant

PERFORM load_periv
USING p_opvar

CHANGING ls_t001.

* Edit the records for the variant


LOOP AT lt_t001b_old

INTO ls_t001b_old.

* Restrict table ac400t001b depending on t001b record

PERFORM get_day
USING lt_ac400t001b

ls_t001b_old
CHANGING ls_ac400t001b

ld_day_found.

* Depending on key date maintenance


CASE ld_day_found.

* Key date maintained

WHEN 'Y'.

* Key date reached?

PERFORM check_day

USING ls_t001

ls_ac400t001b

ls_t001b_old
CHANGING ld_result.

J
* Branch according to ld_result

CASE ld_result.

* Key date reached => maintain periods

WHEN 'Y'.

* Calculate Customizing

PERFORM calc_t001b
USING ls_t001

ls_t001b_old

CHANGING ls_t001b_new.

* Display Customizing

PERFORM show_t001b
USING ls_t001b_old

ls_t001b_new.

APPEND ls_t001b_new TO lt_t001b_new.

* Key date NOT reached


WHEN 'N'.

* Undefined
WHEN OTHERS.

ENDCASE.

* Key date not maintained

WHEN OTHERS.
"nothing to do

ENDCASE.

ENDLOOP.

* at user-command

AT USER-COMMAND.

PERFORM do_ucomm

USING sy-ucomm

lt_t001b_new.

*&---------------------------------------------------------------------*
*& Form load_t001b

*&---------------------------------------------------------------------*

FORM load_t001b
USING id_opvar TYPE opvar

CHANGING et_t001b TYPE yt_t001b.

* Clear output

CLEAR et_t001b.

* data

DATA: ld_empty_bkont TYPE bkont_001b.

* select

SELECT *
FROM t001b

* INTO es_t001b

INTO TABLE et_t001b

WHERE rrcty = '0'


AND bukrs = id_opvar.

* AND mkoar = '+'


* AND bkont = ld_empty_bkont.

ENDFORM. " load_t001b

*&---------------------------------------------------------------------*
*& Form load_ac400t001b

*&---------------------------------------------------------------------*

FORM load_ac400t001b

USING id_opvar TYPE opvar


CHANGING et_ac400t001b TYPE yt_ac400t001b.

* Clear output

CLEAR et_ac400t001b[].

* Select

SELECT *

FROM ac400t001b

INTO TABLE et_ac400t001b

WHERE opvar = id_opvar


AND rrcty = '0'.
ENDFORM. " load_ac400t001b

*&---------------------------------------------------------------------*
*& Form load_periv

*&---------------------------------------------------------------------*

FORM load_periv

USING id_opvar TYPE opvar

CHANGING es_t001 TYPE t001.

* Clear output

CLEAR es_t001.

* get priv

SELECT *
FROM t001

INTO es_t001

WHERE opvar = id_opvar.

EXIT.
ENDSELECT.

ENDFORM. " load_periv

*&---------------------------------------------------------------------*
*& Form get_day

*&---------------------------------------------------------------------*

FORM get_day

USING it_ac400t001b TYPE yt_ac400t001b


is_t001b TYPE ys_t001b

CHANGING es_ac400t001b TYPE ys_ac400t001b

ed_day_found TYPE c.

* Clear output
CLEAR es_ac400t001b.

ed_day_found = 'N'.

* Get sentence

LOOP AT it_ac400t001b
INTO es_ac400t001b

WHERE opvar = is_t001b-bukrs


AND mkoar = is_t001b-mkoar

AND rrcty = is_t001b-rrcty.

ed_day_found = 'Y'.
ENDLOOP.

ENDFORM. " get_day

*&---------------------------------------------------------------------*
*& Form check_day

*&---------------------------------------------------------------------*

FORM check_day

USING is_t001 TYPE t001

is_ac400t001b TYPE ys_ac400t001b

is_t001b TYPE ys_t001b


CHANGING ed_result TYPE c.

* Clear output

CLEAR ed_result.

* data
DATA: ld_systemday TYPE n LENGTH 2.

DATA: ld_actbuper TYPE poper.

DATA: ld_actgjahr TYPE bdatj.


DATA: ld_check TYPE i.

* Determine current date

ld_systemday = sy-datum+6(2).

* Get current period


CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'

EXPORTING

i_date = sy-datum

i_periv = is_t001-periv

IMPORTING
e_buper = ld_actbuper

e_gjahr = ld_actgjahr.

* 1.) Check whether key date exceeded

IF ld_systemday >= is_ac400t001b-stichtag.


ld_result = ld_result + 1.

ENDIF.
* 2.) Check whether set period < current period

IF is_t001b-tope1 < ld_actbuper


AND is_t001b-toye1 = ld_actgjahr.

ld_result = ld_result + 1.

* 3.) Check whether set year < today

ELSEIF is_t001b-toye1 < ld_actgjahr.

ld_result = ld_result + 1.
ENDIF.

IF ld_result = 2.

ed_result = 'Y'.

ELSE.

ed_result = 'N'.
ENDIF.

ENDFORM. " check_day

*&---------------------------------------------------------------------*

*& Form calc_t001b


*&---------------------------------------------------------------------*

FORM calc_t001b

USING is_t001 TYPE t001


is_t001b_old TYPE ys_t001b

CHANGING es_t001b_new TYPE ys_t001b.

* set output

es_t001b_new = is_t001b_old.

* Define new start period

CALL FUNCTION 'CKML_F_GET_NEXT_PERIOD'

EXPORTING

input_period = is_t001b_old-frpe1

input_year = is_t001b_old-frye1
input_periv = is_t001-periv

IMPORTING

next_period = es_t001b_new-frpe1

next_year = es_t001b_new-frye1.

* Define new target period

CALL FUNCTION 'CKML_F_GET_NEXT_PERIOD'


EXPORTING

input_period = is_t001b_old-tope1

input_year = is_t001b_old-toye1
input_periv = is_t001-periv

IMPORTING

next_period = es_t001b_new-tope1

next_year = es_t001b_new-toye1.

ENDFORM. " calc_t001b

*&---------------------------------------------------------------------*

*& Form show_t001b

*&---------------------------------------------------------------------*

FORM show_t001b
USING is_t001b_old TYPE ys_t001b

is_t001b_new TYPE ys_t001b.

WRITE:/ is_t001b_old-mkoar.

* Output first line with current status


WRITE:/ text-001, "Current open periods

is_t001b_old-frpe1,

is_t001b_old-frye1,
'-',

is_t001b_old-tope1,
is_t001b_old-toye1.

* Output second line with new status

WRITE:/ text-002, "Open periods from now on


is_t001b_new-frpe1,

is_t001b_new-frye1,

'-',

is_t001b_new-tope1,

is_t001b_new-toye1.

WRITE:/.

ENDFORM. " show_t001b

*&---------------------------------------------------------------------*

*& Form do_ucomm


@
*&---------------------------------------------------------------------*

FORM do_ucomm

USING id_ucomm LIKE sy-ucomm


it_t001b TYPE yt_t001b.

CASE id_ucomm.

WHEN 'ENTR'.

"nothing to do.
WHEN 'SAVE'.

PERFORM save

USING it_t001b.

LEAVE SCREEN.

WHEN OTHERS.
LEAVE SCREEN.

ENDCASE.

ENDFORM. " do_ucomm

*&---------------------------------------------------------------------*

*& Form save

*&---------------------------------------------------------------------*
FORM save

USING it_t001b TYPE yt_t001b.

UPDATE t001b FROM TABLE it_t001b.

ENDFORM. " save

:
%

& !

! " #$ % !!& &! '


• ! &! -!$ % B<
• ?
• ? 4= 3 ! - ) $$

• )! * $ !
• !! $ -

3 #$ - #
! # ! # ,6 % -
- ! - ,( - ! -!$& ! - ! !
,(
- $- 0 # ! # 1 ! &C ! & ) !&!
-! ,( - $- !& * $,3 !$ $- #!! -
$- ! & ! ,( - & ! - ! $- , -
! $- # - ! ! - - - '

3 ! !
!'
! KKKKKKKKKKK
3 KKKKKKKKKKKK

5 ! ! -$

& ! # ! '
!
! - KKKKKKKKKKKK

5 ! ! !
! ! -

. % &! - ,3 $# 4 +& & ,

3 -! &) * ,6 - 677 9( - $ ! ! &C ,

H
%

& !

3 #$ - # ! # ! # ,6 % -
- ! - ,( - ! -!$& ! - ! !
,(
- $- 0 # ! # 1 ! &C ! & ) !&!
-! ,( - $- !& * $,3 !$ $- #!! -
$- ! & ! ,( - & ! - ! $- , -
! $- # - ! ! - - - '

3 ! !
!'
! KKKKKKKKKKK
3 KKKKKKKKKKKK

5 ! ! -$

& ! # ! '
!
! - KKKKKKKKKKKK

5 ! ! !
! ! -
. !!$# - !& " &! ) ,

. % &! - ,3 $# 4 +& & ,

? # " -!# -!$ ! - 0/ 2 1, $ )


! -= B ! # G ) & & $ ! ,
3 & # & +- 8 9B9 (8 !$> &! , +
&! % & - &$! # " -!,( &! !
- & ! ,

3 -! &) * ,6 - 677 9( - $ ! ! &C ,6


677 9( ! ! !
!$,

3 % 9 - ) "
,

= $ ) - 0 -! & !%1# ,6
%$ - =&C ; ) 0 9 1, $ 677 # !

J
8 ! 05 - ( 18 ! &C ,9 $ - 677 9(%
! 8 8,

*&---------------------------------------------------------------------*

LM 5 - 9(
*&

*&---------------------------------------------------------------------*
* Screen 1000 referenced in the report has the following settings

*Properties

*Maintenance 200 240

*Element list
*Name Type Row Column Def.L. Vis.L. Hght Scrollable Format

*SETHEADER-SETCLASS Text 1 1 22 22 1

*SETHEADER-SETCLASS I/O 1 26 4 4 1 CHAR

*GD_SETCLSTEXT I/O 2 1 22 22 1 CHAR


*SETHEADER-SETNAME I/O 2 26 24 24 1 CHAR

*ALV CuCtr 4 1 240 240 197

*
* Element list (continued)

*Name Inp. Outp. Outp Only. Dict Fld


*SETHEADER-SETCLASS x

*SETHEADER-SETCLASS x x x

*GD_SETCLSTEXT x x
*SETHEADER-SETNAME x x x

*ALV

*
* Element list (special attributes and display attributes)

*Name Input Two-dimensional As desc. left


*SETHEADER-SETCLASS x

*SETHEADER-SETCLASS O obl.

*GD_SETCLSTEXT N n. poss. x
*SETHEADER-SETNAME poss.

*ALV
*

*Flow logic

*process before output.

** Set status
* module status_1000.

*
** Adjust field name and list

* module adjust_window.

**
*process after input.

** Call following module at "CANC"

* module user_command_1000 at exit-command.

** Also with all other commands


* module user_command_1000.

* Status 1000 has the following properties

* Function keys

* Green arrow BACK

* Yellow arrow EXIT


* Red cross CANC (defined as exit command)

* Title 1000 is "Master Data Groups"

REPORT ac400set.

*Referenced tables

TABLES: setheader.

*Types for master data groups

TYPES: ys_setheader TYPE setheader.


TYPES: yt_setheader TYPE TABLE OF ys_setheader.

*Data declaration.

DATA: gt_outtab TYPE yt_setheader.


DATA: gd_setclstext TYPE setclstext.

DATA: go_container TYPE REF TO cl_gui_custom_container.

DATA: go_alv TYPE REF TO cl_gui_alv_grid.

*Data instantiation
CREATE OBJECT go_container

EXPORTING repid = sy-repid

dynnr = '1000'

container_name = 'ALV'.

CREATE OBJECT go_alv

EXPORTING i_parent = go_container.


*Call dialog box

CALL SCREEN 1000.

*&---------------------------------------------------------------------*

*& Module USER_COMMAND_1000 INPUT

*&---------------------------------------------------------------------*

MODULE user_command_1000 INPUT.

* Evaluation of pushbutton pressed by user

CASE sy-ucomm.

* Other or undefined

WHEN 'ENTR'
OR ' '.

PERFORM set_selection_status

USING setheader

CHANGING gt_outtab.

* Other commands
WHEN OTHERS.

* Exit the transaction


SET SCREEN 0.

LEAVE SCREEN.

ENDCASE.

ENDMODULE. " USER_COMMAND_1000 INPUT


*&---------------------------------------------------------------------*

*& Module STATUS_1000 OUTPUT

*&---------------------------------------------------------------------*

MODULE status_1000 OUTPUT.

SET PF-STATUS '1000'.


SET TITLEBAR '1000'.

ENDMODULE. " STATUS_1000 OUTPUT

*&---------------------------------------------------------------------*

*& Form set_selection_status


*&---------------------------------------------------------------------*

* This routine determines the status of the selection parameters.


* Possible statuses:

* UNDEF no selection parameters provided

* IDENT already selected with selection parameter


* FIRST first selection call

* NEW further selection call with new parameters

FORM set_selection_status

USING is_setheader TYPE setheader


CHANGING ct_outtab TYPE yt_setheader.

* data

DATA: ls_empty_setheader TYPE ys_setheader.

STATICS: ls_old_setheader TYPE ys_setheader.

DATA: ld_status TYPE string.

* Evaluate entered parameters and set status

CASE is_setheader.

* Undefined/empty parameters

WHEN ls_empty_setheader.
ld_status = 'UNDEF'.

* Unchanged parameters
WHEN ls_old_setheader.

ld_status = 'IDENT'.

* Selection parameters not used

WHEN OTHERS.

* First time

IF ls_old_setheader = ls_empty_setheader.

ld_status = 'FIRST'.

* Change
ELSE.

ld_status = 'NEW'.

ENDIF.

* get data
PERFORM get_data

USING is_setheader
CHANGING ct_outtab.

* Update ls_old_setheader
ls_old_setheader = is_setheader.

ENDCASE.

* Remember status
PERFORM remind_status

USING 'SET'

CHANGING ld_status.

ENDFORM. " set_selection_status

*&---------------------------------------------------------------------*
*& Form get_data

*&---------------------------------------------------------------------*

FORM get_data

USING is_setheader TYPE ys_setheader


CHANGING et_outtab TYPE yt_setheader.

* Clear output

CLEAR et_outtab[].

* data

DATA: ld_empty_setname LIKE setheader-setname.

* Select according to set ID

CASE is_setheader-setname.

* All objects

WHEN ld_empty_setname.

SELECT *

FROM setheader

INTO TABLE et_outtab


WHERE setclass = is_setheader-setclass.

* One object

WHEN OTHERS.

SELECT *
FROM setheader

INTO TABLE et_outtab


WHERE setname = is_setheader-setname

AND setclass = is_setheader-setclass.

ENDCASE.

ENDFORM. " get_data

*&---------------------------------------------------------------------*

*& Module adjust_window OUTPUT

*&---------------------------------------------------------------------*
MODULE adjust_window OUTPUT.

PERFORM adjust_window

USING gt_outtab

setheader

CHANGING gd_setclstext.

ENDMODULE. " adjust_window OUTPUT


*&---------------------------------------------------------------------*

*& Form adjust_window

*&---------------------------------------------------------------------*

FORM adjust_window
USING it_outtab TYPE yt_setheader

is_setheader TYPE ys_setheader


CHANGING cd_setclstext TYPE setclstext.

* data
DATA: ld_status TYPE string.

* set ld_status

PERFORM remind_status

USING 'GET'

CHANGING ld_status.

* Evaluate status

CASE ld_status.

* Undefined
WHEN 'UNDEF'.

* Maintain cd-setclstext

PERFORM get_setclstext

USING is_setheader

CHANGING cd_setclstext.

* Existing selection
@
WHEN 'IDENT'.

"nothing to do

* First selection

WHEN 'FIRST'.

* Generate ALV

CALL METHOD go_alv->set_table_for_first_display


EXPORTING

i_structure_name = 'SETHEADER'

CHANGING

it_outtab = gt_outtab.

* Maintain cd_setclstext
PERFORM get_setclstext

USING is_setheader

CHANGING cd_setclstext.

* New other selection

WHEN 'NEW'.
CALL METHOD go_alv->refresh_table_display.

* Maintain cd_setclstext
PERFORM get_setclstext

USING is_setheader
CHANGING cd_setclstext.

WHEN OTHERS.

* Maintain cd_setclstext
PERFORM get_setclstext

USING is_setheader

CHANGING cd_setclstext.

ENDCASE.

ENDFORM. "adjust_window

*&---------------------------------------------------------------------*

*& Form remind_status

*&---------------------------------------------------------------------*
* This routine stores the status of selection parameters and

* returns them on request.


:
* PBO and PAI communicate via this routine

* The following actions are possible:

* SET: Remember status


* GET: Return status

FORM remind_status

USING id_action TYPE string

CHANGING cd_status TYPE string.

* data

STATICS: ld_status TYPE string.

* Evaluate action

CASE id_action.

* Set status

WHEN 'SET'.

ld_status = cd_status.

* Read status

WHEN 'GET'.
cd_status = ld_status.

ENDCASE.

ENDFORM. "remind_status
*&---------------------------------------------------------------------*

*& Form get_setclstext

*&---------------------------------------------------------------------*

FORM get_setclstext
USING is_setheader TYPE ys_setheader

CHANGING ed_setclstext TYPE setclstext.

* Clear output

CLEAR ed_setclstext.

* data

DATA: ls_setclst TYPE setclst.

DATA: ld_empty_setclass TYPE setclst.

DATA: ls_dd04v_wa TYPE dd04v.

* Processing according to is_setheader-setclass.


H
CASE is_setheader-setclass.

* Class not set


WHEN ld_empty_setclass.

CALL FUNCTION 'DDIF_DTEL_GET'

EXPORTING

name = 'SETNAMENEW'

langu = sy-langu
IMPORTING

dd04v_wa = ls_dd04v_wa.

* set output

ed_setclstext = ls_dd04v_wa-ddtext.

* Class set

WHEN OTHERS.

* select
SELECT SINGLE *

FROM setclst
INTO ls_setclst

WHERE langu = sy-langu

AND setclass = is_setheader-setclass.

* set output
ed_setclstext = ls_setclst-descript.

ENDCASE.

ENDFORM. " get_setclstext

Vous aimerez peut-être aussi