Classical Report Example

A Classical report 1 with all EVENTS as per Real time Programming
Business Requirement Develop a CUSTOMER Master Report to display Custno,country,name1,city

REPORT ZCLASSICALREPORT NO STANDARD PAGE HEADING LINE-COUNT 34(3).


TYPES: 
BEGIN OF TY_KNA1,
       KUNNR 
TYPE KNA1-KUNNR,
       LAND1 
TYPE KNA1-LAND1,
       NAME1 
TYPE KNA1-NAME1,
       ORT01 
TYPE KNA1-ORT01,
       
END OF TY_KNA1.
DATA :I_KNA1 TYPE TABLE OF TY_KNA1 .DATA : WA_KNA1 TYPE TY_KNA1 .DATA : V_TITLE(25) TYPE C .DATA : V_LAND1 TYPE KNA1-LAND1 .DATA : V_FNAME TYPE STRING .
********************SELECTION SCREEN
PARAMETERS : P_LAND1 TYPE KNA1-LAND1 .PARAMETERS : P_FNAME TYPE RLGRAP-FILENAME .PARAMETERS : P_DLOAD AS CHECKBOX .

INITIALIZATION .
  
PERFORM INIT_VARIBALES.
*AT SELECTION-SCREEN OUTPUT .
AT SELECTION-SCREEN ON P_LAND1.
  
PERFORM VALIDATE_LAND1 .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
  
PERFORM GET_FILE_NAME .
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_FNAME .
  
PERFORM GET_HELP .
*AT SELECTION-SCREEN .
START-OF-SELECTION .
  
PERFORM gest_data.
END-OF-SELECTION .
IF P_DLOAD = 'X' .
  
PERFORM DOWNLOAD_DATA .ENDIF .

  
PERFORM DISPLAY_DATA .
TOP-OF-PAGE .
  
PERFORM DISPLAY_HEADING .
END-OF-PAGE .
  
PERFORM DISPLAY_FOOTER .


*&---------------------------------------------------------------------*
*& Form INIT_VARIBALES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text * <-- p2 text
*----------------------------------------------------------------------*
FORM INIT_VARIBALES .
  V_TITLE = 
'CUSTOMER MASTER REPORT' .
  P_LAND1 = 
'DE' .
ENDFORM. 
" INIT_VARIBALES
*&---------------------------------------------------------------------*
*& Form VALIDATE_LAND1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text * <-- p2 text
*----------------------------------------------------------------------*
FORM VALIDATE_LAND1 .
  
SELECT LAND1 FROM KNA1 INTO V_LAND1 UP TO ROWS WHERE LAND1 = P_LAND1.
  
ENDSELECT .
  
IF SY-SUBRC <> .
    
MESSAGE 'INVALID COUNTRY CODE' TYPE 'E' .
  
ENDIF .
ENDFORM. 
" VALIDATE_LAND1
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GEsT_DATA .
  
SELECT KUNNR LAND1 NAME1 ORT01 FROM KNA1 INTO TABLE I_KNA1 WHERE LAND1 = P_LAND1 .
  
IF SY-SUBRC <> .
    
MESSAGE 'NO DATA FOUND' TYPE 'I' .
  
ENDIF .
ENDFORM.                    
"GET_DATA
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_HEADING
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DISPLAY_HEADING .
  
WRITE : / SY-ULINE .
  
WRITE : /45 V_TITLE COLOR .
  
WRITE : / SY-ULINE .
ENDFORM.                    
"DISPLAY_HEADING

*&---------------------------------------------------------------------*
*&      Form  DISPLAY_FOOTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DISPLAY_FOOTER .
  
WRITE : / SY-ULINE .
  
WRITE : /45 'IBM INDIA PVT.LTD' COLOR .
  
WRITE : / SY-ULINE .
ENDFORM.                    
"DISPLAY_FOOTER
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
  
LOOP AT I_KNA1 INTO WA_KNA1 .
    
WRITE : / WA_KNA1-KUNNR ,
    WA_KNA1-LAND1 ,
    WA_KNA1-NAME1 ,
    WA_KNA1-ORT01 .
  
ENDLOOP .
ENDFORM.                    
"DISPLAY_DATA

*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DOWNLOAD_DATA .
  V_FNAME = P_FNAME .
  
CALL FUNCTION 'GUI_DOWNLOAD'
    
EXPORTING
      FILENAME              = V_FNAME 
"'C:\KNA1.TXT'
      FILETYPE              = 
'ASC' "ASC MEANS NOTEPAD FILE/DAT MEASN EXCEL FILE
      WRITE_FIELD_SEPARATOR = 
