Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

abap basics

Former Member
0 Likes
1,129

structure of abap program

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,047

hi,

check out the following link it might help you

http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb2d74358411d1829f0000e829fbfe/content.htm

*******please reward points if the infromation is helpful to you********

5 REPLIES 5
Read only

Former Member
0 Likes
1,048

hi,

check out the following link it might help you

http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb2d74358411d1829f0000e829fbfe/content.htm

*******please reward points if the infromation is helpful to you********

Read only

Former Member
0 Likes
1,047

Hi

See this sample report and note down the structure

REPORT zm_reservation_alert

NO STANDARD PAGE HEADING

MESSAGE-ID zm_msg.

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

  • D A T A B A S E T A B L E S D E C L A R A T I O N

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

  • T Y P E S D E C L A R A T I O N S

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

  • Reservations Main Structure

TYPES: BEGIN OF s_res,

rsnum TYPE rsnum, " Reservation No

rspos TYPE rspos, " Item No

usnam TYPE usnam, " User Name

bwart TYPE bwart, " Movement Type

aufnr TYPE aufnr, " Order Number

rsart TYPE rsart, " Record Type

bdart TYPE bdart, " Reservation Type

matnr TYPE matnr, " Material No

bdter TYPE bdter, " Req Date

menge TYPE menge_d, " Quantity

kostl TYPE kostl, " Cost Center

usrid TYPE sysid, " User ID

END OF s_res.

  • Output Main Structure

TYPES: BEGIN OF s_rep,

usnam TYPE usnam, " User Name

rsnum TYPE rsnum, " Reservation No

rspos TYPE rspos, " Item No

matnr TYPE matnr, " Material No

bdter TYPE bdter, " Req Date

menge TYPE menge_d, " Quantity

kostl TYPE kostl, " Cost Center

aufnr TYPE aufnr, " Order Number

END OF s_rep.

  • User Dept Details

TYPES: BEGIN OF s_dept,

pernr TYPE persno, " Personal No

usrid TYPE sysid, " User ID

orgeh TYPE orgeh, " Orgn Unit

orgtx TYPE orgtx, " Dept Name

END OF s_dept.

  • For Send Mail Purpose

DATA : i_doc_data LIKE sodocchgi1.

DATA : BEGIN OF i_pack_list OCCURS 0.

INCLUDE STRUCTURE sopcklsti1.

DATA : END OF i_pack_list.

DATA : BEGIN OF i_receivers OCCURS 0.

INCLUDE STRUCTURE somlreci1.

DATA : END OF i_receivers.

DATA : BEGIN OF i_contents OCCURS 0.

INCLUDE STRUCTURE solisti1.

DATA : END OF i_contents.

DATA : BEGIN OF i_header OCCURS 0.

INCLUDE STRUCTURE solisti1.

DATA : END OF i_header.

DATA : BEGIN OF i_att OCCURS 0.

INCLUDE STRUCTURE solisti1.

DATA : END OF i_att.

  • Internal table for bdcdata

DATA : it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

  • Internal table to handle messages

DATA : it_messages LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

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

  • D A T A D E C L A R A T I O N S

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

DATA: gv_lines TYPE sy-index, " Total Lines int Table

gv_days TYPE i, " Difference Days

gv_date TYPE sy-datum, " Date

gv_date1 TYPE sy-datum, " Date

gv_date2 TYPE sy-datum, " Date

gv_text(85), " Text Field

gv_mesg(70), " Error Messages

gv_bdc, " BDC Flag

gv_flag TYPE i, " Flag

gv_ernam TYPE ernam. " User ID

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

  • C O N S T A N T S D E C L A R A T I O N S

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

CONSTANTS: c_x VALUE 'X', " Flag

c_endda TYPE endda VALUE '99991231'. " Date

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

  • I N T E R N A L T A B L E S D E C L A R A T I O N S

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

DATA: i_res TYPE STANDARD TABLE OF s_res WITH HEADER LINE, " Reservns

i_dept TYPE STANDARD TABLE OF s_dept WITH HEADER LINE, " Dept

i_rep TYPE STANDARD TABLE OF s_rep WITH HEADER LINE. " Output

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

  • S T A R T - O F - S E L E C T I O N *

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

START-OF-SELECTION.

  • Fetch main data

PERFORM fetch_data.

  • Process data

PERFORM process_data.

&----


*& Form fetch_data

&----


  • Fetching the Reservations related data from Database Tables

----


FORM fetch_data .

CLEAR: gv_date, gv_date1, gv_date2.

gv_date = sy-datum.

gv_date1 = sy-datum - 10.

gv_date2 = sy-datum + 10.

