Classical Reports 09
Classical Reports 09
Classical Reports ?
Classical reports in SAP ABAP programming, Classical report events
in SAP ABAP programs
Classical Reports are reports which contain both selection-screen and output screen.
SAP ABAP is an event driven programming language, ABAP programs executed based
on events not line-by-line.
Load-of-praogram
This event is used to load program into memory for execution and this is the first event
in execution sequence.
Initialization
This event is used to initialize variables, screen default values and other default actions.
At Selection-Screen output
By using this event we can manipulate dynamic selection-screen changes.
At Selection-Screen on field
This event is used to validate a single selection-screen input parameter.
Before using this event, we need to reserve some lines for displaying footer.
Input elements : Select-options for matnr ( material no for MARA table), parameter
mtart( Material type from MARA), a check box and a parameter limit for limiting no of
results.
Whenever we click on download data, select file to download field will be enabled
otherwise this should be disabled.
Input Screen.
REPORT ZSAPN_CLASSICAL_REPORT LINE-COUNT 34(2). "34 lines are for report
space and 2 lines are for footer space
TABLES : MARA.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA: IT_MARA TYPE TABLE OF TY_MARA. "material out put internal table
DATA: WA_MARA TYPE TY_MARA. " work area
AT SELECTION-SCREEN.
PERFORM VALIDATE_INPUTS.
START-OF-SELECTION.
PERFORM GET_MATERIALS.
END-OF-SELECTION.
LV_END_TIME = SY-UZEIT.
PERFORM DISPLAY_OUTPUT.
IF P_DLOAD = 'X'.
PERFORM DOWNLOAD_DATA.
ENDIF.
TOP-OF-PAGE.
WRITE: 'Material Details ' COLOR 2.
END-OF-PAGE.
WRITE:'The above materials are active materials available in database'
COLOR 3.
WRITE: 'Start time'.
WRITE: LV_START_TIME.
WRITE: 'End time'.
WRITE: LV_END_TIME.
FORM VALIDATE_INPUTS.
IF S_MATNR IS INITIAL OR P_MTART IS INITIAL.
ELSE.
FORM GET_MATERIALS.
SELECT MATNR ERSDA MTART MBRSH MATKL MEINS FROM MARA
INTO TABLE IT_MARA
UP TO P_LIMIT ROWS
WHERE MATNR IN S_MATNR AND MTART = P_MTART.
FORM DISPLAY_OUTPUT .
IF IT_MARA IS NOT INITIAL.
LOOP AT IT_MARA INTO WA_MARA.
ENDLOOP.
ELSE.
WRITE :'No Data Found for your Query'.
ENDIF.
ENDFORM. " DISPLAY_OUTPUT
FORM MTART_HELP.
MESSAGE 'Enter a Material Type ' TYPE 'I'.
ENDFORM. " MTART_HELP
FORM MTART_VALUE_HELP.
MESSAGE 'Material type input ex: FERT' TYPE 'I'.
ENDFORM. " MTART_VSLUE_HELP
FORM DOWNLOAD_DATA .
DATA : LV_FILE TYPE STRING .
LV_FILE = P_FILE .
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = LV_FILE
FILETYPE = 'ASC'
* APPEND = ' '
WRITE_FIELD_SEPARATOR = 'X'
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = IT_MARA
* FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
.
IF SY-SUBRC = 0.
WRITE :/ 'Data downloaded to'.
WRITE:P_FILE.
ENDIF.
FORM FILE_VALUE_HELP.
Loop At Screen. Screen is structure with Name, Group1, Group2, Group3, Group4,
invisible, active, intensified etc fields, this holds the screen information at run time, Loop
at Screen...Endloop. is used to loop through screen elements, and based on the
values in above structure (SCREEN) we can manipulate changes.
When ever we check enable input field check box, one input field will be enabled.
REPORT ZSPN_SELECTION_SCREEN_OUTPUT.
PARAMETERS P_ENABLE AS CHECKBOX USER-COMMAND UC1.
PARAMETERS: INPUT(5) TYPE C MODIF ID IN1 . "Based on modif id we will
perform dynamic operations
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF P_ENABLE = 'X' . " If check box is selected
IF SCREEN-GROUP1 = 'IN1' .
SCREEN-ACTIVE = 1.
MODIFY SCREEN.
ENDIF.
ELSE.
IF SCREEN-GROUP1 = 'IN1' .
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
At selection screen on the field and at selection screen are selection-screen events
which are used for input validations in SAP report programming.
At Selection Scteen on Field At Selection Screen
This event is used to validate a single input field. This event is used to validate multiple input
fields.
If we this event, if any, error the error field will be By using this event, the error field is
highlighted and the remaining fields will be heightened and all the remaining fields will
disabled. be enabled.
REPORT ZSAPN_INITIALIZATION.
TABLES: MARA. "tables decleration for select-options
PARAMETERS : P_INPUT TYPE CHAR20. "Inputfied with 20 character length.
INITIALIZATION.
S_SO-LOW = '1'.
S_SO-OPTION = 'BT'.
S_SO-SIGN = 'I'.
S_SO-HIGH = '100'.
APPEND S_SO. " append select-options to screen
Set Default values for check box and radio buttons group
Check box and radio buttons store either X or space, X means selected, space means not
selected, use the below code to default check box and radio buttons.
INITIALIZATION.
P_CHK = 'X'.
P_RAD2 = 'X'.
The final code will be
REPORT ZSAPN_INITIALIZATION.
TABLES : MARA. "tables decleration for select-options
PARAMETERS: P_INPUT TYPE CHAR20. "Input fied with 20 character length.
INITIALIZATION.
P_INPUT = 'SAPNuts'.
S_SO-LOW = '1'.
S_SO-OPTION = 'BT'.
S_SO-SIGN = 'I'.
S_SO-HIGH = '100'.
APPEND S_SO.
P_CHK = 'X'.