'X'
    
TABLES
      DATA_TAB              = I_KNA1.
  
IF SY-SUBRC = 0.
    
MESSAGE 'DATA IS SUCCESSFULLY DOWNLOADED' TYPE 'I'.
  ENDIF.
ENDFORM.                    
"DOWNLOAD_DATA
*&---------------------------------------------------------------------*
*&      Form  GET_FILE_NAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_FILE_NAME .
  
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    
EXPORTING
      PROGRAM_NAME  = SYST-REPID
      DYNPRO_NUMBER = SYST-DYNNR
      FIELD_NAME    = 
'P_FNAME'
    
CHANGING
      FILE_NAME     = P_FNAME.
  
IF SY-SUBRC <> 0.
  ENDIF.
endform.                    
"GET_FILE_NAME
*&---------------------------------------------------------------------*
*&      Form  GET_HELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_HELP .
  
MESSAGE 'PLEASE CLCIIK ON F4 FOR FILE NAME' TYPE 'I'.
ENDFORM.                    
"GET_HELP

Save --> Active --> Test

 


 







A Classical report 2: Select-Option with all EVENTS as per Real time Programming
Business Requirement Develop a mATERIAL Master Report to display Material no, type, Ind.Sector, language and Description.  


REPORT  ZCLASSICALREPORT3 NO STANDARD PAGE HEADING LINE-COUNT 34(3).

TYPES: 
BEGIN OF TY_MARA,
       MATNR 
TYPE MARA-MATNR,
       MTART 
TYPE MARA-MTART,
       MBRSH 
TYPE MARA-MBRSH,
       
END OF TY_MARA.
DATA : I_MARA TYPE TABLE OF TY_MARA,
       WA_MARA 
TYPE TY_MARA.

TYPES: 
BEGIN OF TY_MAKT,
       MATNR 
TYPE MAKT-MATNR,
       SPRAS 
TYPE MAKT-SPRAS,
       Maktx 
TYPE MAKT-MAKTX,
       
END OF TY_MAKT.
DATA : I_MAKT TYPE TABLE OF TY_MAKT,
       WA_MAKT 
TYPE TY_MAKT.


TYPES: 
BEGIN OF TY_FINAL,
       MATNR 
TYPE MARA-MATNR,
       MTART 
TYPE MARA-MTART,
       MBRSH 
TYPE MARA-MBRSH,
       MAKTX 
TYPE MAKT-MAKTX,
       SPRAS 
TYPE MAKT-SPRAS,
       
END OF TY_FINAL.
DATA : I_FINAL TYPE TABLE OF TY_FINAL.DATA : WA_FINAL TYPE TY_FINAL.DATA : V_TITLE(25) TYPE C.DATA : V_FNAME TYPE STRING.DATA : V_SPRAS TYPE MAKT-SPRAS.
************** SELECTION-SCREEN
TABLES MARA.SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.SELECT-OPTIONS SO_MATNR FOR MARA-MATNR.SELECTION-SCREEN SKIP.PARAMETERS P_SPRAS TYPE MAKT-SPRAS.SELECTION-SCREEN SKIP.PARAMETERS P_FNAME TYPE RLGRAP-FILENAME.SELECTION-SCREEN SKIP.PARAMETERS P_DLOAD AS CHECKBOX.SELECTION-SCREEN END OF BLOCK B1.

INITIALIZATION.
  
PERFORM INITIAL_VAR.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
  
PERFORM GET_FILENAME.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_FNAME.
  
PERFORM GET_HELP.
AT SELECTION-SCREEN.
  
PERFORM VALIDATE_SPRAS.

START-OF-SELECTION.
  
PERFORM GET_DATA.

END-OF-SELECTION.
IF P_DLOAD = 'X'.
  
PERFORM DOWNLOAD.
ENDIF.
PERFORM DISPLAY.

TOP-OF-PAGE.
  
PERFORM HEADER.

END-OF-PAGE.
  
PERFORM FOOTER.







*&---------------------------------------------------------------------*
*&      Form  INITIAL_VAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM INITIAL_VAR .
SO_MATNR-SIGN = 
'I'.
SO_MATNR-OPTION = 
'BT'.
SO_MATNR-LOW = 
'23'.
SO_MATNR-HIGH = 
'1000'.APPEND SO_MATNR.

P_SPRAS = 
'EN'.
ENDFORM.                    
" INITIAL_VAR

*&---------------------------------------------------------------------*
*&      Form  GET_FILENAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_FILENAME .CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
 