CLEAR i_res.

REFRESH i_res.

SELECT a~rsnum " Reservation No.

b~rspos " Reservation Item

a~usnam " User Name

a~bwart " Movement Type

a~aufnr " Order Number

b~rsart " Record Type

b~bdart " Reservation Type

b~matnr " Material No

b~bdter " Req Date

INTO TABLE i_res

FROM rkpf AS a JOIN resb AS b

ON arsnum = brsnum

WHERE ( b~bdter BETWEEN gv_date1 AND gv_date2 ) AND

b~xloek EQ ' '.

SORT i_res BY rsnum rspos.

DELETE ADJACENT DUPLICATES FROM i_res COMPARING matnr.

  • Add userid into the i_usr int table

LOOP AT i_res.

i_res-usrid = i_res-usnam.

MODIFY i_res INDEX sy-tabix.

ENDLOOP.

IF NOT i_res[] IS INITIAL.

  • Get the User Dept Name

CLEAR i_dept.

REFRESH i_dept.

SELECT a~pernr " Personal No

a~usrid " User ID

b~orgeh " Orgn Unit

c~orgtx " Dept Name

INTO TABLE i_dept

FROM pa0105 AS a JOIN pa0001 AS b

ON apernr = bpernr JOIN t527x AS c

ON borgeh = corgeh

FOR ALL ENTRIES IN i_res

WHERE a~usrid = i_res-usrid AND

a~endda EQ c_endda AND

b~endda EQ c_endda.

ENDIF.

SORT i_dept BY pernr.

DELETE ADJACENT DUPLICATES FROM i_dept COMPARING pernr.

  • Move the Creator of Reservation to a diff table

LOOP AT i_res.

MOVE-CORRESPONDING i_res TO i_rep.

APPEND i_rep.

CLEAR i_rep.

ENDLOOP.

SORT i_rep BY usnam rsnum rspos.

ENDFORM. " Fetch_Data

&----


*& Form process_data

&----


  • Process the Reservations related data for Expiry Date

----


FORM process_data .

DATA: lv_date1 LIKE sy-datum,

lv_date2 LIKE sy-datum,

lv_date3(10),

lv_menge(13),

lv_tabix LIKE sy-tabix.

LOOP AT i_rep.

CLEAR: gv_days, gv_text, lv_date1, lv_date2,lv_date3.

lv_tabix = sy-tabix.

AT NEW usnam.

  • Populate the Contents Table

CLEAR i_att.

REFRESH i_att.

i_att = 'Reservations Reminder'(014).

APPEND i_att.

i_att = '----


'.

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

READ TABLE i_dept WITH KEY usrid = i_rep-usnam.

CONCATENATE 'Name:'(003) i_rep-usnam 'Dept:'(015) i_dept-orgtx

INTO i_att-line SEPARATED BY space.

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

i_att = 'Please find the List of expiring Reservations'(004).

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

CONCATENATE '--


' '
' '
--


'

'--


' '--


' INTO

i_att-line SEPARATED BY space.

APPEND i_att.

CONCATENATE 'Reservation #'(006) 'Material #'(007) ' Quantity'(002)

'Due Date'(008) 'Work Center/CC'(005) INTO

i_att-line SEPARATED BY space.

APPEND i_att.

CONCATENATE '--


' '
' '
--


'

'--


' '--


' INTO

i_att-line SEPARATED BY space.

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

ENDAT.

gv_days = i_rep-bdter - gv_date.

lv_date1 = i_rep-bdter + 5.

lv_date2 = i_rep-bdter + 10.

MOVE i_rep-menge TO lv_menge.

WRITE i_rep-bdter TO lv_date3.

IF gv_days = 10.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is due for 10 days. Please collect'(009)

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is due for 10 days. Please collect'(009)

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

ENDIF.

IF gv_days = 5.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is due for 5 days. Please collect'(010)

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is due for 5 days. Please collect'(010)

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

ENDIF.

IF gv_date = lv_date1.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is getting cancelled on'(011) lv_date2

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is getting cancelled on'(011) lv_date2

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

ENDIF.

IF gv_date = lv_date2.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is being cancelled'(012)

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is being cancelled'(012)

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

  • Mark the Reservation Item 'DELETED' using BDC.

  • UPDATE resb SET xloek = c_x.

PERFORM delete_item_resb.

ENDIF.

AT END OF usnam.

IF ( gv_days = 10 OR gv_days = 5 OR gv_date = lv_date1 OR

gv_date = lv_date2 ).

  • Read the User who creates the Reservn and send a mail alert to him

CLEAR : i_receivers,gv_ernam.

REFRESH: i_receivers.

