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

re: classical reporting

Former Member
0 Likes
528

Hi all,

Can any one send a good classical report exmpale(real time) that should have some functionality behind that one.

regards

Sashi

4 REPLIES 4
Read only

Former Member
0 Likes
480

Classical Reports

These are the most simple reports. Programmers learn this one first. It is just an output of data using the Write statement inside a loop.

Classical reports are normal reports. These reports are not having any sub reports. IT IS HAVING ONLY ONE SCREEN/LIST FOR OUTPUT.

Events In Classical Reports.

INTIALIZATION: This event triggers before selection screen display.

AT-SELECTION-SCREEN: This event triggers after proccesing user input still selection screen is in active mode.

START OF SELECTION: Start of selection screen triggers after proceesing selection screen.

END-OF-SELECTION : It is for Logical Database Reporting.

for Example refer to link

http://www.sapmaterial.com/?gclid=CN322K28t4sCFQ-WbgodSGbK2g

check these links...

http://www.sapgenie.com/abap/reports.htm

http://www.allsaplinks.com/material.html

http://www.sapdevelopment.co.uk/reporting/reportinghome.htm

http://www.sapfans.com/forums/viewtopic.php?t=58286

http://www.sapfans.com/forums/viewtopic.php?t=76490

http://www.sapfans.com/forums/viewtopic.php?t=20591

http://www.sapfans.com/forums/viewtopic.php?t=66305

http://www.sapbrain.com/FAQs/TECHNICAL/SAP_ABAP_REPORTS_FAQ.html

http://www.sap-img.com/

http://www.sapdevelopment.com

http://www.sapmaterial.com

http://wiki.ittoolbox.com/index.php/FAQ:How_many_types_of_reports_are_there_in_ABAP_and_what_is_the_...

http://www.sapdevelopment.co.uk/reporting/rep_submit.htm

http://www.kabai.com/abaps/q.htm

http://www.guidancetech.com/people/holland/sap/abap/

http://wiki.ittoolbox.com/index.php/FAQ:How_many_types_of_reports_are_there_in_ABAP_and_what_is_the_...

Reports : extracting,collectiing and formating data which is stored in database is done by

report program.