EXPORTING
   PROGRAM_NAME        = SYST-REPID
   DYNPRO_NUMBER       = SYST-DYNNR
   FIELD_NAME          = 
'P_FNAME '
*   STATIC              = ' '
*   MASK                = ' '
  
CHANGING
    FILE_NAME           = P_FNAME
* EXCEPTIONS
*   MASK_TOO_LONG       = 1
*   OTHERS              = 2
          .
IF SY-SUBRC = 0.
MESSAGE 'FILE NAME SELECTED' TYPE 'I'.
ENDIF.

ENDFORM.                    
" GET_FILENAME
*&---------------------------------------------------------------------*
*&      Form  GET_HELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_HELP .MESSAGE 'CLICK ON F4 FOR FILENAME' TYPE 'I'.
ENDFORM.                    
" GET_HELP
*&---------------------------------------------------------------------*
*&      Form  VALIDATE_SPRAS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM VALIDATE_SPRAS .SELECT SPRAS FROM MAKT INTO V_SPRAS WHERE SPRAS = P_SPRAS.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE 'PLEASE ENTER CORRECT LANGUAGE VALUE' TYPE 'I'.
ENDIF.
ENDFORM.                    
" VALIDATE_SPRAS
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT MATNR MTART MBRSH FROM MARA INTO TABLE I_MARA WHERE MATNR IN SO_MATNR.IF I_MARA IS NOT INITIAL.SELECT MATNR SPRAS MAKTX FROM MAKT INTO TABLE I_MAKT
  
FOR ALL ENTRIES IN I_MARA WHERE MATNR = I_MARA-MATNR
                            
AND SPRAS = P_SPRAS.
ENDIF.
SORT I_MARA BY MATNR.SORT I_MAKT BY MATNR.LOOP AT I_MAKT INTO WA_MAKT.READ TABLE I_MARA INTO WA_MARA WITH KEY MATNR = WA_MAKT-MATNR BINARY SEARCH.
WA_FINAL-MATNR = WA_MARA-MATNR.
WA_FINAL-MTART = WA_MARA-MTART.
WA_FINAL-MBRSH = WA_MARA-MBRSH.
WA_FINAL-SPRAS = WA_MAKT-SPRAS.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
APPEND WA_FINAL TO I_FINAL.
ENDLOOP.
ENDFORM.                    
" GET_DATA
*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DOWNLOAD .
V_FNAME = P_FNAME.
CALL FUNCTION 'GUI_DOWNLOAD'
  
EXPORTING

    FILENAME                        = V_FNAME
    FILETYPE                        = 
'ASC'
    WRITE_FIELD_SEPARATOR           = 
'X'
  
TABLES
    DATA_TAB                        = I_FINAL.
IF SY-SUBRC = 0.
MESSAGE 'DATA SUCCESSFULLY DOWNLOAD' TYPE 'I'.
ENDIF.

ENDFORM.                    
" DOWNLOAD
*&---------------------------------------------------------------------*
*&      Form  DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY .
LOOP AT I_FINAL INTO WA_FINAL .
WRITE:/ WA_FINAL-MATNR,
        WA_FINAL-MTART,
        WA_FINAL-MBRSH,
        WA_FINAL-SPRAS,
        WA_FINAL-MAKTX.
ENDLOOP.

ENDFORM.                    
" DISPLAY
*&---------------------------------------------------------------------*
*&      Form  HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM HEADER .
WRITE:/ SY-ULINE.
WRITE:/30 
'MATERIAL MASTER REPORT' COLOR 6.
WRITE:/ SY-ULINE.
ENDFORM.                    
" HEADER
*&---------------------------------------------------------------------*
*&      Form  FOOTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FOOTER .
WRITE:/ SY-ULINE.
WRITE:/30 
'ALL RIGHTS RESERVED @ HANU' COLOR 7.
WRITE:/ SY-ULINE.
ENDFORM.                    
" FOOTER


Save --> Active --> Test

 



 






A Classical report3 to modify Selection-Screen Dynamically as per Real time Programming

TABLES KNA1.TABLES LFA1.SELECT-OPTIONS SO_KUNNR FOR KNA1-KUNNR MODIF ID AAA.PARAMETERS : P_LAND1 TYPE KNA1-LAND1 MODIF ID AAA.SELECT-OPTIONS SO_LIFNR FOR LFA1-LIFNR MODIF ID BBB.PARAMETERS : P_LAND2 TYPE LFA1-LAND1 MODIF ID BBB.
PARAMETERS : P_CUST RADIOBUTTON GROUP RB1 DEFAULT 'X' USER-COMMAND UCOMM,
             P_VEND 