READ TABLE i_rep INDEX lv_tabix.

gv_ernam = i_rep-usnam.

IF gv_ernam <> space.

  • Send mail Alert to PR Creator(SAP inbox)

PERFORM send_alert_data.

  • Send Mail to External Mail ID of the SAP USER

PERFORM send_mail_external.

ENDIF.

ENDIF.

ENDAT.

ENDLOOP.

ENDFORM. " Process_data

&----


*& Form delete_item_resb

&----


  • Set the Deletion Indicator for the Res. Item in RESB

----


FORM delete_item_resb.

gv_bdc = 'N'.

  • Perform to fill it_bdcdata.

PERFORM fill_it_bdcdata.

  • Call the Transaction MB22

CALL TRANSACTION 'MB22' USING it_bdcdata MODE 'A' UPDATE 'S'

MESSAGES INTO it_messages.

IF sy-subrc <> 0.

gv_flag = 1.

  • If error occurs in transaction mode run bdc session for that data

PERFORM bdc_process.

ENDIF.

  • Handles error messages

PERFORM error_messages.

CLEAR : it_bdcdata, it_messages.

REFRESH : it_bdcdata, it_messages.

IF gv_bdc = 'O'.

  • close bdc if it is open

PERFORM close_bdc.

ENDIF.

ENDFORM. "delete_item_resb

&----


*& Form FILL_IT_BDCDATA

&----


  • Filling Bdcdata structure with data

----


FORM fill_it_bdcdata.

PERFORM bdc_dynpro USING 'SAPMM07R' '0560'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM07M-RSPOS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RM07M-RSNUM'

i_rep-rsnum.

PERFORM bdc_field USING 'RM07M-RSPOS'

i_rep-rspos.

PERFORM bdc_dynpro USING 'SAPMM07R' '0510'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RESB-XLOEK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RESB-XLOEK'

c_x.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-KOSTL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_dynpro USING 'SAPMM07R' '0510'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RESB-ERFMG'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-KOSTL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

ENDFORM. " FILL_IT_BDCDATA

&----


*& Form BDC_DYNPRO

&----


  • Filling the it_bdcdata table with program name & screen number

----


FORM bdc_dynpro USING program LIKE bdcdata-program

dynpro LIKE bdcdata-dynpro.

it_bdcdata-program = program.

it_bdcdata-dynpro = dynpro.

it_bdcdata-dynbegin = 'X'.

APPEND it_bdcdata.

CLEAR it_bdcdata.

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • Filling it_bdcdata with field name and field value

----


FORM bdc_field USING fnam LIKE bdcdata-fnam

fval.

it_bdcdata-fnam = fnam.

it_bdcdata-fval = fval.

APPEND it_bdcdata.

CLEAR it_bdcdata.

ENDFORM. " BDC_FIELD

&----


*& Form ERROR_MESSAGES

&----


  • Displaying error messages

----


FORM error_messages.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

lang = sy-langu

IMPORTING

msg = gv_mesg

EXCEPTIONS

not_found = 1

OTHERS = 2.

LOOP AT it_messages WHERE msgtyp = 'E'.

WRITE : / 'Message :'(001) ,gv_mesg.

CLEAR it_messages.

ENDLOOP.

ENDFORM. " ERROR_MESSAGES

&----


*& Form BDC_PROCESS

&----


  • Open bdc session if call transaction fails

----


FORM bdc_process.

IF gv_bdc = 'N'.

  • open bdc session

PERFORM open_bdc.

gv_bdc = 'O'.

ENDIF.

IF gv_bdc = 'O'.

  • insert data into bdc session

PERFORM insert_bdc.

ENDIF.

ENDFORM. " BDC_PROCESS

&----


*& Form OPEN_BDC

&----


  • Calling function module to open bdc session

----


FORM open_bdc.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = 'ZMM'

keep = 'X'

user = sy-uname

EXCEPTIONS

client_invalid = 1

destination_invalid = 2

group_invalid = 3

group_is_locked = 4

holddate_invalid = 5

internal_error = 6

queue_error = 7

running = 8

system_lock_error = 9

user_invalid = 10

OTHERS = 11.

ENDFORM. " OPEN_BDC

&----


*& Form INSERT_BDC

&----


  • Insert it_bdcdata into bdc by calling function module bdc_insert

----


FORM insert_bdc.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = 'MB22'

TABLES

dynprotab = it_bdcdata

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3

tcode_invalid = 4

printing_invalid = 5

posting_invalid = 6

OTHERS = 7.

ENDFORM. " INSERT_BDC

&----


*& Form CLOSE_BDC

&----


  • Closing bdc session

----


