ALV report code dumping

Hello gurus,
I am trying to write a simple ALV report code. I pasted the code below.
The program is getting dumped. I am unable to find where the error is.
Please help me out.
Thanks in advance.
Regards,
Balu
REPORT  YBP_ALV1                                .
TABLES  : MARA.
DATA    : BEGIN OF itab OCCURS 500,
          matnr LIKE mara-matnr,
          ersda LIKE mara-ersda,
          ernam LIKE mara-ernam,
          END OF itab.
DATA i_repid LIKE sy-repid.
DATA i_lines LIKE sy-tabix.
TYPE-POOLS  : slis.
DATA int_fcat TYPE SLIS_T_FIELDCAT_ALV.
SELECT-OPTIONS  : s_matnr for mara-matnr matchcode object mat1.
START-OF-SELECTION.
select * FROM mara into CORRESPONDING FIELDS OF itab WHERE  matnr in s_matnr.
ENDSELECT.
end-of-SELECTION.
i_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME               = i_repid
I_INTERNAL_TABNAME           = 'ITAB'
I_INCLNAME                   = i_repid
CHANGING
CT_FIELDCAT                  = int_fcat
EXCEPTIONS
INCONSISTENT_INTERFACE       = 1
PROGRAM_ERROR                = 2
OTHERS                       = 3.
IF SY-SUBRC <> 0.
  WRITE: / 'RETURNCODE', sy-subrc, 'from function reuse_alv_fieldcatalog_merge'.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM  = i_repid
IT_FIELDCAT                    = int_fcat
I_SAVE                         = 'A'
TABLES
T_OUTTAB                       = itab
EXCEPTIONS
PROGRAM_ERROR                  = 1
OTHERS                         = 2.
IF SY-SUBRC <> 0.
  WRITE :/ 'Returncode', sy-subrc, 'from function reuse_alv_list_display'.
ENDIF.
Edited by: Balu on Jan 3, 2008 12:27 PM

Rich,
my code after the suggested changes -
REPORT  YBP_ALV1                                .
TABLES  : MARA.
DATA    : BEGIN OF xtab,
          matnr LIKE mara-matnr,
          ersda LIKE mara-ersda,
          ernam LIKE mara-ernam,
          END OF xtab,
          itab LIKE STANDARD TABLE OF xtab WITH HEADER LINE.
DATA i_repid LIKE sy-repid.
DATA i_lines LIKE sy-tabix.
TYPE-POOLS  : slis.
DATA int_fcat TYPE SLIS_T_FIELDCAT_ALV.
SELECT-OPTIONS  : s_matnr for mara-matnr matchcode object mat1.
START-OF-SELECTION.
select * FROM mara into CORRESPONDING FIELDS OF itab WHERE
  matnr in s_matnr.
ENDSELECT.
describe TABLE itab LINES i_lines.
*if i_lines lt 1.
write: / 'no material found'.
exit.
*endif.
*clear i_lines.
end-of-SELECTION.
i_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
   I_PROGRAM_NAME               = i_repid
   I_INTERNAL_TABNAME           = 'XTAB'
   I_INCLNAME                   = i_repid
  CHANGING
    CT_FIELDCAT                  = int_fcat
EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3.
IF SY-SUBRC <> 0.
  WRITE: / 'RETURNCODE', sy-subrc, 'from function reuse_alv_fieldcatalog_merge'.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
   I_CALLBACK_PROGRAM             = i_repid
   IT_FIELDCAT                    = int_fcat
   I_SAVE                         = 'A'
  TABLES
    T_OUTTAB                       = itab
EXCEPTIONS
   PROGRAM_ERROR                  = 1
   OTHERS                         = 2.
IF SY-SUBRC <> 0.
  WRITE : / 'Returncode', sy-subrc, 'from function reuse_alv_list_display'.
ENDIF.
The dump analysis is as below. Sorry I pasted the wrong analysis before -
An exception occurred. This exception is dealt with in more detail below
. The exception, which is assigned to the class 'CX_SY_READ_SRC_LINE_TOO_LONG',
was neither
caught nor passed along using a RAISING clause, in the procedure
"K_KKB_FIELDCAT_MERGE" "(FUNCTION)"
Since the caller of the procedure could not have expected this exception
to occur, the running program was terminated.
The reason for the exception is:
You tried to read the program "YBP_ALV1" from the database. The READ REPORT
statement allows you to copy a program's source code into an internal
table. The lines of source code must not be longer than the width of the
internal table. The internal table is 72 characters wide. The source
code line is 80 wide.
Regards,
Balu

