Report coding

Interactive Report that list purchase order details of a vendor. When the user double clicks on material number it shows detail list with fields matkl, meins, brgew, ntgew, gewei.The selection screen consist of sales organisation, distribution channel and material number. plz mention the detail coding

Hi,
TABLES DECLARATION
TABLES : KNA1, VBAK, VBAP.
*SELECT OPTIONS
SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.
*INITIALIZATION
INITIALIZATION.
CUST_NO-LOW = '01'.
CUST_NO-HIGH = '5000'.
CUST_NO-SIGN = 'I'.
CUST_NO-OPTION = 'BT'.
APPEND CUST_NO.
*SELECTION SCREEN VALIDATION
AT SELECTION-SCREEN ON CUST_NO.
LOOP AT SCREEN.
IF CUST_NO-LOW <> 5000.
MESSAGE E001(ZTJ1).
ENDIF.
ENDLOOP.
*BASIC LIST SELECTION
START-OF-SELECTION.
SELECT KUNNR NAME1 ORT01 LAND1 INTO
(KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
FROM KNA1
WHERE KUNNR IN CUST_NO.
WRITE:/1 SY-VLINE,
KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
KNA1-NAME1 UNDER 'NAME',
61 SY-VLINE,
KNA1-ORT01 UNDER 'CITY',
86 SY-VLINE,
KNA1-LAND1 UNDER 'COUNTRY',
103 SY-VLINE.
HIDE: KNA1-KUNNR.
ENDSELECT.
ULINE.
*SECONDARY LIST ACCESS
AT user-command.
IF SY-UCOMM = 'IONE'.
PERFORM SALES_ORD.
ENDIF.
IF SY-UCOMM = 'ITWO'.
PERFORM ITEM_DET.
ENDIF.
*TOP OF PAGE
TOP-OF-PAGE.
FORMAT COLOR 1.
WRITE : 'CUSTOMER DETAILS'.
FORMAT COLOR 1 OFF.
ULINE.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'NAME',
61 SY-VLINE,
63 'CITY',
86 SY-VLINE,
88 'COUNTRY',
103 SY-VLINE.
ULINE.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR SECONDARY LISTS
TOP-OF-PAGE DURING LINE-SELECTION.
*TOP OF PAGE FOR 1ST SECONDARY LIST
IF SY-UCOMM = 'IONE'.
ULINE.
FORMAT COLOR 1.
WRITE : 'SALES ORDER DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'SALES ORDER NO.',
40 SY-VLINE,
42 'DATE',
60 SY-VLINE,
62 'CREATOR',
85 SY-VLINE,
87 'DOC DATE',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR 2ND SECONDARY LIST
IF SY-UCOMM = 'ITWO'.
ULINE.
FORMAT COLOR 1.
WRITE : 'ITEM DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'SALES ORDER NO.',
40 SY-VLINE,
42 'SALES ITEM NO.',
60 SY-VLINE,
62 'ORDER QUANTITY',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*END OF PAGE
END-OF-PAGE.
ULINE.
WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
SY-PAGNO.
SKIP.
*& Form SALES_ORD
*& FIRST SECONDARY LIST FORM
FORM SALES_ORD .
SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
(VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
FROM VBAK
WHERE KUNNR = KNA1-KUNNR.
WRITE:/1 SY-VLINE,
VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
40 SY-VLINE,
VBAK-ERDAT UNDER 'DATE',
60 SY-VLINE,
VBAK-ERNAM UNDER 'CREATOR',
85 SY-VLINE,
VBAK-AUDAT UNDER 'DOC DATE',
103 SY-VLINE.
HIDE : VBAK-VBELN.
ENDSELECT.
ULINE.
ENDFORM. " SALES_ORD
*& Form ITEM_DET
*& SECOND SECONDARY LIST FORM
FORM ITEM_DET .
SELECT VBELN POSNR KWMENG INTO
(VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
FROM VBAP
WHERE VBELN = VBAK-VBELN.
WRITE : /1 SY-VLINE,
VBAP-VBELN UNDER 'SALES ORDER NO.',
40 SY-VLINE,
VBAP-POSNR UNDER 'SALES ITEM NO.',
60 SY-VLINE,
VBAP-KWMENG UNDER 'ORDER QUANTITY',
103 SY-VLINE.
ENDSELECT.
ULINE.
ENDFORM. " ITEM_DET
REPORT demo_list_at_pf.
START-OF-SELECTION.
WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'.
AT pf5.
PERFORM out.
AT pf6.
PERFORM out.
AT pf7.
PERFORM out.
AT pf8.
PERFORM out.
FORM out.
WRITE: 'Secondary List by PF-Key Selection',
/ 'SY-LSIND =', sy-lsind,
/ 'SY-UCOMM =', sy-ucomm.
ENDFORM.
After executing the program, the system displays the basic list. The user can press the function keys F5 , F6 , F7 , and F8 to create secondary lists. If, for example, the 14th key the user presses is F6 , the output on the displayed secondary list looks as follows:
Secondary List by PF-Key Selection
SY-LSIND = 14
SY-UCOMM = PF06
Example for AT USER-COMMAND.
REPORT demo_list_at_user_command NO STANDARD PAGE HEADING.
START-OF-SELECTION.
WRITE: 'Basic List',
/ 'SY-LSIND:', sy-lsind.
TOP-OF-PAGE.
WRITE 'Top-of-Page'.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
CASE sy-pfkey.
WHEN 'TEST'.
WRITE 'Self-defined GUI for Function Codes'.
ULINE.
ENDCASE.
AT LINE-SELECTION.
SET PF-STATUS 'TEST' EXCLUDING 'PICK'.
PERFORM out.
sy-lsind = sy-lsind - 1.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'FC1'.
PERFORM out.
WRITE / 'Button FUN 1 was pressed'.
WHEN 'FC2'.
PERFORM out.
WRITE / 'Button FUN 2 was pressed'.
WHEN 'FC3'.
PERFORM out.
WRITE / 'Button FUN 3 was pressed'.
WHEN 'FC4'.
PERFORM out.
WRITE / 'Button FUN 4 was pressed'.
WHEN 'FC5'.
PERFORM out.
WRITE / 'Button FUN 5 was pressed'.
ENDCASE.
sy-lsind = sy-lsind - 1.
FORM out.
WRITE: 'Secondary List',
/ 'SY-LSIND:', sy-lsind,
/ 'SY-PFKEY:', sy-pfkey.
ENDFORM.

Similar Messages

  • Alv report coding

    How will i create ALV Report that will show the details of order like order no, order date, customer, product code & description, order quantity and value along with the details of dispatch of those orders like invoice no, invoice date, invoice quantity and pending order quantity.
    plz mention the detail coding
    Tahnks,
    Priya Ranjan

    Hi,
    See the following example and change it according to ur requirement.
    *INTERACTIVE ALV REPORTS***
    *& Report  ZJE_ALV_INTRACTIVE1
    REPORT  zje_alv_intractive2.
    TYPE-POOLS: slis.
    TABLES: kna1, vbak ,vbap.
    *Type Declerations*****************************
    TYPES: BEGIN OF ty_kna1,
             xcpdk LIKE kna1-xcpdk,
             kunnr LIKE kna1-kunnr,
             land1 LIKE kna1-land1,
             name1 LIKE kna1-name1,
             ort01 LIKE kna1-ort01,
           END OF ty_kna1.
    TYPES: BEGIN OF ty_vbak,
             vbeln LIKE vbak-vbeln,
             erdat LIKE vbak-erdat,
             ernam LIKE vbak-ernam,
             netwr LIKE vbak-netwr,
           END OF ty_vbak.
    TYPES: BEGIN OF ty_vbap,
             vbeln LIKE vbap-vbeln,
             posnr LIKE vbap-posnr,
             matnr LIKE vbap-matnr,
           END OF ty_vbap.
    TYPES: BEGIN OF ty_mara,
             matnr LIKE mara-matnr,
             mtart LIKE mara-mtart,
             matkl LIKE mara-matkl,
             meins LIKE mara-meins,
           END OF ty_mara.
    *Data Declerations*****************************
    DATA: it_kna1 TYPE STANDARD TABLE OF ty_kna1,
          wa_kna1 TYPE ty_kna1.
    DATA: it_vbak TYPE STANDARD TABLE OF ty_vbak,
          wa_vbak TYPE ty_vbak.
    DATA: it_vbap TYPE STANDARD TABLE OF ty_vbap,
          wa_vbap TYPE ty_vbap.
    DATA: it_mara TYPE STANDARD TABLE OF ty_mara,
          wa_mara TYPE ty_mara.
    DATA: list1 TYPE i VALUE 0.
    DATA: list(5) TYPE c .
    DATA: page(5) TYPE c.
    DATA: wa_layout TYPE slis_layout_alv,
          it_fieldcat TYPE slis_t_fieldcat_alv,
          wa_fieldcat TYPE slis_fieldcat_alv,
          it_event_kna1 TYPE slis_t_event,
          wa_event_kna1 TYPE slis_alv_event,
          it_event_vbak TYPE slis_t_event,
          wa_event_vbak TYPE slis_alv_event,
          it_event_vbap TYPE slis_t_event,
          wa_event_vbap TYPE slis_alv_event,
          it_listheader TYPE slis_t_listheader,
          wa_listheader TYPE slis_listheader,
          it_sort TYPE slis_t_sortinfo_alv,
          wa_sort TYPE slis_sortinfo_alv.
    DATA: i_title_kna1 TYPE lvc_title VALUE 'FIRST LIST DISPLAYED',
          i_title_vbak TYPE lvc_title VALUE 'SECONDRY LIST DISPLAYED',
          i_title_vbap TYPE lvc_title VALUE 'TERTIARY LIST DISPLAYED'.
    SELECT-OPTIONS: s_kunnr FOR kna1-kunnr DEFAULT 1000 TO 1500.
    *Initialization********************************
    INITIALIZATION.
      PERFORM layout.
      PERFORM fieldcat_kna1.
      PERFORM event_kna1.
      PERFORM eventpopulate_kna1.
    *START OF SELECTION****************************
    START-OF-SELECTION.
      PERFORM datafetch_kna1.
      PERFORM displaygrid_kna1.
    *&      Form  layout
          text
    -->  p1        text
    <--  p2        text
    FORM layout .
      wa_layout-zebra = 'X'.
    wa_layout-colwidth_optimize = 'X'.
    wa_layout-totals_text = 'GRAND_TOTAL'.
    wa_layout-subtotals_text = 'SUB_TOTAL'.
      wa_layout-edit = 'X'.
    wa_layout-Box_fieldname = 'X'.
    ENDFORM.                    " layout
    *FIELD CATALOUGE*******************************
    *&      Form  fieldcat_kna1
          text
    -->  p1        text
    <--  p2        text
    FORM fieldcat_kna1 .
      REFRESH it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-checkbox = 'X'.
      wa_fieldcat-fieldname = 'XCPDK'.
      wa_fieldcat-seltext_l = 'CHECK'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 5.
      wa_fieldcat-tabname = 'IT_KNA1'.
      wa_fieldcat-col_pos = 1.
      wa_fieldcat-emphasize = 'C11'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'KUNNR'.
      wa_fieldcat-seltext_l = 'CUSTOMER NUMBER'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 30.
      wa_fieldcat-tabname = 'IT_KNA1'.
      wa_fieldcat-key = 'X'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 2.
      wa_fieldcat-emphasize = 'C21'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'LAND1'.
      wa_fieldcat-seltext_l = 'COUNTRY CODE'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 30.
      wa_fieldcat-tabname = 'IT_KNA1'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 5.
      wa_fieldcat-emphasize = 'C31'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'NAME1'.
      wa_fieldcat-seltext_l = 'CUSTOMER NAME'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 35.
      wa_fieldcat-tabname = 'IT_KNA1'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C71'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'ORT01'.
      wa_fieldcat-seltext_l = 'COUNTRY '.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 30.
      wa_fieldcat-tabname = 'IT_KNA1'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 4.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " fieldcat_kna1
    *&      Form  FIELDCAT_VBAK
          text
    -->  p1        text
    <--  p2        text
    FORM fieldcat_vbak .
      REFRESH it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'VBELN'.
      wa_fieldcat-seltext_l = 'SALES ORDER'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 30.
      wa_fieldcat-tabname = 'IT_VBAK'.
      wa_fieldcat-key = 'X'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 1.
      wa_fieldcat-emphasize = 'C71'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'ERDAT'.
      wa_fieldcat-seltext_l = 'CREATED ON'.
      wa_fieldcat-datatype = 'DATS'.
      wa_fieldcat-outputlen = 35.
      wa_fieldcat-tabname = 'IT_VBAK'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'ERNAM'.
      wa_fieldcat-seltext_l = 'CREATED BY'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 35.
      wa_fieldcat-tabname = 'IT_VBAK'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 2.
      wa_fieldcat-emphasize = 'C61'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'NETWR'.
      wa_fieldcat-seltext_l = 'NET VALUE'.
      wa_fieldcat-datatype = 'CURR'.
      wa_fieldcat-outputlen = 30.
      wa_fieldcat-tabname = 'IT_VBAK'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 4.
      wa_fieldcat-emphasize = 'C91'.
      wa_fieldcat-do_sum = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " FIELDCAT_VBAK
    *&      Form  fieldcat_vbap
          text
    -->  p1        text
    <--  p2        text
    FORM fieldcat_vbap .
      REFRESH it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'VBELN'.
      wa_fieldcat-seltext_l = 'SALES ORDER'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 25.
      wa_fieldcat-tabname = 'IT_VBAP'.
      wa_fieldcat-key = 'X'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 1.
      wa_fieldcat-emphasize = 'C11'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'POSNR'.
      wa_fieldcat-seltext_l = 'ITEM NUMBER'.
      wa_fieldcat-datatype = 'NUMC'.
      wa_fieldcat-outputlen = 25.
      wa_fieldcat-tabname = 'IT_VBAP'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 2.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MATNR'.
      wa_fieldcat-seltext_l = 'MATERIAL NUMBER'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 30.
      wa_fieldcat-tabname = 'IT_VBAP'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C61'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MATWA'.
      wa_fieldcat-seltext_l = 'MATERIAL ENTERED'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 25.
      wa_fieldcat-tabname = 'IT_VBAP'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C71'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MATKL'.
      wa_fieldcat-seltext_l = 'MATERIAL GROUP'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 25.
      wa_fieldcat-tabname = 'IT_VBAP'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C81'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " fieldcat_vbap
    *&      Form  fieldcat_MARA
          text
    -->  p1        text
    <--  p2        text
    FORM fieldcat_mara .
      REFRESH it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MATNR'.
      wa_fieldcat-seltext_l = 'MATERIAL NUMBER'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 15.
      wa_fieldcat-tabname = 'IT_MARA'.
      wa_fieldcat-key = 'X'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MTART'.
      wa_fieldcat-seltext_l = 'MATERIAL TYPE'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 15.
      wa_fieldcat-tabname = 'IT_MARA'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MATKL'.
      wa_fieldcat-seltext_l = 'MATERIAL GROUP'.
      wa_fieldcat-datatype = 'CHAR'.
      wa_fieldcat-outputlen = 15.
      wa_fieldcat-tabname = 'IT_MARA'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'MEINS'.
      wa_fieldcat-seltext_l = 'UNITS OF MEASUREMENT'.
      wa_fieldcat-datatype = 'UNIT'.
      wa_fieldcat-outputlen = 22.
      wa_fieldcat-tabname = 'IT_MARA'.
      wa_fieldcat-col_pos = 3.
      wa_fieldcat-emphasize = 'C51'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " fieldcat_MARA
    *END OF FIELD CATLOUGE*************************
    *EVENT CALLS***********************************
    *&      Form  event
          text
    -->  p1        text
    <--  p2        text
    FORM event_kna1.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event_kna1
        EXCEPTIONS
          list_type_wrong = 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.
    ENDFORM.                    " event
    *&      Form  event_vbak
          text
    -->  p1        text
    <--  p2        text
    FORM event_vbak .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event_vbak
        EXCEPTIONS
          list_type_wrong = 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.
    ENDFORM.                    " event_vbak
    *&      Form  event_vbaP
          text
    -->  p1        text
    <--  p2        text
    FORM event_vbap .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event_vbap
        EXCEPTIONS
          list_type_wrong = 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.
    ENDFORM.                    " event_vbaP
    *END OF EVENT CALLS****************************
    *EVENT POPULATE********************************
    *&      Form  eventpopulate
          text
    -->  p1        text
    <--  p2        text
    FORM eventpopulate_kna1.
      READ TABLE it_event_kna1 INTO wa_event_kna1 WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_event_kna1-form = 'TOP_OF_PAGE'.
        MODIFY it_event_kna1 FROM wa_event_kna1 TRANSPORTING form WHERE name = wa_event_kna1-name.
      ENDIF.
      READ TABLE it_event_kna1 INTO wa_event_kna1 WITH KEY name = 'END_OF_LIST'.
      IF sy-subrc = 0.
        wa_event_kna1-form = 'END_OF_LIST'.
        MODIFY it_event_kna1 FROM wa_event_kna1 TRANSPORTING form WHERE name = wa_event_kna1-name.
      ENDIF.
      READ TABLE it_event_kna1 INTO wa_event_kna1 WITH KEY name = 'USER_COMMAND'.
      IF sy-subrc EQ 0.
        wa_event_kna1-form = 'USER_COMMAND'.
        MODIFY it_event_kna1 FROM wa_event_kna1 TRANSPORTING form WHERE name = wa_event_kna1-name.
      ENDIF.
    ENDFORM.                    " eventpopulate
    *&      Form  eventpopulate_vbak
          text
    -->  p1        text
    <--  p2        text
    FORM eventpopulate_vbak .
      READ TABLE it_event_vbak INTO wa_event_vbak WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_event_vbak-form = 'TOP_OF_PAGE_1'.
        MODIFY it_event_vbak FROM wa_event_vbak TRANSPORTING form WHERE name = wa_event_vbak-name.
      ENDIF.
      READ TABLE it_event_vbak INTO wa_event_vbak WITH KEY name = 'USER_COMMAND'.
      IF sy-subrc EQ 0.
        wa_event_vbak-form = 'USER_COMMAND_1'.
        MODIFY it_event_vbak FROM wa_event_vbak TRANSPORTING form WHERE name = wa_event_vbak-name.
      ENDIF.
    ENDFORM.                    " eventpopulate_vbak
    *&      Form  eventpopulate_vbap
          text
    -->  p1        text
    <--  p2        text
    FORM eventpopulate_vbap .
      READ TABLE it_event_vbap INTO wa_event_vbap WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_event_vbap-form = 'TOP_OF_PAGE_2'.
        MODIFY it_event_vbap FROM wa_event_vbap TRANSPORTING form WHERE name = wa_event_vbap-name.
      ENDIF.
      READ TABLE it_event_vbap INTO wa_event_vbap WITH KEY name = 'USER_COMMAND_3'.
      IF sy-subrc = 0.
        wa_event_vbap-form = 'USER_COMMAND_3'.
        MODIFY it_event_vbap FROM wa_event_vbap TRANSPORTING form WHERE name = wa_event_vbap-name.
      ENDIF.
    ENDFORM.                    " eventpopulate_vbap
    *END OF EVENT POPULATE*************************
    **SUBROUTINE FOR  PAGE **************************
    *&      Form  TOP_OF_PAGE
          text
    FORM top_of_page.
      wa_listheader-typ = 'H'.
      wa_listheader-info = 'Customer Details' .
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ  = 'S'.
      wa_listheader-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_listheader-info.   "todays date
      APPEND wa_listheader TO it_listheader.
      CLEAR: wa_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'No of Records'.
      wa_listheader-info = list.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'Page No '.
      wa_listheader-info = page.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_listheader
          i_logo                   = 'JELOGO'
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
      REFRESH it_listheader.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  TOP_OF_PAGE1
          text
    FORM top_of_page_1.
      wa_listheader-typ = 'H'.
      wa_listheader-info = 'Sales Details'.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ  = 'S'.
      wa_listheader-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_listheader-info.   "todays date
      APPEND wa_listheader TO it_listheader.
      CLEAR: wa_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'No of Records'.
      wa_listheader-info = list.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'Page No '.
      wa_listheader-info = page.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_listheader
          i_logo                   = 'JELOGO'
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
      REFRESH it_listheader.
    ENDFORM.                    "TOP_OF_PAGE1
    *&      Form  TOP_OF_PAGE_2
          text
    FORM top_of_page_2.
      wa_listheader-typ = 'H'.
      wa_listheader-info = 'Item Details' .
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ  = 'S'.
      wa_listheader-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_listheader-info.   "todays date
      APPEND wa_listheader TO it_listheader.
      CLEAR: wa_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'No of Records'.
      wa_listheader-info = list.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'Page No '.
      wa_listheader-info = page.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_listheader
          i_logo                   = 'ENJOYSAP_LOGO'
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
      REFRESH it_listheader.
    ENDFORM.                    "TOP_OF_PAGE_2
    **END FOR SUBROUTINES OF  TOP OF PAGE ***********
    *SUBROUTINE FOR  END OF LIST*******************
    *&      Form  END_OF_LIST
          text
    FORM end_of_list.
      wa_listheader-typ = 'S'.
      wa_listheader-key = 'Page No '.
      wa_listheader-info = page.
      APPEND wa_listheader TO it_listheader.
      CLEAR wa_listheader.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_listheader
         i_logo                   = 'JELOGO'
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    REFRESH it_listheader.
      REFRESH it_listheader.
    ENDFORM.                    "END_OF_LIST
    *&      Form  datafetch_kna1
          text
    -->  p1        text
    <--  p2        text
    FORM datafetch_kna1 .
      SELECT  xcpdk kunnr land1 name1 ort01
             FROM kna1
             INTO TABLE it_kna1
             WHERE kunnr IN s_kunnr.
      DESCRIBE TABLE it_kna1 LINES list1.
      list = list1.
    ENDFORM.                    " datafetch_kna1
    *&      Form  displaygrid_kna1
          text
    -->  p1        text
    <--  p2        text
    FORM displaygrid_kna1 .
      page = sy-pagno.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ''
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
         i_callback_user_command           = 'USER_COMMAND'
         i_callback_top_of_page            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       i_grid_title                      = i_title_kna1
      I_GRID_SETTINGS                   =
         is_layout                         = wa_layout
         it_fieldcat                       = it_fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
         it_events                         = it_event_kna1
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_kna1
       EXCEPTIONS
         program_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.
    ENDFORM.                    " displaygrid_kna1
    *&      Form  USER_COMMAND
          text
         -->UCOMM      text
         -->R_SELFIELD text
    FORM user_command
         USING ucomm  TYPE sy-ucomm
               r_selfield TYPE slis_selfield.
      SELECT kunnr vbeln erdat ernam netwr
             FROM vbak
             INTO CORRESPONDING FIELDS OF TABLE it_vbak
             WHERE kunnr = r_selfield-value.
      PERFORM fieldcat_vbak.
      PERFORM event_vbak.
      PERFORM eventpopulate_vbak.
      PERFORM sort.
      PERFORM displaygrid_vbak.
    ENDFORM.                    "USER_COMMAND
    *&      Form  sort
          text
    -->  p1        text
    <--  p2        text
    FORM sort .
      wa_sort-fieldname = 'ERNAM'.
      wa_sort-tabname = 'IT_VBAK'.
      wa_sort-subtot = 'X'.
      wa_sort-up = 'X'.
      APPEND wa_sort TO it_sort.
      CLEAR wa_sort.
    ENDFORM.                    " sort
    *&      Form  DISPLAYGRID_VBAK
          text
    -->  p1        text
    <--  p2        text
    FORM displaygrid_vbak .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
       i_callback_user_command           = 'USER_COMMAND_1'
       i_callback_top_of_page            = 'TOP_OF_PAGE_1'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ''
       i_grid_title                      = i_title_vbak
      I_GRID_SETTINGS                   =
         is_layout                         = wa_layout
         it_fieldcat                       = it_fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
       it_sort                           = it_sort
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
         it_events                         = it_event_vbak
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_vbak
       EXCEPTIONS
         program_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.
    ENDFORM.                    " DISPLAYGRID_VBAK
    *&      Form  USER_COMMAND1
          text
    FORM user_command_1
         USING ucomm LIKE sy-ucomm
               r_selfield1 TYPE slis_selfield.
      SELECT vbeln posnr matnr
             FROM vbap
             INTO TABLE it_vbap
             WHERE vbeln = r_selfield1-value.
      PERFORM fieldcat_vbap.
      PERFORM displaygrid_vbap.
      PERFORM event_vbap.
      PERFORM eventpopulate_vbap.
    ENDFORM.                    "USER_COMMAND1
    *&      Form  displaygrid_vbap
          text
    -->  p1        text
    <--  p2        text
    FORM displaygrid_vbap .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
       i_callback_user_command           = 'USER_COMMAND_3 '
       i_callback_top_of_page            = 'TOP_OF_PAGE_2 '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       i_grid_title                      = i_title_vbap
      I_GRID_SETTINGS                   =
        is_layout                         = wa_layout
         it_fieldcat                       = it_fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
         it_events                         = it_event_vbap
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_vbap
       EXCEPTIONS
         program_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.
    ENDFORM.                    " displaygrid_vbap
    &----

  • Crystal report coding book

    Hi experts,
    Is there any book or link which gives the description for coding in crystal reports.
    I am using cube as my database. I am new in this. Is there any link which provides me some basics of grouping, OLAP etc. Please help me on this.
    Thankx in Advance,
    Rishit
    Edited by: Rishit Kamdar on Apr 14, 2009 12:37 PM

    Hi Rishit,
    Try the following link for sample reports. You can get to understand the coding in reports by looking at the comments within the formula.
    Crystal Reports Samples
    http://www.crystalbook.com/crpr/program/book/samples.asp
    Thanks,
    Amogh

  • Interactive report coding without using LVs

    hi...can i get coding for interactive report without using ALVs?

    Hi Rakkasi....
    here i am pastina a Two levels Code for NON ALV Interactive report....
    just copy and paste this code into your sample editor program and run it...
    and see the code ...its simple...
    <b>Reward points if helpful,</b>
    Here is the code....
    *& Report  ZTEJ_INTAB1                                                 *
    REPORT  ZTEJ_INTAB1 LINE-SIZE 103 LINE-COUNT 35(5) NO STANDARD PAGE
    HEADING.
    *TABLES DECLARATION
    TABLES : KNA1, VBAK, VBAP.
    *SELECT OPTIONS
    SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.
    *INITIALIZATION
    INITIALIZATION.
        CUST_NO-LOW = '01'.
        CUST_NO-HIGH = '5000'.
        CUST_NO-SIGN = 'I'.
        CUST_NO-OPTION = 'BT'.
        APPEND CUST_NO.
    *SELECTION SCREEN VALIDATION
    AT SELECTION-SCREEN ON CUST_NO.
        LOOP AT SCREEN.
            IF CUST_NO-LOW < 1 OR CUST_NO-HIGH > 5000.
              MESSAGE E001(ZTJ1).
             ENDIF.
        ENDLOOP.
    *BASIC LIST SELECTION
    START-OF-SELECTION.
        SELECT KUNNR NAME1 ORT01 LAND1 INTO
               (KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
               FROM KNA1
               WHERE KUNNR IN CUST_NO.
              WRITE:/1 SY-VLINE,
                    KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
                    16 SY-VLINE,
                    KNA1-NAME1 UNDER 'NAME',
                    61 SY-VLINE,
                    KNA1-ORT01 UNDER 'CITY',
                    86 SY-VLINE,
                    KNA1-LAND1 UNDER 'COUNTRY',
                    103 SY-VLINE.
        HIDE: KNA1-KUNNR.
        ENDSELECT.
        ULINE.
    *SECONDARY LIST ACCESS
    AT LINE-SELECTION.
        IF SY-LSIND = 1.
            PERFORM SALES_ORD.
        ENDIF.
        IF SY-LSIND = 2.
            PERFORM ITEM_DET.
        ENDIF.
    *TOP OF PAGE
    TOP-OF-PAGE.
            FORMAT COLOR 1.
            WRITE : 'CUSTOMER DETAILS'.
            FORMAT COLOR 1 OFF.
            ULINE.
            FORMAT COLOR 3.
            WRITE : 1 SY-VLINE,
                    3 'CUSTOMER NO.',
                    16 SY-VLINE,
                    18 'NAME',
                    61 SY-VLINE,
                    63 'CITY',
                    86 SY-VLINE,
                    88 'COUNTRY',
                    103 SY-VLINE.
                    ULINE.
          FORMAT COLOR 3 OFF.
    *TOP OF PAGE FOR SECONDARY LISTS
    TOP-OF-PAGE DURING LINE-SELECTION.
    *TOP OF PAGE FOR 1ST SECONDARY LIST
        IF SY-LSIND = 1.
                     ULINE.
      FORMAT COLOR 1.
      WRITE : 'SALES ORDER DETAILS'.
                     ULINE.
      FORMAT COLOR 1 OFF.
      FORMAT COLOR 3.
            WRITE : 1 SY-VLINE,
                    3 'CUSTOMER NO.',
                    16 SY-VLINE,
                    18 'SALES ORDER NO.',
                    40 SY-VLINE,
                    42 'DATE',
                    60 SY-VLINE,
                    62 'CREATOR',
                    85 SY-VLINE,
                    87 'DOC DATE',
                    103 SY-VLINE.
                    ULINE.
          ENDIF.
          FORMAT COLOR 3 OFF.
    *TOP OF PAGE FOR 2ND SECONDARY LIST
    IF SY-LSIND = 2.
                     ULINE.
          FORMAT COLOR 1.
          WRITE : 'ITEM DETAILS'.
          ULINE.
          FORMAT COLOR 1 OFF.
    FORMAT COLOR 3.
            WRITE : 1 SY-VLINE,
                    3  'SALES ORDER NO.',
                    40 SY-VLINE,
                    42 'SALES ITEM NO.',
                    60 SY-VLINE,
                    62 'ORDER QUANTITY',
                    103 SY-VLINE.
                    ULINE.
        ENDIF.
    FORMAT COLOR 3 OFF.
    *END OF PAGE
    END-OF-PAGE.
         ULINE.
    WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
    SY-PAGNO.
          SKIP.
    *&      Form  SALES_ORD
    *&      FIRST SECONDARY LIST FORM
    FORM SALES_ORD .
    SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
           (VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
           FROM VBAK
           WHERE KUNNR = KNA1-KUNNR.
           WRITE:/1 SY-VLINE,
                   VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
                   16 SY-VLINE,
                   VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
                   40 SY-VLINE,
                   VBAK-ERDAT UNDER 'DATE',
                   60 SY-VLINE,
                   VBAK-ERNAM UNDER 'CREATOR',
                   85 SY-VLINE,
                   VBAK-AUDAT UNDER 'DOC DATE',
                   103 SY-VLINE.
          HIDE : VBAK-VBELN.
    ENDSELECT.
    ULINE.
    ENDFORM.                    " SALES_ORD
    *&      Form  ITEM_DET
    *&      SECOND SECONDARY LIST FORM
    FORM ITEM_DET .
      SELECT VBELN POSNR KWMENG INTO
             (VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
             FROM VBAP
             WHERE VBELN = VBAK-VBELN.
             WRITE : /1 SY-VLINE,
                       VBAP-VBELN UNDER 'SALES ORDER NO.',
                       40 SY-VLINE,
                       VBAP-POSNR UNDER 'SALES ITEM NO.',
                       60 SY-VLINE,
                       VBAP-KWMENG UNDER 'ORDER QUANTITY',
                       103 SY-VLINE.
            ENDSELECT.
            ULINE.
            ENDFORM.                    " ITEM_DET
    Regards,
    Tejas

  • Interactive report coding

    hi can i know the coding for interactive report

    Hi ,
    Have a look at this Interactive ALV report.
    REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
    MESSAGE-ID ZZ_9838 .
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
    EBELN LIKE EKKO-EBELN,
    AEDAT LIKE EKKO-AEDAT,
    BUKRS LIKE EKKO-BUKRS,
    BSART LIKE EKKO-BSART,
    LIFNR LIKE EKKO-LIFNR,
    END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
    WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
    EBELN LIKE EKPO-EBELN,
    EBELP LIKE EKPO-EBELP,
    MATNR LIKE EKPO-MATNR,
    MENGE LIKE EKPO-MENGE,
    MEINS LIKE EKPO-MEINS,
    NETPR LIKE EKPO-NETPR,
    END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
    WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    declaration for events table where user comand or set PF status will
    be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
    WA_EVENT TYPE SLIS_ALV_EVENT.
    declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
    I_VARIANT1 TYPE DISVARIANT,
    I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
    V_REPID = SY-REPID.
    PERFORM BUILD_FIELDCATLOG.
    PERFORM EVENT_CALL.
    PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
    PERFORM DATA_RETRIEVAL.
    PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
    PERFORM DISPLAY_ALV_REPORT.
    *& Form BUILD_FIELDCATLOG
    Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'EBELN'.
    WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'AEDAT'.
    WA_FIELDCAT-SELTEXT_M = 'DATE.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'BUKRS'.
    WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'BUKRS'.
    WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'LIFNR'.
    WA_FIELDCAT-NO_OUT = 'X'.
    WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    ENDFORM. "BUILD_FIELDCATLOG
    *& Form EVENT_CALL
    we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 0
    IMPORTING
    ET_EVENTS = V_EVENTS
    EXCEPTIONS
    LIST_TYPE_WRONG = 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.
    ENDFORM. "EVENT_CALL
    *& Form POPULATE_EVENT
    Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
    READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    IF SY-SUBRC EQ 0.
    WA_EVENT-FORM = 'TOP_OF_PAGE'.
    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
    ENDIF.
    READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
    IF SY-SUBRC EQ 0.
    WA_EVENT-FORM = 'USER_COMMAND'.
    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
    ENDIF.
    ENDFORM. "POPULATE_EVENT
    *& Form data_retrieval
    retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
    SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM. "data_retrieval
    *& Form bUild_listheader
    text
    -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA HLINE TYPE SLIS_LISTHEADER.
    HLINE-INFO = 'this is my first alv pgm'.
    HLINE-TYP = 'H'.
    ENDFORM. "build_listheader
    *& Form display_alv_report
    text
    FORM DISPLAY_ALV_REPORT.
    V_REPID = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = V_REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
    I_GRID_TITLE = I_TITLE_EKKO
    I_GRID_SETTINGS =
    IS_LAYOUT = ALV_LAYOUT
    IT_FIELDCAT = I_FIELDCAT[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    i_default = 'ZLAY1'
    I_SAVE = 'A'
    is_variant = i_variant
    IT_EVENTS = V_EVENTS
    TABLES
    T_OUTTAB = IT_EKKO
    EXCEPTIONS
    PROGRAM_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.
    ENDFORM. "display_alv_report
    *& Form TOP_OF_PAGE
    text
    FORM TOP_OF_PAGE.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    IT_LIST_COMMENTARY = IT_LISTHEADER
    i_logo =
    I_END_OF_LIST_GRID =
    ENDFORM. "TOP_OF_PAGE
    *& Form USER_COMMAND
    text
    -->R_UCOMM text
    -->, text
    -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
    CASE R_UCOMM.
    WHEN '&IC1'.
    READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
    PERFORM BUILD_FIELDCATLOG_EKPO.
    PERFORM EVENT_CALL_EKPO.
    PERFORM POPULATE_EVENT_EKPO.
    PERFORM DATA_RETRIEVAL_EKPO.
    PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
    PERFORM DISPLAY_ALV_EKPO.
    ENDCASE.
    ENDFORM. "user_command
    *& Form BUILD_FIELDCATLOG_EKPO
    text
    FORM BUILD_FIELDCATLOG_EKPO.
    WA_FIELDCAT-TABNAME = 'IT_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'EBELN'.
    WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'EBELP'.
    WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'MATNR'.
    WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'MENGE'.
    WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'MEINS'.
    WA_FIELDCAT-SELTEXT_M = 'UOM'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'NETPR'.
    WA_FIELDCAT-SELTEXT_M = 'PRICE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    ENDFORM. "BUILD_FIELDCATLOG_EKPO
    *& Form event_call_ekpo
    we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 0
    IMPORTING
    ET_EVENTS = V_EVENTS
    EXCEPTIONS
    LIST_TYPE_WRONG = 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.
    ENDFORM. "event_call_ekpo
    *& Form POPULATE_EVENT
    Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
    READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    IF SY-SUBRC EQ 0.
    WA_EVENT-FORM = 'TOP_OF_PAGE'.
    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
    ENDIF.
    ENDFORM. "POPULATE_EVENT
    *& Form TOP_OF_PAGE
    text
    FORM F_TOP_OF_PAGE.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    IT_LIST_COMMENTARY = IT_LISTHEADER
    i_logo =
    I_END_OF_LIST_GRID =
    ENDFORM. "TOP_OF_PAGE
    *& Form USER_COMMAND
    text
    -->R_UCOMM text
    -->, text
    -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'CHECKING PGM'.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER = ' '
    I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = V_REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
    I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
    I_CALLBACK_HTML_TOP_OF_PAGE = ' '
    I_CALLBACK_HTML_END_OF_LIST = ' '
    I_STRUCTURE_NAME =
    I_BACKGROUND_ID = ' '
    I_GRID_TITLE = I_TITLE_EKPO
    I_GRID_SETTINGS =
    IS_LAYOUT =
    IT_FIELDCAT = I_FIELDCAT[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT =
    I_SAVE = 'A'
    IS_VARIANT =
    IT_EVENTS = V_EVENTS
    TABLES
    T_OUTTAB = IT_EKPO
    EXCEPTIONS
    PROGRAM_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.
    ENDFORM.
    Hope this resolves your query.
    Reward all the helpful answers.
    Regards

  • Classical report coding

    can anybody send coding for classical report?

    hi,
    check the code below
    *& Report  ZWK12346
    REPORT  zwk12346 LINE-SIZE 160 LINE-COUNT 35(3) NO STANDARD PAGE HEADING.
    ...............DECLARATION OF TABLES..................................
    TABLES: mkpf,
            mseg,
            makt.
    .............AT SELECTION SCREEN.....................................*
    SELECT-OPTIONS b FOR mkpf-mblnr. "Document no.
    PARAMETERS: a TYPE mkpf-mjahr. "Document year.
    DATA: am TYPE mseg-dmbtr VALUE 0.
    .................DECLARATION OF WORK AREA.............................
    DATA: BEGIN OF wa,
          mblnr TYPE mkpf-mblnr,
          mjahr TYPE mkpf-mjahr,
          budat TYPE mkpf-budat,
          matnr TYPE mseg-matnr,
          maktx TYPE makt-maktx,
          werks TYPE mseg-werks,
          dmbtr TYPE mseg-dmbtr,
          END OF wa.
    ..............INTERNAL TABLE DELARATION..............................*
    DATA: itab LIKE STANDARD TABLE OF wa.
    ...............CONSTANT...............................................
    ...............GLOBAL VARIABLES.......................................
    ..............TOP-OF-PAGE.............................................
    TOP-OF-PAGE.
      FORMAT COLOR COL_HEADING.
      WRITE: / sy-uline(150).
      WRITE:/ sy-vline,
             3 'Document No.',
             17 sy-vline,
             20 'Document Year',
             37 sy-vline,
             38 'Posting Date',
             54 sy-vline,
             56 'Material No.',
             72 sy-vline,
             74 'Description',
             118 sy-vline,
             120 'Plant',
             130 sy-vline,
             132 'Amount',
             150 sy-vline.
      WRITE: / sy-uline(150).
      FORMAT RESET.
    .............END-OF-PAGE.............................................
    END-OF-PAGE.
      WRITE: / sy-uline(150).
      FORMAT COLOR COL_TOTAL.
      WRITE: /128 'Total', am.
    ......................START OF SELECTION.............................
    START-OF-SELECTION.
      SELECT mmblnr mmjahr mbudat qmatnr pmaktx qwerks q~dmbtr INTO CORRESPONDING FIELDS OF TABLE itab
             FROM ( ( mkpf AS m INNER JOIN mseg AS q ON mmblnr = qmblnr )
                      INNER JOIN makt AS p ON pmatnr = qmatnr )
                       WHERE m~mjahr = a.
    ..............Exit if Data is not fetched............................
      IF sy-subrc NE 0.
        WRITE: / 'No data selected'.
        EXIT.
      ENDIF.
    .....................END OF SELECTION................................
      LOOP AT itab INTO wa.
        WRITE:/ sy-vline,
               3 wa-mblnr COLOR COL_KEY,
               17 sy-vline COLOR COL_KEY,
                20 wa-mjahr COLOR COL_KEY,
                37 sy-vline,
                 38 wa-budat,54 sy-vline,
                 56 wa-matnr COLOR COL_KEY,
                 72 sy-vline,
                 74 wa-maktx,
                118 sy-vline,
                 120 wa-werks,
                 130 sy-vline,
                 132 wa-dmbtr,
                 150 sy-vline.
      ENDLOOP.
      WRITE: / sy-uline(150).
    regards,
    Navneeth.K

  • Interactive reports coding

    How to create Reports with Radio Buttons, which gives sales information, Delivery information and Billing information. plz mention the detail coding
    Thanks,
    Priya Ranjan

    hi,,
    *& Report Z50813_SD_REPT_SALESDATA1
    REPORT Z50813_SD_REPT_SALESDATA1.
    *-----TABLES DECLARATION
    TABLES : KNA1, "Customer Master
    vbak, "Sales Document Header
    VBAP, "Sales Document Item
    SSCRFIELDS. "Screen Field Table
    & D A T A D E C L A R A T I O N &
    DATA : BEGIN OF IT_KNA1 OCCURS 0,
    KUNNR TYPE KNA1-KUNNR, "Customer Number
    LAND1 TYPE KNA1-LAND1, "Country Key
    NAME1 TYPE KNA1-NAME1, "Name
    ORT01 TYPE KNA1-ORT01, "City
    END OF IT_KNA1.
    DATA : BEGIN OF IT_KNA2 OCCURS 0,
    KUNNR TYPE KNA1-KUNNR, "Customer Number
    LAND1 TYPE KNA1-LAND1, "Country Key
    NAME1 TYPE KNA1-NAME1, "Name
    ORT01 TYPE KNA1-ORT01, "City
    END OF IT_KNA2.
    DATA: BEGIN OF IT_VBAK OCCURS 0,
    VBELN TYPE VBAK-VBELN, "Sales Document
    ERDAT TYPE VBAK-ERDAT, "Date
    ERNAM TYPE VBAK-ERNAM, "Name of Person
    AUART TYPE VBAK-AUART, "Sales Document Type
    END OF IT_VBAK.
    DATA: BEGIN OF IT_VBAP OCCURS 0,
    VBELN TYPE VBAP-VBELN, "Sales Document
    POSNR TYPE VBAP-POSNR, "Sales Document Item
    MATNR TYPE VBAP-MATNR, "Material Number
    MATKL TYPE VBAP-MATKL, "Material group
    END OF IT_VBAP.
    DATA: V_COUNT TYPE INT4, "Current Row Index
    V_LINE LIKE SY-LISEL, "Contents of selected line
    V_KUNNR LIKE KNA1-KUNNR.
    & S E L E C T I O N S C R E E N &
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS : RB1 RADIOBUTTON GROUP G1 DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(20) TEXT-002 FOR FIELD RB1.
    SELECTION-SCREEN END OF LINE.
    SELECT-OPTIONS : SO_KUNNR FOR KNA1-KUNNR OBLIGATORY.
    PARAMETERS : P_HITS(3) TYPE C.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS : RB2 RADIOBUTTON GROUP G1.
    SELECTION-SCREEN COMMENT 5(20) TEXT-003 FOR FIELD RB2.
    SELECTION-SCREEN END OF LINE.
    PARAMETERS : P_FILE LIKE RLGRAP-FILENAME DEFAULT 'c:\test'.
    SELECTION-SCREEN PUSHBUTTON /33(10) CUSTL USER-COMMAND PUSH1.
    SELECTION-SCREEN PUSHBUTTON 58(10) CUSTD USER-COMMAND PUSH2.
    SELECTION-SCREEN END OF BLOCK B1.
    & I N I T I A L I Z A T I O N &
    INITIALIZATION.
    MOVE 'LOAD' TO CUSTL.
    MOVE 'DISP' TO CUSTD.
    & A T L I N E S E L E C T I O N &
    AT SELECTION-SCREEN.
    PERFORM VALIDATE_KUNNR.
    & A T S E L E C T I O N S C R E E N O N V A L U E-R E Q U E S T &
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
    PROGRAM_NAME = SYST-CPROG
    DYNPRO_NUMBER = SYST-DYNNR
    FIELD_NAME = ' '
    IMPORTING
    FILE_NAME = P_FILE.
    & S T A R T O F S E L E C T I O N &
    START-OF-SELECTION.
    PERFORM CUST_DETAILS.
    & S T A R T O F S E L E C T I O N &
    TOP-OF-PAGE.
    FORMAT COLOR 3 INTENSIFIED OFF.
    WRITE :/02(25) SY-REPID.
    WRITE : 39(15) 'Page'(010), SY-PAGNO.
    FORMAT COLOR OFF.
    FORMAT COLOR 6 INTENSIFIED OFF.
    FORMAT COLOR COL_HEADING.
    ULINE AT :/1(60).
    WRITE: /1 SY-VLINE,
    2 'Cust Number'(000),
    14 SY-VLINE,
    16 'Country'(007),
    25 SY-VLINE,
    26 'City'(008),
    42 SY-VLINE,
    43 'Region'(009),
    60 SY-VLINE.
    ULINE AT :/1(60).
    FORMAT COLOR COL_HEADING OFF.
    & T O P O F P A G E D U R I N G L I N E S E L E C T I O N &
    TOP-OF-PAGE DURING LINE-SELECTION.
    IF SY-LSIND EQ 1 OR SY-UCOMM EQ 'VBAK'.
    FORMAT COLOR COL_HEADING.
    ULINE AT :/1(60).
    WRITE : /1 SY-VLINE,
    2 'Docu No.'(011),
    14 SY-VLINE,
    16 'Date'(012),
    26 SY-VLINE,
    27 'Name'(013),
    42 SY-VLINE,
    43 'DType'(014),
    60 SY-VLINE.
    ULINE AT :/1(60).
    ELSEIF SY-LSIND EQ 2 OR SY-UCOMM EQ 'VBAK'.
    SET PF-STATUS SPACE.
    ULINE AT :/1(60).
    WRITE : /1 SY-VLINE,
    2 'Docu No.'(015),
    14 SY-VLINE,
    16 'Sales Item'(016),
    25 SY-VLINE,
    26 'Mat No'(017),
    42 SY-VLINE,
    43 VBAP-MATKL,
    50 'Mat Grp'(018),
    60 SY-VLINE.
    ULINE AT :/1(60).
    ENDIF.
    & AT USER-COMMAND &
    AT USER-COMMAND.
    CASE SY-UCOMM.
    WHEN 'VBAK'.
    PERFORM SALES_ITEM.
    WHEN 'DELIVERY'.
    CLEAR IT_VBAK-VBELN.
    GET CURSOR VALUE IT_VBAK-VBELN.
    SET PARAMETER ID 'AUN' FIELD IT_VBAK-VBELN.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    WHEN 'DISP'.
    PERFORM DISPLAY_BASIC.
    ENDCASE.
    & AT LINE SELECTION &
    AT LINE-SELECTION.
    IF SY-LSIND = 1.
    SET PF-STATUS 'DDDD'.
    PERFORM SALES_HEADER.
    ELSEIF SY-LSIND = 2.
    CASE SY-UCOMM.
    WHEN 'PICK'.
    SET PF-STATUS SPACE.
    PERFORM SALES_ITEM.
    WHEN 'DELIVERY'.
    CLEAR IT_VBAK-VBELN.
    GET CURSOR VALUE IT_VBAK-VBELN.
    SET PARAMETER ID 'AUN' FIELD IT_VBAK-VBELN.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    WHEN 'DISP'.
    PERFORM DISPLAY_BASIC.
    ENDCASE.
    PERFORM sales_item.
    ENDIF.
    & AT USER-COMMAND &
    AT USER-COMMAND.
    CASE SY-UCOMM.
    WHEN 'VBAK'.
    PERFORM SALES_ITEM.
    WHEN 'DELIVERY'.
    CLEAR IT_VBAK-VBELN.
    GET CURSOR VALUE IT_VBAK-VBELN.
    SET PARAMETER ID 'AUN' FIELD IT_VBAK-VBELN.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    WHEN 'DISP'.
    PERFORM DISPLAY_BASIC.
    ENDCASE.
    & Form CUST_DETAILS &
    FORM CUST_DETAILS .
    SELECT KUNNR
    LAND1
    NAME1
    ORT01
    FROM KNA1
    INTO TABLE IT_KNA1
    WHERE KUNNR IN SO_KUNNR.
    IF SY-SUBRC 0.
    MESSAGE 'SELECT VALID CUST NO' TYPE 'I'.
    ELSE.
    LOOP AT IT_KNA1.
    v_count = v_count + 1.
    IF SY-TABIX < P_HITS.
    IF v_count <= p_hits.
    MOVE IT_KNA1 TO IT_KNA2.
    APPEND IT_KNA2.
    ELSE.
    EXIT.
    ENDIF.
    ENDLOOP.
    ENDIF.
    IF NOT IT_KNA2[] IS INITIAL.
    LOOP AT IT_KNA2.
    WRITE : /1 SY-VLINE,
    2 IT_KNA2-KUNNR,
    14 SY-VLINE,
    16 IT_KNA2-LAND1,
    25 SY-VLINE,
    26 IT_KNA2-NAME1,
    42 SY-VLINE,
    43 IT_KNA2-ORT01,
    60 SY-VLINE.
    ULINE AT :/1(60).
    ENDLOOP.
    ENDIF.
    ENDFORM. " CUST_DETAILS
    **& Form load_file
    *form load_file .
    *endform. " load_file
    **& Form disp_file
    *form disp_file .
    *endform. " disp_file
    *& Form VALIDATE_KUNNR
    FORM VALIDATE_KUNNR .
    SELECT SINGLE KUNNR
    FROM KNA1
    INTO KNA1
    WHERE KUNNR = SO_KUNNR.
    ENDFORM. " VALIDATE_KUNNR
    *& Form SALES_HEADER
    FORM SALES_HEADER .
    DATA : V_KNA1(13).
    V_KNA1 = 'IT_KNA2-KUNNR'.
    *get cursor line sy-lilli value v_line
    CLEAR V_KUNNR.
    GET CURSOR FIELD V_KNA1 VALUE V_KUNNR.
    v_kunnr = v_line+1(10).
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
    INPUT = V_KUNNR
    IMPORTING
    OUTPUT = V_KUNNR.
    SELECT VBELN
    ERDAT
    ERNAM
    AUART
    FROM VBAK
    INTO TABLE IT_VBAK
    WHERE KUNNR = V_KUNNR.
    IF SY-SUBRC = 0.
    LOOP AT IT_VBAK.
    WRITE : /1 SY-VLINE,
    2 IT_VBAK-VBELN,
    14 SY-VLINE,
    16 IT_VBAK-ERDAT,
    26 SY-VLINE,
    27 IT_VBAK-ERNAM,
    42 SY-VLINE,
    43 IT_VBAK-AUART,
    60 SY-VLINE.
    ULINE AT :/1(60).
    ENDLOOP.
    ENDIF.
    ENDFORM. " SALES_HEADER
    *& Form SALES_ITEM
    FORM SALES_ITEM .
    DATA : V_VBELN(13).
    V_VBELN = 'IT_VBAK-VBELN'.
    CLEAR IT_VBAK-VBELN.
    GET CURSOR FIELD V_VBELN VALUE IT_VBAK-VBELN.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
    INPUT = IT_VBAK-VBELN
    IMPORTING
    OUTPUT = IT_VBAK-VBELN.
    SELECT VBELN
    POSNR
    MATNR
    MATKL
    FROM VBAP
    INTO TABLE IT_VBAP
    WHERE VBELN = IT_VBAK-VBELN.
    LOOP AT IT_VBAP .
    WRITE : /1 SY-VLINE,
    2 IT_VBAP-VBELN,
    14 SY-VLINE,
    16 IT_VBAP-POSNR,
    25 SY-VLINE,
    26 IT_VBAP-MATNR,
    42 SY-VLINE,
    43 IT_VBAP-MATKL,
    60 SY-VLINE.
    ULINE AT :/1(60).
    ENDLOOP.
    ENDFORM. " SALES_ITEM
    *& Form DISP_DOCU
    FORM DISPLAY_BASIC .
    LOOP AT IT_KNA1 INTO IT_KNA1.
    FORMAT HOTSPOT ON.
    WRITE : /03 IT_KNA1-KUNNR,
    24 IT_KNA1-NAME1.
    HIDE IT_KNA1-KUNNR.
    ENDLOOP.
    ENDFORM. " display_basic
    pls reward if useful
    regards,
    rekha

  • Reporting coding

    Sales Order Information Report that lists information like sales order no, Item no, material no, Quantity, Quantity unit, Net value, Currency,Sub Total, Grand Total. plz mention the detail coding

    Hi,
    REPORT  .
                                  TABLES
    TABLES:vbak,
           vbap,
           tvko,
           tvak,
           mara,
           tvtw,
           kna1,
           vbpa.
    TYPE-POOLS : slis.
                               GLOBAL TYPES
                       naming convention: "TY_name"
    TYPES : BEGIN OF ty_vbak       ,
            vbeln  TYPE vbak-vbeln ,
            auart  TYPE vbak-auart , " DRFK904686
            vkorg  TYPE vbak-vkorg ,
            vtweg  TYPE vbak-vtweg ,
            vkgrp  TYPE vbak-vkgrp ,
            bstnk  TYPE vbak-bstnk ,  "DRFK904686(+)
            kunrsl TYPE vbak-kunnr ,
            END OF ty_vbak         .
    TYPES: BEGIN OF ty_vbap        ,
            vbeln TYPE vbap-vbeln  ,
            posnr TYPE vbap-posnr  ,
            matnr TYPE vbap-matnr  ,
            matkl TYPE vbap-matkl  ,
            kwmeng TYPE vbap-kwmeng,
            vrkme  TYPE vbap-vrkme ,   "order unit
            zmeng  TYPE vbap-zmeng ,
            zieme  TYPE vbap-zieme ,  "order unit
            netpr  TYPE vbap-netpr ,  "price
            netwr  TYPE vbap-netwr ,  "DRFK904686(+)
          END OF ty_vbap           .
    TYPES:BEGIN OF ty_vbuk     ,
          vbeln TYPE vbuk-vbeln,
    Start of addition DRFK904686
          lfstk TYPE statv     ,
          lfgsk TYPE statv     ,
          fkstk TYPE statv     ,
    End of addition DRFK904686
          END OF ty_vbuk       .
    TYPES:BEGIN OF ty_vbpa     ,
            vbeln TYPE vbpa-vbeln,
            kunrsh TYPE kunnr    ,
          END OF ty_vbpa       .
    TYPES:BEGIN OF ty_makt  ,
            matnr TYPE matnr,
            maktx TYPE maktx,
          END OF ty_makt.
    TYPES:BEGIN OF ty_t023t,
           matkl TYPE matkl,
           wgbez TYPE wgbez,
         END OF ty_t023t.
    TYPES:BEGIN OF ty_kna1    ,
           kunnr TYPE kunnr   ,
           name1 TYPE name1_gp,
         END OF ty_kna1.
    TYPES:BEGIN OF ty_final         ,
            vbeln  TYPE vbak-vbeln  ,
            auart  TYPE vbak-auart  ,
            vkorg  TYPE vbak-vkorg  ,
            vtweg  TYPE vbak-vtweg  ,
            vkgrp  TYPE vbak-vkgrp  ,
            bstnk  TYPE vbak-bstnk  , "PO Number; DRFK904686(+)
            kunrsl TYPE vbak-kunnr  ,
            name1  TYPE name1_gp    ,
            matnr  TYPE vbap-matnr  ,
            maktx  TYPE maktx       ,
            matkl  TYPE vbap-matkl  ,
            wgbez  TYPE wgbez       ,
            kwmeng TYPE vbap-kwmeng ,
            vrkme  TYPE vbap-vrkme  ,   "order unit
            zmenge TYPE vbap-kwmeng ,
            netpr  TYPE vbap-netpr  ,  " price "vv
            netwr  TYPE vbap-netwr  ,
            zmein  TYPE vbap-meins  ,
            kunrsh TYPE kunnr       ,
            name2  TYPE name1_gp    ,
    Start of addition DRFK904686
            lfstk  TYPE statv     ,
            lfgsk  TYPE statv     ,
            fkstk  TYPE statv     ,
    End of addition DRFK904686
          END OF ty_final         .
                              GLOBAL CONSTANTS
                       naming convention: "c_name"
    CONSTANTS: c_sh                         TYPE vbpa-parvw        VALUE 'WE'                   ,
               c_formname_top_of_page       TYPE slis_formname     VALUE 'F_DISPLAY_TOP_OF_PAGE',
               c_en(2)                      TYPE c                 VALUE 'EN'                   ,
               c_a                          TYPE char1             VALUE 'A'                    .
                        GLOBAL ELEMENTARY VARIABLES
                        naming convention: "w_name"
    DATA :w_list_top_of_page      TYPE slis_t_listheader,
          w_kwmeng                TYPE vbap-kwmeng      ,
          w_meins                 TYPE t006-msehi       ,
          w_zmein                 TYPE t006-msehi       ,
          w_repid                 TYPE sy-repid         ,
          w_zmenge                TYPE vbap-kwmeng      ,
          w_events                TYPE slis_t_event     ,
          w_datum                 TYPE sy-datum         ,
          w_umrez1                TYPE marm-umrez       ,
          w_umren1                TYPE marm-umren       ,
          w_umrez2                TYPE marm-umrez       ,
          w_umren2                TYPE marm-umren       ,
          w_text(25)              TYPE c                .
                              GLOBAL STRUCTURES
                        naming convention: "st_name"
    DATA:st_vbak  TYPE ty_vbak  ,
         st_vbap  TYPE ty_vbap  ,
         st_vbpa  TYPE ty_vbpa  ,
         st_makt  TYPE ty_makt  ,
         st_t023t TYPE ty_t023t ,
         st_knasl TYPE  ty_kna1 ,
         st_knash TYPE  ty_kna1 ,
         st_vbuk  TYPE  ty_vbuk ,
         st_final TYPE ty_final .
    DATA:st_fieldcat    TYPE slis_fieldcat_alv ,
         st_layout      TYPE slis_layout_alv   .
                           GLOBAL INTERNAL TABLES
                         naming convention: "i_name"
    DATA:i_vbak  TYPE TABLE OF ty_vbak  ,
         i_vbap  TYPE TABLE OF ty_vbap  ,
         i_vbuk  TYPE TABLE OF ty_vbuk  ,
         i_vbpa  TYPE TABLE OF ty_vbpa  ,
         i_makt  TYPE TABLE OF ty_makt   ,
         i_t023t TYPE TABLE OF ty_t023t ,
         i_knasl TYPE TABLE OF ty_kna1  ,
         i_knash TYPE TABLE OF ty_kna1  ,
         i_final TYPE TABLE OF ty_final .
    DATA:i_fieldcat    TYPE slis_t_fieldcat_alv ,
         i_variant     TYPE disvariant          .
    DEFINE m_fieldcat.
      add 1 to st_fieldcat-col_pos.
      st_fieldcat-fieldname   = &1.
      st_fieldcat-ref_tabname = &2.
      st_fieldcat-seltext_s   = &3.
      st_fieldcat-seltext_l   = &4.
      st_fieldcat-datatype    = &5.
      append st_fieldcat to i_fieldcat.
    END-OF-DEFINITION.
                          PARAMETERS & SELECT-OPTIONS
                     aming convention: "p_name" & "s_name"
    SELECTION-SCREEN  BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    *SELECT-OPTIONS : s_vkorg    FOR  vbak-vkorg  OBLIGATORY,
                    s_vtweg    FOR  vbak-vtweg  OBLIGATORY,
                    s_kunrsl   FOR  vbak-kunnr            ,
                    s_kunrsh   FOR  vbpa-kunnr            ,
                    s_matnr    FOR  vbap-matnr            ,
                    s_auart    for  vbak-auart            . "DRFK904686
                 s_datum    FOR  sy-datum  OBLIGATORY DEFAULT sy-datum."DRFK904686
    SELECT-OPTIONS : s_vkorg    FOR  tvko-vkorg  OBLIGATORY,
                     s_vtweg    FOR  tvtw-vtweg  OBLIGATORY,
                     s_kunrsl   FOR  kna1-kunnr            ,
                     s_kunrsh   FOR  kna1-kunnr            ,
                     s_matnr    FOR  mara-matnr            ,
                     s_auart    FOR  tvak-auart            .    "DRFK904686
    PARAMETERS:   p_meins TYPE vbap-meins.
    SELECTION-SCREEN  END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b5 WITH FRAME TITLE text-002.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) text-006 FOR FIELD p_var.
    PARAMETERS: p_var TYPE disvariant-variant.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b5.
                              INITIALIZATION
    INITIALIZATION.
    Report id assigned to Global variable
      w_repid = sy-repid.
    EVENTS TABLE BUILD
      PERFORM f_eventtab_build USING w_events[].
    Processing of listheader
      PERFORM f_comment_build  USING w_list_top_of_page[].
      CLEAR i_variant.
      i_variant-report = sy-repid.
    Read default display variant (description only, w/o field catalog)
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save     = c_a
        CHANGING
          cs_variant = i_variant
        EXCEPTIONS
          not_found  = 2.
      IF sy-subrc EQ 0.
        p_var = i_variant-variant.
      ENDIF.
    Start of addition DRFK904686
                          AT SELECTION-SCREEN ON s_vkorg
    Sales Organisation
    AT SELECTION-SCREEN ON s_vkorg.
      PERFORM f_validate_vkorg.
                          AT SELECTION-SCREEN ON s_vtweg
    Distribution Channel
    AT SELECTION-SCREEN ON s_vtweg.
      PERFORM f_validate_vtweg.
                          AT SELECTION-SCREEN ON s_kunrsl
    Sold-to-party
    AT SELECTION-SCREEN ON s_kunrsl.
      IF NOT s_kunrsl[] IS INITIAL.
        PERFORM f_validate_cust.
      ENDIF.
                          AT SELECTION-SCREEN ON s_kunrsh
    Ship-to-party
    AT SELECTION-SCREEN ON s_kunrsh.
      IF NOT s_kunrsh[] IS INITIAL.
        PERFORM f_validate_shipto.
      ENDIF.
                          AT SELECTION-SCREEN ON s_matnr
    Material Number
    AT SELECTION-SCREEN ON s_matnr.
      IF NOT s_matnr[] IS INITIAL.
        PERFORM f_validate_matnr.
      ENDIF.
                          AT SELECTION-SCREEN ON s_auart
    Order Type
    AT SELECTION-SCREEN ON s_auart.
      IF NOT s_auart[] IS INITIAL.
        PERFORM f_validate_auart.
      ENDIF.
    End of addition DRFK904686
                   AT SELECTION-SCREEN ON VALUE-REQUEST
    F4 for Layout Variant
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
      PERFORM f_get_alv_variant CHANGING p_var.
                          AT SELECTION-SCREEN ON
    Validate Layout Variant
    AT SELECTION-SCREEN ON p_var.
      IF NOT p_var IS INITIAL.
        PERFORM f_check_alv_variant USING p_var.
      ENDIF.
                               START-OF-SELECTION
    START-OF-SELECTION.
    begin of changes DRFK904686
      PERFORM f_fetch_vbuk.
      PERFORM f_fetch_vbak.
    *perform to fetch the data from vbuk.
    *perform to fetch the data from vbak.
    PERFORM f_fetch_vbak.
    *perform to fetch the data from vbuk.
    PERFORM f_fetch_vbuk.
    end of changes DRFK904686
    *perform to fetch the data from vbpa.
      PERFORM f_fetch_vbpa.
    *perform to fetch the data from vbap.
      PERFORM f_fetch_vbap.
    *perform to fetch the material description.
      PERFORM f_fetch_makt.
    *perform to fetch the material group description.
      PERFORM f_fetch_t023t.
    *perform to fetch the customer name
      PERFORM f_fetch_knasl.
    *perform to fetch the customer name
      PERFORM f_fetch_knash.
    *perofrm to move the data into final table
      PERFORM f_move_final.
    Finding no of entries in Internal Table
      IF LINES( i_final ) EQ 0.
        MESSAGE s000 WITH 'No documents found for the  selection criteria'(019).
        EXIT.
      ENDIF.
    *perform for fieldcatalog building
      PERFORM f_build_fieldcat.
    *perform to display the list
      PERFORM f_list_dispaly.
    *&      Form  f_validate_vkorg
          text
         -->P_S_VKORG  text
    FORM f_validate_vkorg.
      SELECT vkorg
         FROM tvko
         UP TO 1 ROWS
         INTO tvko-vkorg
       WHERE vkorg IN s_vkorg.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Sales Organization is invalid'(033).
      ENDIF.
    ENDFORM.                    " f_validate_vkorg
    *&      Form  f_validate_vtweg
          text : This form is used to validate the Distribution Channel
    FORM f_validate_vtweg.
      SELECT vtweg
            FROM tvtw
            UP TO 1 ROWS
            INTO tvtw-vtweg
          WHERE vtweg IN s_vtweg.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Distribution Channel is invalid'(032).
      ENDIF.
    ENDFORM.                    " f_validate_vtweg
    *&      Form  f_validate_cust
          text: This form is used to validate the Sold-to party .
    FORM f_validate_cust.
      SELECT kunnr
             FROM kna1
             UP TO 1 ROWS
             INTO kna1-kunnr
           WHERE kunnr IN s_kunrsl.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Customer is invalid'(034).
      ENDIF.
    ENDFORM.                    " f_validate_cust
    *&      Form  f_validate_shipto
           text: This form is used to validate the Ship-to party .
    FORM f_validate_shipto.
      SELECT kunnr
             FROM kna1
             UP TO 1 ROWS
             INTO kna1-kunnr
           WHERE kunnr IN s_kunrsh.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Ship-to party is invalid'(035).
      ENDIF.
    ENDFORM.                    " f_validate_shipto
    *&      Form  f_validate_matnr
          text: This form is used to validate material.
    FORM f_validate_matnr .
      SELECT matnr
        FROM mara
        UP TO 1 ROWS
        INTO mara-matnr
      WHERE matnr IN s_matnr.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Material is invalid'(036).
      ENDIF.
    ENDFORM.                    " f_validate_matnr
    *&      Form  f_validate_auart
          text: This form is used to validate Order Type
    FORM f_validate_auart .
      SELECT auart
          FROM tvak
          UP TO 1 ROWS
          INTO tvak-auart
        WHERE auart IN s_auart.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Order Type is invalid'(037).
      ENDIF.
    ENDFORM.                    " f_validate_auart
    *&      Form  sub_get_alv_variant
          To display variant selection dialog box
    FORM f_get_alv_variant  CHANGING p_layvar TYPE disvariant-variant.
      CLEAR i_variant.
      DATA lw_exit(1) TYPE c.
      i_variant-report   = sy-repid.
      i_variant-username = sy-uname.
    Display variant selection dialog box
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant    = i_variant
          i_save        = c_a
        IMPORTING
          e_exit        = lw_exit
          es_variant    = i_variant
        EXCEPTIONS
          not_found     = 1
          program_error = 2
          OTHERS        = 3.
      IF sy-subrc EQ 0.
        IF lw_exit IS INITIAL.
          p_layvar = i_variant-variant.
        ENDIF.
      ELSE.
        MESSAGE i000 WITH 'No display variants found'(007).
      ENDIF.
    ENDFORM.                    " sub_get_alv_variant
    *&      Form  sub_check_alv_variant
          to check whether a display variant exists
    FORM f_check_alv_variant  USING p_layvar TYPE disvariant-variant.
      CLEAR i_variant.
      i_variant-report   = sy-repid.
      i_variant-username = sy-uname.
      IF p_layvar NE space.
        MOVE p_layvar TO i_variant-variant.
    Checks whether a display variant exists
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
          EXPORTING
            i_save     = c_a
          CHANGING
            cs_variant = i_variant.
      ENDIF.
    ENDFORM.                    "f_check_alv_variant
    " sub_check_alv_variant
    *&      Form  f_fetch_vbak
    from to fetch sales org, dis chanel,sales group sold to party from vbak
    FORM f_fetch_vbak .
    *{ begin of change DRFK904686
      IF i_vbuk IS NOT INITIAL.
    SELECT vbeln
            vkorg
            vtweg
            vkgrp
            kunnr
       FROM vbak
       INTO TABLE i_vbak
      WHERE vkorg IN s_vkorg
        AND vtweg IN s_vtweg
        AND kunnr IN s_kunrsl
        AND audat IN s_datum.
        SELECT vbeln
               auart
               vkorg
               vtweg
               vkgrp
               bstnk
               kunnr
          FROM vbak
          INTO TABLE i_vbak
             FOR ALL ENTRIES IN i_vbuk
         WHERE vbeln EQ i_vbuk-vbeln
           AND auart IN s_auart
           AND vkorg IN s_vkorg
           AND vtweg IN s_vtweg
           AND kunnr IN s_kunrsl  .
    end of change DRFK904686 }
        IF sy-subrc EQ 0.
          SORT i_vbak BY vbeln.
        ELSE.
          MESSAGE s000 WITH 'No documents found for the  selection criteria'(019).
          EXIT.
        ENDIF.
      ENDIF.
    ENDFORM.                    " f_fetch_vbak
    *&      Form  f_fetch_vbuk
      from to fetch open sales doc from vbuk
    FORM f_fetch_vbuk .
    *{ begin of change BeDRFK904686
    IF i_vbak IS NOT INITIAL.
       SELECT vbeln
         FROM vbuk
         INTO TABLE i_vbuk
          FOR ALL ENTRIES IN i_vbak
        WHERE vbeln EQ i_vbak-vbeln
          AND ( lfstk NE 'C'
          OR    fkstk NE 'C' ) .
      SELECT vbeln
             lfstk        "DRFK904686(+)
             lfgsk        "DRFK904686(+)
             fkstk        "DRFK904686(+)
        FROM vbuk
        INTO TABLE i_vbuk
       WHERE ( ( lfstk EQ 'A'
         OR lfstk EQ 'B')
         OR (  fkstk EQ 'A'
         OR    fkstk EQ 'B' ) ) .
    end of change DRFK904686 }
    ENDIF.
    ENDFORM.                    " f_fetch_vbuk
    *&      Form  f_fetch_vbpa
         from to fetch ship to party from vbpa
    FORM f_fetch_vbpa .
      IF i_vbak IS NOT INITIAL.
        SELECT vbeln
               kunnr
          FROM vbpa
          INTO TABLE i_vbpa
           FOR ALL ENTRIES IN i_vbak
         WHERE vbeln EQ i_vbak-vbeln
           AND kunnr IN s_kunrsh
           AND parvw EQ c_sh.
      ENDIF.
    ENDFORM.                    " f_fetch_vbpa
    *&      Form  f_fetch_vbap
      from to fetch sales doc, mat no, mat group,order UOM from vbap
    FORM f_fetch_vbap .
      IF i_vbpa IS NOT INITIAL.
        SELECT vbeln
               posnr
               matnr
               matkl
               kwmeng
               vrkme
               zmeng
               zieme
               netwr
               netpr
          FROM vbap
          INTO TABLE i_vbap
           FOR ALL ENTRIES IN i_vbpa
         WHERE vbeln EQ i_vbpa-vbeln
           AND matnr IN s_matnr.
      ENDIF.
    ENDFORM.                    " f_fetch_vbap
    *&      Form  f_fetch_makt
    form to fetch the material description
    FORM f_fetch_makt .
      IF i_vbap IS NOT INITIAL.
        SELECT
            matnr
            maktx
       FROM makt
          INTO TABLE i_makt
           FOR ALL ENTRIES IN i_vbap
         WHERE matnr EQ i_vbap-matnr
           AND spras EQ c_en.
      ENDIF.
    ENDFORM.                    " f_fetch_makt
    *&      Form  f_fetch_t023t
       form to fetch the material group description
    FORM f_fetch_t023t .
      IF i_vbap IS NOT INITIAL.
        SELECT
            matkl
            wgbez
       FROM t023t
          INTO TABLE i_t023t
           FOR ALL ENTRIES IN i_vbap
         WHERE spras EQ c_en
           AND matkl EQ i_vbap-matkl.
      ENDIF.
    ENDFORM.                    " f_fetch_t023t
    *&      Form  f_fetch_kna1
       form to fetch the sold to customer name
    FORM f_fetch_knasl .
      IF i_vbak IS NOT INITIAL.
        SELECT
            kunnr
            name1
       FROM kna1
          INTO TABLE i_knasl
           FOR ALL ENTRIES IN i_vbak
         WHERE kunnr EQ i_vbak-kunrsl.
      ENDIF.
    ENDFORM.                    " f_fetch_kna1
    *&      Form  f_fetch_knash
       form to fetch the ship to customer name
    FORM f_fetch_knash .
      IF i_vbpa IS NOT INITIAL.
        SELECT
            kunnr
            name1
       FROM kna1
          INTO TABLE i_knash
           FOR ALL ENTRIES IN i_vbpa
         WHERE kunnr EQ i_vbpa-kunrsh.
      ENDIF.
    ENDFORM.                    " f_fetch_knash
    *&      Form  f_move_final
    form for moving all the fields into the final internal table for
    *dispalying the final output.
    FORM f_move_final .
      SORT : i_vbak  BY vbeln,
             i_vbpa  BY vbeln,
             i_makt  BY matnr,
             i_t023t BY matkl,
             i_knasl BY kunnr,
             i_vbuk  BY vbeln,
             i_knash BY kunnr.
    *looping at i_vbap and moving mat no,mat group,quantity and
    *UOM into final table.
      LOOP AT i_vbap INTO st_vbap.
        IF st_vbap-kwmeng IS INITIAL.
          st_vbap-kwmeng = st_vbap-zmeng.
          st_vbap-vrkme  = st_vbap-zieme.
        ENDIF.
        MOVE: st_vbap-matnr  TO st_final-matnr,
              st_vbap-matkl  TO st_final-matkl,
              st_vbap-kwmeng TO st_final-kwmeng,
              st_vbap-netwr  TO st_final-netwr,
              st_vbap-vrkme  TO st_final-vrkme.
        IF p_meins IS INITIAL.
          MOVE:st_vbap-vrkme  TO st_final-zmein ,
               st_vbap-kwmeng TO st_final-zmenge.
        ELSE.
          CLEAR : w_kwmeng,
                  w_meins,
                  w_zmein.
    *Order Quantity
          w_kwmeng = st_vbap-kwmeng.
    *Order Unit
          w_meins = st_vbap-vrkme.
    *Report Unit
          w_zmein = p_meins.
          CLEAR : w_umrez1,
                  w_umren1,
                  w_umrez2,
                  w_umren2.
          SELECT SINGLE umrez
                        umren
                  INTO (w_umrez1,
                        w_umren1)
                   FROM marm
                  WHERE matnr EQ st_vbap-matnr
                    AND meinh EQ w_meins.
          SELECT SINGLE umrez
                        umren
                  INTO (w_umrez2,
                        w_umren2)
                   FROM marm
                  WHERE matnr EQ st_vbap-matnr
                    AND meinh EQ w_zmein.
          IF w_umrez1 IS NOT INITIAL AND w_umren2 IS NOT INITIAL.
            w_zmenge = w_kwmeng * ( w_umren1 / w_umrez1 ) * ( w_umrez2 / w_umren2 ).
        update new report unit and quantity
            MOVE p_meins  TO st_final-zmein.
            MOVE w_zmenge TO st_final-zmenge.
          ELSE.
       if failed to convert update report unit and quantity with order values
            MOVE st_vbap-vrkme TO st_final-zmein.
            MOVE st_vbap-kwmeng TO st_final-zmenge.
          ENDIF.
        ENDIF.
    Start of changes DRFK904686
    To get the delivery, overall and billing status
        CLEAR st_vbuk.
        READ TABLE i_vbuk INTO st_vbuk
                    WITH KEY vbeln = st_vbap-vbeln
                    BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE : st_vbuk-lfstk TO st_final-lfstk,
                 st_vbuk-lfgsk TO st_final-lfgsk,
                 st_vbuk-fkstk TO st_final-fkstk.
        ENDIF.
    End of changes DRFK904686
    *reading i_vbak and moving sales doc,sales org,dist chanel,
    *sales group,and sold to party into the final internal table
        CLEAR st_vbak.
        READ TABLE i_vbak
              INTO st_vbak
          WITH KEY vbeln = st_vbap-vbeln
          BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE: st_vbak-vbeln  TO st_final-vbeln ,
                st_vbak-vkorg  TO st_final-vkorg ,
                st_vbak-vtweg  TO st_final-vtweg ,
                st_vbak-vkgrp  TO st_final-vkgrp ,
                st_vbak-auart  TO st_final-auart ,
                st_vbak-bstnk  TO st_final-bstnk , "DRFK904686(+)
                st_vbak-kunrsl TO st_final-kunrsl.
        ENDIF.
    *reading i_vbpa and moving ship to party to the final internal table
        CLEAR st_vbpa.
        READ TABLE i_vbpa
              INTO st_vbpa
          WITH KEY vbeln = st_vbap-vbeln
          BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE st_vbpa-kunrsh TO st_final-kunrsh.
        ENDIF.
    *reading i_makt and moving material description to the final table
        CLEAR st_makt.
        READ TABLE i_makt
                  INTO st_makt
              WITH KEY matnr = st_vbap-matnr
              BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE st_makt-maktx TO st_final-maktx.
        ENDIF.
    *reading i_t023t
        CLEAR st_t023t.
        READ TABLE i_t023t
                  INTO st_t023t
              WITH KEY matkl = st_vbap-matkl
              BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE st_t023t-wgbez TO st_final-wgbez.
        ENDIF.
    *READINGI_KNASL
        CLEAR st_knasl.
        READ TABLE i_knasl
                  INTO st_knasl
              WITH KEY kunnr = st_final-kunrsl
              BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE st_knasl-name1 TO st_final-name1.
        ENDIF.
    *READINGI_KNASH
        CLEAR st_knash.
        READ TABLE i_knash
                  INTO st_knash
              WITH KEY kunnr = st_final-kunrsh
              BINARY SEARCH.
        IF sy-subrc EQ 0.
          MOVE st_knash-name1 TO st_final-name2.
        ENDIF.
        APPEND st_final TO i_final.
        CLEAR st_final.
      ENDLOOP.
    ENDFORM.                    " f_move_final
    *&      Form  f_build_fieldcat
    form for building the field catalog
    FORM f_build_fieldcat .
      m_fieldcat 'VKORG'   'VBAK'   'Sales Organisation'(004)   'Sales Organisation'(004)                     ' '.
      m_fieldcat 'VTWEG'   'VBAK'   'Distribution Channel'(005) 'Distribution Channel'(005)                   ' '.
      m_fieldcat 'VKGRP'   'VBAK'   'Sales Group'(008)          'Sales Group'(008)                            ' '.
      m_fieldcat 'VBELN'   'VBAK'   'Sales Document'(009)       'Sales Document'(009)                         ' '.
      m_fieldcat 'AUART'   'VBAK'   'Order Type'(026)           'Order Type'(026)                             ' '.
      m_fieldcat 'BSTNK'   'VBAK'   'PO number'(031)            'PO number'(031)                              ' '.
      m_fieldcat 'KUNRSL'  'VBAK'   'Sold to Party'(010)        'Sold to Party'(010)                          ' '.
      m_fieldcat 'NAME1'   'KNA1'   'Name Sold to'(020)         'Name Sold to'(020)                           ' '.
      m_fieldcat 'KUNRSH'  'VBPA'   'Ship to Party'(011)        'Ship to Party'(011)                          ' '.
      m_fieldcat 'NAME2'   'KNA1'   'Name Ship to'(022)         'Name Ship to'(022)                           ' '.
      m_fieldcat 'KWMENG'  'VBAP'   'Order Quantity'(012)       'Order Quantity'(012)                 'QUAN '(014).
      m_fieldcat 'VRKME'   'VBAP'   'Order UOM'(017)            'Order UOM'(017)                               ' '.
      m_fieldcat 'ZMENGE'  'VBAP'   'Report Quantity'(013)      'Report Quantity'(013)                'QUAN '(014).
      m_fieldcat 'ZMEIN'   'VBAP'   'Report UOM'(018)           'Report UOM'(018)                              ' '.
      m_fieldcat 'NETWR'   'VBAP'   'Net value'(030)            'Net value'(030)                               ' '.
    m_fieldcat 'MATKL'   'VBAP'   'Material Group Description'(023)    'Material Group Description'(023)    ' '. "DRFK904686(-)
    m_fieldcat 'WGBEZ'   'T023T'  'Material Group'(015)       'Material Group'(015)                         ' '. "DRFK904686(-)
      m_fieldcat 'MATKL'   'VBAP'   'Material Group'(015)       'Material Group'(015)                          ' '. "DRFK904686(+)
      m_fieldcat 'WGBEZ'   'T023T'  'Material Group Description'(023)    'Material Group Description'(023)     ' '. "DRFK904686(+)
      m_fieldcat 'MATNR'   'VBAP'   'Material Number'(016)      'Material Number'(016)                         ' '.
      m_fieldcat 'MAKTX'   'MAKT'   'Materia Description'(024)  'Material Description'(025)                    ' '.
    Begin of addition DRFK904686
      m_fieldcat 'LFSTK'   'VBUK'   'Delivery status'(027)         'Delivery status'(027)  'DelStat'           .
      m_fieldcat 'LFGSK'   'VBUK'   'Overall delivery status'(028) 'Overall delivery status'(028)              ' '.
      m_fieldcat 'FKSTK'   'VBUK'   'Billing status'(029)          'Billing status'(029)                       ' '.
    End of addition DRFK904686
    ENDFORM.                    " f_build_fieldcat
    *&      Form  f_list_dispaly
    form for displaying the final output in the Alv grid
    FORM f_list_dispaly .
      st_layout-cell_merge        = 'X'.
      st_layout-colwidth_optimize = 'X'.
    To display the required data
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_buffer_active    = 'X'
          i_callback_program = w_repid
          is_layout          = st_layout
          it_fieldcat        = i_fieldcat[]
          i_save             = 'A'
          is_variant         = i_variant
          it_events          = w_events[]
        TABLES
          t_outtab           = i_final.
    ENDFORM.                    " f_list_dispaly
    " f_EVENTTAB_BUILD
          FORM F_DISPLAY_TOP_OF_PAGE                                    *
    *form for providing the report heading                                *
            event     TOP_OF_PAGE                                       *
    FORM f_display_top_of_page.                                 "#EC CALLED
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = w_list_top_of_page.
    ENDFORM.                    "DISPLAY_TOP_OF_PAGE
    *&      Form  f_EVENTTAB_BUILD
            Ereignistabelle Bilden
            EVENTS TABLE BUILD
         -->U_ER_EVENTS[]  text
    FORM f_eventtab_build USING p_u_er_events TYPE slis_t_event.
      FIELD-SYMBOLS: <fs_event> TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_u_er_events.
      READ TABLE p_u_er_events WITH KEY name = slis_ev_top_of_page
                             ASSIGNING <fs_event>.
      IF sy-subrc = 0.
        <fs_event>-form = c_formname_top_of_page.
      ENDIF.
    ENDFORM.                               " f_EVENTTAB_BUILD
    *&      Form  F_COMMENT_BUILD
           Bearbeitung des Listenkopfes
           Processing of listheader
         -->U_ER_LIST_TOP_OF_PAGE[]  text
    FORM f_comment_build USING u_er_list_top_of_page TYPE slis_t_listheader.

  • PL HELP IN  REPORT CODING

    my problem is: 
    at selection screen fields is vbrk-FKDAT  &    VBRK-KUNRG(   NO. OF CUSTOMERS )
    FOR THIS SELECTION  SELECT   BILLING   DOCUMENT  NO.  FROM VBRK  WHERE THE  BILLING DOCUMENT TYPE
    IS FP, ZFP, SI. THE SELECTION DATE SHALL BE EQUAL TO BILLING DATE.     IF IN THE VBRK  THE CANCELLATION INDICATOR IS
    SET THEN IGNOR THIS DOCUMENT .  SELECT THE   NET VALUE FOR THESE BILLING DOCUMENTS &  DISPLAY
    AS
    DATE   STORE1  STOTE2   STOTE3     ..............................
    FIELDS ARE   AS
    vbeln like vbrk-vbeln,   " billing document
          fkdat like vbrk-fkdat, "  billing date
          netwr like vbrk-netwr,  " net value
          fksto like vbrk-fksto,      "  cancelled indicator
          kunag like vbrk-kunag,  "  sold to party (sale office

    report zreport.
    *define the table the way wish to sort the data.
    data : begin of itab occurs 0,
            vbeln like vbrk-vbeln, " billing document
    fkdat like vbrk-fkdat, " billing date
    netwr like vbrk-netwr, " net value
    fksto like vbrk-fksto, " cancelled indicator
    kunag like vbrk-kunag, " sold to party (sale office
    end of itab.
    parameters : pfkdat like vbrk-fkdat.
    select-options : s_kunag for vbrk-kunag.
    start-of-selection.
      select vbeln fkdat netwr fksto kunag into table itab
      from vbrk
      where fksto = space and
      billingtype in ('FP','ZFP','SI') and
      fkdat = pfkdat and
      kunag in s_kunag.
      sort itab.
      loop at itab.
        write : / itab-fkdat, itab-kunag....
    *writing all the fields as required.
      endloop.
    Regards
    Anurag

  • Export to Excel from Report region (pl/sql returning sql query)

    Hello all,
    I have encountered an interesting problem. I have an HTMLDB application with a lot of sql reports coded straight inside the report region. In order to better organize my reports, I decided to
    1. make all my report regions of type "Pl/Sql function returning SQL query"
    2. create a package inside my database schema which houses all reports as pl/sql functions returning VARCHAR2, the string returned being the report query
    3. just calling "return package_name.function_name" from inside my report region of type "Pl/sql function returning SQL query".
    This technique seemed to work perfectly. The reports were being returned as expected. I was then asked to provide the "Export to Excel" capability to all my reports. This seemed like a piece of cake using HTML DB's "Export to Excel" extension. However, the "export to excel" does not function correctly when my reports are inside a package in the database. HTML DB tries to export but inside the excel spreadsheet, instead of seeing row data, I see:
    <pre>failed to parse SQL query:
    ORA-00936: missing expression
    <!-- select a.username, b.table_name, 'View Row Data' from schema_browser_user_list a, all_tables b where a.user_id = and a.username = b.owner order by b.table_name asc
    --!>
    </pre>
    I am building my query string inside of my package functions by using a combination of literal strings and concatenating them with some parameter values being passed in. It seems that the HTML DB engine which exports the report to excel does not properly understand the concatenation of variables as can be seen by the empty space to the right of the equal sign in the "a.user_id = " clause. Does anybody have any input as to whether this is a known issue or if I am doing something wrong? Thanks a lot for your time.
    - Kenny R.

    James,
    Thanks for the quick reply. I think you mis-understood what I'm doing. All I'm doing is creating packaged functions which return VARCHAR2. The VARCHAR2 that they return is the report query. With this technique, I no longer have to type the query into the HTML DB report region. Instead, I make the report region a "Pl/sql function returning sql query" and make the following call: return package_name.function_name(some_application_items passed in as parameters)
    This makes for a much more organized html db app. The problem is that the "export to excel" function does not correctly interpret the VARCHAR2 that my packaged functions are returning. Is this a better explanation? Thanks again for your time.
    - Kenny R.

  • How to call report rdf with parameter passing..

    Hai
    I am using 10g developer suite and 10 g report. I want to call some report in the when_button_pressed trigger. like c:\ report\ test.rdf file. we don't have separate application server.more than 10 users using forms and report. Without application server (dedicated application server ) we are using oracle.
    How to call the report rdf file from form ? how to pass the parameters ? how to start the report server ? I tried many answers I am not getting correct coding plese help me to find out correct code .. run the report perfectly... from form.
    digging here not get correct coding... please help me.. urgent
    vasanth.

    Hai,
    It seems same 6i reports coding, I am not aware of that.. Soon I will tell you..
    Thanks a lot.
    regards
    vasanth

  • Javax.servlet.jsp.JspException: REP-51002: Bind to Reports Server reportserver fail??

    why i cant open my report in JDeveloper tools but i can open in report builder ????
    this is the error i get ...
    Reports Error Page
    Fri Oct 18 15:41:54 SGT 2002
    javax.servlet.jsp.JspException: REP-51002: Bind to Reports Server reportserver failed
    javax.servlet.jsp.JspException: REP-51002: Bind to Reports Server reportserver failed
         int oracle.reports.jsp.ReportTag.doStartTag()
              ReportTag.java:329
         void MyReport.jspService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              MyReport.jsp:4
         void oracle.jsp.runtime.HttpJsp.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              HttpJsp.java:119
         void oracle.jsp.runtimev2.JspPageTable.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)
              JspPageTable.java:302
         void oracle.jsp.runtimev2.JspServlet.internalService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              JspServlet.java:407
         void oracle.jsp.runtimev2.JspServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
              JspServlet.java:328
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              HttpServlet.java:336
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
              ServletRequestDispatcher.java:684
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
              ServletRequestDispatcher.java:269
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
              HttpRequestHandler.java:735
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
              HttpRequestHandler.java:243
         void com.evermind.util.ThreadPoolThread.run()
              ThreadPoolThread.java:64

    i still get the same error .. is it i need to set any environment variable or ... any setting ...??
    login Oracle Database
    user name = system
    password = manager
    services = dbhenry
    setting JSP Report
    Report Name = MyReport1
    Reports Server = reportserver
    Parameters = userid=system/manager@dbhenry
    the cource code below is my JSP report coding :
    <rw:report id="MyReport1" parameters="server=reportserver&userid=system/manager@dbhenry">
    <rw:objects id="objects">
    <?xml version="1.0" encoding="WINDOWS-1252" ?>
    <report name="MyReport1" DTDVersion="9.0.2.0.0">
    <xmlSettings xmlTag="MYREPORT1" xmlPrologType="text">
    <![CDATA[<?xml version="1.0" encoding="&Encoding"?>]]>
    </xmlSettings>
    <data>
    <dataSource name="Q_1">
    <select>
    <![CDATA[SELECT ALL HENRY.TEL, HENRY."ADD", HENRY.NAME, HENRY.ID
    FROM HENRY ]]>
    </select>

  • Variant / or / parameter  Tranaction for a report

    I want to create a transaction code for a report .
    This transaction code should load a variant ( Protect a parameter field  ( Value = xyz & user can not change it ) .
    Can someone tell me how to proceed  ?
    Thanks

    > Sandra Rossi wrote:
    > Maybe I am not clear.
    Perhaps I should have been more direct as well - this whole requirement sounds like a nonsense idea and the post which has been awarded the correct answer is questionable.
    > Even with the protection, I just wanted to warn that the user could change the value by creating a new variant. Thank you Julius for telling about the authorization object S_PROGRAM + field P_ACTION = 'VARIANT', without it we can't use the SAVE button.
    Yes, that is what S_PROGRAM does to prevent the SUBMIT of the program, or protect it using groups of programs for which the authorized users (P_ACTION = 'VARIANT') can both maintain and copy the variants of that program group and also submit the reports via their variants (SM37, SA38, shortcuts, etc), but not from the workbench (for that P_ACTION = 'SUBMIT' is required).
    > Another preferrable solution, according to me, is to setup a gui status without the SAVE button.
    I don't agree. The bigger problem here is that the report coding is not making the correct checks to determine whether the user can run it for what ever they are requesting. Hidding the selection screen or forcing it is mostly an indicator that the quality of the programming is questionable.
    A well designed program should validate any input, return or process only the authorized output and provide messages or logs of that which was not returned or processed (or simply not proceed).
    > I agree that we may hide programmatically the parameter with LOOP AT SCREEN, but do it in the AT SELECTION-SCREEN OUTPUT event, not in the INITIALIZATION, because the user may also unhide the field by saving to a new variant (by initializing it from a TVARV(C) variable).
    Good comment. The user can be expected to influence or maintain directly their own user variables used in variants which are controlled by PIDs. That is also why variant values in selection screens etc.. should not be used for security purposes when they can be controlled by PIDs - they are not intended for that. They are intended for preferences, reusing the last criteria, etc. The user can influence their PIDs in many transactions and nagivation paths, or directly via transaction SU3.
    > What do you mean exactly?
    > >
    Julius Bussche wrote:
    > > - The sy-uname protection for the last person to choose the option.
    >
    In transaction VARCH (but also via SA38 etc) there is a flag called "User Protection" or similar. This will protect the variant from modifications from anyone other than the user (sy-uname) who last flagged it and saved. Others with access to S_PROGRAM for that variant, will not be able to change the variant.
    There is a way of unlocking these though... see OSS notes relating to RSVARENT.
    This is a way of personalizing variants. It does not protect the program from being executed by others (also with the same selection criteria - if authorized) but prevents others from changing that specific variant. This can be usefull for variants used in periodic background jobs which should not be changed by someone who is not aware that this will create a potential mess.
    There are a number of different designs and approaches one can take, depending on how the batch job administration responsibilities are defined and use of variants is intended.
    But missing authority-checks in the necessary places is still a "no-brainer"...
    Cheers,
    Julius

  • Need Report for gross profit anaylsis for the month

    Hi gurus,
    i need this report coding as the client has not provided me much information regarding this.selection screen.Company code ,plant code,materialcode,material type,period,fiscal year.this report format should be in alv .
    Sp pls send me the coding for this.
    Urs
    pradeep

    Check below transaction codes and it may be useful
    Customer Analysis- Sales - MC+E
    Customer Analysis- Cr. Memo - MC+I
    Deliveries-Due list - VL04
    Billing due list - VF04
    Incomplete Billing documents - MCV9
    Customer Analysis-Basic List - MCTA
    Material Analysis(SIS) - MCTC
    Sales org analysis - MCTE
    Sales org analysis-Invoiced sales - MC+2
    Material Analysis-Incoming orders - MC(E
    General- List of Outbound deliveries - VL06f
    Material Returns-Analysis - MC+M
    Material Analysis- Invoiced Sales - MC+Q
    Thanks
    Seshu

  • Internal tables & select query for clasical report

    hello all,
           i am a novice in ABAP.i need to retrive data from 4 DB tables to do a classical report. i declared internal tables as below and then retrieved the data as per the below select statements. is there any other way in which i can do the same with a comparitively lesser amt of code.
    data: begin of i_vbak occurs 0,
          vbeln like vbak-vbeln,
          kunnr like vbak-kunnr,
          waerk like vbak-waerk,
          end of i_vbak.
    data: begin of i_vbap occurs 0,
          vbeln like vbap-vbeln,
          kwmeng like vbap-kwmeng,
          posnr like vbap-posnr,
          vrkme like vbap-vrkme,
          netpr like vbap-netpr,
          end of i_vbap.
    data: begin of i_lips occurs 0,
          vbeln like lips-vbeln,
          vgpos like lips-vgpos,
          vrkme like lips-vrkme,
          lfimg like lips-lfimg,
          end of i_lips.
    data: begin of i_vbep occurs 0,
          vbeln like vbep-vbeln,
          posnr like vbep-posnr,
          edatu like vbep-edatu,
          end of i_vbep.
    data: begin of i_out occurs 0,
          kunnr like vbak-kunnr,
          vbeln like vbak-vbeln,
          kwmeng like vbap-kwmeng,
          netpr like vbap-netpr,
          waerk like vbak-waerk,
          vrkme like vbap-vrkme,
          lfimg like lips-lfimg,
          posnr like vbep-posnr,
          edatu like vbep-edatu,
          end of i_out.
          RETRIVING THE DATA INTO INTERNAL TABLE                         *
    select vbeln kunnr waerk from vbak into table i_vbak where kunnr in
    s_kunnr and vbeln in s_vbeln.
    select vbeln kwmeng posnr vrkme netpr from vbap into table i_vbap for
    all entries in i_vbak where vbeln = i_vbak-vbeln.
    select vbeln vgpos vrkme lfimg from lips into table i_lips for all
    entries in i_vbak where vbeln = i_vbak-vbeln and vgpos in s_vgpos.
    select vbeln posnr edatu from vbep into table i_vbep for all entries in
    i_vbak where vbeln = i_vbak-vbeln.
    <b>Points are guaranteed for good answers.</b>
    Thanks in advance
    seenu

    Hi,
    If u will use in ALV means  how many tables u want u can put it. After that u can maintain one internal table that's enough. Afterthat  put select queries after that display the internal table fileds.
    If u will ALV  report means u have to code same coding for every report slight changes only there.
    Herewith i am sending sample ALV REPORT it is useful for u.
    REPORT CODING:
    REPORT  YMS_COLOURALV NO STANDARD PAGE HEADING.
    TYPE-POOLS: SLIS, ICON.
    DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: BEGIN OF IMARA OCCURS 0,
              LIGHT(4) TYPE C,
              MATNR TYPE MARA-MATNR,
              MTART TYPE MARA-MTART,
              MAKTX TYPE MAKT-MAKTX,
              COLOR_LINE(4) TYPE C,
              TCOLOR TYPE SLIS_T_SPECIALCOL_ALV,  "cell
          END OF IMARA.
    DATA: XCOLOR TYPE SLIS_SPECIALCOL_ALV.
    START-OF-SELECTION.
      PERFORM GET_DATA.
      PERFORM WRITE_REPORT.
    Get_Data
    FORM GET_DATA.
      WRITE ICON_GREEN_LIGHT AS ICON TO IMARA-LIGHT.
          IMARA-MATNR = 'ABC'.
          IMARA-MTART = 'ZCFG'.
          IMARA-MAKTX = 'This is description for ABC'.
      APPEND IMARA.
      WRITE ICON_YELLOW_LIGHT AS ICON TO IMARA-LIGHT.
          IMARA-MATNR = 'DEF'.
          IMARA-MTART = 'ZCFG'.
          IMARA-MAKTX = 'This is description for DEF'.
      APPEND IMARA.
      WRITE ICON_RED_LIGHT AS ICON TO IMARA-LIGHT.
          IMARA-MATNR = 'GHI'.
          IMARA-MTART = 'ZCFG'.
          IMARA-MAKTX = 'This is description for GHI'.
      APPEND IMARA.
      LOOP AT IMARA.
        IF SY-TABIX = 1.
          IMARA-COLOR_LINE = 'C410'.     " color line
        ENDIF.
        IF SY-TABIX = 2.                "  color CELL
          CLEAR XCOLOR.
          XCOLOR-FIELDNAME = 'MTART'.
          XCOLOR-COLOR-COL = '3'.
          XCOLOR-COLOR-INT = '1'.       " Intensified on/off
          XCOLOR-COLOR-INV = '0'.
          APPEND XCOLOR TO IMARA-TCOLOR.
        ENDIF.
        MODIFY IMARA.
      ENDLOOP.
    ENDFORM.                    "get_data
    WRITE_REPORT
    FORM WRITE_REPORT.
      DATA: LAYOUT TYPE  SLIS_LAYOUT_ALV.
      LAYOUT-COLTAB_FIELDNAME = 'TCOLOR'.
      LAYOUT-INFO_FIELDNAME = 'COLOR_LINE'.
      PERFORM BUILD_FIELD_CATALOG.
    CALL ABAP LIST VIEWER (ALV)
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          IS_LAYOUT   = LAYOUT
          IT_FIELDCAT = FIELDCAT
        TABLES
          T_OUTTAB    = IMARA.
    ENDFORM.                    "write_report
    BUILD_FIELD_CATALOG
    FORM BUILD_FIELD_CATALOG.
      DATA: FC_TMP TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
      CLEAR: FIELDCAT. REFRESH: FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Status'.
      FC_TMP-FIELDNAME  = 'LIGHT'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '4'.
      FC_TMP-ICON       = 'X'.
      APPEND FC_TMP TO FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Material Number'.
      FC_TMP-FIELDNAME  = 'MATNR'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '18'.
      APPEND FC_TMP TO FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Material Type'.
      FC_TMP-FIELDNAME  = 'MTART'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '10'.
      APPEND FC_TMP TO FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Material'.
      FC_TMP-FIELDNAME  = 'MAKTX'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '40'.
      FC_TMP-EMPHASIZE = 'C610'.   " color column
      APPEND FC_TMP TO FIELDCAT.
    ENDFORM.                    "build_field_catalog
    Thanks,
    Shankar

Maybe you are looking for