FORM close_bdc.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

ENDFORM. " CLOSE_BDC

&----


*& Form send_alert_data

&----


  • Send Alert for the Expired Contract

----


FORM send_alert_data .

CLEAR: gv_lines,i_receivers, i_header, i_contents,i_doc_data.

REFRESH : i_receivers,i_header,i_contents.

DESCRIBE TABLE i_att LINES gv_lines.

i_receivers-receiver = gv_ernam.

  • i_receivers-receiver = 'SSHEIK'.

i_receivers-rec_type = 'B'.

  • i_receivers-rec_date = sy-datum.

  • i_receivers-express = 'X'.

  • i_receivers-com_type = 'INT'.

  • i_receivers-notif_del = 'X'.

APPEND i_receivers.

i_doc_data-obj_name = 'SAPoffice'(013).

i_doc_data-obj_descr = 'Reservations Reminder'(014).

i_doc_data-obj_langu = 'E'.

i_doc_data-no_change = c_x.

i_doc_data-obj_prio = 1.

i_doc_data-priority = 1.

i_doc_data-doc_size = ( gv_lines - 1 ) * 255 + 135.

i_pack_list-transf_bin = c_x.

i_pack_list-head_start = '1'.

i_pack_list-head_num = '1'.

i_pack_list-body_start = '1'.

i_pack_list-body_num = gv_lines.

i_pack_list-doc_type = 'DOC'.

i_pack_list-obj_name = 'SAPoffice'(013).

i_pack_list-obj_descr = 'Reservations Reminder'(014).

i_pack_list-obj_langu = 'E'.

i_pack_list-doc_size = ( gv_lines - 1 ) * 255 + 135.

APPEND i_pack_list.

  • i_header-line = 'Header'. APPEND i_header.

  • Data for contents

i_contents-line = 'Please find the Reservations Due List'(016).

APPEND i_contents.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = i_doc_data

  • PUT_IN_OUTBOX = 'X'

  • IMPORTING

  • SENT_TO_ALL =

  • NEW_OBJECT_ID =

TABLES

packing_list = i_pack_list

object_header = i_header

contents_bin = i_att

contents_txt = i_contents

receivers = i_receivers

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

document_type_not_exist = 3

operation_no_authorization = 4

parameter_error = 5

x_error = 6

enqueue_error = 7

OTHERS = 8.

IF sy-subrc = 0.

MESSAGE i000 WITH 'Mail Sucessfully sent'(017).

ELSE.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " send_alert_data

&----


*& Form send_mail_external

&----


  • Send mail to External MAIL ID of the PR Creator

----


FORM send_mail_external.

DATA : lv_str(24), lv_str1(40),

lv_pernr LIKE adr6-persnumber,

lv_adrnr LIKE adr6-addrnumber,

lv_usrid LIKE pa0105-usrid,

lv_mail LIKE adr6-smtp_addr,

lv_sendor TYPE syuname,

lv_receiver TYPE string,

lv_header TYPE string,

lv_body TYPE string.

CLEAR: lv_pernr, lv_usrid, lv_adrnr,

lv_mail, lv_sendor, lv_receiver,

lv_header, lv_body .

lv_usrid = gv_ernam.

SELECT SINGLE persnumber addrnumber FROM usr21

INTO (lv_pernr,lv_adrnr)

WHERE bname = lv_usrid.

IF sy-subrc = 0.

SELECT SINGLE smtp_addr INTO lv_mail FROM adr6

WHERE addrnumber = lv_adrnr AND

persnumber = lv_pernr.

IF sy-subrc <> 0.

CONCATENATE lv_usrid '@anc.com' INTO lv_mail.

lv_receiver = lv_mail.

ELSE.

lv_receiver = lv_mail.

ENDIF.

  • lv_receiver = 'avangala@anc.com'.

lv_sendor = 'JALKHATAM'.

lv_header = 'Reservations Reminder'(014).

lv_str = 'Pls check your SAP Inbox'(019).

lv_str1 = 'for the status of Reservations Due List'(020).

CONCATENATE lv_str lv_str1 INTO lv_body

SEPARATED BY space.

  • Call Function Module To send mail

CALL FUNCTION 'UWSP_SEND_MAIL_TO_WEB'

EXPORTING

id_header = lv_header

id_body = lv_body

id_receiver = lv_receiver

id_sender = lv_sendor

  • ID_HTML_MAIL =

id_commit_work = 'X'

EXCEPTIONS

error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

ENDFORM. " send_mail_external

<b>Reward points for useful Answers</b>

Regards

Anji

Read only

Former Member
0 Likes
1,047

hi,

Plz go through this.

Program Structure

