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.

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

  • 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.

  • 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

  • JTable (single) graphic row background?

    I'd like each row in a JTable to display a single graphic image behind the whole row - not on a cell by cell basis, one long image behind all the cells in the row - and be able to dynamically choose the image for a given row based on data in one or m

  • Consistently size employee photos with PSE 9

    I have PSE 9 and would like to use it to consistently size all employee photos for ID badges.  For example, after taking the employee's picture, it would be uploaded/dragged into PSE and cropped appropriately, then saved at the ideal size.  Overtime,

  • Working with XI attachment

    Hello It is possible to create attachment in XI message like descibed in blog https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2849. [original link is broken] [original link is broken] [original link is broken] [original link is broken] [origina

  • GDM Keyboard layout

    Im having trouble setting the keyboard's layout for GDM..... I followed the wiki: https://wiki.archlinux.org/index.php/GN - ard_layout ... leading to this other page -> https://wiki.archlinux.org/index.php/Be - S_keyboard And created the file /etc/X1

  • Enable universal access for steam is not enabled - how do I turn it on?

    In order to get some functionality from steam to be enabled, I understand I need to enable universal access for steam on my computer.  When I try to do this, its greyed out showing it can't be enabled.  How can I enable it / what would cause it to gr