RADIOBUTTON GROUP RB1.
AT SELECTION-SCREEN OUTPUT.
  
IF P_CUST = 'X'.
    
LOOP AT SCREEN.
      
IF SCREEN-GROUP1 = 'AAA'.
        SCREEN-INPUT = 
'1'.
        
MODIFY SCREEN.
      
ELSEIF SCREEN-GROUP1 = 'BBB'.
        SCREEN-INPUT = 
'0'.
        
MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  
ELSEIF P_VEND = 'X'.
    
LOOP AT SCREEN.
      
IF SCREEN-GROUP1 = 'AAA'.
        SCREEN-INPUT = 
'0'.
        
MODIFY SCREEN.
      
ELSEIF SCREEN-GROUP1 = 'BBB'.
        SCREEN-INPUT = 
'1'.
        
MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
Save --> Active --> Test




Since customer radio button is selected, KUNNR AND P_LAND1 are enabled.


Since customer radio button is selected, KUNNR AND P_LAND1 are enabled.







A Classical report4 to differentiate AT SS ON FIELD & AT SS
as per Real time Programming

Using AT SS ON FIELD

TYPES BEGIN OF TY_VBAK,
  VBELN 
TYPE VBAK-VBELN,
  VKORG 
TYPE VBAK-VKORG,
  VTWEG 
TYPE VBAK-VTWEG,
  SPART 
TYPE VBAK-SPART,
  
END OF TY_VBAK.
DATA : I_VBAK TYPE TABLE OF TY_VBAK.TABLES : VBAK.DATA : V_VKORG TYPE VBAK-VKORG .DATA : V_VTWEG TYPE VBAK-VTWEG .DATA : V_SPART TYPE VBAK-SPART .
SELECT-OPTIONS : SO_VBELN FOR VBAK-VBELN .PARAMETERS : P_VKORG TYPE VBAK-VKORG .PARAMETERS : P_VTWEG TYPE VBAK-VTWEG.PARAMETERS : P_SPART TYPE VBAK-SPART .
AT SELECTION-SCREEN ON P_VKORG .
  
PERFORM VALIDATE_VKORG .
AT SELECTION-SCREEN ON P_VTWEG .
  
PERFORM VALIDATE_VTWEG .
AT SELECTION-SCREEN ON P_SPART .
  
PERFORM VALIDATE_SPART .


*&---------------------------------------------------------------------*
*&      Form  VALIDATE_VKORG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM VALIDATE_VKORG .
  
SELECT VKORG FROM VBAK
               
INTO V_VKORG UP TO ROWS
               
WHERE VKORG = P_VKORG.
  
ENDSELECT .
  
IF SY-SUBRC <> .
    
MESSAGE 'INVALID SALES ORG' TYPE 'E' .
  
ENDIF .
ENDFORM.                    
"VALIDATE_VKORG
*&---------------------------------------------------------------------*
*&      Form  VALIDATE_VTWEG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM VALIDATE_VTWEG .
  
SELECT VTWEG FROM VBAK
               
INTO V_VTWEG UP TO ROWS
               
WHERE VTWEG = P_VTWEG.
  
ENDSELECT .
  
IF SY-SUBRC <> .
    
MESSAGE 'INVALID DIST.CHANNEL' TYPE 'E' .
  
ENDIF .
ENDFORM.                    
"VALIDATE_VTWEG
*&---------------------------------------------------------------------*
*&      Form  VALIDATE_SPART
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM VALIDATE_SPART .
  
SELECT SPART FROM VBAK
               
INTO V_SPART UP TO ROWS
               
WHERE SPART = P_SPART.
  
ENDSELECT .
  
IF SY-SUBRC <> .
    
MESSAGE 'INVALID DIVISION' TYPE 'E' .
  
ENDIF .
ENDFORM.                    
"VALIDATE_SPART

Save --> Active --> Test

Using AT SS for Multiple Fields Validation
Same prog as above with below change

AT SELECTION-SCREEN .
  
PERFORM VALIDATE_VKORG .
  
PERFORM VALIDATE_VTWEG .
  
PERFORM VALIDATE_SPART .
START-OF-SELECTION .
END-OF-SELECTION .

Save->Act->Test->and observe the difference

Previous
Next Post »

1 comments:

Click here for comments
8 March 2022 at 10:46 ×

THANKS A LOT. MANY CONCEPTS ARE CLEARED BY YOUR EFFORTS AND HELP MAY GOD BLESS YOU.

Congrats bro Ali Bin Mabrook you got PERTAMAX...! hehehehe...
Reply
avatar