ABAP programs are responsible for data processing within the individual dialog steps of an application program. This means that the program cannot be constructed as a single sequential unit, but must be divided into sections that can be assigned to the individual dialog steps. To meet this requirement, ABAP programs have a modular structure. Each module is called a processing block. A processing block consists of a set of ABAP statements. When you run a program, you effectively call a series of processing blocks. They cannot be nested.

The following steps shows the structure of an ABAP program:

<b>1) Decleration Part Of ZGlobal Data

2) Dialog Modules

3) Event BLocks

4) Subroutines</b>

<b>Each ABAP program consists of the following two parts:</b>

<b>Declaration Part for Global Data, Classes and Selection Screens</b>

The first part of an ABAP program is the declaration part for global data, classes, and selection screens. This consists of:

All declaration statements for global data. Global data is visible in all internal processing blocks. You define it using declarative statements that appear before the first processing block, in dialog modules, or in event blocks. You cannot declare local data in dialog modules or event blocks.

All selection screen definitions.

All local class definitions (CLASS DEFINITION statement). Local classes are part of ABAP Objects, the object-oriented extension of ABAP.

Declaration statements which occur in procedures (methods, subroutines, function modules) form the declaration part for local data in those processing blocks. This data is only visible within the procedure in which it is declared.

<b>Container for Processing Blocks</b>

The second part of an ABAP program contains all of the processing blocks for the program. The following types of processing blocks are allowed:

Dialog modules (no local data area)

Event blocks (no local data area)

Procedures (methods, subroutines and function modules with their own local data area).

Whereas dialog modules and procedures are enclosed in the ABAP keywords which define them, event blocks are introduced with event keywords and concluded implicitly by the beginning of the next processing block.

All ABAP statements (except declarative statements in the declaration part of the program) are part of a processing block. Non-declarative ABAP statements, which occur between the declaration of global data and a processing block are automatically assigned to the START-OF-SELECTION processing block.

<b>Calling Processing Blocks</b>

You can call processing blocks either from outside the ABAP program or using ABAP commands which are themselves part of a processing block. Dialog modules and event blocks are called from outside the ABAP program. Procedures are called using ABAP statements in ABAP programs.

Calling event blocks is different from calling other processing blocks for the following reasons:

An event block call is triggered by an event. User actions on selection screens and lists, and the runtime environment trigger events that can be processed in ABAP programs. You only have to define event blocks for the events to which you want the program to react (whereas a subroutine call, for example, must have a corresponding subroutine). This ensures that while an ABAP program may react to a particular event, it is not forced to do so.

Thanks,

Madhukar.

Read only

Former Member
0 Likes
1,047

hi,

program structure depends on program type.

these steps for EXECUTABLE PROGRAM

1) declare tables which are used in program for data extraction.

TABLES:

2) declare any variable which are required in program.

DATA:

3) declaration of internal tables.

DATA:

4) provide selection-screen logic if required.

select-options: "for complex selection

parameters: " for single value input fields

5) declaration of events.

INITIALIZATION. " used for providing intial values to the fields.

AT SELECTION-SCREEN OUTPUT. " used for changing screen fields dynamically

AT SELECTION-SCREEN. ' for perfom validations on screen input fields.

START-OF-SELECTION. "used for select queries and output statements.

END-OF-SELECTION. " this also used for output statements

TOP-OF-PAGE. " used for providing page heading

END-OF-SELECTION." used for providing page footer.

GET

GET LATE " these events are used only if our program reading data from

LOGICA DATABASE.

If we are going to genatate secondary list, we use events like..

AT LINE-SELECTION. " triggered only if we press F2 function key or

DOUBLE CLIKING on list.

AT USER-COMMAND " triggered only if selecteing menu option and user

defined buttons

if program of type module-pool, follow these steps.

1) declare tables which are used in program for data extraction.

TABLES:

2) declare any variable which are required in program.

DATA:

3) declaration of internal tables.

DATA:

4) screen flow logic.

here we use PBO

PAI

POV

POH

these events based on your requirement.

Thanks

Ashu

Read only

Former Member
0 Likes
1,047

Hai,

Basically the structure of ABAP program is divided into two part.

1.Declaration Part

2.Processing Block

In declaration part we declare all the datas we are going to use in our program like

All declaration statements for global data.

All selection screen definitions.

All local class definitions

In processing block all ABAP statements (except declarative statements in the declaration part of the program) are part of a processing block.

The below mentioned are the types of proceessing blocks.

Dialog modules (no local data area)

Event blocks (no local data area)

Procedures (methods, subroutines and function modules with their own local data area).

Raward if helpful.

S.Ramesh