Events in Classical Basic report
- Initialization.
- At-selection-screen.
- At-selection-screen output .
- At-selection-screen on <field>
- At-selection-screen on value-request.
- At-selection-screen on help-request.
- Start-of-selection.
- End-of-selection.
- Top-of-page.
- End-of-page.
Explanation
- Initialization.
- To initialize the value to variables.
- To assign the values to parameter as well as select-option.
- At-selection-screen.
- Used to validate selection screen input.
- At-selection-screen output .
- Used to modify the screen layout.
- At-selection-screen on <field>
- To validate the particular filed.
- At-selection-screen on value-request.
- Used to provide search help for a particular field.
- At-selection-screen on help-request.
- Used to provide documentation help for particular field.
- Start-of-selection.
- Actual program execution starts from here.
- End-of-selection.
- Usually output related codes are written here.
- Top-of-page.
- If you want put headings for report, then write code here.
- End-of-page.
- Used to put footer .
Ex :
- Go to Transaction code SE38.
- Enter the program name start's with Y or Z<program name > and click on create button.
- Enter the Title.
- Select Attribute Type as Executable Program.
- Click on save button.
- Save it in either package or local package.
Source Code
REPORT ZCLASSICAL_BASIC_SALES NO STANDARD PAGE HEADING LINE-SIZE 200
LINE-COUNT 30(3) .
TABLES : VBAK , VBAP.
TYPES : BEGIN OF TY_SA,
VBELN TYPE VBAK-VBELN,
POSNR TYPE VBAP-POSNR,
ERDAT TYPE VBAK-ERDAT,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
ZMENG TYPE VBAP-ZMENG,
NETWR TYPE VBAP-NETWR,
END OF TY_SA.
DATA : WA_SA TYPE TY_SA,
IT_SA TYPE TABLE OF TY_SA.
DATA : V_SKIP TYPE I.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : R1 RADIOBUTTON GROUP G1 USER-COMMAND U1.
SELECT-OPTIONS : S_VBELN FOR WA_SA-VBELN MODIF ID ABC.
PARAMETERS : R2 RADIOBUTTON GROUP G1.
SELECT-OPTIONS : S_ERDAT FOR WA_SA-ERDAT MODIF ID XYZ.
PARAMETERS : P_VKORG TYPE VBAK-VKORG OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
S_VBELN-SIGN = 'I'.
S_VBELN-OPTION = 'BT'.
S_VBELN-LOW = '5015'.
S_VBELN-HIGH = '6015'.
APPEND S_VBELN .
P_VKORG = '1000'.
AT SELECTION-SCREEN.
SELECT SINGLE VBELN FROM VBUK INTO VBAK-VBELN WHERE VBELN IN S_VBELN.
IF SY-SUBRC NE 0.
MESSAGE 'SALES ODER NUMBER NOT FOUND ' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ABC'.
IF R2 = 'X'.
SCREEN-ACTIVE = 0.
ENDIF.
IF R1 = 'X'.
SCREEN-ACTIVE = 1.
ENDIF.
ENDIF.
IF SCREEN-GROUP1 = 'XYZ'.
IF R1 = 'X'.
SCREEN-ACTIVE = 0.
ENDIF.
IF R2 = 'X'.
SCREEN-ACTIVE = 1.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN ON P_VKORG.
SELECT SINGLE VKORG FROM TVKO INTO VBAK-VKORG WHERE VKORG = P_VKORG.
IF SY-SUBRC NE 0.
MESSAGE 'SALES ORG. NOT FOUND ' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_VBELN-LOW.
TYPES: BEGIN OF TY_F4,
VBELN TYPE VBAK-VBELN,
KUNNR TYPE VBAK-KUNNR,
END OF TY_F4.
DATA : WA_F4 TYPE TY_F4,
IT_F4 TYPE TABLE OF TY_F4.
SELECT VBELN KUNNR FROM VBAK INTO TABLE IT_F4.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
* DDIC_STRUCTURE = ' '
retfield = 'VBELN'
* PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = '1000'
DYNPROFIELD = 'S_VBELN'
* STEPL = 0
WINDOW_TITLE = 'VALUE HELP FOR SALES DOC'
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
tables
value_tab = IT_F4
* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_VKORG.
TYPES : BEGIN OF TY_F1,
TXT(80) TYPE C,
END OF TY_F1.
DATA : WA_F1 TYPE TY_F1,
IT_F1 TYPE TABLE OF TY_F1.
WA_F1-TXT = 'THIS IS SALES ODER NUMBER'.
APPEND WA_F1 TO IT_F1.
CLEAR WA_F1.
WA_F1-TXT = 'PLAESE ENTER SALES ODER NUMBER'.
APPEND WA_F1 TO IT_F1.
CLEAR WA_F1.
call function 'POPUP_WITH_TABLE_DISPLAY_OK'
exporting
endpos_col = 60
endpos_row = 60
startpos_col = 3
startpos_row = 3
titletext = 'SALES HELP'
* IMPORTING
* CHOISE =
tables
valuetab = IT_F1
EXCEPTIONS
BREAK_OFF = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
START-OF-SELECTION.
IF R1 = 'X'.
SELECT A~VBELN
POSNR
A~ERDAT
A~ERNAM
VKORG
KUNNR
MATNR
ARKTX
ZMENG
B~NETWR INTO TABLE IT_SA FROM VBAK AS A INNER JOIN VBAP AS B
ON B~VBELN = A~VBELN WHERE A~VBELN IN S_VBELN AND VKORG = P_VKORG.
ENDIF.
IF R2 = 'X'.
SELECT A~VBELN
POSNR
A~ERDAT
A~ERNAM
VKORG
KUNNR
MATNR
ARKTX
ZMENG
B~NETWR INTO TABLE IT_SA FROM VBAK AS A INNER JOIN VBAP AS B
ON B~VBELN = A~VBELN WHERE A~ERDAT IN S_ERDAT AND VKORG = P_VKORG.
ENDIF.
END-OF-SELECTION.
LOOP AT IT_SA INTO WA_SA.
WRITE : /3 WA_SA-VBELN ,
15 WA_SA-POSNR ,
25 WA_SA-ERDAT,
50 WA_SA-ERNAM,
76 WA_SA-VKORG,
100 WA_SA-KUNNR,
120 WA_SA-MATNR,
145 WA_SA-ARKTX,
175 WA_SA-ZMENG LEFT-JUSTIFIED,
190 WA_SA-NETWR CENTERED.
V_SKIP = SY-LINCT - SY-LINNO - 3.
ENDLOOP.
SKIP V_SKIP.
TOP-OF-PAGE.
WRITE : / SY-ULINE,
/ SY-VLINE , 50 'SALES ORDER REPORT ' , 200 SY-VLINE,
/ SY-ULINE.
WRITE : /2 'SAL NO' , 15 'ITEM NO', 25 'DATE', 50 'NAME' ,
76 'SALES ORG' , 100 'CUSTOMER' , 120 'MAT NO' , 145 ' DESCRIPTION',
175 'QUANTITY' , 190 'PRICE', / SY-ULINE.
END-OF-PAGE.
WRITE : / SY-ULINE ,
/ SY-VLINE , 30 ' PAGE NO ' , SY-PAGNO , 200 SY-VLINE,
/ SY-ULINE.
LINE-COUNT 30(3) .
TABLES : VBAK , VBAP.
TYPES : BEGIN OF TY_SA,
VBELN TYPE VBAK-VBELN,
POSNR TYPE VBAP-POSNR,
ERDAT TYPE VBAK-ERDAT,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
MATNR TYPE VBAP-MATNR,
ARKTX TYPE VBAP-ARKTX,
ZMENG TYPE VBAP-ZMENG,
NETWR TYPE VBAP-NETWR,
END OF TY_SA.
DATA : WA_SA TYPE TY_SA,
IT_SA TYPE TABLE OF TY_SA.
DATA : V_SKIP TYPE I.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : R1 RADIOBUTTON GROUP G1 USER-COMMAND U1.
SELECT-OPTIONS : S_VBELN FOR WA_SA-VBELN MODIF ID ABC.
PARAMETERS : R2 RADIOBUTTON GROUP G1.
SELECT-OPTIONS : S_ERDAT FOR WA_SA-ERDAT MODIF ID XYZ.
PARAMETERS : P_VKORG TYPE VBAK-VKORG OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
S_VBELN-SIGN = 'I'.
S_VBELN-OPTION = 'BT'.
S_VBELN-LOW = '5015'.
S_VBELN-HIGH = '6015'.
APPEND S_VBELN .
P_VKORG = '1000'.
AT SELECTION-SCREEN.
SELECT SINGLE VBELN FROM VBUK INTO VBAK-VBELN WHERE VBELN IN S_VBELN.
IF SY-SUBRC NE 0.
MESSAGE 'SALES ODER NUMBER NOT FOUND ' TYPE 'E'.
ENDIF.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ABC'.
IF R2 = 'X'.
SCREEN-ACTIVE = 0.
ENDIF.
IF R1 = 'X'.
SCREEN-ACTIVE = 1.
ENDIF.
ENDIF.
IF SCREEN-GROUP1 = 'XYZ'.
IF R1 = 'X'.
SCREEN-ACTIVE = 0.
ENDIF.
IF R2 = 'X'.
SCREEN-ACTIVE = 1.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN ON P_VKORG.
SELECT SINGLE VKORG FROM TVKO INTO VBAK-VKORG WHERE VKORG = P_VKORG.
IF SY-SUBRC NE 0.
MESSAGE 'SALES ORG. NOT FOUND ' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_VBELN-LOW.
TYPES: BEGIN OF TY_F4,
VBELN TYPE VBAK-VBELN,
KUNNR TYPE VBAK-KUNNR,
END OF TY_F4.
DATA : WA_F4 TYPE TY_F4,
IT_F4 TYPE TABLE OF TY_F4.
SELECT VBELN KUNNR FROM VBAK INTO TABLE IT_F4.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
* DDIC_STRUCTURE = ' '
retfield = 'VBELN'
* PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = '1000'
DYNPROFIELD = 'S_VBELN'
* STEPL = 0
WINDOW_TITLE = 'VALUE HELP FOR SALES DOC'
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
tables
value_tab = IT_F4
* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_VKORG.
TYPES : BEGIN OF TY_F1,
TXT(80) TYPE C,
END OF TY_F1.
DATA : WA_F1 TYPE TY_F1,
IT_F1 TYPE TABLE OF TY_F1.
WA_F1-TXT = 'THIS IS SALES ODER NUMBER'.
APPEND WA_F1 TO IT_F1.
CLEAR WA_F1.
WA_F1-TXT = 'PLAESE ENTER SALES ODER NUMBER'.
APPEND WA_F1 TO IT_F1.
CLEAR WA_F1.
call function 'POPUP_WITH_TABLE_DISPLAY_OK'
exporting
endpos_col = 60
endpos_row = 60
startpos_col = 3
startpos_row = 3
titletext = 'SALES HELP'
* IMPORTING
* CHOISE =
tables
valuetab = IT_F1
EXCEPTIONS
BREAK_OFF = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
START-OF-SELECTION.
IF R1 = 'X'.
SELECT A~VBELN
POSNR
A~ERDAT
A~ERNAM
VKORG
KUNNR
MATNR
ARKTX
ZMENG
B~NETWR INTO TABLE IT_SA FROM VBAK AS A INNER JOIN VBAP AS B
ON B~VBELN = A~VBELN WHERE A~VBELN IN S_VBELN AND VKORG = P_VKORG.
ENDIF.
IF R2 = 'X'.
SELECT A~VBELN
POSNR
A~ERDAT
A~ERNAM
VKORG
KUNNR
MATNR
ARKTX
ZMENG
B~NETWR INTO TABLE IT_SA FROM VBAK AS A INNER JOIN VBAP AS B
ON B~VBELN = A~VBELN WHERE A~ERDAT IN S_ERDAT AND VKORG = P_VKORG.
ENDIF.
LOOP AT IT_SA INTO WA_SA.
WRITE : /3 WA_SA-VBELN ,
15 WA_SA-POSNR ,
25 WA_SA-ERDAT,
50 WA_SA-ERNAM,
76 WA_SA-VKORG,
100 WA_SA-KUNNR,
120 WA_SA-MATNR,
145 WA_SA-ARKTX,
175 WA_SA-ZMENG LEFT-JUSTIFIED,
190 WA_SA-NETWR CENTERED.
V_SKIP = SY-LINCT - SY-LINNO - 3.
ENDLOOP.
SKIP V_SKIP.
TOP-OF-PAGE.
WRITE : / SY-ULINE,
/ SY-VLINE , 50 'SALES ORDER REPORT ' , 200 SY-VLINE,
/ SY-ULINE.
WRITE : /2 'SAL NO' , 15 'ITEM NO', 25 'DATE', 50 'NAME' ,
76 'SALES ORG' , 100 'CUSTOMER' , 120 'MAT NO' , 145 ' DESCRIPTION',
175 'QUANTITY' , 190 'PRICE', / SY-ULINE.
END-OF-PAGE.
WRITE : / SY-ULINE ,
/ SY-VLINE , 30 ' PAGE NO ' , SY-PAGNO , 200 SY-VLINE,
/ SY-ULINE.
- Execute (F8).
No comments:
Post a Comment