Similar Messages

  • ALV report code

    Dear all,
    I get results in rows & columnwise in ALV report. Suppose I select any field & double click , I want to call any function further.
    Pl' tell the example how to give this event action in code ??
    Pl ' give sample examples.....
    Thanks..

    hi
    take help' of  this code
    *& Report  ZTESTDEMO_INTERACTIVE_LIST_2
    REPORT  ZTESTDEMO_INTERACTIVE_LIST_2.
    TABLES: MARA,MARC,MARD.
    * internal table itab_mara 3 fields matnr, ernam,mtart
    DATA: BEGIN OF ITAB_MARA OCCURS 0,
    MATNR LIKE MARA-MATNR,  " material number
    ERNAM LIKE MARA-ERNAM,  " name of person who create
    MTART LIKE MARA-MTART,  " Material Type
    END OF ITAB_MARA.
    * internal table itab_marc 3 fields matnr, werks,lvorm
    DATA: BEGIN OF ITAB_MARC OCCURS 0,
    MATNR LIKE MARC-MATNR,
    WERKS LIKE MARC-WERKS,  " Plant
    LVORM LIKE MARC-LVORM,  " Flag Material for Deletion at Plant Level
    END OF ITAB_MARC.
    * internal table itab_mard 2 fields
    DATA: BEGIN OF ITAB_MARD OCCURS 0,
    MATNR LIKE MARD-MATNR,
    LGORT LIKE MARD-LGORT,  " Storage Location
    END OF ITAB_MARD.
    SELECT-OPTIONS: S_MTART FOR MARA-MTART.
    INITIALIZATION.
    S_MTART-LOW = 'HALB'.
    S_MTART-HIGH = 'HAWA'.
    S_MTART-OPTION = 'BT'.
    APPEND S_MTART.
    START-OF-SELECTION.
    SELECT MATNR ERNAM MTART FROM MARA INTO TABLE ITAB_MARA WHERE MTART IN
    S_MTART.
    PERFORM DISPLAY.
    TOP-OF-PAGE.
    WRITE:/2(15) 'MATERIAL NO',20(20) 'CREATED BY',45(15) 'MATERIAL TYPE'.
    FORM DISPLAY.
    LOOP AT ITAB_MARA.
    WRITE:/ ITAB_MARA-MATNR UNDER 'MATERIAL NO' HOTSPOT ON,ITAB_MARA-ERNAM
    UNDER 'CREATED BY',ITAB_MARA-MTART UNDER 'MATERIAL TYPE'.
    HIDE: ITAB_MARA-MATNR.
    ENDLOOP.
    ENDFORM.
    AT LINE-SELECTION.
    CASE SY-LSIND.
    WHEN 1.
    SELECT MATNR WERKS LVORM FROM MARC INTO TABLE ITAB_MARC WHERE MATNR =
    ITAB_MARA-MATNR.
    PERFORM DISPLAY1.
    WHEN 2.
    SELECT MATNR LGORT FROM MARD INTO TABLE ITAB_MARD WHERE MATNR =
    ITAB_MARC-MATNR.
    PERFORM DISPLAY2.
    when 3.
    sy-lsind = 0.
    ENDCASE.
    FORM DISPLAY1.
    LOOP AT ITAB_MARC.
    WRITE:/ ITAB_MARC-MATNR HOTSPOT ON, ITAB_MARC-WERKS,ITAB_MARC-LVORM.
    HIDE: ITAB_MARC-MATNR.
    ENDLOOP.
    WRITE:/ SY-LSIND.
    ENDFORM.
    FORM DISPLAY2.
    LOOP AT ITAB_MARD.
    WRITE:/ ITAB_MARD-MATNR, ITAB_MARD-LGORT.
    ENDLOOP.
    WRITE:/ SY-LSIND.
    ENDFORM.
    regards
    ravish
    <b>plz reward points if helpful</b>

  • REGARDING ALV REPORT SHORT DUMP

    hI ALL,
    IAM GETTING FOR THE FOLLOWING CODE,
    PLEASE WHY THE ERROR IN ECC 6.0
    TABLES AND DATA DECLARATION.
    *TABLES: mara,makt.",marc.
    data syrepid like sy-repid.
    data sydatum(10). " LIKE sy-datum.
    data sypagno(3) type n.
    WHEN USING MORE THAN ONE TABLE IN ALV WE NEEED TO DECLARE THE TYPE
    GROUP (TYPE-POOLS--------->SLIS)
    type-pools : slis.
    INTERNAL TABLE DECLARATION.
    INTERNAL TABLE TO HOLD THE VALUES FROM THE MARA TABLE
    data: begin of t_mara occurs 0,
    matnr like mara-matnr,
    meins like mara-meins,
    mtart like mara-mtart,
    matkl like mara-matkl,
    end of t_mara.
    INTERNAL TABLE TO HOLD THE CONTENTS FROM THE EKKO TABLE
    data : begin of t_marc occurs 0,
    matnr like mara-matnr,
    werks like marc-werks,
    minbe like marc-minbe.
    data: end of t_marc.
    INTERNAL TABLE TO HOLD THE VALUES FROM MAKT TABLE.
    data : begin of t_makt occurs 0,
    matnr like mara-matnr,
    maktx like makt-maktx,
    spras like makt-spras,
    end of t_makt.
    INTERNAL TABLE WHICH ACTUALLY MERGES ALL THE OTHER INTERNAL TABLES.
    data: begin of itab1 occurs 0,
    matnr like mara-matnr,
    meins like mara-meins,
    maktx like makt-maktx,
    spras like makt-spras,
    werks like marc-werks,
    minbe like marc-minbe,
    end of itab1.
    THE FOLLOWING DECLARATION IS USED FOR DEFINING THE FIELDCAT
    AND THE LAYOUT FOR THE ALV.
    HERE AS slis_t_fieldcat_alv IS A INTERNAL TABLE WITHOUT A HEADER LINE
    WE EXPLICITELY DEFINE AN INTERNAL TABLE OF THE SAME STRUCTURE AS THAT
    OF slis_t_fieldcat_alv BUT WITH A HEADER LINE IN THE DEFINITION.
    THIS IS DONE TO MAKE THE CODE SIMPLER.
    OTHERWISE WE MAY HAVE TO DEFINE THE STRUCTURE AS IN THE NORMAL SAP
    PROGRAMS.
    IN THE FIELDCATALOG TABLE WE ACTUALLY PASS THE FIELDS FROM ONE OR
    MORE TABLES AND CREATE A STRUCTURE
    IN THE LAYOUT STRUCTURE WE BASICALLY DEFINE THE FORMATTING OPTIONS
    LIKE DISPLAY IN THE ZEBRA PATTERN ,THE HOTSPOT OPTIONS ETC.
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
    fieldlayout type slis_layout_alv.
    DECLARING THE EVENTTABLE INTERNL TABLE FOR USING EVENTS LIKE
    TOP-OF-PAGE ETC.
    data : eventstab type slis_t_event with header line.
    DECLARING AN INTERNAL TABLE TO HOLD THE DATA FOR THE TOP-OF-PAGE
    data : heading type slis_t_listheader with header line.
    data : heading1 type slis_t_listheader with header line.
    data : heading2 type slis_t_listheader with header line.
    data : heading3 type slis_t_listheader with header line.
    data : heading4 type slis_t_listheader with header line.
    data : heading5 type slis_t_listheader with header line.
    data : heading6 type slis_t_listheader with header line.
    data : heading7 type slis_t_listheader with header line.
    data : heading8 type slis_t_listheader with header line.
    STRUCTURE TO PASS THE COLOR ATTRIBUTES FOR DISPLAY.
    data : colorstruct type slis_coltypes.
    INITIALIZATION. *
    initialization.
    syrepid = sy-repid.
    sypagno = sy-pagno.
    clear fieldcatalog.
    START-OF-SELECTION. *
    start-of-selection.
    SUBROUTINE TO POPULATE THE COLORSTRUCT
    perform fill_colorstruct using colorstruct.
    SUBROUTINE TO POPULATE THE FIELDS OF THE FIELD CATALOGUE
    perform populate_fieldcatalog.
    SUBROUTINE TO SELECT DATA FROM VARIOUS TABLES AND POPULATE IT IN THE
    INTERNAL TABLE.
    perform selectdata_and_sort.
    SUBROUTINE TO POPULATE THE LAYOUT STRUCTURE.
    perform populate_layout using fieldlayout.
    SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY.
    perform merge_fieldcatalog.
    SUBROUTINE TO POPULATE THE EVENTSTAB.
    perform fill_eventstab tables eventstab.
    SUBROUTINE TO POPULATE THE HEADING TABLES.
    perform fill_headingtable tables heading using 'HEADING'.
    perform fill_headingtable tables heading1 using 'HEADING1'.
    perform fill_headingtable tables heading2 using 'HEADING2'.
    perform fill_headingtable tables heading3 using 'HEADING3'.
    perform fill_headingtable tables heading4 using 'HEADING4'.
    perform fill_headingtable tables heading5 using 'HEADING5'.
    perform fill_headingtable tables heading6 using 'HEADING6'.
    perform fill_headingtable tables heading7 using 'HEADING7'.
    perform fill_headingtable tables heading8 using 'HEADING8'.
    SUBROUTINE TO DISPLAY THE LIST.
    perform display_alv_list.
    FORMS
    IN THIS SUBROUTINE WE POPULATE THE FIELDCATALOG TABLE WITH THE NAMES
    OF THE TABLE,FIELDNAME,WHETHER IT IS KEY FIELD OR NOT,HEADING AND
    COLUMN JUSTIFICATION.
    form populate_fieldcatalog.
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'MATNR' 'X' .
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'MEINS' ' '.
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'MAKTX' ' ' .
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'MTART' ' ' .
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'MATKL' ' ' .
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'SPRAS' ' ' .
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'WERKS' ' ' .
    perform fill_fields_of_fieldcatalog tables fieldcatalog
    using 'ITAB1' 'MINBE' ' ' .
    endform. " POPULATE_FIELDCATALOG
    FORM FILL_FIELDS_OF_FIELDCATALOG *
    --> FIELDCATALOG *
    --> P_TABNAME *
    --> P_FIELDNAME *
    --> P_KEY *
    --> P_KEY *
    form fill_fields_of_fieldcatalog tables fieldcatalog
    structure fieldcatalog
    using p_tabname
    p_fieldname
    p_key.
    p_no_out.
    fieldcatalog-tabname = p_tabname.
    fieldcatalog-fieldname = p_fieldname.
    fieldcatalog-key = p_key.
    fieldcatalog-emphasize = '1234'.
    *fieldcatalog-no_out = p_no_out.
    append fieldcatalog.
    endform. " FILL_FIELDSOFFIELDCATALOG
    FORM POPULATE_LAYOUT *
    --> FIELDLAYOUT *
    form populate_layout using fieldlayout type slis_layout_alv.
    fieldlayout-f2code = '&ETA' .
    fieldlayout-zebra = 'X'.
    FOR THE WINDOW TITLE.
    fieldlayout-window_titlebar = 'ALV with Events'.
    fieldlayout-colwidth_optimize = 'X'.
    fieldlayout-no_vline = ' '.
    *fieldlayout-no_input = 'X'.
    fieldlayout-confirmation_prompt = ''.
    fieldlayout-key_hotspot = 'X'.
    This removes the column headings if the flag is set to 'X'
    fieldlayout-no_colhead = ' '.
    *fieldlayout-hotspot_fieldname = 'MAKTX'.
    fieldlayout-detail_popup = 'X'.
    fieldlayout-coltab_fieldname = 'X'.
    endform. " POPULATE_LAYOUT
    FORM SELECTDATA_AND_SORT *
    form selectdata_and_sort.
    select matnr meins mtart matkl from mara
    into corresponding fields of t_mara
    up to 500 rows .
    select matnr maktx spras from makt
    into corresponding fields of t_makt
    where matnr = t_mara-matnr and
    spras = sy-langu.
    select matnr werks minbe from marc
    into corresponding fields of t_marc
    where matnr = t_mara-matnr.
    append t_marc.
    endselect.
    append t_makt.
    endselect.
    append t_mara.
    endselect.
    perform populate_itab1.
    sort itab1 by matnr.
    endform. " SELECTDATA_AND_SORT
    FORM MERGE_FIELDCATALOG *
    form merge_fieldcatalog.
    call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
    i_program_name = syrepid
    i_internal_tabname = 'ITAB1'
    i_structure_name = 'COLORSTRUCT'
    I_CLIENT_NEVER_DISPLAY = 'X'
    i_inclname = syrepid
    changing
    ct_fieldcat = fieldcatalog[]
    exceptions
    inconsistent_interface = 1
    program_error = 2
    others = 3.
    endform. " MERGE_FIELDCATALOG
    IN THIS FUNCTION THE MINIMUM PARAMETERS THAT WE NEED TO PASS IS AS
    FOLLOWS:-
    i_callback_program --> CALLING PROGRAM NAME
    i_structure_name --> STRUCTURE NAME.
    is_layout --> LAYOUT NAME.
    it_fieldcat ---> BODY OF THE FIELD CATALOGUE INTERNAL TABLE
    form display_alv_list.
    call function 'REUSE_ALV_LIST_DISPLAY'
    exporting
    I_INTERFACE_CHECK = ' '
    i_callback_program = syrepid
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
    i_structure_name = 'ITAB1'
    is_layout = fieldlayout
    it_fieldcat = fieldcatalog[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    THE FOLLOWING PARAMETER IS SET AS 'A' INORDER TO DISPLAY THE STANDARD
    TOOL BAR
    i_save = 'A'
    IS_VARIANT = ' '
    it_events = eventstab[]
    IT_EVENT_EXIT =
    IS_PRINT =
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    tables
    t_outtab = itab1
    exceptions
    program_error = 1
    others = 2.
    endform. " DISPLAY_ALV_LIST
    *& Form POPULATE_ITAB1
    text
    --> p1 text
    <-- p2 text
    form populate_itab1.
    loop at t_mara.
    loop at t_makt where matnr = t_mara-matnr.
    loop at t_marc where matnr = t_mara-matnr.
    move-corresponding t_mara to itab1.
    move-corresponding t_makt to itab1.
    move-corresponding t_marc to itab1.
    append itab1.
    endloop.
    endloop.
    endloop.
    endform. " POPULATE_ITAB1
    *& Form FILL_EVENTSTAB
    text
    -->P_EVENTSTAB text *
    form fill_eventstab tables p_eventstab structure eventstab.
    WHEN THE FOLLOWING FUNCTION IS CALLED THE SYSTEM POPULATES THE
    INTERNAL TABLE EVENTSTAB WITH A LIST OF EVENTS NAME.
    AS SHOWN BELOW WHEN USING I_LIST_TYPE = 0 THE FUNCTION RETURNS 14
    EVENTS NAME.
    call function 'REUSE_ALV_EVENTS_GET'
    exporting
    i_list_type = 0
    importing
    et_events = p_eventstab[]
    exceptions
    list_type_wrong = 1
    others = 2.
    BY CALLING THE ABOVE FUNCTION WE FIRST POPULATE THE EVENTSTAB WITH
    THE PREDEFINED EVENTS AND THEN WE MOVE THE FORM NAME AS SHOWN BELOW.
    WE ASSIGN A FORM NAME TO THE EVENT AS REQUIRED BY THE USER.
    FORM NAME CAN BE ANYTHING.THE PERFORM STATEMENT FOR THIS FORM
    IS DYNAMICALY CALLED.
    read table p_eventstab with key name = slis_ev_top_of_page.
    if sy-subrc = 0 .
    move 'TOP_OF_PAGE' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_top_of_coverpage.
    if sy-subrc = 0 .
    move 'TOP_OF_COVERPAGE' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_end_of_coverpage .
    if sy-subrc = 0 .
    move 'END_OF_COVERPAGE' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_foreign_top_of_page.
    if sy-subrc = 0 .
    move 'FOREIGN_TOP_OF_PAGE' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_foreign_end_of_page.
    if sy-subrc = 0 .
    move 'FOREIGN_END_OF_PAGE' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_list_modify.
    if sy-subrc = 0 .
    move 'LIST_MODIFY' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_top_of_list.
    if sy-subrc = 0 .
    move 'TOP_OF_LIST' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_end_of_page.
    if sy-subrc = 0 .
    move 'END_OF_PAGE' to p_eventstab-form.
    append p_eventstab.
    endif.
    read table p_eventstab with key name = slis_ev_end_of_list .
    if sy-subrc = 0 .
    move 'END_OF_LIST' to p_eventstab-form.
    append p_eventstab.
    endif.
    endform. " FILL_EVENTSTAB
    *& Form FILL_HEADINGTABLE
    text
    -->P_HEADING text *
    form fill_headingtable tables p_heading structure heading
    using tablename.
    case tablename.
    when 'HEADING'.
    p_heading-typ = 'H'.
    concatenate
    ' REPORT NAME:-' syrepid
    ' ABB Industry Pte Ltd' into p_heading-info.
    append p_heading.
    write sy-datum using edit mask '__/__/____' to sydatum.
    concatenate
    ' DATE:-' sydatum ' USER: ' sy-uname 'PAGE NO:' sypagno
    into p_heading-info.
    append p_heading.
    when 'HEADING1'.
    p_heading-typ = 'H'.
    p_heading-info = 'TOP-OF-COVER-PAGE'.
    append p_heading.
    when 'HEADING2'.
    p_heading-typ = 'H'.
    p_heading-info = 'END-OF-COVER-PAGE'.
    append p_heading.
    when 'HEADING3'.
    p_heading-typ = 'H'.
    p_heading-info = 'FOREIGN-TOP-OF-PAGE'.
    append p_heading.
    when 'HEADING4'.
    p_heading-typ = 'H'.
    p_heading-info = 'FOREIGN-END-OF-PAGE'.
    append p_heading.
    WHEN 'HEADING5'.
    P_HEADING-TYP = 'H'.
    P_HEADING-INFO = 'LIST-MODIFY'.
    APPEND P_HEADING.
    when 'HEADING6'.
    p_heading-typ = 'H'.
    p_heading-info = 'END-OF-PAGE'.
    append p_heading.
    when 'HEADING7'.
    p_heading-typ = 'H'.
    p_heading-info = 'END-OF-LIST'.
    append p_heading.
    when 'HEADING8'.
    p_heading-typ = 'H'.
    p_heading-info = 'TOP-OF-LIST'.
    append p_heading.
    endcase.
    endform. " FILL_HEADINGTABLE
    FORM TOP_OF_PAGE *
    form top_of_page.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading[]
    exceptions
    others = 1.
    endform.
    *& Form FILL_COLORSTRUCT
    text
    -->P_COLORSTRUCT text *
    form fill_colorstruct using p_colorstruct type slis_coltypes .
    p_colorstruct-heacolfir-col = 6.
    p_colorstruct-heacolfir-int = 1.
    p_colorstruct-heacolfir-inv = 1.
    endform. " FILL_COLORSTRUCT
    FORM TOP_OF_COVERPAGE *
    form top_of_coverpage.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading1[]
    exceptions
    others = 1.
    endform.
    FORM END_OF_COVERPAGE *
    form end_of_coverpage.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading2[]
    exceptions
    others = 1.
    endform.
    FORM FOREIGN_TOP_OF_PAGE *
    form foreign_top_of_page.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading3[]
    exceptions
    others = 1.
    endform.
    FORM FOREIGN_END_OF_PAGE *
    form foreign_end_of_page.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading4[]
    exceptions
    others = 1.
    endform.
    FORM LIST_MODIFY *
    *FORM LIST_MODIFY.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    IT_LIST_COMMENTARY = HEADING5[]
    EXCEPTIONS
    OTHERS = 1.
    *ENDFORM.
    FORM END_OF_PAGE *
    form end_of_page.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading6[]
    exceptions
    others = 1.
    endform.
    FORM END_OF_LIST *
    form end_of_list.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading7[]
    exceptions
    others = 1.
    endform.
    FORM TOP_OF_LIST *
    form top_of_list.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = heading8[]
    exceptions
    others = 1.
    endform.
    SHORT DUMP IS
    This error may occur if
    - You address a typed field symbol before it has been set with
       ASSIGN
    - You address a field symbol that pointed to the line of an
       internal table that was deleted
    - You address a field symbol that was previously reset using
       UNASSIGN or that pointed to a local field that no
       longer exists
    - You address a global function interface, although the
       respective function module is not active - that is, is
       not in the list of active calls. The list of active calls
       can be taken from this short dump.
    PLEASE GIVE ME ANSWER.
    REGARDS

    HI I MADE SOME CHANGES TO UR CODE...
    RUN IF THIS IS THE REQ ...
    IN SELECT QUERIES OF RETRIEVING DATA..
    form selectdata_and_sort.
      select matnr meins mtart matkl from mara
      into corresponding fields of TABLE t_mara
    WHERE MATNR = T_MARA-MATNR.
      up to 200 rows .
      IF SY-SUBRC = 0.
        MESSAGE I001 WITH ' DATA RET FROM MARA'.
      ENDIF.
      IF T_MARA[] IS NOT INITIAL .
    select
           matnr
           maktx
           spras
           From
           makt
           into corresponding fields of TABLE t_makt
            FOR ALL ENTRIES IN T_MARA
           where matnr = t_mara-matnr and
           spras = sy-langu.
      ENDIF.
      IF SY-SUBRC = 0 .
      MESSAGE I001 WITH ' DATA RET FROM MAKT'.
      ENDIF.
      IF T_MAKT[] IS NOT INITIAL.
          select matnr
                 werks
                 minbe
                 from marc
                 into corresponding fields of  TABLE t_marc
                 FOR ALL ENTRIES IN
                 T_MAKT where matnr = t_maKT-matnr.
        ENDIF.
    ENDFORM.                    "selectdata_and_sort
    JUST TRY THIS CODE..

  • Short dump when I do total or sub total in the ALV report

    Hi,
    When I do total or sub-total on the currency field in the ALV report, it'll give a short dump like
    " The current application program detected a situation which really
    should not occur. Therefore, a termination with a short dump was
    triggered on purpose by the key word MESSAGE (type X)".
       Short text of error message:
       Technical information about the message:
       Message classe...... "0K"
       Number.............. 000
       Variable 1.......... " "
       Variable 2.......... " "
       Variable 3.......... " "
       Variable 4.......... " "
       Variable 3.......... " "
       Variable 4.......... " "
    Trigger Location of Runtime Error
        Program                                 SAPLSLVC
        Include                                 LSLVCF36
        Row                                     2,726
        Module type                             (FORM)
        Module Name                             FILL_DATA_TABLE
    sometime when I do the page down on the ALV report, the same short dump is coming.
    Can anyone help me out.
    Thanks
    Selva

    Hi,
    I'm getting this short dump in the standard program.
    I'm getting ALV report display perfectly. the problem is, when I do total or subtotal on the currency fields.
    2704
    2705 ************************************
    2706 * Column per Fieldcat Entry
    2707 ************************************
    2708         ls_lvc_data-value = space.
    2709         clear ls_lvc_data-style.
    2710         loop at it_fcat_local assigning <ls_fcat>
    2711                 where tech ne 'X' and no_out ne 'X'.
    2712           if l_invisible eq 'X'.
    2713             clear l_invisible.
    2714             if <ls_fcat>-do_sum is initial.
    2715               continue.
    2716             else.
    2717               clear ls_lvc_data-col_pos.
    2718             endif.
    2719           endif.
    2720
    2721           add 1 to ls_lvc_data-col_pos.
    2722
    2723           assign component <ls_fcat>-fieldname
    2724                            of structure <ls_data> to <l_field_value>.
    2725           if sy-subrc ne 0.
    >>>>>             message x000(0k).
    2727           endif.
    2728
    in this standard program, I'm getting the dump. the line is mentioned above in the code.

  • Short dump while filtering an ALV report

    Hi ,
    I have an ALV report which gives me short dump when I filter any of the 'P' type field. I tried to implement sap note 839839 in debug mode but in vain. Should I implement this note first and then check the chnage?
    the short dump error "..........
    Error in ASSIGN: Memory protection error.                                                                               
    The current program "SAPLSSEL " uses the ASSIGN statement.              
    However, the offset of the segment (20208) plus the length (69)         
    is greater than the length of the segment (20264).                      
    This is not allowed.                                                                               
    If the error is in one of your own ABAP programs or an SAP program that          
    you have modified, try to correct it.                                            
    Reduce the offset and/or length that you are using.                                                                               
    If the error occurred in a non-modified SAP program, you may be                  
    able to find a solution in the SAP note system.                                  
    If you have access to the note system yourself, use the following                
    search criteria:                                                                               
    "ASSIGN_OFFSET+LENGTH_TOOLARGE"                                   
    "SAPLSSEL " or "LSSELFDI "                                        
    "FILL_DYN_FROM_FIELD_SEL"               ........."
    I appreciate ur inputs.
    thanks in advance,
    regards,
    shan

    Hi Guys,
    I found the answer. I had to define all P type fields with eaxact length of 16 . Its working fine.
    thanks for all your help.
    regards,
    shan

  • Code for Hot spot in ALV report to call transaction

    Hi,
    I  hv never use hot spot to link as a call transaction can u give the link or code how to make hot spot on a particular fields  i am working on a ALV report in that report in the belnr coloumn when user click on belnr i want to call FB03 transaction ref. to that belnr number and fisacl year.
    regards,
      zafar

    Hi,
    In the fieldcatalog you will have to write the hotspot as shown below,
       wa_fieldcat-hotspot   =  'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program       = sy-repid
            i_callback_user_command  = 'USER_COMMAND'"----> this is important
         i_callback_pf_status_set = 'PFSTATUS'
            it_fieldcat              = it_fieldcat
            is_layout                = it_layout
         it_event_exit            = it_eventexit
         i_screen_start_column    = 10
         i_screen_start_line      = 20
         i_screen_end_column      = 70
         i_screen_end_line        = 45
            i_grid_title             = 'Customer-Order Details'
          TABLES
            t_outtab                 = it_data.
    then you will have to catch the user command as follows,
    FORM user_command USING r_ucomm TYPE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      DATA: alv_vbeln TYPE vbeln,
            mess_text(30) TYPE c,
            txt_vbeln(10) TYPE c.
    *User clicks a Order No. in ALV it passed to the following transaction.
      CASE r_ucomm.
        WHEN '&IC1'.
          READ TABLE it_data INDEX rs_selfield-tabindex INTO wa_data.
          alv_vbeln  = wa_data-vbeln..
          IF sy-subrc = 0.
            CLEAR: mess_text, txt_vbeln.
            SUBMIT zprogram
             WITH pr_vbeln = alv_vbeln AND RETURN.
    put your call transaction logic here
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    Hope it helps you,
    Regards,
    Abhijit G. Borkar

  • Bar Code in ALV report

    Hello,
          Is it possible to print Barcode(for Work order) in ALV report...

    Hi Perumal
    In ALV there wont be any need for bar code, bcoz barcodes are only printing purpose.
    barcode can be displayed using sapscript in reports.
    regards
    kishore

  • Is there any transaction code for uploding logo in ALV reports.

    is there any transaction code for uploding logo in ALV reports.

    hi,
    call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
                i_logo             = 'Z_LOGO'.
    endform.
    Upload Logo for REUSE_ALV_COMMENTARY_WRITE
    For those who wish to upload and use a picture in your ALV abap reports.
    Steps for uploading Logo :-:
    1. Goto the transaction OAER
    2. Enter the class name as 'PICTURES'
    3. Enter the class type as 'OT'
    4. Enter the object key as the name of the logo you wish to give
    5. Execute
    6. Then in the new screen select Standard doc. types in bottom window
    Click on the Screen icon
    Now, it will ask for the file path where you have to upload the logo
    7. Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
    or
    Import Logo and Background Picture for Reporting
    In this step, you can import a customer-specific logo and a background picture into the R/3 System. These will be displayed in the header area of reports in HR Funds and Position Management.
    From the SPRO:
    HR Funds and Position Management --> Dialog Control --> Customize Reporting Interface --> Import Logo and Background Picture for Reporting.
    Activities
    1. Enter the Name of your logo/background picture as an object key in the initial screen.
    2. Make sure that the class name is PICTURES, and the class type is OT.
    3. Choose Execute.
    4. Double-click the document type Picture on the Create tab page. A dialog box will appear in which you can enter the path in which the logo/background picture can be found.
    5. Enter the path and choose Open. The logo will be uploaded into the current R/3 System. If the logo/background picture is to be transported into other systems as well, choose Transport.
    6. Return to the initial screen and repeat the procedure after having entered the Name of your background picture as an object key.
    Please note that the logo/background picture can only be displayed in ALV-based reports with an HTML header. Manually programmed reports such as business distribution plans are not based on the ALV.
    If you have selected several initial objects, ALV-based reports in HR Funds and Position Management will automatically use a hiearchical-sequential display. A logo is not displayed here either. Note also that the logo cannot be printed (see print preview in program).
    Make sure that the logo does not exceed a height of 100 pixels because it would mean that the header of the report will be scrollable.

  • Dump in prodcution server while downloading ALV report to excel sheet

    HI ALL,
    ALV report is working fine in bother DEV and PROD servers....but in production while downloading report to excel sheet it is going to dump.
    "dump is below:
    Short text
    Field symbol has not yet been assigned.
    What happened?
        Error in the ABAP Application Program
        The current ABAP program "SAPLKKBL" had to be terminated because it has
        come across a statement that unfortunately cannot be executed. "
    But in development this problem is not there, iam able to download ALV report to EXCEL sheet.
    Any help experts......
    Thanks in advance
    Ram

    Hi,
    I had the same problem,
    Run a consistency check for your ALV and you will find out. See if you havent passed any unnecessary parameter to FM.
    /people/rainer.hbenthal/blog/2009/09/25/sos--my-alv-report-is-not-working
    Dump while printing ALV (field symbol not assigned)
    Sumit

  • Dump for the ALV report for the excel.

    HI,
    We are having a ALV report.
    We are using REUSE_ALV_FIELDCATALOG_MERGE and REUSE_ALV_GRID_DISPLAY.
    After we run the report we get the output on the screen properly.
    When we choose the "Local File" button it goes to the dump.
    The following messages comes.
    Runtime Errors " OBJECTS_NOT_CHARLIKE"
    "The current statement requires a character-type data object.".
    Could you pls advise where is the problem.
    Rohita

    change the TABNAME to uppercase
    ls_fcat-tabname = 'LTB_REPORT'.   "<------------ changed to upper case
    ls_fcat-fieldname = 'NAME_ORG1'.
    ls_fcat-seltext_s = 'Distributor Name'.
    ls_fcat-seltext_m = 'Distributor Name'.
    ls_fcat-seltext_l = 'Distributor Name'.
    ls_fcat-datatype = 'CHAR'.
    ls_fcat-outputlen = 30.
    APPEND ls_fcat TO ct_fcat.

  • Report code with ALV

    Hi
    Can any body provide me the code for report with selection screen using ALV.
    Thanks in advance
    Prasanna Kumar

    Hi Prasanna,
    Below is an example of ALV reporting.
    *& Report  ZVVF_MR028_STOCKLEDGER                                      *
    REPORT  ZVVF_MR028_STOCKLEDGER                  .
    *       Tables
    TABLES:      EKKO,    "PURCHASING DOC. HEADER
                 EKPO,    "PURCHASING DOC. ITEM
                 MAKT,    "MATERIAL DISCRIPTION
                 LFA1,    "VENDOR MASTER
                 RSEG,    "DOC. ITEM - INCOMING INVOICE
                 KONV,    "CONDITION (TRANSECTION DATA - CLUSTER TABLE)
                 EKPA,    "Partner Roles in Purchasing
                 MSEG,
                 t247,
                 mardh,
                 mara.
    *       Types                    Begin with TY_
    TYPE-POOLS slis.
    TYPES  :  BEGIN OF ty_head,
                  p_date TYPE dats,
                  matnr LIKE mseg-matnr,
                  maktx LIKE makt-maktx,
                  openbal LIKE mardh-labst,
                  r_po LIKE mseg-menge,
                  r_prodord LIKE mseg-menge,
                  r_byprod LIKE mseg-menge,
                  r_others LIKE mseg-menge,
                  R_TOTAL TYPE mseg-menge,
                  i_prod LIKE mseg-menge,
                  i_cust LIKE mseg-menge,
                  i_costcen LIKE mseg-menge,
                  i_scrapping LIKE mseg-menge,
                  i_subcontractor LIKE mseg-menge,
                  i_sampling LIKE mseg-menge,
                  purret LIKE mseg-menge,
                  i_total like mseg-menge,
                  stock_out LIKE mseg-menge,
                  stock_in LIKE mseg-menge,
                  stock_transit LIKE mseg-menge,
                  m_to_m_transit  LIKE mseg-menge,
                  phy_loss LIKE mseg-menge,
                  phy_gain LIKE mseg-menge,
                  closing_bal LIKE mseg-menge,
                  current_bal LIKE mseg-menge,
                  bwart like mseg-bwart,
                  werks like mseg-werks,
              END OF ty_head.
    types :  begin of ty_docs,
             matnr like mseg-matnr,  "Material
             budat like mkpf-budat,  "Posting date
             menge like mseg-menge,  "Qty
             xblnr like mkpf-xblnr,  "Ref doc
             end of ty_docs.
    data : w_cnt type I.
    data : w_chk type i.
    TYPES: BEGIN OF TY_KONV,
                 KNUMV LIKE KONV-KNUMV,
                 KBETR LIKE KONV-KBETR,
                 KSCHL LIKE KONV-KSCHL,
                 KWERT LIKE KONV-KAWRT,
           END OF TY_KONV.
    TYPES: BEGIN OF TY_KBETR,
    *              KBETR LIKE KONV-KBETR,
                  KWERT LIKE KONV-KWERT,
              END OF TY_KBETR.
    TYPES: BEGIN OF TY_RSEG,
                  EBELN LIKE RSEG-EBELN,
                  MATNR LIKE RSEG-MATNR,
                  WRBTR LIKE RSEG-WRBTR,
                  KSCHL LIKE RSEG-KSCHL,
                  LIFNR LIKE RSEG-LIFNR,
              END OF TY_RSEG.
    TYPES: BEGIN OF TY_NAME1,
                  NAME1 LIKE LFA1-NAME1,
           END OF TY_NAME1.
    ** Each Condition and their values w.r.t different docu types
    *data: begin of temp_head occurs 0,
    *        kschl  like  konv-kschl,  " Condition type
    *        kwert  like  konv-kwert,  " Condition value
    *      end of temp_head.
    *       Constants                Begin with C_
    CONSTANTS: st_formname_top_of_page TYPE slis_formname
                                  VALUE 'TOP_OF_PAGE-ALV'.
    *       Data                     Begin with W_
    *-------- Declarations for ALV Grid.
    DATA:   it_st_list_top_of_page TYPE slis_t_listheader,
            it_st_fieldcat TYPE slis_t_fieldcat_alv,
            it_st_events   TYPE slis_t_event,
            st_layout   TYPE slis_layout_alv,
            s_status TYPE slis_formname VALUE 'STANDARD_ST01',
            s_user_command TYPE slis_formname VALUE 'USER_COMMAND-ALV',
            s_repid LIKE sy-repid,
            s_save(1) TYPE c,
            s_variant LIKE disvariant,
            code LIKE disvariant-handle.
    data : begin of it_stockclose occurs 0,
           werks like s031-werks,   "Plant
           matnr like mara-matnr,   "Material
           lgort like mard-lgort,   "Storage Loc
           labst like mardh-labst,  "Unrestricted Stock
           insme like mardh-insme,  "Inspection Stock
           speme like mardh-speme,  "Safety stock
           einme like mardh-einme,  "Total stock of rest batches
           retme like mardh-retme,  "Blocked stock returns
           end of it_stockclose.
    data : begin of it_finalstock occurs 0,
           werks like mseg-werks,   "Plant
           matnr like mseg-matnr,   "Material code
           lgort like mard-lgort,   "Sto Loc
           menge like mseg-menge,   "Qty
    *       budat like mkpf-budat,   "Posting Date
           end of it_finalstock.
    data : begin of it_docs occurs 0,
           matnr like mseg-matnr,   "Material code
           budat like mkpf-budat,   "Posting date
           bwart like mseg-bwart,   "Movement type
           menge like mseg-menge,   "Quantity
           werks like mseg-werks,   "Plant
           shkzg like mseg-shkzg,   "Credit/debit
           lgort like mseg-lgort,   "Sto Loc
           maktx like makt-maktx,   "Material Discription
           end of it_docs.
    data : begin of it_mkpf occurs 0,
           budat like mkpf-budat,   "Posting date
           mblnr like mkpf-mblnr,   "Material Doc
           xblnr like mkpf-xblnr,   "Delivery ref no
           mjahr like mkpf-mjahr,   "Fiscal yr
           cpudt like mkpf-cpudt,
           end of it_mkpf.
    data : begin of it_mseg occurs 0,
           matnr like mseg-matnr,   "Material
           bwart like mseg-bwart,   "Movement type
           menge like mseg-menge,   "Qty
           werks like mseg-werks,   "Plant
           mjahr like mseg-mjahr,   "Fiscal yr
           shkzg like mseg-shkzg,   "Credit/Debit Indicator
           lgort like mard-lgort,   "Sto loc
           budat like mkpf-budat,   "Posting date
           xblnr like mkpf-xblnr,   "Delivery ref
           cpudt like mkpf-cpudt,
           end of it_mseg.
    data : begin of it_matnr occurs 0,
           matnr like mara-matnr,   "Material
           end of it_matnr.
    data : w_monat  type monat.    "Month number
    data : w_gjahr like sy-datum,    "Date
           w_date_fiscal(4) type n,  "Year
           w_date like sy-datum,     "Date
           w_buper like t009b-poper, "Posting period
           w_year like t009b-bdatj,  "Posting date
           w_datum(2) type n.        "Date
    *       Internal tables          Begin with IT_
    DATA    :  IT_HEAD TYPE STANDARD TABLE OF TY_HEAD WITH HEADER LINE.
    ***Issues and receipts
    data : it_issue type ty_docs occurs 0 with header line,
           it_receipt type ty_docs occurs 0 with header line,
           it_issue_date type ty_docs occurs 0 with header line,
           it_receipt_date type ty_docs occurs 0 with header line.
    data:   w_dval like mseg-menge,
            w_opbal like mseg-menge.
    **  WORK AREAS: Begin with WA_
    *DATA: wa_HEAD type TY_HEAD.
    *data: w_tkwert    type p decimals 2 value 0,
    *      grmenge     like ekpo-menge,
    *      w_tot_kwert type p decimals 2 value 0,
    *      w_tmp_kwert type p decimals 2 value 0,
    *      w_finalsum  type p decimals 2 value 0,                "#EC *
    *      w_finalrate type p decimals 4 value 0.                "#EC *
    *       R A N G E S
    ranges: r_loekz  for  ekko-loekz.  " Deletion Indicator
    ranges : r_movtype for mseg-bwart,   "Movement type
             r_date for sy-datum.        "Date
    *       Select Options          Begin with SO_
    SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN SKIP 2.
    *SELECT-OPTIONS : SO_LIFNR FOR EKKO-LIFNR.
    *SELECT-OPTIONS : SO_EKORG FOR EKKO-EKORG .
    *SELECT-OPTIONS : SO_WERKS FOR MSEG-WERKS .
    *SELECT-OPTIONS : SO_EBELN FOR EKKO-EBELN.
    *SELECT-OPTIONS : SO_DATE for sy-datum obligatory no-extension.
    *SELECT-OPTIONS : SO_EKGRP FOR EKKO-EKGRP.
    *SELECT-OPTIONS : SO_BSART FOR EKKO-BSART DEFAULT 'NB'.
    *SELECT-OPTIONS : SO_MATKL FOR EKPO-MATKL.
    *SELECT-OPTIONS : SO_MATNR FOR MSEG-MATNR.
    select-options   : so_werks for mseg-werks default 'P001'. "Plant
    select-options   : so_lgort for mseg-lgort. " Sto. Location
    select-options   : so_matnr for mseg-matnr obligatory. "Material code
    select-options   : so_mtart for mara-mtart. "Material type
    SELECT-OPTIONS   : SO_MATKL FOR EKPO-MATKL. "Material Group
    select-options   : so_date for sy-datum obligatory no-extension.
    SELECTION-SCREEN SKIP 2.
    selection-screen: skip,
                      begin of line,
                      comment (15) text-034.
    parameters:     p_all    radiobutton group del.
    selection-screen comment 25(9) for field p_all.
    parameters:     p_del    radiobutton group del.
    selection-screen comment 45(12) for field p_del.
    parameters:     p_undel  radiobutton group del default 'X'.
    selection-screen comment 65(14) for field p_undel.
    selection-screen end of line.
    SELECTION-SCREEN SKIP 2.
    SELECTION-SCREEN END OF BLOCK MAIN.
    *       Parameters              Begin with PR_
    *       Initialisation
    INITIALIZATION.
      s_repid = sy-repid.
      s_save = 'A'.
      perform f000_initialize_mov_type changing r_movtype[].
      PERFORM eventtab_build USING it_st_events[].
      PERFORM variant_init.
    *       S T A R T   O F   S E L E C T I O N
    START-OF-SELECTION.
      PERFORM initialize.
      perform f001_determine_fiscal_period.
      perform f002_determine_closing_stock changing it_stockclose[].
      if not so_date-low+6(2) eq '01'.
        perform f003_change_closing_stock changing  it_stockclose[].
      endif.
      perform f004_determine_mat_docs changing it_mkpf[]
                                                 it_mseg[].
      perform f005_receipts_issues using    it_mseg[]
                                     changing it_issue[]
                                              it_receipt[]
                                              it_matnr[].
    *---alv
      PERFORM comment_build USING it_st_list_top_of_page[].
      PERFORM fieldcat USING it_st_fieldcat[].
      PERFORM layout_build USING st_layout.
      PERFORM reuse_alv_list_display.
    END-OF-SELECTION.
    form initialize.
      clear:   r_loekz.
      refresh: r_loekz.
    *--- Deleted PO's only
      if p_del = 'X'.
        r_loekz-sign   = 'I'.
        r_loekz-option = 'EQ'.
        r_loekz-low    = 'L'.
        append r_loekz.
      endif.
    *--- UnDeleted PO's only
      if p_undel = 'X'.
        r_loekz-sign   = 'E'.
        r_loekz-option = 'EQ'.
        r_loekz-low    = ' '.
        append r_loekz.
      endif.
    endform.                    "initialize
    *&      Form  f000_initialize_mov_type
    *       Desc : Initialization of movement types
    form f000_initialize_mov_type  changing p_r_movtype like r_movtype[].
      data : lwa_movtype like line of p_r_movtype.
      lwa_movtype-sign = 'I'.
      lwa_movtype-option = 'EQ'.
      lwa_movtype-low = '101'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '102'.
      append lwa_movtype to p_r_movtype.
    * Additional changes done for other movement types--> by deepak
      lwa_movtype-low = '103'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '104'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '105'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '106'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '122'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '123'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '161'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '162'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '201'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '202'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '261'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '262'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '301'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '302'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '303'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '304'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '305'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '306'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '309'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '310'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '331'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '332'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '333'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '334'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '335'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '336'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '511'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '512'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '531'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '532'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '541'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '542'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '561'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '562'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '601'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '602'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '641'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '642'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '643'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '644'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '701'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '702'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '909'.
      append lwa_movtype to p_r_movtype.
      lwa_movtype-low = '910'.
      append lwa_movtype to p_r_movtype.
    endform.                    " f000_initialize_mov_type
    *&      Form  f001_determine_fiscal_period
    *       Desc  Determination of fiscal period
    form f001_determine_fiscal_period .
      clear : w_monat,
              w_gjahr,
              w_date,
              w_buper,
              w_year.
      w_monat = so_date-low+4(2).
      if w_monat = '01'.
        w_monat = '12'.
        w_gjahr = so_date-low+0(4).
        w_date_fiscal = w_gjahr+0(4) - 1.
        w_gjahr = w_date_fiscal.
      else.
        w_monat = w_monat - 1.
        w_gjahr = so_date-low+0(4).
      endif.
      concatenate w_gjahr w_monat '01'  into w_gjahr.
    *****Determines Fiscal yr and period
      call function 'DATE_TO_PERIOD_CONVERT'
        EXPORTING
          i_date  = w_gjahr
          i_periv = 'V3'
        IMPORTING
          e_buper = w_buper
          e_gjahr = w_year.
      if sy-subrc <> 0.
      endif.
      w_datum = w_buper+1(2).
    **Month text
      select single ltx from t247 into t247-ltx
             where spras = 'E'
             and   mnr   = so_date-low+4(2).
    endform.                    " f001_determine_fiscal_period
    *&      Form  f001_determine_closing_stock
    *       Desc : Determination of closing stock
    form f002_determine_closing_stock
                       changing p_it_stockclose like it_stockclose[].
      data : lw_recs type i,
             w_dval like mseg-menge,
             w_opbal like mseg-menge.
      data : begin of lit_stockclose occurs 0,
             lfgja like mardh-lfgja,   "Fiscal yr
             lfmon like mardh-lfmon,   "Period
             werks like s031-werks,   "Plant
             matnr like mara-matnr,   "Material
             lgort like mseg-lgort,   "Storage Loc
             labst like mardh-labst,  "Unrestricted Stock
           end of lit_stockclose.
      data : begin of lit_mard occurs 0,
             matnr like mara-matnr,
             werks like mseg-werks,
             lgort like mseg-lgort,
             end of lit_mard.
      data : lwa_stockclose like line of p_it_stockclose.
      select matnr werks lgort from mard
      into corresponding fields of table lit_mard
      where matnr in so_matnr
      and werks in so_werks.
      refresh it_stockclose.
      clear   it_stockclose.
    *****Fetch Closing stock
    *If the entry is found in MARD then consider the same
    *else fetch the closing stock from MARDH.
      loop at lit_mard.
        refresh lit_stockclose.
        clear   lit_stockclose.
        select werks matnr lgort labst
              insme speme einme retme
              lfgja lfmon
               into corresponding fields of
                table lit_stockclose
               from mard
        where   lfmon = w_datum
        and     lfgja = w_year
        and     werks = lit_mard-werks
        and     matnr = lit_mard-matnr
        and     lgort = lit_mard-lgort.
        clear lw_recs.
        describe table lit_stockclose lines lw_recs.
    *If no entry in MARD fetch from MARDH.
        if lw_recs = 0.
          select werks matnr lgort labst
                insme speme einme retme
                lfgja lfmon
                 into corresponding fields of
                table lit_stockclose
                from mardh
         where   lfmon = w_datum
         and     lfgja = w_year
         and     werks = lit_mard-werks
         and     matnr = lit_mard-matnr
         and     lgort = lit_mard-lgort.
        endif.
        sort lit_stockclose by lfgja lfmon descending.
        read table lit_stockclose index 1.
        if sy-subrc eq 0.
          move-corresponding lit_stockclose to lwa_stockclose.
          append  lwa_stockclose to p_it_stockclose.
          clear  lwa_stockclose.
        endif.
      endloop.
    endform.                    " f001_determine_closing_stock
    *&      Form   f003_change_closing_stock
    *       Desc : Selection of the mat docs for the intermediate
    *              days if the selection begin date is not from
    *              first date of the corresponding month.
    form f003_change_closing_stock changing
                                       p_it_stockclose like it_stockclose[].
      data : lwa_stockclose like line of p_it_stockclose[].
      refresh : r_date,
                it_docs,
                it_finalstock.
      clear : r_date,
              lwa_stockclose.
      r_date-sign = 'I'.
      r_date-option = 'BT'.
      concatenate so_date-low+0(4)
                  so_date-low+4(2)
                  '01'
                  into r_date-low.
      r_date-high = so_date-low - 1.
      append r_date.
      clear r_date.
    read table r_loekz index 1.
      select mkpf~budat
             mseg~matnr
             mseg~bwart
             mseg~menge
             mseg~werks
             mseg~shkzg
             mseg~lgort
             makt~maktx
             into corresponding
             fields of
             table it_docs
             from mkpf as mkpf inner join mseg as mseg
             on mkpf~mandt = mseg~mandt and
                mkpf~mblnr = mseg~mblnr and
                mkpf~mjahr = mseg~mjahr
             inner join makt as makt
               on mseg~matnr = makt~matnr
             where
                mseg~werks IN SO_WERKS and
                mseg~matnr in so_matnr and
                mkpf~budat in r_date and
                mseg~bwart in r_movtype.
      Clear it_docs.
      loop at it_docs.
        if it_docs-shkzg = 'H'.
          it_docs-menge = - ( it_docs-menge ).
          modify it_docs.
        endif.
        move-corresponding it_docs to it_finalstock.
        collect it_finalstock.
        clear   it_finalstock.
        move it_docs-maktx to it_head-maktx.
      endloop.
      loop at p_it_stockclose into lwa_stockclose.
        read table it_finalstock with key
                           matnr = lwa_stockclose-matnr
                           werks = lwa_stockclose-werks
                           lgort = lwa_stockclose-lgort.
        if sy-subrc eq 0.
          lwa_stockclose-labst = lwa_stockclose-labst +
                                 it_finalstock-menge.
          modify p_it_stockclose from lwa_stockclose.
          read table p_it_stockclose into lwa_stockclose index 1.
          "with key matnr = wa_head-matnr.
          "budat = wa_head-p_date.
          if sy-subrc = 0.
            w_dval = lwa_stockclose-labst.
          ENDIF.
          clear lwa_stockclose.
        endif.
      endloop.
    endform.                    " f003_change_closing_stock
    *&      Form  f004_determine_mat_docs
    *       DEsc : Determination of Receipts and Issues
    form f004_determine_mat_docs  changing p_it_mkpf like it_mkpf[]
                                           p_it_mseg like it_mseg[].
      data : lwa_mkpf like line of p_it_mkpf[],
             lwa_mseg like line of p_it_mseg[],
              ls_quantity   type mseg-menge,
              sum_issue type mseg-menge,
              sum_receipt type mseg-menge,
              sum_531 type mseg-menge,
              sum_541 type mseg-menge,
              sum_101  type mseg-menge,
              sum_511  type mseg-menge,
              sum_261  type mseg-menge,
              sum_601  type mseg-menge,
              sum_201 type mseg-menge,
              sum_641 type mseg-menge,
              sum_po  type mseg-menge,
              sum_551  type mseg-menge,
              sum_331  type mseg-menge,
              sum_161  type mseg-menge,
              sum_305  type mseg-menge,
              sum_309  type mseg-menge,
              sum_701  type mseg-menge,
              sum_702  type mseg-menge.
    ***Determination of Mat Docs
      select mblnr xblnr budat mjahr cpudt from mkpf
             into corresponding fields
             of table it_mkpf
             where budat in so_date.
    ***Determination of Receipts and issues
    *  loop at p_it_mkpf into lwa_mkpf.
    *    select mblnr matnr bwart menge werks mjahr shkzg lgort
    *          from mseg into corresponding
    *          fields of lwa_mseg
    *          where mblnr = lwa_mkpf-mblnr
    *          and   mjahr = lwa_mkpf-mjahr
    *          and   werks in so_werks
    *          and   matnr in so_matnr
    *          and   bwart in r_movtype.
    *      if lwa_mseg-shkzg = 'H'.
    *        lwa_mseg-menge = - ( lwa_mseg-menge ).
    *      endif.
    *      move : lwa_mkpf-budat to lwa_mseg-budat,
    *             lwa_mkpf-xblnr to lwa_mseg-xblnr,
    *             lwa_mkpf-cpudt to lwa_mseg-cpudt.
    *      append lwa_mseg to p_it_mseg.
    *      move lwa_mseg-matnr to it_head-matnr.
    *      move lwa_mseg-budat to it_head-p_date.
    *      move lwa_mseg-bwart to it_head-bwart.
    *      append it_head.
    *      clear it_head.
    *      clear lwa_mseg.
    *    endselect.
    *  endloop.
      sort it_mkpf by budat cpudt .
      loop at it_mkpf.
        at new budat.
          if w_opbal = SPACE.
            it_head-openbal = w_dval.
            w_chk = 1.
          else.
            it_head-openbal = w_opbal.
            w_chk = 2.
          endif.
        endat.
        if w_chk = 1.
          it_head-openbal = w_dval.
        elseif w_chk = 2.
          it_head-openbal = w_opbal.
        endif.
        select  Single *
              from mseg
              where mblnr = it_mkpf-mblnr
              and   mjahr = it_mkpf-mjahr
              and   werks in so_werks
              and   matnr in so_matnr
              and   bwart in r_movtype.
        if mseg-matnr ne SPACE.
          move mseg-mblnr to it_mseg-xblnr.
          move mseg-matnr to it_mseg-matnr.
          move mseg-bwart to IT_mseg-bwart.
          move mseg-menge to it_mseg-menge.
          move mseg-werks to it_mseg-werks.
          move mseg-mjahr to it_mseg-mjahr.
          move mseg-shkzg to it_mseg-shkzg.
          move mseg-lgort to it_mseg-lgort.
          if it_mseg-shkzg = 'H'.
            it_mseg-menge = - ( lwa_mseg-menge ).
          endif.
          move : it_mkpf-budat to it_mseg-budat,
                 it_mkpf-xblnr to it_mseg-xblnr,
                 it_mkpf-cpudt to it_mseg-cpudt.
    *      append lwa_mseg to p_it_mseg.
          append it_mseg.
    *  it_head-R_PO = it_head-r_po + ls_quantity.
          if ( it_mseg-bwart eq '101'
             or   it_mseg-bwart eq '102'
             or   it_mseg-bwart eq '103'
             or   it_mseg-bwart eq '104'
             or   it_mseg-bwart eq '105'
             or  it_mseg-bwart eq '106'
             or  it_mseg-bwart eq '161'
             or  it_mseg-bwart eq '162'
             or  it_mseg-bwart eq '122'
             or  it_mseg-bwart eq '123'
             or  it_mseg-bwart eq '511'
             or  it_mseg-bwart eq '512'
             or  it_mseg-bwart eq '531'
             or  it_mseg-bwart eq '532'
             or  it_mseg-bwart eq '561'
             or  it_mseg-bwart eq '562'
             or  it_mseg-bwart eq '305'
             or  it_mseg-bwart eq '306'
             or  it_mseg-bwart eq '702') and it_mseg-shkzg = 'S'.
            move it_mseg-menge to ls_quantity.
            sum_receipt = sum_receipt + ls_quantity.
          elseif
           ( it_mseg-bwart eq '261'
             or   it_mseg-bwart eq '262'
             or   it_mseg-bwart eq '601'
             or   it_mseg-bwart eq '602'
             or   it_mseg-bwart eq '201'
             or  it_mseg-bwart eq '202'
             or  it_mseg-bwart eq '551'
             or  it_mseg-bwart eq '552'
             or  it_mseg-bwart eq '541'
             or  it_mseg-bwart eq '542'
             or  it_mseg-bwart eq '331'
             or  it_mseg-bwart eq '332'
             or  it_mseg-bwart eq '333'
             or  it_mseg-bwart eq '334'
             or  it_mseg-bwart eq '335'
             or  it_mseg-bwart eq '336'
             or  it_mseg-bwart eq '641'
             or  it_mseg-bwart eq '642'
             or  it_mseg-bwart eq '643'
             or  it_mseg-bwart eq '644'
             or  it_mseg-bwart eq '351'
             or  it_mseg-bwart eq '352'
             or  it_mseg-bwart eq '301'
             or  it_mseg-bwart eq '302'
             or  it_mseg-bwart eq '303'
             or  it_mseg-bwart eq '304'
             or  it_mseg-bwart eq '309'
             or  it_mseg-bwart eq '310'
             or  it_mseg-bwart eq '909'
             or  it_mseg-bwart eq '910'
             or  it_mseg-bwart eq '701')  and it_mseg-shkzg = 'S'.
             move it_mseg-menge to ls_quantity.
            sum_issue = sum_issue + ls_quantity.
          endif.
        if ( it_mseg-bwart eq '101' or it_mseg-bwart eq '102'
            or it_mseg-bwart eq '103' or it_mseg-bwart eq '104'
            or it_mseg-bwart eq '105' or it_mseg-bwart eq '106')
            And it_mseg-shkzg = 'S'.
            move it_mseg-menge to ls_quantity.
            sum_po = sum_po + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '531'
             or it_mseg-bwart eq '532') and it_mseg-shkzg = 'S'.
            move it_mseg-menge to ls_quantity.
            sum_531 = sum_531 + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '541' or it_mseg-bwart eq '542' ).
            move it_mseg-menge to ls_quantity.
            sum_541 = sum_541 + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '102' or it_mseg-bwart eq '102' ).
            move it_mseg-menge to ls_quantity.
            sum_101 = sum_101 + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '561' or it_mseg-bwart eq '562'
              OR IT_MSEG-BWART EQ '511' OR it_mseg-bwart eq '512').
            move it_mseg-menge to ls_quantity.
            sum_511 = sum_511 + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '261' or it_mseg-bwart eq '262').
            move it_mseg-menge to ls_quantity.
            sum_261 = sum_261 + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '601' or it_mseg-bwart eq '602').
            move it_mseg-menge to ls_quantity.
            sum_601 = sum_601 + ls_quantity.
          endif.
          if ( it_mseg-bwart eq '201' or it_mseg-bwart eq '202').
            move it_mseg-menge to ls_quantity.
            sum_201 = sum_201 + ls_quantity.
          endif.
        if ( it_mseg-bwart eq '551' or it_mseg-bwart eq '552').
            move it_mseg-menge to ls_quantity.
            sum_551 = sum_551 + ls_quantity.
          endif.
        if ( it_mseg-bwart eq '331' or it_mseg-bwart eq '332'
              or it_mseg-bwart eq '333' or it_mseg-bwart eq '334'
              or it_mseg-bwart eq '335' or it_mseg-bwart eq '336').
            move it_mseg-menge to ls_quantity.
            sum_331 = sum_331 + ls_quantity.
          endif.
        if ( it_mseg-bwart eq '161' or it_mseg-bwart eq '162'
              or it_mseg-bwart eq '123' or it_mseg-bwart eq '122').
            move it_mseg-menge to ls_quantity.
            sum_161 = sum_161 + ls_quantity.
          endif.
        if ( it_mseg-bwart eq '641' or it_mseg-bwart eq '642'
              or it_mseg-bwart eq '643' or it_mseg-bwart eq '644'
              or it_mseg-bwart eq '351' or it_mseg-bwart eq '352'
              or it_mseg-bwart eq '301' or it_mseg-bwart eq '302'
              or it_mseg-bwart eq '303' or it_mseg-bwart eq '304').
            move it_mseg-menge to ls_quantity.
            sum_641 = sum_641 + ls_quantity.
          endif.
      if ( it_mseg-bwart eq '305' or it_mseg-bwart eq '306').
            move it_mseg-menge to ls_quantity.
            sum_305 = sum_305 + ls_quantity.
          endif.
      if ( it_mseg-bwart eq '309' or it_mseg-bwart eq '310'
         or it_mseg-bwart eq '909' or it_mseg-bwart eq '910').
            move it_mseg-menge to ls_quantity.
            sum_309 = sum_309 + ls_quantity.
          endif.
    if ( it_mseg-bwart eq '701').
            move it_mseg-menge to ls_quantity.
            sum_701 = sum_701 + ls_quantity.
          endif.
    if ( it_mseg-bwart eq '702').
            move it_mseg-menge to ls_quantity.
            sum_702 = sum_702 + ls_quantity.
          endif.
          at end of budat.
        it_head-closing_bal = ( it_head-openbal + sum_receipt ) - sum_issue.
            w_opbal = it_head-closing_bal.
            move it_mseg-matnr to it_head-matnr.
            move it_mseg-budat to it_head-p_date.
            move it_mseg-bwart to it_head-bwart.
            move sum_po  to it_head-R_po.
            move sum_101  to it_head-R_ProdOrd.
            move sum_531 to it_head-R_ByProd.
            move sum_511  to it_head-R_OTHERS.
            move sum_receipt to it_head-r_total.
            move sum_261  to it_head-I_Prod.
            move sum_601  to it_head-I_cust.
            move sum_201  to it_head-I_CostCen.
            move sum_551  to it_head-I_Scrapping.
            move sum_541 to it_head-I_subcontractor.
            move sum_331  to it_head-I_Sampling.
            move sum_issue   to it_head-i_total.
            move sum_161  to it_head-PurRet.
            move sum_641  to it_head-stock_out.
            move sum_305  to it_head-stock_in.
            move sum_309  to it_head-M_to_M_transit.
            move sum_701  to it_head-phy_loss.
            move sum_702  to it_head-phy_gain.
            append it_head.
            w_chk = 0.
            sum_issue = 0.
            sum_receipt = 0.
            sum_531 = 0.
            sum_541 = 0.
            sum_101 = 0.
            SUM_511 = 0.
            sum_261 = 0.
            sum_601 = 0.
            sum_201 = 0.
            sum_po = 0.
            sum_551 = 0.
            sum_641 = 0.
            sum_701 = 0.
            sum_702 = 0.
          endat.
          clear it_head.
          clear it_mseg.
        endif.
    endloop.
      sort it_mseg by matnr budat bwart.
      sort it_head by matnr p_date bwart.
      delete ADJACENT duplicates from it_head.
    endform.                    " f004_determine_mat_docs
    *&      Form  f005_receipts_issues
    *       Desc
    form f005_receipts_issues  using    p_it_mseg  like it_mseg[]
                               changing p_it_issue like it_issue[]
                                        p_it_receipt like it_receipt[]
                                        p_it_matnr like it_matnr[].
      data : lwa_mseg like line of p_it_mseg[],
             lwa_issue like line of p_it_issue[],
             lwa_receipt like line of p_it_receipt[],
             lwa_matnr like line of p_it_matnr[],
             ls_quantity   type mseg-menge,
             wa_head type ty_head,
             lwa_stockclose like line of it_stockclose[].
    *  sort it_head by bwart p_date matnr.
    *  loop at it_head into wa_head.
    *    read table p_it_mseg into lwa_mseg with key bwart = wa_head-bwart.
    *    if sy-subrc = 0.
    *      if ( lwa_mseg-bwart eq '101'
    *          or   lwa_mseg-bwart eq '102'
    *          or   lwa_mseg-bwart eq '103'
    *          or   lwa_mseg-bwart eq '104'
    *          or   lwa_mseg-bwart eq '105'
    *          or  lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
    *        loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
    *                                        and   budat = wa_head-p_date
    *                                        and   bwart = wa_head-bwart.
    *          move lwa_mseg-menge to ls_quantity.
    *          wa_head-R_PO = ls_quantity + wa_head-R_PO.
    *          modify it_head from wa_head.
    *        endloop.
    *        clear ls_quantity .
    *      endif.
    *      if ( lwa_mseg-bwart eq '641'
    *       and lwa_mseg-shkzg = 'S' ).
    *        loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
    *                                        and   budat = wa_head-p_date
    *                                        and   bwart = wa_head-bwart.
    *          IF SY-SUBRC = 0 .
    *            move lwa_mseg-menge to ls_quantity.
    *            wa_head-stock_out = ls_quantity + wa_head-stock_out.
    *            modify it_head from wa_head.
    *          ENDIF.
    *        endloop.
    *        clear ls_quantity .
    *      endif.
    *      read table it_stockclose into lwa_stockclose
    *         with key matnr = wa_head-matnr.
    *                  "budat = wa_head-p_date.
    *      if sy-subrc = 0.
    *        wa_head-openbal = lwa_stockclose-labst.
    *        modify it_head from wa_head.
    *      ENDIF.
    *    endif.
    *  endloop.
    *  sort it_head by bwart p_date matnr.
    *  loop at it_head into wa_head.
    *    read table it_mseg into lwa_mseg with key bwart = wa_head-bwart.
    *    if sy-subrc = 0.
    *      if ( lwa_mseg-bwart eq '101'
    *          or   lwa_mseg-bwart eq '102'
    *          or   lwa_mseg-bwart eq '103'
    *          or   lwa_mseg-bwart eq '104'
    *          or   lwa_mseg-bwart eq '105'
    *          or  lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
    *        loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
    *                                        and   budat = wa_head-p_date
    *                                        and   bwart = wa_head-bwart.
    *          move lwa_mseg-menge to ls_quantity.
    *          wa_head-R_PO = ls_quantity + wa_head-R_PO.
    *          modify it_head from wa_head.
    *        endloop.
    *        clear ls_quantity .
    *      endif.
    *      if ( lwa_mseg-bwart eq '641'
    *       and lwa_mseg-shkzg = 'S' ).
    *        loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
    *                                        and   budat = wa_head-p_date
    *                                        and   bwart = wa_head-bwart.
    *          IF SY-SUBRC = 0 .
    *            move lwa_mseg-menge to ls_quantity.
    *            wa_head-stock_out = ls_quantity + wa_head-stock_out.
    *            modify it_head from wa_head.
    *          ENDIF.
    *        endloop.
    *        clear ls_quantity .
    *      endif.
    *      read table it_stockclose into lwa_stockclose
    *         with key matnr = wa_head-matnr.
    *                  "budat = wa_head-p_date.
    *      if sy-subrc = 0.
    *        wa_head-openbal = lwa_stockclose-labst.
    *        modify it_head from wa_head.
    *      ENDIF.
    *    endif.
    *  endloop.
    endform.                    " f005_receipts_issues
    *&      Form  COMMENT_BUILD
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM comment_build USING p_it_st_list_top_of_page TYPE slis_t_listheader
      DATA: ls_line TYPE slis_listheader.
      REFRESH p_it_st_list_top_of_page.
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info  = 'Details of Stock Ledger'.
      APPEND ls_line TO p_it_st_list_top_of_page.
    ENDFORM.                    " COMMENT_BUILD
    *&      Form  TOP_OF_PAGE-ALV
    *       text
    FORM top_of_page-alv.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_st_list_top_of_page.
    ENDFORM.                    "TOP_OF_PAGE-ALV
    *&      Form  FIELDCAT
    *      -->P_IT_ST_FIELDCAT[]  text
    FORM fieldcat  USING p_it_st_fieldcat TYPE slis_t_fieldcat_alv.
      DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname  = 'P_DATE'.
      ls_fieldcat-datatype   = 'P_DATE'.
      ls_fieldcat-outputlen  = 18.
      ls_fieldcat-seltext_m  = text-002 .
    *  ls_fieldcat-rollname   = 'MATNR'.
      ls_fieldcat-key         = 'X'.
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'MATNR'.
      ls_fieldcat-rollname    = 'MATNR'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-outputlen  = 18.
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'MAKTX'.
      ls_fieldcat-rollname    = 'MAKTX'.
      ls_fieldcat-ddictxt     = 'L'.
        ls_fieldcat-outputlen  = 40.
      APPEND ls_fieldcat TO p_it_st_fieldcat.
    *  CLEAR ls_fieldcat.
    *  ls_fieldcat-fieldname   = 'BWART'.
    *  ls_fieldcat-rollname    = 'BWART'.
    *  ls_fieldcat-ddictxt     = 'L'.
    *  APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'OPENBAL'.
      ls_fieldcat-rollname    = 'OPENBAL'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-003 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'R_PO'.
      ls_fieldcat-rollname    = 'R_PO'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-004 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'R_PRODORD'.
      ls_fieldcat-rollname    = 'R_PRODORD'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-005 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'R_BYPROD'.
      ls_fieldcat-rollname    = 'R_BYPROD'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-006 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'R_OTHERS'.
      ls_fieldcat-rollname    = 'R_OTHERS'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-007 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'R_TOTAL'.
      ls_fieldcat-rollname    = 'R_TOTAL'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-008 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_PROD'.
      ls_fieldcat-rollname    = 'I_PROD'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-009 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_CUST'.
      ls_fieldcat-rollname    = 'I_CUST'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-010 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_COSTCEN'.
      ls_fieldcat-rollname    = 'I_COSTCEN'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-011 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_SCRAPPING'.
      ls_fieldcat-rollname    = 'I_SCRAPPING'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-012 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_SUBCONTRACTOR'.
      ls_fieldcat-rollname    = 'I_SUBCONTRACTOR'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-013 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_SAMPLING'.
      ls_fieldcat-rollname    = 'I_SAMPLING'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-014 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'I_TOTAL'.
      ls_fieldcat-rollname    = 'I_TOTAL'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-015 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'PURRET'.
      ls_fieldcat-rollname    = 'PURRET'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-016 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'STOCK_OUT'.
      ls_fieldcat-rollname    = 'STOCK_OUT'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-017 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'STOCK_IN'.
      ls_fieldcat-rollname    = 'STOCK_IN'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-018 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'STOCK_TRANSIT'.
      ls_fieldcat-rollname    = 'STOCK_TRANSIT'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-019 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'M_TO_M_TRANSIT'.
      ls_fieldcat-rollname    = 'M_TO_M_TRANSIT'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-020 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'PHY_LOSS'.
      ls_fieldcat-rollname    = 'PHY_LOSS'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-021 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'PHY_GAIN'.
      ls_fieldcat-rollname    = 'PHY_GAIN'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-022 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname   = 'CLOSING_BAL'.
      ls_fieldcat-rollname    = 'CLOSING_BAL'.
      ls_fieldcat-ddictxt     = 'L'.
      ls_fieldcat-seltext_m  = text-023 .
      APPEND ls_fieldcat TO p_it_st_fieldcat.
    ENDFORM.                    " FIELDCAT
    *&      Form  LAYOUT_BUILD
    *       text
    *      -->P_ST_LAYOUT  text
    FORM layout_build  USING    p_st_layout TYPE slis_layout_alv.
      p_st_layout-box_fieldname       = 'SELK'.  " Checkbox
      p_st_layout-get_selinfos        = 'X'.
      p_st_layout-f2code              =  'PICK' .  " Doppelklickfunktion
      p_st_layout-confirmation_prompt = 'X'.       "Sicherheitsabfrage
      p_st_layout-key_hotspot         = 'X'.       "Schlüssel als Hotspot
      p_st_layout-info_fieldname      = 'COL'.     "Zeilenfarbe
    ENDFORM.                    " LAYOUT_BUILD
    *&      Form  REUSE_ALV_LIST_DISPLAY
    *       text
    FORM reuse_alv_list_display .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                 i_background_id          = 'ALV_BACKGROUND'
                 i_callback_program       = s_repid
    *            I_CALLBACK_PF_STATUS_SET = S_STATUS
    *            I_CALLBACK_USER_COMMAND     = S_USER_COMMAND
    *            I_STRUCTURE_NAME         = ''
    *            IS_LAYOUT                = ST_LAYOUT
                 it_fieldcat              = it_st_fieldcat[]
    *            IT_EXCLUDING             =
    *            IT_SPECIAL_GROUPS        = ST_SP_GROUP
    *            IT_SORT                  =
    *            IT_FILTER                =
    *            IS_SEL_HIDE              =
    *            I_DEFAULT                = 'X'
    *            I_SAVE                   = S_SAVE
    *            IS_VARIANT               = S_VARIANT
                IT_EVENTS                = IT_ST_EVENTS[]
    *            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
    *     IMPORTING
    *           E_EXIT_CAUSED_BY_CALLER   =
    *           ES_EXIT_CAUSED_BY_USER    =
           TABLES
                t_outtab                  =  it_head.
    ENDFORM.                    " REUSE_ALV_LIST_DISPLAY
    *&      Form  EVENTTAB_BUILD
    *       text
    *      -->P_IT_ST_EVENTS[]  text
    FORM eventtab_build  USING    p_st_events  TYPE slis_t_event .
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_st_events.
      READ TABLE p_st_events WITH KEY name = slis_ev_top_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE st_formname_top_of_page TO ls_event-form.
        APPEND ls_event TO p_st_events.
      ENDIF.
      READ TABLE p_st_events WITH KEY name = slis_ev_user_command
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE s_user_command TO ls_event-form.
        APPEND ls_event TO p_st_events.
      ENDIF.
    *  READ TABLE p_st_events WITH KEY name = slis_ev_pf_status_set
    *                         INTO ls_event.
    *  IF sy-subrc = 0.
    *    MOVE s_status TO ls_event-form.
    *    APPEND ls_event TO p_st_events.
    *  ENDIF.
    ENDFORM.                    " EVENTTAB_BUILD
    *&      Form  VARIANT_INIT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM variant_init .
      CLEAR s_variant.
      s_variant-report = s_repid.
      s_variant-handle = code.
    ENDFORM.                    " VARIANT_INIT

  • Hi  please send code for displaying index in alv report

    hi
    thanx in advance.
    code please for displaying index in alv report.
    thanx
    rocky

    add one more field to ur internal table
    index type i .
    before u display ALV
    loop at itab.
      itab-index = sy-tabix.
      modify itab index sy-tabix.
    endloop.
    Message was edited by:
            chandrasekhar jagarlamudi

  • Plz send me the code of interctive ALV report

    Hi
    plz send me the code of interctive ALV report
    thanks in advance
    rachu

    Hi
    <u><b>For More alv report examples check  these Tcodes <i>LIBS, BIBS</i>Here u can find more number of examples on alv reports of different kinds</b></u>
    Check this sample code
    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.
    Try this links...
    http://www.****************/Tutorials/ALV/ALVMainPage.htm
    Simple ALV report
    http://www.sapgenie.com/abap/controls/alvgrid.htm
    http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
    ALV
    1. Please give me general info on ALV.
    http://www.sapfans.com/forums/viewtopic.php?t=58286
    http://www.sapfans.com/forums/viewtopic.php?t=76490
    http://www.sapfans.com/forums/viewtopic.php?t=20591
    http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
    2. How do I program double click in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=11601
    http://www.sapfans.com/forums/viewtopic.php?t=23010
    3. How do I add subtotals (I have problem to add them)...
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    4. How to add list heading like top-of-page in ABAP lists?
    http://www.sapfans.com/forums/viewtopic.php?t=58775
    http://www.sapfans.com/forums/viewtopic.php?t=60550
    http://www.sapfans.com/forums/viewtopic.php?t=16629
    5. How to print page number / total number of pages X/XX in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
    6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
    http://www.sapfans.com/forums/viewtopic.php?t=64320
    http://www.sapfans.com/forums/viewtopic.php?t=44477
    7. How can I set the cell color in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=52107
    8. How do I print a logo/graphics in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=81149
    http://www.sapfans.com/forums/viewtopic.php?t=35498
    http://www.sapfans.com/forums/viewtopic.php?t=5013
    9. How do I create and use input-enabled fields in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=84933
    http://www.sapfans.com/forums/viewtopic.php?t=69878
    10. How can I use ALV for reports that are going to be run in background?
    http://www.sapfans.com/forums/viewtopic.php?t=83243
    http://www.sapfans.com/forums/viewtopic.php?t=19224
    11. How can I display an icon in ALV? (Common requirement is traffic light icon).
    http://www.sapfans.com/forums/viewtopic.php?t=79424
    http://www.sapfans.com/forums/viewtopic.php?t=24512
    12. How can I display a checkbox in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=88376
    http://www.sapfans.com/forums/viewtopic.php?t=40968
    http://www.sapfans.com/forums/viewtopic.php?t=6919
    Reward all helpful answers
    Regards
    Pavan
    Message was edited by:
            Pavan praveen

  • ALV Report DUMP

    Hi Experts,
    I developed one alv report. Its executing properly. But once i select tab local file in application toolbar its going to dump.
    im gettign this error:
    Field symbol has not yet been assigned.
    The current ABAP program "SAPLKKBL" had to be terminated because it has
    come across a statement that unfortunately cannot be executed.
    please help me in this regard.
    Regards,
    Vamsi.

    REPORT  ZMM_PURCHREG.
    TABLES: RBKP,RSEG,KONV,J_1IMOVEND.
    TYPE-POOLS: SLIS.
    DATA: IT_RBKP TYPE STANDARD TABLE OF RBKP WITH HEADER LINE.
    DATA: IT_LFA1 TYPE STANDARD TABLE OF LFA1 WITH HEADER LINE.
    DATA: IT_J_1IMOVEND TYPE STANDARD TABLE OF J_1IMOVEND WITH HEADER LINE.
    DATA: IT_RSEG TYPE STANDARD TABLE OF RSEG WITH HEADER LINE.
    TYPES: BEGIN OF IT_BAMT1 ,
          RMWWR TYPE RBKP-RMWWR,
          WMWST1 TYPE RBKP-WMWST1,
          END OF IT_BAMT1.
    DATA: IT_BAMT TYPE STANDARD TABLE OF IT_BAMT1.
    DATA: G_BAMT TYPE RBKP-RMWWR.
    DATA: G_RMAMT TYPE RBKP-RMWWR,
          G_WMWST1 TYPE RBKP-WMWST1.
    DATA: BEGIN OF IT_TAXCOM OCCURS 0.
          INCLUDE STRUCTURE TAXCOM.
    DATA: END OF IT_TAXCOM.
    DATA: BEGIN OF IT_MAIN OCCURS 0.
          INCLUDE STRUCTURE ZPO_REG.
    DATA: END OF IT_MAIN.
    DATA: BEGIN OF IT_EKKO OCCURS 0,
          EBELN TYPE EKKO-EBELN,
          KNUMV TYPE EKKO-KNUMV,
          WAERS TYPE EKKO-WAERS,
          LIFNR TYPE EKKO-LIFNR,
          EKORG TYPE EKKO-EKORG,
          LANDS TYPE EKKO-LANDS,
          END OF IT_EKKO.
    DATA: BEGIN OF IT_EKPO OCCURS 0,
          EBELP TYPE EKPO-EBELP,
          EBELN TYPE EKPO-EBELN,
          MWSKZ TYPE EKPO-MWSKZ,
          NETWR TYPE EKPO-NETWR,
          TXJCD TYPE EKPO-TXJCD,
          MATNR TYPE EKPO-MATNR,
          MATKL TYPE EKPO-MATKL,
          MTART TYPE EKPO-MTART,
          WERKS TYPE EKPO-WERKS,
          MEINS TYPE EKPO-MEINS,
          MENGE TYPE EKPO-MENGE,
          END OF IT_EKPO.
    DATA : BEGIN OF it_xkomv OCCURS 0.
            INCLUDE STRUCTURE komv.
    DATA : END OF it_xkomv.
    DATA :  fieldcat TYPE slis_fieldcat_alv,
            fieldcat_t TYPE  slis_t_fieldcat_alv,
            top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
            layout TYPE slis_layout_alv,
            pos TYPE sy-tabix,
            xhead(70).
    DATA:  lt_sort     TYPE slis_t_sortinfo_alv,
            lt_sp_group TYPE slis_t_sp_group_alv.
    ==========================SELECTION SCREEN===========================
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP 1.
    SELECT-OPTIONS: S_BELNR FOR RBKP-BELNR.
    SELECTION-SCREEN SKIP 1.
    SELECT-OPTIONS: P_BUKRS FOR RBKP-BUKRS NO INTERVALS.
    SELECTION-SCREEN SKIP 1.
    SELECT-OPTIONS: P_LIFNR FOR RBKP-LIFNR NO INTERVALS.
    SELECTION-SCREEN SKIP 1.
    SELECT-OPTIONS: P_BLDAT FOR RBKP-BLDAT NO INTERVALS.
    SELECTION-SCREEN SKIP 1.
    SELECT-OPTIONS: P_BUDAT FOR RBKP-BUDAT NO INTERVALS.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN END OF BLOCK b1.
    ===============AT SELECTION SCREEN==================================
    AT SELECTION-SCREEN.
    PERFORM VALIDATE_DATA.
    ===============START OF SELECTION===================================
    START-OF-SELECTION.
    PERFORM VENDORDETAILS.
    *PERFORM BASICAMT.
    PERFORM EXCISEDUTY.
    PERFORM CONSTRUCT_FIELD_CATALOG.
    PERFORM REUSE_ALV_GRID_DISPLAY.
    *&      Form  VALIDATE_DATA
          text
    -->  p1        text
    <--  p2        text
    form VALIDATE_DATA .
    SELECT BELNR BUKRS LIFNR
           BLDAT BUDAT
           FROM RBKP CLIENT SPECIFIED
           INTO
           CORRESPONDING FIELDS OF TABLE IT_RBKP
           WHERE
           MANDT = SY-MANDT
           AND BELNR IN S_BELNR.
    IF SY-SUBRC NE 0.
    MESSAGE 'NOT A VALID DOCUMENT NO.' TYPE 'E'.
    ELSE.
    READ TABLE IT_RBKP INDEX 1.
    ENDIF.
    endform.         " VALIDATE_DATA
    *&      Form  VENDORDETAILS
          text
    -->  p1        text
    <--  p2        text
    form VENDORDETAILS .
    SELECT BELNR BUKRS LIFNR
           BLDAT BUDAT XBLNR RMWWR WMWST1
           FROM RBKP CLIENT SPECIFIED
           INTO
           CORRESPONDING FIELDS OF TABLE IT_RBKP
           WHERE
           MANDT = SY-MANDT
           AND BELNR IN S_BELNR
           AND BUKRS IN P_BUKRS
           AND LIFNR IN P_LIFNR
           AND BLDAT IN P_BLDAT
           AND BUDAT IN P_BUDAT.
    sort IT_RBKP by lifnr.
    LOOP AT IT_RBKP.
    SELECT SINGLE LIFNR J_1IEXCD J_1ICSTNO J_1ILSTNO
           FROM J_1IMOVEND CLIENT SPECIFIED
           INTO (IT_J_1IMOVEND-lifnr, IT_J_1IMOVEND-J_1IEXCD,
             IT_J_1IMOVEND-J_1ICSTNO, IT_J_1IMOVEND-J_1ILSTNO)
           WHERE
           MANDT = SY-MANDT and
           LIFNR = IT_RBKP-LIFNR.
    APPEND IT_J_1IMOVEND.
    ENDLOOP.
    sort IT_J_1IMOVEND by lifnr.
    delete adjacent duplicates from IT_J_1IMOVEND comparing lifnr.
    LOOP AT IT_RBKP.
    read table IT_J_1IMOVEND with key LIFNR = it_rbkp-lifnr.
    G_BAMT = IT_RBKP-RMWWR - IT_RBKP-WMWST1.
    IT_MAIN-BASICAMT = G_BAMT.
    IT_MAIN-BUDAT = IT_RBKP-BUDAT.
    IT_MAIN-BLDAT = IT_RBKP-BLDAT.
    IT_MAIN-BELNR = IT_RBKP-BELNR.
    IT_MAIN-XBLNR = IT_RBKP-XBLNR.
    IT_MAIN-LIFNR = IT_RBKP-LIFNR.
    IT_MAIN-XBLNR = IT_RBKP-XBLNR.
    IT_MAIN-J_1IEXCD = IT_J_1IMOVEND-J_1IEXCD.
    IT_MAIN-J_1ILSTNO = IT_J_1IMOVEND-J_1ILSTNO.
    IT_MAIN-J_1ICSTNO = IT_J_1IMOVEND-J_1ICSTNO.
    IT_MAIN-J_1ILSTNO = IT_J_1IMOVEND-J_1ILSTNO.
    APPEND IT_MAIN.
    CLEAR G_BAMT.
    ENDLOOP.
    FOR CALCULATING  VAT REG NO.
    loop at it_main.
    SELECT SINGLE STCEG FROM LFA1
           INTO  it_main-STCEG
           WHERE LIFNR = it_main-LIFNR.
    MODIFY IT_MAIN.
    ENDLOOP.
    endform.                    " VENDORDETAILS
    *&      Form  EXCISEDUTY
          text
    -->  p1        text
    <--  p2        text
    form EXCISEDUTY .
    LOOP AT IT_RBKP.
    SELECT  belnr EBELN EBELP  menge FROM RSEG
                   INTO corresponding fields of IT_RSEG
                   WHERE BELNR = IT_RBKP-BELNR.
    APPEND IT_RSEG.
    endselect.
    endloop.
    LOOP AT IT_MAIN.
           READ TABLE IT_RSEG WITH KEY BELNR = IT_MAIN-BELNR.
           IT_MAIN-EBELN = IT_RSEG-EBELN.
           IT_MAIN-MENGE = IT_RSEG-MENGE.
           MODIFY IT_MAIN.
    ENDLOOP.
    LOOP AT IT_MAIN.
    SELECT  SINGLE KNUMV FROM EKKO
                   INTO
                   IT_MAIN-KNUMV
                    WHERE EBELN = IT_MAIN-EBELN.
    MODIFY IT_MAIN.
    ENDLOOP.
    LOOP AT IT_MAIN.
    SELECT EBELP FROM EKPO
                 INTO  TABLE IT_EKPO
                 WHERE EBELN = IT_MAIN-EBELN.
    APPEND IT_EKPO.
    ENDLOOP.
    DATA: V_RATE  TYPE KWERT,
          V_RATE1 TYPE KWERT,
          V_RATE2 TYPE KWERT,
          V_RATE4 TYPE KWERT,
          V_RATE5 TYPE KWERT,
          V_RATE3 TYPE KWERT,
          V_RATE6 TYPE KWERT.
    CLACULATING SECESS
    LOOP AT IT_MAIN.
    LOOP AT IT_RSEG where belnr = IT_MAIN-belnr
                      and ebeln = IT_MAIN-ebeln.
    LOOP AT IT_EKPO WHERE EBELN = IT_MAIN-EBELN.
      SELECT SINGLE kbetr FROM konv
           INTO V_rate WHERE knumv = it_MAIN-knUMV
           AND  kposn = IT_EKPO-EBELP
           AND ( kschl EQ 'JSEI' OR kschl EQ 'JSEP' ).
    IF sy-subrc = 0.
    IT_MAIN-SECESS = IT_MAIN-SECESS + ( V_RATE / IT_MAIN-MENGE ).
    ENDIF.
    ENDLOOP.
    MODIFY it_main.
    ENDLOOP.
    ENDLOOP.
    Getting ECS
    LOOP AT IT_MAIN.
    LOOP AT IT_RSEG where belnr = IT_MAIN-belnr
                      and ebeln = IT_MAIN-ebeln.
    SELECT SINGLE kbetr FROM konv
           INTO V_rate1 WHERE knumv = it_MAIN-knumv
           AND  kposn = it_RSEG-ebelp
           AND ( kschl EQ 'JEC1' OR kschl EQ 'JEC2' ).
    IF sy-subrc = 0.
    IT_MAIN-ECS = IT_MAIN-ECS + ( V_RATE1 / IT_MAIN-MENGE ).
    CLEAR V_RATE1.
    ENDIF.
    ENDLOOP.
    MODIFY it_main.
    ENDLOOP.
    Excise Duty
    LOOP AT IT_MAIN.
    LOOP AT IT_RSEG where belnr = IT_MAIN-belnr
                      and ebeln = IT_MAIN-ebeln.
    SELECT SINGLE kbetr FROM konv
           INTO V_rate2 WHERE knumv = it_MAIN-knumv
           AND  kposn = it_RSEG-ebelp
           AND ( kschl EQ 'JMOP' OR kschl EQ 'JMIP' ).
    IF sy-subrc = 0.
    IT_MAIN-EXCISE = IT_MAIN-EXCISE  + ( V_RATE2 / IT_MAIN-MENGE ).
    ENDIF.
    CLEAR V_RATE2.
    ENDLOOP.
    MODIFY it_main.
    ENDLOOP.
    Freight / Octroi
    LOOP AT IT_MAIN.
    LOOP AT IT_RSEG where belnr = IT_MAIN-belnr
                      and ebeln = IT_MAIN-ebeln.
    SELECT SINGLE kbetr FROM konv
           INTO V_rate3 WHERE knumv = it_MAIN-knumv
           AND  kposn = it_RSEG-ebelp
           AND ( kschl EQ 'FRA1' OR kschl EQ 'FRB1'
              OR KSCHL EQ 'FRC1').
    IF sy-subrc = 0.
    SELECT SINGLE KBETR FROM KONV
            INTO V_RATE4 WHERE KNUMV = IT_MAIN-KNUMV
            AND KPOSN = IT_RSEG-EBELP
            AND KSCHL EQ 'JOCM'.
    IF SY-SUBRC = 0.
            V_RATE5 = V_RATE3 + V_RATE4.
    IT_MAIN-OCTROI = IT_MAIN-OCTROI + ( V_RATE5 / IT_MAIN-MENGE ).
    ENDIF.
    ENDIF.
    CLEAR: V_RATE3,
           V_RATE4,
           V_RATE5.
    ENDLOOP.
    MODIFY it_main.
    ENDLOOP.
    Other Charges
    LOOP AT IT_MAIN.
    LOOP AT IT_RSEG where belnr = IT_MAIN-belnr
                      and ebeln = IT_MAIN-ebeln.
    SELECT SINGLE kbetr FROM konv
           INTO V_rate6 WHERE knumv = it_MAIN-knumv
           AND  kposn = it_RSEG-ebelp
           AND ( kschl EQ 'ZOTC' ).
    IF sy-subrc = 0.
    IT_MAIN-OTC = IT_MAIN-OTC  + ( V_RATE6 / IT_MAIN-MENGE ).
    ENDIF.
    CLEAR V_RATE6.
    ENDLOOP.
    MODIFY it_main.
    ENDLOOP.
    ENDFORM.
    *&      Form  CONSTRUCT_FIELD_CATALOG
          text
    -->  p1        text
    <--  p2        text
    form CONSTRUCT_FIELD_CATALOG .
      CLEAR : fieldcat_t,pos.
      layout-colwidth_optimize = 'X'.
      CLEAR fieldcat.
      fieldcat-fieldname = 'BUDAT'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'DOC DATE'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'BLDAT'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'BILL DATE'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'BELNR'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'INVOICE RECIEPT NO.'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'XBLNR'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'BILL NO.'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'LIFNR'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'VENDOR NAME'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
    CLEAR fieldcat.
    fieldcat-fieldname = 'STCEG'.
    fieldcat-tabname   =  'IT_MAIN'.
    fieldcat-seltext_l = 'VAT REG NO.'.
    fieldcat-just = 'L'.
    fieldcat-col_pos = pos.
    pos = pos + 1.
    APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'J_1IEXCD'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'ECC REG NO.'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'J_1ILSTNO'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'PAN REG NO.'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'J_1ICSTNO'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'CST REG NO.'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'J_1ILSTNO'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'LST REG NO.'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'BASICAMT'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'BASIC AMOUNT'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'EXCISE'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'EXCISE AMOUNT'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'ECSS'.
      fieldcat-tabname   =  'IT_MAIN'.
      fieldcat-seltext_l = 'ECSS'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'SECESS'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'SECESS'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'VAT'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'VAT'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'OCTROI'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'Octroi'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
      CLEAR fieldcat.
      fieldcat-fieldname = 'OTC'.
      fieldcat-tabname   = 'IT_MAIN'.
      fieldcat-seltext_l = 'Other charges'.
      fieldcat-just = 'L'.
      fieldcat-col_pos = pos.
      pos = pos + 1.
      APPEND fieldcat TO fieldcat_t.
    endform.                    " CONSTRUCT_FIELD_CATALOG
    *&      Form  REUSE_ALV_GRID_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    form REUSE_ALV_GRID_DISPLAY .
    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           = ' '
      I_CALLBACK_TOP_OF_PAGE            = TOP_OF_PAGE
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
       I_STRUCTURE_NAME                  = 'ZPO_REG'
      I_BACKGROUND_ID                   = ' '
        I_GRID_TITLE                      = 'PURCHASE REGISTER'
      I_GRID_SETTINGS                   =
        IS_LAYOUT                         = LAYOUT
        IT_FIELDCAT                       = FIELDCAT_T
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
        I_SAVE                            = 'A'
      IS_VARIANT                        =
      IT_EVENTS                         =
      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_MAIN
    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.

  • Query regarding calling T-code MIGO from ALV report output

    Dear friends,
    I have to call MIGO transaction  from my ALV report output. Now problem is that I have to set the value 'display' In the first header field, 'Material Document' in 2nd header field when MIGO is called from the report output. Morever there is no parameter ID for these two fields. So how to set the values w/o using parameter ids.
    Regards,
    Rishi

    Hi,
    Try this coding,
    FORM DISPLAY.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = AK_LAYOUT
       IT_FIELDCAT                    = AK_FIELDCAT
      TABLES
       T_OUTTAB                       = ITAB.
    ENDFORM.                    " DISPLAY
    *&      Form  EVENT
    FORM EVENT USING P_AK_EVENT TYPE SLIS_T_EVENT.
      DATA : AK_EVENT1 TYPE SLIS_ALV_EVENT.
      AK_EVENT1-NAME = 'USER_COMMAND'.
      AK_EVENT1-FORM = 'USER_COMMAND'.
      APPEND AK_EVENT1 TO P_AK_EVENT.
    ENDFORM.                    " EVENT
    *&      Form  USER_COMMAND
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                            RS_SELFIELD TYPE SLIS_SELFIELD.
      IF R_UCOMM = '&IC1'.
      " AND SY-LSIND = '1'.
        READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
        SET PARAMETER ID 'AUN' FIELD ITAB-BUDAT.
        CALL TRANSACTION 'MIGO' AND SKIP FIRST SCREEN.
      ENDIF.
    ENDFORM.                    " USER_COMMAND
    Regards,
    Nikhil.

Maybe you are looking for

  • +d flag can cause C++ compilation failure in 12.4 beta refresh

    I was using the July refresh of Solaris Studio 12.4 beta to compile cppunit 1.13.2 and came across a file that fails to compile when the +d flag is used on the C++ compiler. The file is XmlOutputter.cpp.  I have put a slightly modified version of the

  • Global attributes in a template project

    Hello folks, We are setting up a demo of global template functionalites in SM. In the template project we have created we need advice on how to go about with the following. 1) What do the attributes - global, local, harmonized etc.mean from a busines

  • LSMW direct input method

    Hi   What is the procedure to include a specific program / report in the drop down box of program name of Direct Input method in LSMW? What is the diff. between Physical path and Logical path? How can we give our input data using logical path when we

  • Can I set a particular  tab as a home page?

    I am currently using Oracle Portal Builder to build a simple portal. I put a link on my navigator bar to link to my 'Home' The thing is, I have a few tabs on my page and want to direct my 'Home' link to one of those tabs. I try to map my home to that

  • 64-bit JVM on solaris 8/9

    Has anyone run the 64-bit JVM (-d64) on Solaris 8 or 9? 1.4.1 http://java.sun.com/products/archive/j2se/1.4.1_05/index.html 1.4.2 http://java.sun.com/j2se/1.4.2/install-solaris-64.html Support tells me BEA has not certified WLS for use with the 64-bi