the program which is written to retrieve and display data is report program and the list which is displayed on the screen when you ecectue the program is called as LIST (output of the report.

SAP has provided thousand of preprogrammed reports.User just selects a menu option or just one click here and there and the report is displayed.

you want to display the data which user needs.

for ex: user wants to see the all the employee record who have joined after 13 jan 1998.

in this case you have to pass the information to the system that he needs only those employee where joining date is greater than 13 jan 1998.

SELECTION-CRITERIA : (ACCEPTS INPUT FROM USER).

SELECT-OPTIONS : SMARA FOR MARA-MATNR.

WE HAVE TWO TYPES OF REPORTS:

CLASSICAL REPORTS

INTERACTIVE REPORTS

CLASSICAL REPORTS (EVENTS IN CLASSICAL REPORT).

INITIALIZATION.(TRIGGERED WHEN YOU EXECUTE YOUR PROGRAM FOR FIRST TIME.

AT SELECTION-SCREEN (WHEN USER ENTERS THE VALUES IN THE FIELDS OF SELECTION SCREEN AND CLICK ON EXECUTE BUTTON THIS EVENT IS TRIGGERED.(DATA VALIDITY CHECKING)

AT SELECTION-SCREEN OUTPUT.(SAME,THIS EVENT IS FOR CHECKING INDIVIDUAL FIELDS)

START-OF-SELECTION

TOP-OF-PAGE(ITS TRIGGERED FOR THE FIRST WRITE STATEMENT)

END-OF-PAGE(WHEN YOU REACH END PAGE)

END-OF-SELECTION.

AT SELECTION-SCREEN:

IF SMARA-LOW NE 'LH' AND SMARA-HIGH NE 'SQ'.

HERE SYSTEM WILL NOT PROCEED IF VALUES ENTERED ARE WRONG.

START-OF-SELECTION.

DATA DECLARTION CAN BE DONE,AND ACTUALLY CODING WILL START.

TOP-OF-PAGE : APPLICABLE TO ALL THE PAGES

EX: WRITE THE COMPANY NAME,COLUMN HEADERS FOR ALL THE PAGES)

INTERACTIVE REPORT CONSISTS OF ONE BASIC LIST AND 20 SECONDARY LIST.BASIC LIST IS PRODUCED BY START-OF-SELECTION.

WHEN THE USER DOUBLE CLICKS SECONDARY LIST IS PRODUCED.

INTERACTIVE REPORT

AT LINE SELECTION

AT USER-COMMAND.

atline selection

http://help.sap.com/saphelp_di471/helpdata/EN/9f/dba3ae35c111d1829f0000e829fbfe/content.htm

See this link,

http://help.sap.com/saphelp_di471/helpdata/EN/9f/dba3ae35c111d1829f0000e829fbfe/content.htm

Event in interactive reporting

This event is processed whenever the user chooses a valid line in the list (i.e. a line generated by statements such as WRITE , ULINE or SKIP ) with the cursor and presses the function key which has the function PICK in the interface definition. This should normally be the function key F2 , because it has the same effect as double-clicking the mouse, or single-clicking in the case of a hotspot .

The processing for the event AT LINE-SELECTION usually generates further list output (the details list) which completely covers the current list display. If the latter is still visible (to aid user orientation), this may be due to the key word WINDOW .

In most cases, the information is from the selected line is used to retrieve more comprehensive information by direct reading. When displaying the original list, you store the key terms needed for this in the HIDE area of the output line.

at line selection event is mainly used when u r using a drill down list.

that is,

when u click on the list in the output it triggers or navigates us into another output i.e another list.

consider this code.it can be helpful.

TYPES : BEGIN OF TY_A1,

VBELN TYPE VBAK-VBELN,

ERNAM TYPE VBAK-ERNAM,

ERDAT TYPE VBAK-ERDAT,

NAME1 TYPE KNA1-NAME1,

END OF TY_A1,

BEGIN OF TY_A2,

MATNR TYPE VBAP-MATNR,

MAKTX TYPE MAKT-MAKTX,

CHARG TYPE VBAP-CHARG,

POSNR TYPE VBAP-POSNR,

END OF TY_A2.

&*********************************************************************

&*********************************************************************

DATA : IT_A1 TYPE TABLE OF TY_A1,

IT_A2 TYPE TABLE OF TY_A2.

DATA : WA_A1 TYPE TY_A1,

WA_A2 TYPE TY_A2.

AT LINE-SELECTION.

PERFORM F1.

TOP-OF-PAGE.

ULINE 1(100).

WRITE : 100 SY-VLINE.

WRITE 😕 SY-VLINE, 02 TEXT-000,SY-VLINE,

15 TEXT-001,SY-VLINE,

40 TEXT-002,SY-VLINE,

60 TEXT-003, 100 SY-VLINE.

WRITE :/100 SY-VLINE.

WRITE AT 1(100) SY-ULINE.

WRITE : 100 SY-VLINE.

END-OF-PAGE.

TOP-OF-PAGE DURING LINE-SELECTION.

ULINE 1(100).

WRITE : 100 SY-VLINE.

WRITE 😕 SY-VLINE, 02 TEXT-004,SY-VLINE,

25 TEXT-005, 56 SY-VLINE,

65 TEXT-006,SY-VLINE,

85 TEXT-007,

100 SY-VLINE.

WRITE :/100 SY-VLINE.

WRITE AT 1(100) SY-ULINE.

WRITE : 100 SY-VLINE.

START-OF-SELECTION .

PERFORM F2.

END-OF-SELECTION .

&----


*& Form F2

&----


  • text

----


FORM F2 .

IF P_DATE-LOW IS NOT INITIAL AND P_DATE-HIGH IS NOT INITIAL.

SELECT VBAK~VBELN

VBAK~ERNAM

VBAK~ERDAT

KNA1~NAME1

FROM VBAK INNER JOIN KNA1

ON VBAKKUNNR = KNA1KUNNR

INTO CORRESPONDING FIELDS OF TABLE IT_A1

WHERE VBAKERDAT > P_DATE-LOW AND VBAKERDAT < P_DATE-HIGH.

ELSEIF P_DATE IS INITIAL.

MESSAGE E000(ZTH_TEST).

ELSEIF P_DATE-LOW IS NOT INITIAL AND P_DATE-HIGH IS INITIAL.

SELECT VBAK~VBELN

VBAK~ERNAM

VBAK~ERDAT

KNA1~NAME1

FROM VBAK INNER JOIN KNA1

ON VBAKKUNNR = KNA1KUNNR

INTO CORRESPONDING FIELDS OF TABLE IT_A1

WHERE VBAK~ERDAT = P_DATE-LOW.

ELSEIF P_DATE-HIGH IS NOT INITIAL AND P_DATE-LOW IS INITIAL.

SELECT VBAK~VBELN

VBAK~ERNAM

VBAK~ERDAT

KNA1~NAME1

FROM VBAK INNER JOIN KNA1

ON VBAKKUNNR = KNA1KUNNR

INTO CORRESPONDING FIELDS OF TABLE IT_A1

WHERE VBAK~ERDAT < P_DATE-HIGH.

ENDIF.

IF SY-SUBRC <> 0.

MESSAGE E001(ZTH_TEST).

ELSE.

*SKIP 2.

LOOP AT IT_A1 INTO WA_A1.

WRITE : / SY-VLINE, 03 WA_A1-VBELN,14 SY-VLINE.

HIDE WA_A1-VBELN. WRITE: 20 WA_A1-ERNAM,34 SY-VLINE,

36 WA_A1-ERDAT,54 SY-VLINE,

60 WA_A1-NAME1,100 SY-VLINE.

ENDLOOP.

WRITE AT 1(100) SY-ULINE.

ENDIF.

ENDFORM. "F2

&----


*& Form F1

&----


  • text

----


FORM F1.

SELECT VBAP~MATNR

MAKT~MAKTX

VBAP~CHARG

VBAP~POSNR

FROM VBAP INNER JOIN MAKT

ON VBAPMATNR = MAKTMATNR

INTO CORRESPONDING FIELDS OF TABLE IT_A2

WHERE VBAP~VBELN = WA_A1-VBELN AND SPRAS = 'EN'.

*SKIP 2.

LOOP AT IT_A2 INTO WA_A2.

WRITE : / SY-VLINE, WA_A2-MATNR, 14 SY-VLINE,

16 WA_A2-MAKTX, 56 SY-VLINE,

65 WA_A2-CHARG, 78 SY-VLINE,

85 WA_A2-POSNR, 100 SY-VLINE.

ENDLOOP.

WRITE AT 1(100) SY-ULINE.

ENDFORM. "F1

AT USER-COMMAND:

If the user chooses a function code during list processing that is neither processed by the system, or PICK or PF<nn>, the system triggers the event AT USER-COMMAND. For this event, you must define your own GUI status for a list. To react to your own function codes in a program, you must define the following event block:

AT USER-COMMAND.

<statements>.

In this event block, you can use an IF or CASE structure to tell the function codes apart. They are available in the system field SY-UCOMM. There are further system fields that are filled in list events, such as SY-LSIND and SY-PFKEY, that allow you to make further case distinctions.

REPORT Test_program.

START-OF-SELECTION.

SET PF-STATUS 'TEST'.

WRITE: 'Basic list, SY-LSIND =', sy-lsind.

AT LINE-SELECTION.

WRITE: 'LINE-SELECTION, SY-LSIND =', sy-lsind.

AT USER-COMMAND.

CASE sy-ucomm.

WHEN 'TEST'.

WRITE: 'TEST, SY-LSIND =', sy-lsind.

ENDCASE.

With this code double click on 'TEST' and define your own PF status and give user command as TEST and check out this useful programe.

Regards

vasu

Read only

Former Member
0 Likes
480

Hi Bhushan,

go through this link

Reward points if it helps,

Satish

Read only

Former Member
0 Likes
480

Hi

******DATA DECLARATIONS**********

DATA : BEGIN OF IT_PLANT OCCURS 0,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARC-WERKS,

PSTAT LIKE MARC-PSTAT,

EKGRP LIKE MARC-EKGRP,

END OF IT_PLANT.

DATA : BEGIN OF IT_PONO OCCURS 0,

EBELN LIKE EKKO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

WERKS LIKE EKPO-WERKS,

LGORT LIKE EKPO-LGORT,

END OF IT_PONO.

TABLES EKKO.

********END OF DATA DECLARATIONS*********

********SELECTION SCREEN DESIGN ***********

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETER : P_WERKS LIKE MARC-WERKS MODIF ID S1.

SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN NO INTERVALS MODIF ID S2.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-004.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS : R1 RADIOBUTTON GROUP G1 DEFAULT 'X'.

SELECTION-SCREEN COMMENT 5(20) TEXT-002 FOR FIELD R1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS : R2 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 5(20) TEXT-003 FOR FIELD R2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B2.

******END OF SELECTION SCREEN DESIGN****************

*********INITIALIZATION OF SELECTION SCREEN ELEMENTS.*****

INITIALIZATION.

P_WERKS = '1000'.

S_EBELN-LOW = '4500016926'.

S_EBELN-OPTION = 'EQ'.

S_EBELN-SIGN = 'I'.

APPEND S_EBELN.

CLEAR S_EBELN.

************END OF INITIALIZATION***********************

***********SCREEN MODIFICATIONS*******************

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF R1 EQ 'X' AND SCREEN-GROUP1 EQ 'S2'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

IF R2 EQ 'X' AND SCREEN-GROUP1 EQ 'S1'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

********END OF SCREEN MODIFICATIONS*****************

***************SCREEN VALIDATIONS *****************

at selection-screen.

SELECT SINGLE *

FROM EKKO

INTO EKKO

WHERE EBELN IN S_EBELN.

IF SY-SUBRC <> 0.

SET CURSOR FIELD 'S_EBELN-LOW'.

MESSAGE E999 WITH TEXT-005.

ENDIF.

********end of screen validation*****************

START-OF-SELECTION.

*set pf-status '100'.

IF R1 EQ 'X'.

SELECT MATNR

WERKS

PSTAT

EKGRP

FROM MARC

INTO TABLE IT_PLANT

WHERE WERKS = P_WERKS.

LOOP AT IT_PLANT.

WRITE : SY-VLINE , 2 IT_PLANT-MATNR COLOR COL_KEY,

21 SY-VLINE , 22 IT_PLANT-WERKS COLOR COL_KEY,

27 SY-VLINE ,28 IT_PLANT-PSTAT COLOR COL_NORMAL,

43 SY-VLINE ,44 IT_PLANT-EKGRP COLOR COL_NORMAL.

ENDLOOP.

ENDIF.

IF R2 EQ 'X'.

SELECT EBELN EBELP MATNR WERKS LGORT

FROM EKPO

INTO TABLE IT_PONO

WHERE EBELN IN S_EBELN.

LOOP AT IT_PONO.

WRITE : SY-VLINE , 2 IT_PONO-EBELN COLOR COL_KEY,

12 SY-VLINE , 13 IT_PONO-EBELP COLOR COL_KEY,

18 SY-VLINE , 19 IT_PONO-MATNR COLOR COL_NORMAL,

37 SY-VLINE , 38 IT_PONO-WERKS COLOR COL_NORMAL,

44 SY-VLINE , 45 IT_PONO-LGORT COLOR COL_NORMAL, 49 SY-VLINE..

ENDLOOP.

ENDIF.

TOP-OF-PAGE.

IF R1 EQ 'X'.

*ULINE AT /1(48).

WRITE : SY-VLINE ,2 'MATERIAL NUMBER',

21 SY-VLINE , 22 'PLANT',

27 SY-VLINE , 28 'STATUS',

43 SY-VLINE , 44 'GRUP', 48 SY-VLINE.

ULINE AT /1(48).

ENDIF.

IF R2 EQ 'X'.

WRITE : SY-VLINE , 2 'PO NUMBER',

12 SY-VLINE, 13 'ITEM',

18 SY-VLINE,19 'MATERIAL NUMBER',

37 SY-VLINE, 38 'PLANT',

44 SY-VLINE, 45 'GRUP',

49 SY-VLINE.

ULINE AT /1(50).

ENDIF.

END-OF-PAGE.

ULINE AT /1(50).

WRITE :/10 'PAGE NUMBER', SY-PAGNO.

you can understand very easily

Read only

Former Member
0 Likes
480

this is aslo

REPORT ZLSO_CANCEL.

**************DATA TYPES DECLARATION **********************

TABLES: HRP1001, HRP1026, HRP1000,PCHDY.

TYPE-POOLS SLIS.

TYPES :BEGIN OF ST_OUTPUT,

COUNT TYPE STRING,

OBJID TYPE HRP1001-OBJID,

STEXT TYPE HRP1000-STEXT,

BEGDA TYPE HRP1000-BEGDA,

ENDDA TYPE HRP1000-ENDDA,

CANCRT TYPE T77CRT-CANCRT,

AEDTM TYPE HRP1026-AEDTM,

UNAME TYPE HRP1026-UNAME,

LSTEXT TYPE HRP1000-STEXT,

  • RINVT TYPE T777V-RINVT,

END OF ST_OUTPUT.

TYPES: BEGIN OF ST_HRP1000,

OBJID TYPE HRP1001-OBJID,

STEXT TYPE HRP1000-STEXT,

END OF ST_HRP1000.

TYPES : BEGIN OF ST_HRP1001,

OTYPE TYPE HRP1001-OTYPE,

OBJID TYPE HRP1001-OBJID,

RELAT type hrp1001-RELAT,

BEGDA TYPE HRP1001-BEGDA,

ENDDA TYPE HRP1001-ENDDA,

SCLAS TYPE HRP1001-SCLAS,

SOBID TYPE HRP1001-SOBID,

END OF ST_HRP1001.

TYPES : BEGIN OF ST_HRP1026,

OTYPE TYPE HRP1026-OTYPE,

OBJID TYPE HRP1001-OBJID,

AEDTM TYPE HRP1026-AEDTM,

UNAME TYPE HRP1026-UNAME,

DELET TYPE HRP1026-DELET,

CANCR TYPE HRP1026-CANCR,

END OF ST_HRP1026.

TYPES : BEGIN OF ST_REASON,

CANCR TYPE HRP1026-CANCR,

CANCRT TYPE T77CRT-CANCRT,

END OF ST_REASON.

TYPES : BEGIN OF ST_SOBID,

OTYPE TYPE HRP1001-OTYPE,

OBJID TYPE HRP1001-OBJID,

RELAT type hrp1001-OBJID,

BEGDA TYPE HRP1001-BEGDA,

ENDDA TYPE HRP1001-ENDDA,

SCLAS TYPE HRP1001-SCLAS,

SOBID TYPE HRP1001-OBJID,

END OF ST_SOBID.

TYPES : BEGIN OF ST_OBJID,

OBJID TYPE HRP1001-OBJID,

END OF ST_OBJID.

TYPES : BEGIN OF ST_LOCATION,

OTYPE TYPE HRP1001-OTYPE,

OBJID TYPE HRP1001-OBJID,

RSIGN TYPE HRP1001-RSIGN,

RELAT TYPE HRP1001-RELAT,

SCLAS TYPE HRP1001-SCLAS,

SOBID TYPE HRP1001-SOBID,

END OF ST_LOCATION.

TYPES : BEGIN OF ST_LOCATION1,

OTYPE TYPE HRP1001-OTYPE,

OBJID TYPE HRP1001-OBJID,

RSIGN TYPE HRP1001-RSIGN,

RELAT TYPE HRP1001-RELAT,

SCLAS TYPE HRP1001-SCLAS,

SOBID TYPE HRP1001-OBJID,

END OF ST_LOCATION1.

TYPES : BEGIN OF ST_LSTEXT,

OTYPE TYPE HRP1000-OTYPE,

OBJID TYPE HRP1000-OBJID,

LSTEXT TYPE HRP1000-STEXT,

END OF ST_LSTEXT.

TYPES : BEGIN OF ST_OBJID_SH,

OTYPE TYPE HRP1000-OTYPE,

OBJID TYPE HRP1000-OBJID,

END OF ST_OBJID_SH.

DATA : IT_OBJID_SH TYPE STANDARD TABLE OF ST_OBJID_SH.

DATA : WA_OBJID_SH TYPE ST_OBJID_SH.

DATA : IT_LSTEXT TYPE STANDARD TABLE OF ST_LSTEXT. "TOS STORE THE TEXT OF COURCE LOCATION

DATA : WA_LSTEXT TYPE ST_LSTEXT.

DATA : IT_LOCATION TYPE STANDARD TABLE OF ST_LOCATION. " TO STORE THE LOCATION OF COURCE

DATA : WA_LOCATION TYPE ST_LOCATION.

DATA : IT_LOCATION1 TYPE STANDARD TABLE OF ST_LOCATION1. " TO CONVERT SOBID INTO OBJID FOR COURCE LOCATION

DATA : WA_LOCATION1 TYPE ST_LOCATION1.

DATA : IT_SOBID TYPE STANDARD TABLE OF ST_SOBID. " TO CHANGE THE SOBID OF HRP1001 TO OBJID OF HRP1026

DATA : WA_SOBID TYPE ST_SOBID. " BY USING FOR ALL ENTRIES

DATA : IT_REASON TYPE STANDARD TABLE OF ST_REASON. "TO STORE T HE REASON FOR CANCELL TEXT

DATA : WA_REASON TYPE ST_REASON.

DATA : IT_OUTPUT TYPE STANDARD TABLE OF ST_OUTPUT. "OUTPUT FEILDS OF REPORT.

DATA : WA_OUTPUT TYPE ST_OUTPUT.

DATA : IT_OUTPUT_1 TYPE STANDARD TABLE OF ST_OUTPUT. " TEMP OUTPUT FEILDS OF REPORT.

DATA : WA_OUTPUT_1 TYPE ST_OUTPUT.

DATA : IT_HRP1000 TYPE STANDARD TABLE OF ST_HRP1000. "DATA FROM HRP1000 TABLE

DATA : WA_HRP1000 TYPE ST_HRP1000.

DATA : IT_HRP1001 TYPE STANDARD TABLE OF ST_HRP1001. "DATA FROM HRP1001 TABLE

DATA : WA_HRP1001 TYPE ST_HRP1001.

DATA : IT_HRP1026 TYPE STANDARD TABLE OF ST_HRP1026. "DATA FROM HRP1026 TABLE

DATA : WA_HRP1026 TYPE ST_HRP1026.

DATA : IT_OBJID TYPE STANDARD TABLE OF ST_OBJID. " TO STORE THE OBJID OF HRP1001

DATA : WA_OBJID TYPE ST_OBJID.

DATA: WS_FCAT TYPE SLIS_FIELDCAT_ALV . " FEILDCATALOG FOR ALV REPORT

DATA: IN_FCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: W_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA : LV_COUNT TYPE I. "FEILD FOR SERIAL NUMBER

***************************END OF DATA DECLARATION******************************************

***********SELECTION SCREEN DESIGN***********************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

*SELECT-OPTIONS : S_OTYPE FOR HRP1001-OTYPE NO INTERVALS .

SELECT-OPTIONS : S_OBJID FOR HRP1001-OBJID NO INTERVALS .

SELECT-OPTIONS : DATE FOR SY-DATUM NO-EXTENSION OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

**********END OF SELECTION SCREEN DESIGN*****************

*****INITIALIZATION VENT TO ASIGN DEFAULT VALUES TO OTYPE

*INITIALIZATION.

  • S_OTYPE-LOW = 'D'.

  • S_OTYPE-SIGN = 'I'.

  • S_OTYPE-OPTION = 'EQ'.

  • APPEND S_OTYPE.

  • CLEAR S_OTYPE.

*************END OF EVENT INITIALIZATION*****************

*********VALIDATION FOR SCREEN FIELDS********************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.

  • IF S_OBJID IS NOT INITIAL.

SELECT OTYPE OBJID FROM HRP1000

INTO TABLE IT_OBJID_SH

WHERE OTYPE = 'D'.

IF SY-SUBRC EQ 0.

  • SEARCH HELP FOR QUALIFICATION.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

RETFIELD = 'OBJID'

  • PVALKEY = ' '

DYNPPROG = SY-REPID

DYNPNR = SY-DYNNR

DYNPROFIELD = 'S_OBJID'

  • STEPL = 0

  • WINDOW_TITLE =

  • VALUE = ' '

VALUE_ORG = 'S'

  • MULTIPLE_CHOICE = ' '

  • DISPLAY = ' '

  • CALLBACK_PROGRAM = ' '

  • CALLBACK_FORM = ' '

  • MARK_TAB =

  • IMPORTING

  • USER_RESET =

TABLES

VALUE_TAB = IT_OBJID_SH

  • FIELD_TAB =

  • RETURN_TAB = RETURN_TAB

  • DYNPFLD_MAPPING =

  • EXCEPTIONS

  • PARAMETER_ERROR = 1

  • NO_VALUES_FOUND = 2

  • OTHERS = 3

.

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.

.

  • IF SY-SUBRC NE 0.

  • MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA.' TYPE 'E'.

  • ENDIF.

*

  • ENDIF.

  • REFRESH IT_OBJID.

***************VALIDATION OF SCREEN FIELDS ENDS***********

*****************START OF SELECTION ************************

START-OF-SELECTION.

SELECT OTYPE

OBJID

RELAT

BEGDA

ENDDA

SCLAS

SOBID FROM HRP1001 INTO TABLE IT_HRP1001

WHERE OTYPE = 'D'

AND OBJID IN S_OBJID

AND BEGDA GE DATE-LOW

AND ENDDA LE DATE-HIGH

AND ( SCLAS = 'E' OR SCLAS = 'ET' ).

IF SY-SUBRC NE 0.

MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA ' TYPE 'E'.

ENDIF.

LOOP AT IT_HRP1001 INTO WA_HRP1001.

WA_SOBID-OTYPE = WA_HRP1001-OTYPE.

WA_SOBID-OBJID = WA_HRP1001-OBJID.

WA_SOBID-RELAT = WA_HRP1001-RELAT.

WA_SOBID-BEGDA = WA_HRP1001-BEGDA.

WA_SOBID-ENDDA = WA_HRP1001-ENDDA.

WA_SOBID-SCLAS = WA_HRP1001-SCLAS.

WA_SOBID-SOBID = WA_HRP1001-SOBID.

APPEND WA_SOBID TO IT_SOBID.

ENDLOOP.

SELECT OTYPE

OBJID

AEDTM

UNAME

DELET

CANCR

  • NCONT

FROM HRP1026

INTO TABLE IT_HRP1026

FOR ALL ENTRIES IN IT_SOBID

WHERE OBJID = IT_SOBID-SOBID

AND ( OTYPE = 'E' OR OTYPE = 'ET' )

AND DELET = 'X' AND

BEGDA GE DATE-LOW AND

ENDDA LE DATE-HIGH.

IF SY-SUBRC EQ 0.

SELECT OBJID

STEXT

FROM HRP1000

INTO TABLE IT_HRP1000

FOR ALL ENTRIES IN IT_SOBID

WHERE OBJID = IT_SOBID-SOBID AND

BEGDA GE DATE-LOW AND

ENDDA LE DATE-HIGH.

SELECT CANCR

CANCRT

FROM T77CRT

INTO TABLE IT_REASON

FOR ALL ENTRIES IN IT_HRP1026

WHERE CANCR = IT_HRP1026-CANCR

AND LANGU = 'E' .

********PERFORM FOR GETTING T HE LOCATION OF THE COURCE**

PERFORM GET_LOCATION.

**************END OF LOCATION OF COURCE ******************

ELSE.

MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA ' TYPE 'E'.

ENDIF.

*****PERFORM FOR GETTING DATA INTO THE FINAL INTERNAL TABLE IT_OUTPUT**

PERFORM GET_DATA.

*********************************END OF PERFORM ET DATA ***************

***********LOGIC FOR PRONTING NUMBER OF RECORDS ***********************

LV_COUNT = 0.

LOOP AT IT_OUTPUT INTO WA_OUTPUT.

LV_COUNT = LV_COUNT + 1.

WA_OUTPUT-COUNT = LV_COUNT.

APPEND WA_OUTPUT TO IT_OUTPUT_1.

ENDLOOP.

REFRESH IT_OUTPUT.

IT_OUTPUT = IT_OUTPUT_1.

********************END OF LOGIC FOR NUMBER OF RECORDS ***************

****************DISPLAYING OUTPUT BY USEING GRID DISPLAY**********

PERFORM ALV_DISPLAY.

****************************END OF PERFORM FOR DISPLAYING **********

&----


*& Form PERFORM_ALV

&----


  • DISPLAY THE RECORDS IN ALV GRID FORMAT.

----


FORM ALV_DISPLAY.

PERFORM FIELD_CATALOG USING 'COUNT' 'Sr. No.'.

PERFORM FIELD_CATALOG USING 'OBJID' 'COURCE ID.'.

PERFORM FIELD_CATALOG USING 'STEXT' 'COURCE NAME'.

PERFORM FIELD_CATALOG USING 'LSTEXT' 'COURCE LOATION'.

PERFORM FIELD_CATALOG USING 'BEGDA' 'BEGIN DATE '.

PERFORM FIELD_CATALOG USING 'ENDDA' 'END DATE '.

PERFORM FIELD_CATALOG USING 'CANCRT' 'REASON'.

PERFORM FIELD_CATALOG USING 'AEDTM' 'DATE Of CANCEL'.

  • PERFORM FIELD_CATALOG USING 'NCONT' 'NUMBER OF BOOKINGS'.

  • PERFORM FIELD_CATALOG USING 'LOCTX' 'COURCE LOCATION'.

PERFORM FIELD_CATALOG USING 'UNAME' 'WHO CANCELLED'.

  • PERFORM FIELD_CATALOG USING 'LSTEXT' 'COURCE LOATION'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_STRUCTURE_NAME = 'IT_OUTPUT'

I_GRID_TITLE = ' Cancelled courses with reason '

IT_FIELDCAT = IN_FCAT

TABLES

T_OUTTAB = IT_OUTPUT.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. "PERFORM_ALV

&----


*& Form FIELD_CATALOG

&----


  • text

----


  • -->FIELD_NAME text

  • -->DIS_TEXT text

----


FORM FIELD_CATALOG USING FIELD_NAME DIS_TEXT.

CLEAR WS_FCAT.

WS_FCAT-TABNAME = 'IT_OUTPUT'.

WS_FCAT-FIELDNAME = FIELD_NAME.

WS_FCAT-SELTEXT_M = DIS_TEXT.

APPEND WS_FCAT TO IN_FCAT .

ENDFORM. "FIELD_CATALOG

&----


*& Form GET_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA .

*sort it_sobid by objid.

LOOP AT IT_SOBID INTO WA_SOBID." where otype eq s_otype and objid eq s_objid.

READ TABLE IT_HRP1026 WITH KEY OBJID = WA_SOBID-SOBID OTYPE = WA_SOBID-SCLAS INTO WA_HRP1026.

IF SY-SUBRC EQ 0.

READ TABLE IT_HRP1000 WITH KEY OBJID = WA_SOBID-SOBID INTO WA_HRP1000.

  • READ TABLE IT_REASON WITH KEY CANCR = WA_HRP1026-CANCR INTO WA_REASON.

WA_OUTPUT-OBJID = WA_HRP1026-OBJID.

WA_OUTPUT-BEGDA = WA_SOBID-BEGDA.

WA_OUTPUT-ENDDA = WA_SOBID-ENDDA.

WA_OUTPUT-AEDTM = WA_HRP1026-AEDTM.

WA_OUTPUT-UNAME = WA_HRP1026-UNAME.

  • WA_OUTPUT-NCONT = WA_HRP1026-NCONT.

  • READ TABLE IT_HRP1000 WITH KEY OBJID = WA_SOBID-SOBID INTO WA_HRP1000.

WA_OUTPUT-STEXT = WA_HRP1000-STEXT.

READ TABLE IT_REASON WITH KEY CANCR = WA_HRP1026-CANCR INTO WA_REASON.

WA_OUTPUT-CANCRT = WA_REASON-CANCRT.

CLEAR WA_REASON-CANCRT.

READ TABLE IT_LOCATION1 WITH KEY OBJID = WA_HRP1026-OBJID INTO WA_LOCATION1..

READ TABLE IT_LSTEXT WITH KEY OBJID = WA_LOCATION1-SOBID OTYPE = 'F' INTO WA_LSTEXT.

WA_OUTPUT-LSTEXT = WA_LSTEXT-LSTEXT.

CLEAR WA_LSTEXT-LSTEXT.

APPEND WA_OUTPUT TO IT_OUTPUT.

CLEAR WA_OUTPUT.

CLEAR WA_OUTPUT-CANCRT.

ENDIF.

ENDLOOP.

ENDFORM. " GET_DATA

&----


*& Form GET_LOCATION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_LOCATION .

SELECT OTYPE

OBJID

RSIGN

RELAT

SCLAS

SOBID

FROM HRP1001

INTO TABLE IT_LOCATION

FOR ALL ENTRIES IN IT_HRP1026

WHERE OTYPE = 'E' AND OBJID = IT_HRP1026-OBJID

AND RSIGN = 'A' AND RELAT = '024' AND SCLAS = 'F'

AND BEGDA GE DATE-LOW AND ENDDA LE DATE-HIGH.

IF SY-SUBRC NE 0.

MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA ' TYPE 'E'.

ENDIF.

LOOP AT IT_LOCATION INTO WA_LOCATION.

WA_LOCATION1-OTYPE = WA_LOCATION-OTYPE.

WA_LOCATION1-OBJID = WA_LOCATION-OBJID.

WA_LOCATION1-RSIGN = WA_LOCATION-RSIGN.

WA_LOCATION1-RELAT = WA_LOCATION-RELAT.

WA_LOCATION1-SCLAS = WA_LOCATION-SCLAS.

WA_LOCATION1-SOBID = WA_LOCATION-SOBID.

APPEND WA_LOCATION1 TO IT_LOCATION1.

  • CLEAR WA_LOCATION1.

ENDLOOP.

SELECT OTYPE

OBJID

STEXT

FROM HRP1000

INTO TABLE IT_LSTEXT

FOR ALL ENTRIES IN IT_LOCATION1

WHERE OBJID = IT_LOCATION1-SOBID

AND OTYPE = 'F'.

  • AND BEGDA GE DATE-LOW

  • AND ENDDA LE DATE-HIGH.

ENDFORM. " GET_LOCATION