ALV report for 5 Grids using Objects and Method

I have few questions in ALV 5Grids ,could you please correct me in the following program logic...
Using this program logic i am able to generate the five Grids and able to populate Header details from VBAK into Grid1,If you click in the Grid 1 and it is populating item details in Grid2 from VBAP,parallally populating the customer data in Grid5 from KNA1.
Now the pending issue is ,
if you click in the Grid2 then we should populate the shipping details in Grid3 and
if you click in the Grid3 then we should populate the billing details in Grid4.
Program Logic;
REPORT  ZAREPAS20.
Tables : vbak,vbap,likp,lips,vbrk,vbrp,kna1.
DATA : OK_CODE              LIKE        SY-UCOMM,
       G_CONTAINER          TYPE SCRFNAME VALUE 'BCALV7_GRID_DEMO_0100_VASU',
       DOCKING              TYPE REF TO CL_GUI_DOCKING_CONTAINER,
       SPLITTER_1           TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
       SPLITTER_2           TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
       splitter_3           TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
       CELL_TOP1            TYPE REF TO CL_GUI_CONTAINER,
       CELL_BOTTOM1         TYPE REF TO CL_GUI_CONTAINER,
       CELL_TOP2            TYPE REF TO CL_GUI_CONTAINER,
       CELL_BOTTOM2         TYPE REF TO CL_GUI_CONTAINER,
       CELL_LEFT            TYPE REF TO CL_GUI_CONTAINER,
       CELL_middle          TYPE REF TO CL_GUI_CONTAINER,
       CELL_RIGHT           TYPE REF TO CL_GUI_CONTAINER,
       GRID1                TYPE REF TO CL_GUI_ALV_GRID,
       GRID2                TYPE REF TO CL_GUI_ALV_GRID,
       GRID3                TYPE REF TO CL_GUI_ALV_GRID,
       GRID4                TYPE REF TO CL_GUI_ALV_GRID,
       GRID5                TYPE REF TO CL_GUI_ALV_GRID.
DATA : GT_VBAK              TYPE STANDARD TABLE OF VBAK,
       GT_VBAP              TYPE STANDARD TABLE OF VBAP,
       GT_LIKP              TYPE STANDARD TABLE OF likp,
       GT_LIPS              TYPE STANDARD TABLE OF lips,
       GT_VBRK              TYPE STANDARD TABLE OF vbrk,
       GT_VBRP              TYPE STANDARD TABLE OF vbrp,
       GT_KNA1              TYPE STANDARD TABLE OF kna1.
DATA:begin of itab1 occurs 0,
     vbeln type likp-VBELN,                            
     erzet type likp-ERZET,                             
     lfart type likp-LFART,                             
     posnr type lips-POSNR,
     END OF ITAB1.
DATA:begin of itab2 occurs 0,
     vbeln like vbrk-vbeln,                            
     posnr like vbrk-fktyp,                            
     fkart like vbrk-fkart,                             
     fklmg like vbrp-fklmg,                             
     end of itab2.
*selection screen for selecting range of values
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
select-options: S_vbeln for VBAK-vbeln.     
selection-screen end of block b1.
      CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:
      handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
        IMPORTING
          e_row
          e_column
          es_row_no
          sender.  " sending control, i.e. ALV grid that raised event
ENDCLASS.                    "lcl_eventhandler DEFINITION
      CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
*DEFINE LOCAL DATA.
DATA : itab_vbak type VBAK,
       itab_vbap type VBAP,
       itab_likp type likp,
       itab_lips type lips,
       itab_vbrk type vbrk,
       itab_vbrp type vbrp,
       itab_kna1 type kna1.
*DISTINGUISH ACCORDING TO SENDING GRID INSTANCE
CASE SENDER.
WHEN GRID1.
   READ TABLE gt_VBAK INTO itab_vbak INDEX e_row-index.
       CHECK ( itab_vbak-vbeln IS NOT INITIAL ).
        CALL METHOD GRID1->set_current_cell_via_id
          EXPORTING
             is_ROW_ID    =
             is_COLUMN_ID =
            is_row_no    = es_row_no.
        Triggers PAI of the dynpro with the specified ok-code
        CALL METHOD cl_gui_cfw=>set_new_ok_code( 'ORDER_DETAILS' ).
WHEN GRID2.
        READ TABLE gt_VBAP INTO itab_vbap INDEX e_row-index.
        CHECK ( itab_vbap-vbeln IS NOT INITIAL ).
        CALL METHOD GRID2->set_current_cell_via_id
          EXPORTING
             is_ROW_ID    =
             is_COLUMN_ID =
            is_row_no    = es_row_no.
        Triggers PAI of the dynpro with the specified ok-code
        CALL METHOD cl_gui_cfw=>set_new_ok_code( 'ORDER_DETAILS' ).
WHEN GRID3.
        READ TABLE gt_LIPS INTO itab_LIPS INDEX e_row-index.
        CHECK ( itab_lips-vgbel IS NOT INITIAL ).
        CALL METHOD GRID3->set_current_cell_via_id
          EXPORTING
             is_ROW_ID    =
             is_COLUMN_ID =
            is_row_no    = es_row_no.
        Triggers PAI of the dynpro with the specified ok-code
        CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DELIVERY_DETAILS' ).
WHEN GRID4.
        READ TABLE gt_VBRP INTO itab_VBRP INDEX e_row-index.
        CHECK ( itab_vbrp-vgbel IS NOT INITIAL ).
        CALL METHOD GRID4->set_current_cell_via_id
          EXPORTING
             is_ROW_ID    =
             is_COLUMN_ID =
            is_row_no    = es_row_no.
        Triggers PAI of the dynpro with the specified ok-code
        CALL METHOD cl_gui_cfw=>set_new_ok_code( 'BILLING_DETAILS' ).
WHEN GRID5.
        READ TABLE gt_KNA1 INTO itab_KNA1 INDEX e_row-index.
        CHECK ( itab_kna1-kunnr IS NOT INITIAL ).
      SET PARAMETER ID 'KUN' FIELD itab_KNA1-KUNNR.
       CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
      WHEN OTHERS.
        RETURN.
    ENDCASE.
endmethod.
endclass.    "lcl_eventhandler IMPLEMENTATION
start-of-selection.
*write :/ 'FEDEX INT''''L' .
SELECT        * FROM  vbak INTO TABLE gt_VBAK
where vbeln IN  S_VBELN.
creating docking container
create object docking
   exporting
    parent     = cl_gui_container=>screen0
    ratio      = 90
  exceptions
   others      = 6.
  if sy-subrc eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Create splitter container
CREATE OBJECT splitter_1
    EXPORTING
      parent            = docking
      rows              = 1
      columns           = 3
     NO_AUTODEF_PROGID_DYNNR =
     NAME              =
    EXCEPTIONS
      cntl_error        = 1
      cntl_system_error = 2
      OTHERS            = 3.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Get cell container
  CALL METHOD splitter_1->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = cell_left.
  CALL METHOD splitter_1->get_container
    EXPORTING
      row       = 1
      column    = 2
    RECEIVING
      container = cell_middle.
  CALL METHOD splitter_1->get_container
    EXPORTING
      row       = 1
      column    = 3
    RECEIVING
      container = cell_right.
Create 2nd splitter container
  CREATE OBJECT splitter_2
  EXPORTING
      parent            = cell_left
      rows              = 2
      columns           = 1
     NO_AUTODEF_PROGID_DYNNR =
     NAME              =
    EXCEPTIONS
      cntl_error        = 1
      cntl_system_error = 2
      OTHERS            = 3.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Get cell container
  CALL METHOD splitter_2->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = cell_top1.
  CALL METHOD splitter_2->get_container
    EXPORTING
      row       = 2
      column    = 1
    RECEIVING
      container = cell_bottom1.
Create 3rd splitter container
CREATE OBJECT splitter_3
    EXPORTING
      parent            = cell_middle
      rows              = 2
      columns           = 1
     NO_AUTODEF_PROGID_DYNNR =
     NAME              =
    EXCEPTIONS
      cntl_error        = 1
      cntl_system_error = 2
      OTHERS            = 3.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Get cell container
  CALL METHOD splitter_3->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = cell_top2.
  CALL METHOD splitter_3->get_container
    EXPORTING
      row       = 2
      column    = 1
    RECEIVING
      container = cell_bottom2.
Create ALV grids
  CREATE OBJECT grid1
    EXPORTING
      i_parent          = cell_top1
    EXCEPTIONS
      OTHERS            = 5.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CREATE OBJECT grid2
    EXPORTING
      i_parent          = cell_bottom1
    EXCEPTIONS
      OTHERS            = 5.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CREATE OBJECT grid3
    EXPORTING
      i_parent          = cell_top2
    EXCEPTIONS
      OTHERS            = 5.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CREATE OBJECT grid4
    EXPORTING
      i_parent          = cell_bottom2
    EXCEPTIONS
      OTHERS            = 5.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CREATE OBJECT grid5
    EXPORTING
      i_parent          = cell_right
    EXCEPTIONS
      OTHERS            = 5.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Set event handler
  SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid1.
  SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid2.
  SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid3.
  SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid4.
  SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid5.
Display data
  CALL METHOD grid1->set_table_for_first_display
    EXPORTING
      i_structure_name = 'VBAK'
    CHANGING
      it_outtab        = gt_VBAK
    EXCEPTIONS
      OTHERS           = 4.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
REFRESH: gt_vbap.
  CALL METHOD grid2->set_table_for_first_display
    EXPORTING
      i_structure_name = 'VBAP'
    CHANGING
      it_outtab        = gt_VBAP    " empty !!!
    EXCEPTIONS
      OTHERS           = 4.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
REFRESH: gt_LIPS.
  CALL METHOD grid3->set_table_for_first_display
    EXPORTING
      i_structure_name = 'LIPS'
    CHANGING
      it_outtab        = gt_LIPS    " empty !!!
    EXCEPTIONS
      OTHERS           = 4.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
REFRESH: gt_VBRP.
  CALL METHOD grid4->set_table_for_first_display
    EXPORTING
      i_structure_name = 'VBRP'
    CHANGING
      it_outtab        = gt_VBRP    " empty !!!
    EXCEPTIONS
      OTHERS           = 4.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
REFRESH: gt_KNA1.
  CALL METHOD grid5->set_table_for_first_display
    EXPORTING
      i_structure_name = 'KNA1'
    CHANGING
      it_outtab        = gt_KNA1    " empty !!!
    EXCEPTIONS
      OTHERS           = 4.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Link the docking container to the target dynpro
  CALL METHOD docking->link
    EXPORTING
      repid                       = syst-repid
      dynnr                       = '0100'
     CONTAINER                   =
    EXCEPTIONS
      OTHERS                      = 4.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
NOTE: dynpro does not contain any elements (ok_code -> GD_OKCODE)
  CALL SCREEN '0100'.
Flow logic of dynpro:
*PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
end-of-selection.
*&      Module  STATUS_0100  OUTPUT
      text
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
SET TITLEBAR 'xxx'.
Refresh display of detail ALV list
  CALL METHOD grid2->refresh_table_display
   EXPORTING
     IS_STABLE      =
     I_SOFT_REFRESH =
    EXCEPTIONS
      OTHERS         = 2.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Refresh display of detail ALV list
  CALL METHOD grid3->refresh_table_display
   EXPORTING
     IS_STABLE      =
     I_SOFT_REFRESH =
    EXCEPTIONS
      OTHERS         = 2.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Refresh display of detail ALV list
  CALL METHOD grid4->refresh_table_display
   EXPORTING
     IS_STABLE      =
     I_SOFT_REFRESH =
    EXCEPTIONS
      OTHERS         = 2.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Refresh display of detail ALV list
  CALL METHOD grid5->refresh_table_display
   EXPORTING
     IS_STABLE      =
     I_SOFT_REFRESH =
    EXCEPTIONS
      OTHERS         = 2.
  IF sy-subrc  eq 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&      Module  USER_COMMAND_0100  INPUT
      text
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK' OR
     'EXIT'  OR
     'CANCEL'.
     SET SCREEN 0.LEAVE SCREEN.
USER HAS PUSHED BUTTON "DISPLAY OREDERS"
     WHEN 'ORDER_DETAILS'.
      PERFORM ORDER_SHOW_DETAILS.
      when 'DELIVERY_DETAILS'.
        PERFORM DELIVERY_SHOW_DETAILS.
      WHEN 'BILLING_DETAILS'.
         PERFORM BILLING_SHOW_DETAILS.
     WHEN OTHERS.
ENDCASE.
CLEAR : OK_CODE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&      Form  ORDER_SHOW_DETAILS
      text
-->  p1        text
<--  p2        text
FORM order_show_details .
define local data
  DATA:
    ld_row      TYPE i,
    itab_VBAK     TYPE VBAK.
  CALL METHOD grid1->get_current_cell
    IMPORTING
      e_row = ld_row.
  READ TABLE gt_VBAK INTO itab_VBAK INDEX ld_row.
  CHECK ( syst-subrc = 0 ).
  SELECT        * FROM  KNA1 INTO TABLE gt_KNA1
         WHERE  KUNNR  = itab_VBAK-KUNNR.
  SELECT        * FROM  VBAP INTO TABLE gt_VBAP
         WHERE  VBELN  = ITAB_VBAK-VBELN.
*REFRESH: gt_LIPS.
ENDFORM.                    " ORDER_SHOW_DETAILS
*&      Form  DELIVERY_SHOW_DETAILS
      text
-->  p1        text
<--  p2        text
FORM DELIVERY_SHOW_DETAILS .
define local data
  DATA:
    ld_row      TYPE i,
    itab_VBAP     TYPE VBAP.
  CALL METHOD grid1->get_current_cell
    IMPORTING
      e_row = ld_row.
  READ TABLE gt_VBAP INTO itab_VBAP INDEX ld_row.
  CHECK ( syst-subrc = 0 ).
  SELECT LIKPVBELN LIKPERZET LIKPLFART LIPSVBELN
       INTO CORRESPONDING FIELDS OF TABLE ITAB1
       FROM ( LIKP INNER JOIN LIPS ON LIKPVBELN = LIPSVBELN )
       WHERE LIKP~VBELN IN S_VBELN.
*REFRESH: gt_LIPS.
ENDFORM.                    " DELIVERY_SHOW_DETAILS
*&      Form  BILLING_SHOW_DETAILS
      text
-->  p1        text
<--  p2        text
FORM BILLING_SHOW_DETAILS .
define local data
  DATA:
    ld_row      TYPE i,
    itab_LIPS     TYPE LIPS.
  CALL METHOD grid1->get_current_cell
    IMPORTING
      e_row = ld_row.
  READ TABLE gt_LIPS INTO itab_LIPS INDEX ld_row.
  CHECK ( syst-subrc = 0 ).
  SELECT VBRKVBELN VBRKFKTYP VBRKFKART VBRPFKLMG
       INTO CORRESPONDING FIELDS OF TABLE ITAB2
       FROM ( VBRK INNER JOIN VBRP ON VBRKVBELN = VBRPVBELN )
       WHERE VBRK~VBELN IN S_VBELN.
ENDFORM.                    " BILLING_SHOW_DETAILS

Hi,
ALV means ABAP List Viewer. Most convenient way to use it is through reuse library (cf.
transaction se83) available from release 4.6 of SAP R/3.
ALV is available in two modes: list and grid. List mode is good old list processing with
standard functionnalities, and grid mode is using a new OCX object displaying grids.
Classical reports needs more coding to set the horizontal and vertical lines.we need to adjust
the lines manually.Even interactive also takes lot of code.
ALV reports reduces the code when compared to classical reports.we use function modules to
generate the output.
that r REUSE_ALV_LIST_DISPLAY,REUSE_ALV_GRID_DISPLAY,REUSE_ALV_HIERSEQ_LIST_DISPLAY etc..
the following threads will give some examples of the functions which you are expecting
Header
regarding function module
hide ALV field
Simply Display selection parameter values in the ALV OUTPUT
Drag and drop in a report
https://www.sdn.sap
Reprots
http://www.sapgenie.com/abap/reports.htm
http://www.allsaplinks.com/material.html
http://www.sapdevelopment.co.uk/reporting/reportinghome.htm
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.

Similar Messages

  • Grid using Object Oriented View

    Can anyone send me program for grid using object oriented view.

    hi Sandeep,
    please look at this code
    REPORT Z_PICK_LIST .
    TABLES: RESB.
    SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1.
    SELECT-OPTIONS: S_WERKS FOR RESB-WERKS," Plant
    S_AUFNR FOR RESB-AUFNR," Order number
    S_BDTER FOR RESB-BDTER." Req. date
    SELECTION-SCREEN END OF BLOCK BL1.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT DEFAULT '/STANDARD'.
    DATA: BEGIN OF OUT OCCURS 10,
    AUFNR LIKE RESB-AUFNR, " Order number
    MATNR LIKE RESB-MATNR, " Material
    BDMNG LIKE RESB-BDMNG, " Requirements in UM
    MEINS LIKE RESB-MEINS, " Unit of Measure (UM)
    ERFMG LIKE RESB-ERFMG, " Requirements in UE
    ERFME LIKE RESB-ERFME, " Unit of Entry (UE)
    MAKTX LIKE MAKT-MAKTX, " Mat. description
    END OF OUT.
    INCLUDE Z_ALV_VARIABLES.
    INITIALIZATION.
    REPNAME = SY-REPID.
    PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
    PERFORM BUILD_EVENTTAB USING EVENTS[].
    PERFORM BUILD_COMMENT USING HEADING[].
    PERFORM INITIALIZE_VARIANT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
    PERFORM F4_FOR_VARIANT.
    AT SELECTION-SCREEN.
    PERFORM PAI_OF_SELECTION_SCREEN.
    START-OF-SELECTION.
    PERFORM GET_ORDERS.
    PERFORM GET_MATERIAL_DESCRIPTION.
    END-OF-SELECTION.
    PERFORM BUILD_LAYOUT USING LAYOUT.
    PERFORM BUILD_PRINT USING PRINTS.
    PERFORM WRITE_USING_ALV.
    FORM INITIALIZE_FIELDCAT *
    --> P_TAB *
    FORM INITIALIZE_FIELDCAT USING P_TAB TYPE SLIS_T_FIELDCAT_ALV.
    DATA: CAT TYPE SLIS_FIELDCAT_ALV.
    CLEAR CAT.
    ENDFORM. " INITIALIZE_FIELDCAT
    *& Form GET_ORDERS
    text
    FORM GET_ORDERS.
    SELECT AUFNR MATNR BDMNG MEINS ERFMG ERFME
    FROM RESB
    APPENDING TABLE OUT
    WHERE XLOEK EQ SPACE " deletion indicator
    AND XWAOK EQ 'X' " goods movement indicator
    AND WERKS IN S_WERKS " plant
    AND BDTER IN S_BDTER " req. date
    AND AUFNR IN S_AUFNR. " pr. order
    ENDFORM. " GET_ORDERS
    *& Form GET_MATERIAL_DESCRIPTION
    text
    FORM GET_MATERIAL_DESCRIPTION.
    SORT OUT BY MATNR.
    LOOP AT OUT.
    SELECT SINGLE MAKTX
    INTO OUT-MAKTX
    FROM MAKT
    WHERE MATNR EQ OUT-MATNR
    AND SPRAS EQ 'EN'.
    MODIFY OUT.
    ENDLOOP.
    SORT OUT BY AUFNR MATNR.
    ENDFORM. " GET_MATERIAL_DESCRIPTION
    FORM TOP_OF_PAGE *
    FORM TOP_OF_PAGE.
    DATA: L_POS TYPE P.
    first line
    WRITE:/ TEXT-001. " Plant:
    IF S_WERKS-HIGH NE SPACE.
    WRITE: S_WERKS-LOW, TEXT-TO1, S_WERKS-HIGH.
    ELSEIF S_WERKS-LOW NE SPACE.
    LOOP AT S_WERKS.
    WRITE: S_WERKS-LOW.
    ENDLOOP.
    ELSEIF S_WERKS-LOW EQ SPACE.
    WRITE: TEXT-ALL.
    ENDIF.
    L_POS = ( SY-LINSZ DIV 2 ) - ( STRLEN( TEXT-TIT ) DIV 2 ).
    POSITION L_POS. WRITE: TEXT-TIT.
    L_POS = SY-LINSZ - 20.
    POSITION L_POS. WRITE: TEXT-011, SY-UNAME RIGHT-JUSTIFIED. " User:
    second line
    WRITE:/ TEXT-002. " Order:
    IF S_AUFNR-HIGH NE SPACE.
    WRITE: S_AUFNR-LOW, TEXT-TO1, S_AUFNR-HIGH.
    ELSEIF S_AUFNR-LOW NE SPACE.
    LOOP AT S_AUFNR.
    WRITE: S_AUFNR-LOW.
    ENDLOOP.
    ELSEIF S_AUFNR-LOW EQ SPACE.
    WRITE: TEXT-ALL.
    ENDIF.
    L_POS = SY-LINSZ - 20.
    POSITION L_POS. WRITE: TEXT-012,SY-DATUM. " Date:
    third line
    WRITE:/ TEXT-003. " Req. Date:
    IF S_BDTER-HIGH(1) NE '0'.
    WRITE: S_BDTER-LOW, TEXT-TO1, S_BDTER-HIGH.
    ELSEIF S_BDTER-LOW(1) NE '0'.
    LOOP AT S_BDTER.
    WRITE: S_BDTER-LOW.
    ENDLOOP.
    ELSEIF S_BDTER-LOW(1) EQ '0'.
    WRITE: TEXT-ALL.
    ENDIF.
    L_POS = SY-LINSZ - 20.
    POSITION L_POS. WRITE: TEXT-013, SY-PAGNO. " Page:
    ENDFORM. " TOP_OF_PAGE
    FORM END_OF_LIST *
    FORM END_OF_LIST.
    DATA: L_POS TYPE P.
    ULINE.
    WRITE:/ '|', TEXT-021. " Delivered by:
    L_POS = SY-LINSZ DIV 2.
    POSITION L_POS. WRITE: '|', TEXT-031. " Received by:
    L_POS = SY-LINSZ.
    POSITION L_POS. WRITE: '|'.
    WRITE:/ '|'.
    L_POS = SY-LINSZ DIV 2.
    POSITION L_POS. WRITE: '|'.
    L_POS = SY-LINSZ.
    POSITION L_POS. WRITE: '|'.
    ULINE.
    WRITE:/ '|', TEXT-012. " Date:
    L_POS = SY-LINSZ DIV 2.
    POSITION L_POS. WRITE: '|', TEXT-012. " Date:
    L_POS = SY-LINSZ.
    POSITION L_POS. WRITE: '|'.
    WRITE:/ '|'.
    L_POS = SY-LINSZ DIV 2.
    POSITION L_POS. WRITE: '|'.
    L_POS = SY-LINSZ.
    POSITION L_POS. WRITE: '|'.
    ULINE.
    ENDFORM. " END_OF_LIST
    *& Form WRITE_USING_ALV
    text
    FORM WRITE_USING_ALV.
    Look this code*****
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    I_PROGRAM_NAME = REPNAME
    I_INTERNAL_TABNAME = 'OUT'
    I_INCLNAME = REPNAME
    CHANGING
    CT_FIELDCAT = FIELDTAB.
    IF SY-SUBRC 0.
    WRITE: 'SY-SUBRC: ', SY-SUBRC,
    'REUSE_ALV_FIELDCATALOG_MERGE'.
    ENDIF.
    LOOk this code also.*********
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = REPNAME
    i_callback_pf_status_set = 'PF_STATUS_SET'
    i_callback_user_command = 'USER_COMMAND'
    I_STRUCTURE_NAME = 'OUT'
    IS_LAYOUT = LAYOUT
    IT_FIELDCAT = FIELDTAB
    I_DEFAULT = 'A'
    I_SAVE = G_SAVE
    IS_VARIANT = G_VARIANT
    IT_EVENTS = EVENTS[]
    IS_PRINT = PRINTS
    TABLES
    T_OUTTAB = OUT.
    IF SY-SUBRC 0.
    WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. " WRITE_USING_ALV
    ***************report over***************
    HOPE THIS CODE HELPS U
    Reward if its useful.............
    thanks and regards
    suma sailaja

  • Automatic Display of NEW Data in ALV Report using Classes and Methods

    Hi,
    I have developed a ALV Report for displaying data from a set of DB tables using ABAP OO, Classes and Methods. The requirement is to have the report output to be automatically updated with the new entries from the DB table at a regular frequency of tiem may be every two minutes.
    Could anyone please tell me how can this be acheived.
    Thanks and regards,
    Raghavendra Goutham P.

    Yes its possible.
    Take a look at this thread
    Auto refresh of ALV Grid, without user interaction
    Or Rich's blog
    /people/rich.heilman2/blog/2005/10/18/a-look-at-clguitimer-in-46c
    Regards,
    Ravi
    Note : Please mark all the helpful answers

  • List display for ALV using class and methods

    Hi friends
    I want the list display for the ALV using Class and methods
    which class and methods i can use.
    Here we can't use the REUSE_ALV_LIST_DISPLAY and also GRID
    I was done GRID display using class and methods but i want only list display for using class.
    plz Give me sample code of list display not for grid.
    Thanks
    Nani.

    hi
    please check with this code...
    declare grid and container.
    DATA : o_alvgrid TYPE REF TO cl_gui_alv_grid,
    o_dockingcontainer TYPE REF TO cl_gui_docking_container,
    i_fieldcat TYPE lvc_t_fcat,"fieldcatalogue
    w_layout TYPE lvc_s_layo."layout
    If any events like double click,etc., are needed we have to add additional functionality.
    call the screen in program.
    Then , create the container as follows
    IF cl_gui_alv_grid=>offline( ) IS INITIAL.
    CREATE OBJECT o_dockingcontainer
    EXPORTING
    ratio = '95'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6.
    ENDIF.
    CREATE OBJECT o_alvgrid
    EXPORTING
    i_parent = o_dockingcontainer.
    Build the fieldcatalog
    create a output structure in SEll for the ALV output
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
    i_structure_name = <alv output>
    CHANGING
    ct_fieldcat = i_fieldcat[]
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE i030."Error in building the field catalogue
    LEAVE LIST-PROCESSING.
    ENDIF.
    *If you need to modify the field catalog,modify it using field sysmbols
    *setting the layout
    w_layout-grid_title = title.
    w_layout-zebra = 'X'.
    then displaying the output
    CALL METHOD o_alvgrid->set_table_for_first_display
    EXPORTING
    i_save = 'A'
    is_layout = w_layout
    CHANGING
    it_outtab = i_output[]
    it_fieldcatalog = i_fieldcat[]
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc <> 0.
    MESSAGE i032 ."Error in Displaying
    LEAVE LIST-PROCESSING.
    ENDIF.
    *After that in PAI of the screen, you need to free the *object while going back from the screen(according to *your requirement)
    MODULE user_command_9001 INPUT.
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    PERFORM f9600_free_objects:
    USING o_alvgrid 'ALV' text-e02,
    USING o_dockingcontainer 'DOCKING'
    text-e01.
    LEAVE PROGRAM.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_9001 INPUT
    *in the program, write the follwoing code
    FORM f9600_free_objects USING pobject
    value(ptype)
    value(ptext).
    DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
    CASE ptype.
    WHEN 'ALV'.
    l_objectalv = pobject.
    IF NOT ( l_objectalv IS INITIAL ).
    CALL METHOD l_objectalv->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, l_objectalv.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'DOCKING'.
    DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
    lobjectdock = pobject.
    IF NOT ( lobjectdock IS INITIAL ).
    CALL METHOD lobjectdock->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectdock.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'CONTAINER'.
    DATA: lobjectcontainer TYPE REF TO cl_gui_container.
    lobjectcontainer = pobject.
    IF NOT ( lobjectcontainer IS INITIAL ).
    CALL METHOD lobjectcontainer->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectcontainer.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN OTHERS.
    sy-subrc = 1.
    PERFORM f9700_error_handle USING
    text-e04.
    ENDCASE.
    ENDFORM. " f9600_free_objects
    FORM f9700_error_handle USING value(ptext).
    IF sy-subrc NE 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
    EXPORTING
    titel = text-e03
    txt2 = sy-subrc
    txt1 = ptext.
    ENDIF.
    endform.
    also check with this
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
    Hope this helps
    if it helped, you can acknowledge the same by rewarding
    regards
    dinesh

  • ALV using clases and  methods

    Hi all
    how can i use alv 's for reading data from table mara and dispyaing 10 records on out put screen as a grid  using classes or methods
    thanks in advance

    Hi,
    look into the sample code:
                           TYPE-POOLS                                    *
    TYPE-POOLS: slis.
                         TRANSPARENT TABLES                              *
    TABLES: rbkp,rbco,sscrfields,t009b.
          CLASS cl_event_receiver DEFINITION
    CLASS cl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS: handle_double_click
                 FOR EVENT double_click OF cl_gui_alv_grid
                 IMPORTING e_row e_column,
                 handle_top_of_page
                 FOR EVENT print_top_of_page OF cl_gui_alv_grid.
      PRIVATE SECTION.
    ENDCLASS.
          CLASS CL_EVENT_RECEIVER IMPLEMENTATION
    CLASS cl_event_receiver IMPLEMENTATION.
    *--Method double click
      METHOD :handle_double_click.
        PERFORM drill_down USING e_column-fieldname
                                 e_row-index .
      ENDMETHOD.
    *--Method top of page
      METHOD handle_top_of_page.
        PERFORM event_top_of_page.
      ENDMETHOD.                 "top_of_page
    ENDCLASS.
    DATA: event_receiver TYPE REF TO cl_event_receiver.
                          Global Variables                               *
    DATA:
      v_xblnr     LIKE rbkp-xblnr,         " Refernce Doc No
      v_lifnr     LIKE lfa1-lifnr,         " Vendor
      v_bukrs     LIKE t001-bukrs,         " Company Code
      v_zzmprd    LIKE mara-matnr,         " MPM
      v_monat     LIKE t009b-poper.        " Fiscal Period
                         GLOBAL TYPES                                    *
    *-Structure for Invoice details
    TYPES:BEGIN OF y_invoice,
            belnr LIKE rbkp-belnr,                    " Invoice Doc No
            gjahr LIKE rbkp-gjahr,                    " Fiscal Year
            blart LIKE rbkp-blart,                    " Document type
            bldat LIKE rbkp-bldat,                    " Document date
            budat LIKE rbkp-budat,                    " Posting date
            xblnr LIKE rbkp-xblnr,                    " Refernce Doc no
            bukrs LIKE rbkp-bukrs,                    " Company Code
            lifnr LIKE rbkp-lifnr,                    " Vendor
            waers LIKE rbkp-waers,                    " Local Currency
            bktxt LIKE rbkp-bktxt,                    " Doc header text
            zlspr LIKE rbkp-zlspr,                    " payment block
            buzei LIKE rseg-buzei,                    " Invoice Item No
            ebeln LIKE rseg-ebeln,                    " PO
            ebelp LIKE rseg-ebelp,                    " PO line item
            matnr LIKE rseg-matnr,                    " SAP Material
            bwtar LIKE rseg-bwtar,                    " Valuation type
            wrbtr LIKE rseg-wrbtr,                    " Inv Value
            menge LIKE rseg-menge,                    " Inv Qty
          END OF y_invoice,
    *-Structure for Material details
          BEGIN OF y_material,
            matnr LIKE mara-matnr,                   " Material No
            normt LIKE mara-normt,                   " Article Number
            ismconttype LIKE mara-ismconttype,       " Window
            ismdesign LIKE mara-ismdesign,           " No of disc in MPM
            werks LIKE marc-werks,                   " Plant
            mfrgr LIKE marc-mfrgr,                   " Product Line
          END OF y_material,
    Structure for Costtype data
         BEGIN OF y_costtype,
           bukrs    LIKE zsn0325_costtype-bukrs,      " Company Code
           land1    LIKE zsn0325_costtype-land1,      " Country key
           window   LIKE zsn0325_costtype-window,     " Window
           ewlnr    LIKE zsn0325_costtype-ewlnr,      " Cost type
           distmeth LIKE zsn0325_costtype-distmeth,   " Distribution type
           zvalfrom LIKE zsn0325_costtype-zvalfrom,   " Posting date from
           zvalto   LIKE zsn0325_costtype-zvalto,     " Posting Date TO
           disc1pr  LIKE zsn0325_costtype-disc1pr,    " Disc price
           disc2pr  LIKE zsn0325_costtype-disc2pr,    " Disc price
         END OF y_costtype,
    Structure for Distmeth data
        BEGIN OF y_distmeth,
           distmeth  LIKE zsn0325_distmeth-distmeth,  " Distribution Methods
           distext  LIKE zsn0325_distmeth-distext,    " Description
        END OF y_distmeth,
    *-structure for rbco
          BEGIN OF y_rbco,
            belnr LIKE rbco-belnr,                    " Account Doc#
            gjahr LIKE rbco-gjahr,                    " Fiscal year
            buzei LIKE rbco-buzei,                    " Doc item in inv doc
            cobl_nr LIKE rbco-cobl_nr,                " 4 Character
                                                       " Seq No for Coding
            wrbtr LIKE rbco-wrbtr,                    " Amt in doc currency
            saknr LIKE rbco-saknr,                    " G/L Account Number
            sgtxt LIKE rbco-sgtxt,                    " Item text
            zzcou LIKE rbco-zzcou,                    " Country
            zzmprd LIKE rbco-zzmprd,                  " MPM Product
            menge LIKE rbco-menge,                    " Quantity
            bukrs LIKE rbco-bukrs,                    " Company Code
            xnegp LIKE rbco-xnegp,                    " Variance Flag
            matnr LIKE mara-matnr,                    " MPM Product
            land1 LIKE zsop_fame-sop_cnt,           " SOP country code
          END OF y_rbco,
    *-structure for rbco_tmp
          BEGIN OF y_rbco_tmp,
           bukrs LIKE rbco-bukrs,                     " Company Code
           sgtxt LIKE rbco-sgtxt,                     " Item text
           ewlnr    LIKE zsn0325_costtype-ewlnr,      " Cost type
           distmeth LIKE zsn0325_costtype-distmeth,   " Distribution type
           land1    LIKE zsop_fame-sop_cnt,           " SOP country code
          END OF y_rbco_tmp,
    *-Structure for setleaf
         BEGIN OF y_setleaf,
         setname      LIKE  setleaf-setname,
           valsign    LIKE  setleaf-valsign,
           valoption  LIKE  setleaf-valoption,
           valfrom    LIKE  setleaf-valfrom,
           valto      LIKE  setleaf-valto,
         END OF y_setleaf,
    *-Structure for Output data
         BEGIN OF y_output,
           bukrs      LIKE rbkp-bukrs,                " Company Code
           gjahr      LIKE rbkp-gjahr,                " Fiscal year
           lifnr      LIKE rbkp-lifnr,                " Vendor
           zlspr      LIKE rbkp-zlspr,                " Payment block
           xblnr      LIKE rbkp-xblnr,                " Refernece Doc no
           bldat      LIKE rbkp-bldat,                " Document date
           budat      LIKE rbkp-budat,                " Posting date
           belnr      LIKE rbkp-belnr,                " Invoice Doc No
           bktxt      LIKE rbkp-bktxt,                " Invoice Type
           normt      LIKE mara-normt,                " Article Number
           ismconttype LIKE mara-ismconttype,         " Window
           zzcou      LIKE rbco-zzcou,                " Country
           zzmprd     LIKE rbco-zzmprd,               " MPM Product
           xnegp      LIKE rbco-xnegp,                " Cost type variance
           cobl_nr    LIKE rbco-cobl_nr,              " 4 Character
                                                       " Seq No for Coding
           invfqty    LIKE rbco-menge,                " Inventory Fee Qty
           discqty    LIKE rbco-menge,                " Dist Cost Qty
           disrqty    LIKE rbco-menge,                " Dist Return Qty
           sseqty     LIKE rbco-menge,                " Special Services Qty
           sgtxt      LIKE rbco-sgtxt,                " Item Text
           ismdesign  LIKE mara-ismdesign,            " No of disc on MPM
           mfrgr      LIKE marc-mfrgr,                " Product Line
           ddeal(3),                                  " Distribution DEAL
           distmeth   LIKE zsn0325_costtype-distmeth, " Distribution type
           distext    LIKE zsn0325_distmeth-distext,  " Description
           ndisc(2)   TYPE c,                         " NO of disc on INV
           rifval     LIKE rbco-wrbtr,                " Inv fee value
           stdrif     LIKE zsn0325_costtype-disc1pr,  " STD Inv fee
           rfvar      LIKE zsn0325_costtype-disc1pr,  " Inv Fee Variance
           dicval     LIKE rbco-wrbtr,                " Dist cost Value
           stddico    LIKE zsn0325_costtype-disc1pr,  " STD Dis cost
           dicvar     LIKE zsn0325_costtype-disc1pr,  " Dist Cost Variance
           disrev     LIKE rbco-wrbtr,                " Dist Return Value
           stdirco    LIKE zsn0325_costtype-disc1pr,  " STD Dis Return cost
           drevar     LIKE zsn0325_costtype-disc1pr,  " Dist Ret Variance
           adj_qty_ct LIKE rbco-menge,                " Adjustments Qty
           adj_pr_ct  LIKE rbco-wrbtr,                " Adjustments Value
           ssval      LIKE rbco-wrbtr,                " Special Value
           color_cell TYPE lvc_t_scol,                " Cell Color
           END OF y_output,
    *-Structure for Temporary Output data
         BEGIN OF y_output_tmp,
           bukrs      LIKE rbkp-bukrs,                " Company Code
           gjahr      LIKE rbkp-gjahr,                " Fiscal year
           lifnr      LIKE rbkp-lifnr,                " Vendor
           zlspr      LIKE rbkp-zlspr,                " Payment block
           xblnr      LIKE rbkp-xblnr,                " Refernece Doc no
           bldat(10)    TYPE  c,                      " Document Date
           budat(10)    TYPE  c,                      " Posting date
           belnr      LIKE rbkp-belnr,                " Invoice Doc No
           bktxt      LIKE rbkp-bktxt,                " Invoice Type
           normt(18)    TYPE  c,                      " Article Number
           ismconttype LIKE mara-ismconttype,         " Window
           zzcou      LIKE rbco-zzcou,                " Country
           zzmprd     LIKE rbco-zzmprd,               " MPM Product
           xnegp      LIKE rbco-xnegp,                " Cost type variance
           cobl_nr    LIKE rbco-cobl_nr,              " 4 Character
                                                       " Seq No for Coding
           invfqty    LIKE rbco-menge,                " Inventory Fee Qty
           discqty    LIKE rbco-menge,                " Dist Cost Qty
           disrqty    LIKE rbco-menge,                " Dist Return Qty
           sseqty     LIKE rbco-menge,                " Special Services Qty
           sgtxt      LIKE rbco-sgtxt,                " Item Text
           ismdesign(2) TYPE c,                       " No of disc on MPM
           mfrgr      LIKE marc-mfrgr,                " Product Line
           ddeal(3),                                  " Distribution DEAL
           distmeth   LIKE zsn0325_costtype-distmeth, " Distribution type
           distext    LIKE zsn0325_distmeth-distext,  " Description
           ndisc(2)   TYPE c,                         " NO of disc on INV
           rifval     LIKE rbco-wrbtr,                " Inv fee value
           stdrif     LIKE zsn0325_costtype-disc1pr,  " STD Inv fee
           rfvar      LIKE zsn0325_costtype-disc1pr,  " Inv Fee Variance
           dicval     LIKE rbco-wrbtr,                " Dist cost Value
           stddico    LIKE zsn0325_costtype-disc1pr,  " STD Dis cost
           dicvar     LIKE zsn0325_costtype-disc1pr,  " Dist Cost Variance
           disrev     LIKE rbco-wrbtr,                " Dist Return Value
           stdirco    LIKE zsn0325_costtype-disc1pr,  " STD Dis Return cost
           drevar     LIKE zsn0325_costtype-disc1pr,  " Dist Ret Variance
           adj_qty_ct LIKE rbco-menge,                " Adjustments Qty
           adj_pr_ct  LIKE rbco-wrbtr,                " Adjustments Value
           ssval      LIKE rbco-wrbtr,                " Special Value
           color_cell TYPE lvc_t_scol,                " Cell Color
          END OF y_output_tmp.
                   GLOBAL DATA -INTERNAL TABLES                          *
    DATA: i_invoice      TYPE STANDARD TABLE OF y_invoice,
          i_output       TYPE STANDARD TABLE OF y_output,
          i_output_tmp   TYPE STANDARD TABLE OF y_output_tmp,
          i_rbco         TYPE STANDARD TABLE OF y_rbco,
          i_rbco_tmp     TYPE STANDARD TABLE OF y_rbco_tmp,
          i_setleaf      TYPE STANDARD TABLE OF y_setleaf,
          i_material     TYPE STANDARD TABLE OF y_material,
          i_costtype     TYPE STANDARD TABLE OF y_costtype,
          i_distmeth     TYPE STANDARD TABLE OF y_distmeth,
          i_toolbar_excluding TYPE ui_functions,
          i_fieldcatalog TYPE lvc_t_fcat.
                            WORK AREAS                                   *
    DATA: w_invoice       TYPE  y_invoice,
          w_material      TYPE  y_material,
          w_output        TYPE  y_output,
          w_output_tmp    TYPE  y_output_tmp,
          w_costtype      TYPE  y_costtype,
          w_distmeth      TYPE  y_distmeth,
          w_rbco          TYPE  y_rbco,
          w_rbco_tmp      TYPE  y_rbco_tmp,
          w_setleaf       TYPE  y_setleaf,
          w_toolbar_excluding TYPE ui_func,
          w_fieldcatalog  TYPE  lvc_s_fcat.
    *--Ranges
    RANGES: r_setinv FOR setleaf-valfrom,
            r_matnr FOR mara-matnr.
             DATA DECLARATION FOR ALV                                    *
    *--Data declaration for ALV Grid
    DATA :w_alvgrid    TYPE REF TO cl_gui_alv_grid,
          w_ccontainer TYPE REF TO cl_gui_custom_container,
          w_okcode     LIKE sy-ucomm.
    *--Color cell
    DATA: i_color    TYPE lvc_t_scol,
          w_color    TYPE lvc_s_scol.
    *--- Layout structure
    DATA w_layout TYPE lvc_s_layo .
                     SELECTION SCREEN                                    *
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-055.
    SELECT-OPTIONS:
      s_bukrs FOR rbkp-bukrs,                           " Company Code
      s_lifnr FOR rbkp-lifnr,                           " Vendor
      s_xblnr FOR rbkp-xblnr,                           " Reference Doc No
      s_gjahr FOR rbkp-gjahr OBLIGATORY,                " Fiscal Year
      s_monat FOR t009b-poper,                          " Period
      s_budat FOR rbkp-budat,                           " Posting date
      s_bldat FOR rbkp-bldat,                           " Document date
      s_zzmprd FOR rbco-zzmprd.                         " MPM
    SELECTION-SCREEN END OF BLOCK blk1.
                    AT SELECTION SCREEN                                  *
    Validating Company Code
    AT SELECTION-SCREEN ON s_bukrs.
      IF NOT s_bukrs[] IS INITIAL.
        SELECT bukrs                        " Company Code
               UP TO 1 ROWS
               INTO v_bukrs
               FROM t001
               WHERE bukrs IN s_bukrs.
        ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e000 WITH 'Invalid Company Code'(e06).
        ENDIF.
      ENDIF.
    Validating ODS Invoice Document No.
    AT SELECTION-SCREEN ON s_xblnr.
      IF NOT s_xblnr[] IS INITIAL.
        SELECT xblnr                        " Reference Document number
               UP TO 1 ROWS
               INTO v_xblnr
               FROM rbkp
               WHERE xblnr IN s_xblnr.
        ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e000 WITH 'Invalid ODS Invoice No.'(e05).
        ENDIF.
      ENDIF.
    Validating Vendor Number
    AT SELECTION-SCREEN ON s_lifnr.
      IF NOT s_lifnr[] IS INITIAL.
        SELECT lifnr                        " Vendor Number
               UP TO 1 ROWS
               INTO v_lifnr
               FROM lfa1
               WHERE lifnr IN s_lifnr.
        ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e000 WITH 'Invalid Vendor Number'(e04).
        ENDIF.
      ENDIF.
    Validating MPM
    AT SELECTION-SCREEN ON s_zzmprd.
      REFRESH r_matnr.
      LOOP AT s_zzmprd.
        MOVE-CORRESPONDING s_zzmprd TO r_matnr.
        IF NOT s_zzmprd IS INITIAL.
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
               EXPORTING
                    input        = s_zzmprd-low
               IMPORTING
                    output       = r_matnr-low
               EXCEPTIONS
                    length_error = 1
                    OTHERS       = 2.
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
               EXPORTING
                    input        = s_zzmprd-high
               IMPORTING
                    output       = r_matnr-high
               EXCEPTIONS
                    length_error = 1
                    OTHERS       = 2.
          APPEND r_matnr.
        ENDIF.
      ENDLOOP.
      SELECT matnr                          " MPM
             UP TO 1 ROWS
             INTO v_zzmprd
             FROM mara
             WHERE matnr IN r_matnr.
      ENDSELECT.
      IF sy-subrc NE 0.
        MESSAGE e000 WITH 'Invalid MPM'(e09).
      ENDIF.
    Validating Fiscal Period
      IF NOT s_monat[] IS INITIAL.
        SELECT poper                        " Fiscal Period
               UP TO 1 ROWS
               INTO v_monat
               FROM t009b
               WHERE periv = 'K4'
                 AND poper IN s_monat
                 AND bdatj IN s_gjahr.
        ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e000 WITH 'Invalid Fiscal Period'(e02).
        ENDIF.
      ENDIF.
    *For Company Code & Vendor
    AT SELECTION-SCREEN.
      MOVE sy-ucomm TO sscrfields-ucomm.
      IF sy-ucomm EQ 'ONLI'
      AND s_bukrs[] IS INITIAL
      AND s_lifnr[] IS INITIAL.
        MESSAGE i000 WITH
           'Either Company code or Vendor must be selected'(e03).
        STOP.
      ENDIF.
      IF ( NOT s_budat[] IS INITIAL OR NOT s_bldat IS INITIAL )
          AND NOT s_monat[] IS INITIAL.
        MESSAGE i000 WITH
    'Select either Period or Posting date,Document date'(e01).
        STOP.
      ENDIF.
                     START OF SELECTION                                  *
    START-OF-SELECTION.
    *-Retrieve Invoice Details from RBKP & RSEG
      PERFORM get_invoice.
      IF NOT i_invoice[] IS INITIAL.
    *-Retrieve Invoice Details from RBCO
        PERFORM get_rbco.
      ENDIF.
      IF NOT i_rbco[] IS INITIAL.
    *-Retrieve Material Document details from MARA & MARC
        PERFORM get_material.
      ENDIF.
      IF NOT i_invoice[] IS INITIAL.
    *-Retrieve costtype details from zsn0325_costtype & zsn0325_distmeth
        PERFORM get_costtype.
        PERFORM get_distmeth.
      ENDIF.
    *-Populate internal table  for output
      PERFORM populate_output.
                     END OF SELECTION                                    *
    END-OF-SELECTION.
    *-TO Display Output
      IF NOT i_invoice[] IS INITIAL
        AND  NOT i_output[]  IS INITIAL.
        PERFORM display_report.
        CALL SCREEN 100.
      ENDIF.
    *&      Form  get_Invoice
    Retrieve Invoice Details from RBKP & RSEG
    FORM get_invoice.
      DATA : lv_monat LIKE bkpf-monat.
    *-Get  Value form set zsn_doc_types_inv
      SELECT setname
             valsign
             valoption
             valfrom
             valto
             FROM setleaf
             INTO TABLE i_setleaf
             WHERE setclass = '0000'
             AND setname =  'ZSN_DOC_TYPES_INV'.
      IF sy-subrc = 0.
        LOOP AT i_setleaf INTO w_setleaf.
          r_setinv-sign = w_setleaf-valsign.
          r_setinv-option = w_setleaf-valoption.
          r_setinv-low = w_setleaf-valfrom.
          r_setinv-high = w_setleaf-valto.
          APPEND r_setinv.
        ENDLOOP.
      ENDIF.
    Get Invoice Doc details
      SELECT a~belnr                       " Document number of an invoice
             a~gjahr                       " Fiscal Year
             a~blart                       " Document type
             a~bldat                       " Document Date in Document
             a~budat                       " Posting Date in the Document
             a~xblnr                       " Reference Document Number
             a~bukrs                       " Company Code
             a~lifnr                       " Different invoicing party
             a~waers                       " Currency Key
             a~bktxt                       " Document header text
             a~zlspr                       " Payment Block Key
             b~buzei                       " Document item in invoice
             b~ebeln                       " Purchasing Document Number
             b~ebelp                       " Item Number of PO Document
             b~matnr                       " Material Number
             b~bwtar                       " Valuation type
             b~wrbtr                       " Amount in document currency
             b~menge                       " Quantity
             INTO TABLE i_invoice
             FROM rbkp AS a
             LEFT OUTER JOIN rseg AS b
             ON abelnr EQ bbelnr
             WHERE a~bukrs IN s_bukrs
             AND a~gjahr IN s_gjahr
             AND a~bldat IN s_bldat
             AND a~blart IN r_setinv
             AND a~budat IN s_budat
             AND a~xblnr IN s_xblnr
             AND a~lifnr IN s_lifnr.
      IF sy-subrc NE 0.
        MESSAGE i000 WITH 'No Invoice exists for this selection'(e07)
                       'criteria'(e08).
        STOP.
      ELSE.
        SORT i_invoice BY belnr gjahr.
        LOOP AT i_invoice INTO w_invoice.
          CALL FUNCTION 'FI_PERIOD_DETERMINE'
            EXPORTING
              i_budat             = w_invoice-budat
             i_bukrs              = w_invoice-bukrs
             i_periv              = 'K4'
             i_gjahr              = w_invoice-gjahr
          I_MONAT              = 00
          X_XMO16              = ' '
           IMPORTING
          E_GJAHR              =
             e_monat              = lv_monat
          E_POPER              =
           EXCEPTIONS
             fiscal_year          = 1
             period               = 2
             period_version       = 3
             posting_period       = 4
             special_period       = 5
             version              = 6
             posting_date         = 7
             OTHERS               = 8.
          IF sy-subrc <> 0.
            DELETE i_invoice.
          ELSE.
            IF lv_monat IN s_monat.
            ELSE.
              DELETE i_invoice.
            ENDIF.
          ENDIF.
        ENDLOOP.
        IF i_invoice[] IS INITIAL.
          MESSAGE i000 WITH 'No Invoice exists for this selection'(e07)
                         'criteria'(e08).
          STOP.
        ENDIF.
      ENDIF.
    ENDFORM.                    " get_Invoice
    *&      Form  get_rbco
    Retrieve Invoice Details from RBCO
    FORM get_rbco.
      SELECT belnr
             gjahr
             buzei
             cobl_nr
             wrbtr
             saknr
             sgtxt
             zzcou
             zzmprd
             menge
             bukrs
             xnegp
             FROM rbco
             INTO TABLE i_rbco
             FOR ALL ENTRIES IN i_invoice
             WHERE belnr = i_invoice-belnr
               AND gjahr = i_invoice-gjahr
               AND wrbtr <> 0
               AND zzmprd IN s_zzmprd.
      IF sy-subrc NE 0.
        MESSAGE i000 WITH 'No Distribution Data Exists'(e10).
        STOP.
      ELSE.
        SORT i_rbco BY belnr gjahr.
      ENDIF.
    ENDFORM.                    " get_rbco
    *&      Form  get_material
    Retrieve Material Document details from MARA & MARC
    FORM get_material.
      LOOP AT i_rbco INTO w_rbco.
        SELECT SINGLE sop_cnt
                      INTO w_rbco_tmp-land1
                      FROM zsop_fame
                      WHERE fame_cnt = w_rbco-zzcou.
        IF sy-subrc = 0.
          w_rbco_tmp-bukrs = w_rbco-bukrs.
          w_rbco_tmp-ewlnr = w_rbco-sgtxt+7(2).
          w_rbco_tmp-distmeth = w_rbco-sgtxt+0(3).
        ENDIF.
        w_rbco-land1 = w_rbco_tmp-land1.
        APPEND w_rbco_tmp TO i_rbco_tmp.
        CLEAR w_rbco_tmp.
        CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
             EXPORTING
                  input        = w_rbco-zzmprd
             IMPORTING
                  output       = w_rbco-matnr
             EXCEPTIONS
                  length_error = 1
                  OTHERS       = 2.
        MODIFY i_rbco FROM w_rbco.
        CLEAR w_rbco.
      ENDLOOP.
      SELECT     a~matnr                             " Material Number
                 a~normt                             " Article Number
                 a~ismconttype                       " Window
                 a~ismdesign                         " No of discs in MPM
                 b~werks                             " Plant
                 b~mfrgr                             " Product Line
                 INTO TABLE i_material
                 FROM mara AS a
                 INNER JOIN
                 marc AS b
                 ON amatnr = bmatnr
                 FOR ALL ENTRIES IN i_rbco
                 WHERE a~matnr = i_rbco-matnr.
      IF sy-subrc = 0.
        SORT i_material BY matnr.
      ENDIF.
    ENDFORM.                    " get_material
    *&      Form  get_costtype
    Retrieve costtype details from zsn0325_costtype
    FORM get_costtype.
      SELECT bukrs                                " Company code
             land1                                " Country key
             window                               " Window
             ewlnr                                " Cost type
             distmeth                             " Distribution type
             zvalfrom                             " Invoice date
             zvalto                               " Invoice date
             disc1pr                              " Disc Price
             disc2pr                              " Additional DiscPrice
              FROM zsn0325_costtype
             INTO TABLE i_costtype
             FOR ALL ENTRIES IN i_rbco_tmp
             WHERE bukrs = i_rbco_tmp-bukrs
               AND ewlnr = i_rbco_tmp-ewlnr
               AND distmeth = i_rbco_tmp-distmeth
               AND land1 = i_rbco_tmp-land1.
      IF sy-subrc = 0.
        SORT i_costtype BY bukrs land1 window ewlnr distmeth.
      ENDIF.
    ENDFORM.                    " get_costtype
    *&      Form  get_distmeth
    Retrieve costtype details from zsn0325_distmeth
    FORM get_distmeth.
      SELECT distmeth
             distext
             FROM zsn0325_distmeth
             INTO TABLE i_distmeth
             FOR ALL ENTRIES IN i_costtype
             WHERE distmeth = i_costtype-distmeth.
      IF sy-subrc = 0.
        SORT i_distmeth BY distmeth.
      ENDIF.
    ENDFORM.                    " get_distmeth
    *&      Form  display_report
    TO Display Output
    FORM display_report.
      IF NOT i_output[] IS INITIAL.
        SORT i_output BY xblnr.
        PERFORM build_fieldcat.
      ENDIF.
    ENDFORM.                    " display_report
    *&      Form  build_fieldcat
    Build Field Catalog
    FORM build_fieldcat.
      PERFORM fill_fieldcat USING 'BUKRS'         'I_OUTPUT'
                                                  'Company Code'(001) 12.
      PERFORM fill_fieldcat USING 'LIFNR'         'I_OUTPUT'
                                                  'Vendor'(002) 6.
      PERFORM fill_fieldcat USING 'ZLSPR'         'I_OUTPUT'
                                                  'Payment Block'(003) 13.
      PERFORM fill_fieldcat USING 'XBLNR'         'I_OUTPUT'
                                               'Vendor Invoice No'(004) 17.
      PERFORM fill_fieldcat USING 'BLDAT'         'I_OUTPUT'
                                                  'Invoice Date'(005) 12.
      PERFORM fill_fieldcat USING 'BUDAT'         'I_OUTPUT'
                                                  'Posting Date'(006) 12.
      PERFORM fill_fieldcat USING 'BKTXT'         'I_OUTPUT'
                                                  'Invoice Type'(007) 12.
      PERFORM fill_fieldcat USING 'BELNR'         'I_OUTPUT'
                                                  'R/3 Invoice No'(008) 14.
      PERFORM fill_fieldcat USING 'COBL_NR'       'I_OUTPUT'
                                                  'Line Item'(009) 9.
      PERFORM fill_fieldcat USING 'NORMT'         'I_OUTPUT'
                                                  'Article No'(010) 10.
      PERFORM fill_fieldcat USING 'ZZMPRD'        'I_OUTPUT'
                                                  'MPM Product'(034) 11.
      PERFORM fill_fieldcat USING 'ISMCONTTYPE'   'I_OUTPUT'
                                                  'Window'(011) 6.
      PERFORM fill_fieldcat USING 'NDISC'         'I_OUTPUT'
                                           'No of Discs on invoice'(012) 22.
      PERFORM fill_fieldcat USING 'ISMDESIGN'     'I_OUTPUT'
                                               'No of discs on MPM'(013) 10.
      PERFORM fill_fieldcat USING 'DISTMETH'      'I_OUTPUT'
                                               'Distribution type'(014) 17.
      PERFORM fill_fieldcat USING 'DISTEXT'       'I_OUTPUT'
                                                  'Description'(015) 11.
      PERFORM fill_fieldcat USING 'DDEAL'         'I_OUTPUT'
                                               'Distribution Deal'(016) 17.
      PERFORM fill_fieldcat USING 'MFRGR'         'I_OUTPUT'
                                               'MPM Product Line'(017) 16.
      PERFORM fill_fieldcat USING 'ZZCOU'         'I_OUTPUT'
                                                  'Country'(018) 7.
      PERFORM fill_fieldcat USING 'XNEGP'         'I_OUTPUT'
                                                  'Qty Var flag'(019) 12.
      PERFORM fill_fieldcat USING 'INVFQTY'       'I_OUTPUT'
                                                  'Inv fee Qty'(020) 11.
      PERFORM fill_fieldcat USING 'RIFVAL'        'I_OUTPUT'
                                                  'Inv fee Value'(021) 13.
      PERFORM fill_fieldcat USING 'STDRIF'        'I_OUTPUT'
                                                  'Std Inv fee'(022) 11.
      PERFORM fill_fieldcat USING 'RFVAR'         'I_OUTPUT'
                                                  'Inv fee Var'(023) 11.
      PERFORM fill_fieldcat USING 'DISCQTY'       'I_OUTPUT'
                                                  'Dis cost Qty'(024) 11.
      PERFORM fill_fieldcat USING 'DICVAL'        'I_OUTPUT'
                                                  'Dist Cost Value'(025) 15.
      PERFORM fill_fieldcat USING 'STDDICO'       'I_OUTPUT'
                                                  'Std Dist Cost'(026) 11.
      PERFORM fill_fieldcat USING 'DICVAR'        'I_OUTPUT'
                                                  'Dist Cost Var'(027) 13.
      PERFORM fill_fieldcat USING 'DISRQTY'       'I_OUTPUT'
                                                  'Dis Ret Qty'(028) 11.
      PERFORM fill_fieldcat USING 'DISREV'        'I_OUTPUT'
                                                  'Dis Ret Value'(029) 11.
      PERFORM fill_fieldcat USING 'STDIRCO'       'I_OUTPUT'
                                               'Std Dis Ret cost'(030) 11.
      PERFORM fill_fieldcat USING 'DREVAR'        'I_OUTPUT'
                                                  'Dis Ret Var'(031) 11.
      PERFORM fill_fieldcat USING 'ADJ_QTY_CT'    'I_OUTPUT'
                                               'Adjustments Qty'(035) 15.
      PERFORM fill_fieldcat USING 'ADJ_PR_CT'     'I_OUTPUT'
                                               'Adjustments Value'(036) 17.
      PERFORM fill_fieldcat USING 'SSEQTY'        'I_OUTPUT'
                                               'Special Ser Qty'(032) 15.
      PERFORM fill_fieldcat USING 'SSVAL'         'I_OUTPUT'
                                               'Special Ser Value'(033) 17.
    ENDFORM.                    " build_fieldcat
    *&      Form  fill_fieldcat
         Fill fieldcatalog for ALV                                       *
    FORM fill_fieldcat USING    value(p_fieldname)
                                value(p_tabname)
                                value(p_seltext_m)
                                value(p_outputlen).
      w_fieldcatalog-fieldname = p_fieldname.
      w_fieldcatalog-ref_table = p_tabname.
      w_fieldcatalog-coltext = p_seltext_m.
      w_fieldcatalog-outputlen = p_outputlen.
      APPEND w_fieldcatalog TO i_fieldcatalog.
      CLEAR w_fieldcatalog.
    ENDFORM.                    " fill_fieldcat
    *&      Module  STATUS_0100  OUTPUT
    Process Before output
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'SCREEN1'.
      SET TITLEBAR 'TITLE'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  alV_display  OUTPUT
    ALv Display in PBO                                             *
    MODULE alv_display OUTPUT.
      IF w_ccontainer IS INITIAL.
        PERFORM create_objects.
    Excluding unnecessary function codes from the grid
        PERFORM exclude_fcodes.
        PERFORM display_alv_grid.
      ENDIF.
    ENDMODULE.                 " alV_display  OUTPUT
    *&      Form  create_objects
    Create ALV Objects
    FORM create_objects.
      IF w_alvgrid IS INITIAL .
    *----Creating custom container instance
        CREATE OBJECT w_ccontainer
          EXPORTING
            container_name = 'CONTAINER'
          EXCEPTIONS
            cntl_error = 1
          cntl_system_error = 2
          create_error = 3
          lifetime_error = 4
          lifetime_dynpro_dynpro_link = 5
          others = 6 .
        IF sy-subrc <> 0.
    *--Exception handling
        ENDIF.
    *----Creating ALV Grid instance
        CREATE OBJECT w_alvgrid
           EXPORTING
               i_parent = w_ccontainer
           EXCEPTIONS
              error_cntl_create = 1
              error_cntl_init = 2
              error_cntl_link = 3
              error_dp_create = 4
              others = 5 .
        IF sy-subrc <> 0.
    *--Exception handling
        ENDIF.
    *--Create Event Receiver
        CREATE OBJECT event_receiver.
        SET HANDLER event_receiver->handle_top_of_page FOR w_alvgrid.
      ENDIF.
    ENDFORM.                    " create_objects
    *&      Form  display_alv_grid
    Display ALV Grid
    FORM display_alv_grid.
      w_layout-grid_title  = 'Distribution Report'(042).
      IF NOT w_alvgrid IS INITIAL .
        MOVE 'COLOR_CELL' TO w_layout-ctab_fname.
        CALL METHOD w_alvgrid->set_table_for_first_display
               EXPORTING
                 is_layout = w_layout
                 it_toolbar_excluding  = i_toolbar_excluding[]
                I_DEFAULT = 'X'
               CHANGING
                 it_outtab = i_output_tmp[]
                 it_fieldcatalog = i_fieldcatalog[]
               EXCEPTIONS
                  invalid_parameter_combination = 1
                  program_error = 2
                  too_many_lines = 3
                  OTHERS = 4 .
        IF sy-subrc <> 0.
    *--Exception handling
        ENDIF.
      ELSE .
        CALL METHOD w_alvgrid->refresh_table_display
        EXCEPTIONS
        finished = 1
        OTHERS = 2 .
        IF sy-subrc <> 0.
        ENDIF.
      ENDIF .
    *--handler for ALV grid
      SET HANDLER event_receiver->handle_double_click FOR w_alvgrid.
    ENDFORM.                    " display_alv_grid
    *&      Module  USER_COMMAND_0100  INPUT
    At User Command
    MODULE user_command_0100 INPUT.
      MOVE sy-ucomm TO w_okcode.
      CASE w_okcode.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  populate_output
    Populate internal table  for output
    FORM populate_output.
      DATA: lv_invval  TYPE rbco-wrbtr.
      LOOP AT i_rbco INTO w_rbco.
    *-Check whether ndisc is numeric value.
        IF w_rbco-sgtxt+4(2) CO '0123456789'.
          MOVE: w_rbco-sgtxt+4(2) TO w_output-ndisc.
        ENDIF.
        MOVE:w_rbco-cobl_nr TO w_output-cobl_nr,
             w_rbco-zzcou TO w_output-zzcou,
             w_rbco-zzmprd TO w_output-zzmprd,
             w_rbco-xnegp TO w_output-xnegp.
    For Invoice
        READ TABLE i_invoice INTO w_invoice WITH KEY belnr = w_rbco-belnr
                                                     gjahr = w_rbco-gjahr
                                                     BINARY SEARCH.
        IF sy-subrc = 0.
          MOVE: w_invoice-bukrs       TO   w_output-bukrs,
                w_invoice-lifnr       TO   w_output-lifnr,
                w_invoice-zlspr       TO   w_output-zlspr,

  • To make different colours for the columns of ALV report in Grid display.

    Hai Friends,
                       I have created an ALV report in grid display method by using the call function reuse_alv_grid_display.
    I have obtained the report.In that report i want to change the colour of each column.Plz provide the answer with a sample program.
                    Thank u.

    hi i had a program  for the rows with diff colors....do the same thing for the columns..
    REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
      line_color(4) type c,     "Used to store row color attributes
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    Set layout field for row attributes(i.e. color)
      gd_layout-info_fieldname =      'LINE_COLOR'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           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  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    data: ld_color(1) type c.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    *Populate field with color attributes
    loop at it_ekko into wa_ekko.
      ld_color = ld_color + 1.
    Only 7 colours so need to reset color value
      if ld_color = 8.
        ld_color = 1.
      endif.
      concatenate 'C' ld_color '10' into wa_ekko-line_color.
    wa_ekko-line_color = 'C410'.
      modify it_ekko from wa_ekko.
    endloop.
    endform.                    " DATA_RETRIEVAL
    regards,
    venkat

  • Can I use classes and methods for a maintenance view events?

    Hello experts,
    Instead of perform/form, can I instead use classes and methods, etc for a given maintenance view event, lets say for example I want to use event '01' which is before saving records in the database. Help would be greatly appreciated. Thanks a lot guys!

    Hi viraylab,
    1. The architecture provided by maintenance view
       for using EVENTS and our own code inside it -
       It is provided using FORM/PERFORM
       concept only.
    2. At this stage,we cannot use classes.
    3. However, inside the FORM routine,
       we can write what ever we want.
       We can aswell use any abap code, including
       classes and methods.
      (But this classes and methods won't have any
       effect on the EVENT provided by maintenance view)
    regards,
    amit m.

  • To change the colour of the particular cell of ALV report in Grid display.

    Hai Friends,
                      I have created an Alv report in grid display .In that i want to change the colour of the particular cell.Plz provide the answer with a solved example.
             Thank u.

    This works for a Custom Control and OO ALV in a Dialog Module
    TABLES: kna1.
    * Data (for the ALV Grid)
    TYPES:
      BEGIN OF t_alv_data,
        cust_id    TYPE kunnr,        "Customer Number
        cust_name  TYPE name1_gp,     "Customer Name
        cust_color TYPE i,
    *   cell coloring field
        color     TYPE lvc_t_scol,   "Cell coloring
      END OF t_alv_data.
    DATA:
      v_alv_data TYPE t_alv_data,
      i_alv_data TYPE STANDARD TABLE OF t_alv_data.
    * ALV grid containers and objects
    DATA:
      o_alv_grid TYPE REF TO cl_gui_alv_grid,
      o_alv_cont TYPE REF TO cl_gui_custom_container.
    * ALV field catalog
    DATA:
      i_alv_fc TYPE lvc_t_fcat,
      v_alv_fc LIKE lvc_s_fcat.
    * ALV Layout (colors)
    DATA:
      v_alv_layout TYPE lvc_s_layo,
      i_alv_color TYPE lvc_t_scol,
      v_alv_color TYPE lvc_s_scol,
      v_alv_color_cell TYPE lvc_s_colo.
    * ALV variant
    DATA:
      v_alv_variant  TYPE disvariant.
    PARAMETERS:
      p_alvvar TYPE disvariant-variant DEFAULT 'DEFAULT'.
    DATA: ok_code LIKE sy-ucomm.
    * Class for event handling
    *       CLASS lcl_event_receiver DEFINITION
    * [+] Event listener for the ALV grid
    * [+] Handles hotspots and data changes
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
    *     Hotspot clicking
          hotspot_click
               FOR EVENT hotspot_click OF cl_gui_alv_grid
                 IMPORTING e_row_id
                           e_column_id
                           es_row_no,
    *     Data changed (such as checkbox clicking)
          handle_data_changed
            FOR EVENT data_changed OF cl_gui_alv_grid
                IMPORTING er_data_changed.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    *       CLASS lcl_event_receiver IMPLEMENTATION
    * [+] Implementation of the ALV Grid event handler class
    CLASS lcl_event_receiver IMPLEMENTATION.
    *       METHOD hotspot_click                                          *
    * [+] Calls evvent_hotspot_click when a hotspot is clicked in the ALV
      METHOD hotspot_click.
        PERFORM event_hotspot_click
                      USING e_row_id
                            e_column_id.
      ENDMETHOD.                    "hotspot_click
    *       METHOD handle_data_changed                                    *
    * [+] Updates the source data when the data in the ALV display has
    * been changed, such as by clicking a checkbox.
      METHOD handle_data_changed.
        DATA: lv_changed TYPE lvc_s_modi.
        LOOP AT er_data_changed->mt_good_cells INTO lv_changed
          WHERE fieldname = 'CUST_NAME'.
          READ TABLE i_alv_data INTO v_alv_data INDEX lv_changed-row_id.
          IF sy-subrc = 0.
            MOVE lv_changed-value TO v_alv_data-cust_name.
            MODIFY i_alv_data FROM v_alv_data INDEX lv_changed-row_id.
          ENDIF.
        ENDLOOP.
      ENDMETHOD.                    "handle_data_changed
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    * Reference to the event listener class
    DATA: event_receiver TYPE REF TO lcl_event_receiver.
    *       FORM build_event_listener
    * [+] Set the event handler on the ALV Grid
    FORM build_event_listener.
    * Assigning the event listener to the ALV
      CREATE OBJECT event_receiver.
      SET HANDLER event_receiver->handle_data_changed FOR o_alv_grid.
      SET HANDLER event_receiver->hotspot_click       FOR o_alv_grid.
    ENDFORM.                    "build_event_listener
    *       AT SELECTION-SCREEN
    *         ON VALUE-REQUEST FOR p_alvvar
    * [+] Calls choose_alv_variant to ask the user to select an alv grid
    *     layout variant
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvvar.
      PERFORM choose_alv_variant
        CHANGING
          p_alvvar
          v_alv_variant.
    *       START_OF_SELECTION
    START-OF-SELECTION.
      PERFORM get_data.
      SET PF-STATUS 'ALVSCREEN' IMMEDIATELY.
      CALL SCREEN 2000.
    *       FORM get_data
    * [+] Gets the data for the ALV grid
    FORM get_data.
      SELECT kunnr name1
        INTO (v_alv_data-cust_id,
              v_alv_data-cust_name)
        FROM kna1.
        APPEND v_alv_data TO i_alv_data.
      ENDSELECT.
    ENDFORM.                    "get_data
    *       MODULE build_alv_grid
    *   THIS SHOULD BE IN THE "PROCESS BEFORE OUTPUT" OF THE ALV SCREEN
    * [+] Builds the ALV Grid objects
    * [+] Calls to build the field catalog table
    * [+] Loads the field catalog table into the ALV Grid
    * [+] Loads the table data into the ALV Grid
    MODULE build_alv_grid OUTPUT.
      SET TITLEBAR  '2000'.
    * Also enables layout saving
      PERFORM set_alv_variant
        USING
          p_alvvar
        CHANGING
          v_alv_variant.
    * Building the grid and container on the screen
    * NOTE: the container name MUST be upper-case
    * Also, we don't want the objects to be created if in batch mode!
      IF sy-batch IS INITIAL.
        CREATE OBJECT o_alv_cont
          EXPORTING
            container_name = 'O_ALV_TABLE'.
      ENDIF.
      CREATE OBJECT o_alv_grid
        EXPORTING
          i_parent = o_alv_cont.
    * builds the event listener
      PERFORM build_event_listener.
    * Color the cells
      PERFORM color_cells.
    * Build the field catalog
      PERFORM build_alv_fc.
    * Loads the data into the grid
      CALL METHOD o_alv_grid->set_table_for_first_display
        EXPORTING
          i_save          = 'A'
          i_default       = 'X'
          is_variant      = v_alv_variant
          is_layout       = v_alv_layout
        CHANGING
          it_outtab       = i_alv_data
          it_fieldcatalog = i_alv_fc.
    ENDMODULE.                    "build_alv_grid OUTPUT
    *       FORM build_alv_fc
    * [+] Constructs the ALV Grid field catalog table
    FORM build_alv_fc.
      CLEAR i_alv_fc.
      REFRESH i_alv_fc.
    * NOTE: the field name MUST be upper-case
    *                   field       heading         hide  hot
    *                   name                        zero  spot  just
      PERFORM:
        alv_field USING 'CUST_ID'    'Cust ID'        ' '  'X'  'R',
        alv_field USING 'CUST_NAME'  'Customer Name'  ' '  ' '  'L',
        alv_field USING 'CUST_COLOR' 'Color'          ' '  ' '  'R'.
    ENDFORM.                    "build_alv_fc
    *       FORM alv_field
    * [+] Describes and constructs a single field for the ALV Grid field
    *     catalog. The field length and type are both obtained from the
    *     actual field passed in to this method.
    * [+] Adds the constructed field to the ALV Grid field catalog table
    FORM alv_field
      USING
        p_field_name TYPE c
        p_heading    TYPE c
        p_hide_zeros TYPE c
        p_hotspot    TYPE c
        p_justify    TYPE c.
      CLEAR v_alv_fc.
      DATA:
        lv_type(1) TYPE c,
        lv_length TYPE i,
        lv_heading_length TYPE i.
    * get the type and length of this field
      FIELD-SYMBOLS <field>.
      ASSIGN p_field_name TO <field>.
      DESCRIBE FIELD <field> TYPE lv_type OUTPUT-LENGTH lv_length.
    * re-adjust the length to the length of the header, if too short
      lv_heading_length = strlen( p_heading ).
      IF lv_length < lv_heading_length.
        lv_length = lv_heading_length.
      ENDIF.
    * NOTE: the field name MUST be upper-case
      v_alv_fc-fieldname = p_field_name.
      TRANSLATE v_alv_fc-fieldname TO UPPER CASE.
      v_alv_fc-inttype   = lv_type.
      v_alv_fc-outputlen = lv_length.
      v_alv_fc-coltext   = p_heading.
      v_alv_fc-seltext   = p_heading.
      v_alv_fc-hotspot   = p_hotspot.
    * Determining which fields should show zeros
      IF p_hide_zeros = 'X'.
        v_alv_fc-no_zero = 'X'.
        v_alv_fc-lzero   = ' '.
      ELSE.
        v_alv_fc-no_zero = ' '.
        v_alv_fc-lzero   = 'X'.
      ENDIF.
      v_alv_fc-just = p_justify.
    * Add the field to the field catalog
      APPEND v_alv_fc TO i_alv_fc.
    ENDFORM.                    "alv_field
    *       FORM choose_alv_variant
    * [+] Shows a popup that allows the user to choose the layout variant
    *     for the alv grid of the current program
    * [+] Usually called by an AT SELECTION-SCREEN method.
    FORM choose_alv_variant
      CHANGING
        p_variant_name TYPE disvariant-variant
        p_variant      TYPE disvariant.
      CLEAR p_variant.
      DATA:
        p_exit_check(1) TYPE c.
      MOVE sy-repid TO p_variant-report.
      CALL FUNCTION 'LVC_VARIANT_F4'
           EXPORTING
                is_variant = p_variant
                i_save     = 'A'
           IMPORTING
                e_exit     = p_exit_check
                es_variant = p_variant
           EXCEPTIONS
                not_found  = 1
                OTHERS     = 99.
      IF sy-subrc = 0.
        IF p_exit_check <> 'X'.
          p_variant_name = p_variant-variant.
        ENDIF.
      ENDIF.
    ENDFORM.                    "choose_alv_variant
    *       FORM set_alv_variant
    * [+] Sets the alv grid layout variant. Used for setting the variant
    *     when its name is entered in a parameter rather than by using the
    *     popup, or when loading the variant from a variable of type C
    FORM set_alv_variant
      USING
        p_variant_name TYPE disvariant-variant
      CHANGING
        p_variant      TYPE disvariant.
      MOVE sy-repid TO p_variant-report.
      p_variant-variant = p_variant_name.
    ENDFORM.                    "set_alv_variant
    *       FORM color_cells
    * [+] Loop through the data and apply coloring
    FORM color_cells.
      DATA:
        my_color  TYPE i.
    * tell the ALV grid what field in v_alv_data contains color information
      v_alv_layout-ctab_fname = 'COLOR'.
      my_color = 0.
    * loop through each row of the table
      LOOP AT i_alv_data INTO v_alv_data.
    *   clear the variables
        CLEAR:
          v_alv_color,
          v_alv_color_cell,
          i_alv_color.
        REFRESH:
          i_alv_color.
        v_alv_data-cust_color = my_color.
        PERFORM color_cell USING 'CUST_COLOR' my_color. "negative
    *   apply the colors
    *    IF v_alv_data-cust_name = 'Testing Credit'.
    *      PERFORM color_cell USING 'CUST_NAME' 6. "negative
    *    ELSEIF v_alv_data-cust_name = 'Goober Goober Also'.
    *      PERFORM color_cell USING 'CUST_NAME' 5. "positive
    *    ENDIF.
    *   set the color data for this table row
        v_alv_data-color = i_alv_color.
        MODIFY i_alv_data FROM v_alv_data.
        my_color = my_color + 1.
        IF my_color GT 7.
          CLEAR my_color.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "color_cells
    *       FORM color_cell
    * [+] Colors a cell in the ALV grid
    FORM color_cell
      USING
        p_cellname TYPE c
        p_color    TYPE i.
      CLEAR:
        v_alv_color_cell,
        v_alv_color.
    * set the color for the cell
    *  IF p_color = 0.
    *    v_alv_color_cell-col = 0. "cl_gui_resources=>list_col_background.
    *  ELSEIF p_color = 1.
    *    v_alv_color_cell-col = 1. "cl_gui_resources=>list_col_heading.
    *  ELSEIF p_color = 2.
    *    v_alv_color_cell-col = 2. "cl_gui_resources=>list_col_normal.
    *  ELSEIF p_color = 3.
    *    v_alv_color_cell-col = 3. "cl_gui_resources=>list_col_total.
    *  ELSEIF p_color = 4.
    *    v_alv_color_cell-col = 4. "cl_gui_resources=>list_col_key.
    *  ELSEIF p_color = 5.
    *    v_alv_color_cell-col = 5. "cl_gui_resources=>list_col_positive.
    *  ELSEIF p_color = 6.
    *    v_alv_color_cell-col = 6. "cl_gui_resources=>list_col_negative.
    *  ELSEIF p_color = 7.
    *    v_alv_color_cell-col = 7. "cl_gui_resources=>list_col_group.
    *  ENDIF.
      v_alv_color_cell-col = p_color.
      v_alv_color-nokeycol = 'X'.
      v_alv_color-fname = p_cellname.
    *  v_alv_color-color = p_color.
      v_alv_color-color = v_alv_color_cell.
      APPEND v_alv_color TO i_alv_color.
    ENDFORM.                    "color_cell
    *       FORM event_hotspot_click
    * [+] What to do when clicking on a hotspot in the ALV Grid
    FORM event_hotspot_click
      USING
        p_row    TYPE lvc_s_row
        p_column TYPE lvc_s_col.
      DATA:
        lv_docnum TYPE kunnr.
      READ TABLE i_alv_data INTO v_alv_data INDEX p_row-index.
      IF p_column = 'CUST_ID'.
    *   call a transaction when the cust_id is clicked
        SET PARAMETER ID 'AUN' FIELD v_alv_data-cust_id.
        CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
      ENDIF.
    ENDFORM.                    "event_hotspot_click
    *&      Module  USER_COMMAND_2000  INPUT
    *       text
    MODULE user_command_2000 INPUT.
      CASE ok_code.
        WHEN 'BACK'
          OR 'STOP'
          OR 'CANCEL'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_2000  INPUT

  • ALV report for individual fields (urgent...........)

    Hi all,
    using this ZUS_SDN_THREE_ALV_GRIDS program structure i have generated the all the fields from table.
    could you please guide me how to generate the ALV report for splecific fileds from  individual tables.
    if i click in click on grid1 (that is sales header details) we need populate the item details in grid2 and paralally customer details in grid3.
    please guide me how to resolve the issuee..
    thanks in advance
    Srinivas...

    Hi,
    I have done an example, like on 1st grid it displays header data (EKKO) and when you double click on any record, for that PO you will get item details (EKPO) on 2nd grid,
    In the similar way, you can add one more grid and populate it with your own data simultaneously along with 2nd grid.
    *& Report  ZOOABAP1_SOW
    report  zabap2.
    *                     TABLES
    tables:ekko.
    *                     DATA DECLARATIONS
    data: grid1 type ref to cl_gui_alv_grid,
          grid2 type ref to cl_gui_alv_grid,
          container1 type ref to cl_gui_custom_container,
          container2 type ref to cl_gui_custom_container,
          flag.
    *                     INTERNAL TABLES
    data: it_ekko type table of ekko.
    data: wa_ekko like line of it_ekko.
    data: it_ekpo type table of ekpo.
    data: it_fcat1 type lvc_t_fcat,
          wa_fcat1 type lvc_s_fcat,
          it_fcat2 type lvc_t_fcat,
          wa_fcat2 type lvc_s_fcat,
          wa_layout1 type lvc_s_layo,
          wa_layout2 type lvc_s_layo,
          wa_variant type disvariant.
    *                     SELECTION-SCREEN
    selection-screen begin of block b with frame title text-s01.
    select-options: s_ebeln for ekko-ebeln.
    selection-screen end of block b.
    *       CLASS lcl1 DEFINITION
    class lcl1 definition.
      public section.
        methods:
          handler_dbl_clk for event double_click
                                      of cl_gui_alv_grid
                                         importing e_row.
    endclass.                    "lcl1 DEFINITION
    *       CLASS lcl1 IMPLEMENTATION
    class lcl1 implementation.
      method handler_dbl_clk.
        read table it_ekko into wa_ekko index e_row-index.
        if sy-subrc = 0.
          perform get_ekpo.
        endif.
      endmethod.                    "handler_dbl_clk
    endclass.                    "lcl1 IMPLEMENTATION
    *                     START_OF_SELECTION
    start-of-selection.
    * Get PO header data
      perform get_ekko.
    * screen for container
      call screen 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    module status_0100 output.
      set pf-status 'PFS'.
      set titlebar 'TIT'.
      data: obj type ref to lcl1.
      if flag is initial.
        create object container1
          exporting
            container_name = 'CONT1'.
        create object container2
          exporting
            container_name = 'CONT2'.
        create object grid1
          exporting
            i_parent = container1.
        create object grid2
          exporting
            i_parent = container2.
        create object obj.
        set handler obj->handler_dbl_clk for grid1.
        perform build_fcat.
        perform build_layout.
        call method grid1->set_table_for_first_display
           exporting
    *        i_buffer_active               =
    *        i_bypassing_buffer            =
    *        i_consistency_check           =
    *          i_structure_name              = 'EKKO'
    *        is_variant                    = wa_variant
            i_save                        = 'X'
    *        i_default                     = 'X'
            is_layout                     = wa_layout1
    *        is_print                      =
    *        it_special_groups             =
    *        it_toolbar_excluding          =
    *        it_hyperlink                  =
    *        it_alv_graphics               =
    *        it_except_qinfo               =
    *        ir_salv_adapter               =
              changing
                it_outtab                     = it_ekko
                it_fieldcatalog               = it_fcat1
    *        it_sort                       =
    *        it_filter                     =
    *      EXCEPTIONS
    *        invalid_parameter_combination = 1
    *        program_error                 = 2
    *        too_many_lines                = 3
    *        others                        = 4
        if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        endif.
        flag = 'X'.
      endif.
    endmodule.                 " STATUS_0100  OUTPUT
    *&      Form  get_ekko
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form get_ekko .
      select ebeln bsart lifnr
             from ekko
             into corresponding fields of table it_ekko
             where ebeln in s_ebeln.
    endform.                    " get_ekko
    *&      Form  GET_EKPO
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form get_ekpo .
      select ebeln ebelp menge meins peinh from ekpo
       into corresponding fields of table it_ekpo
       where ebeln = wa_ekko-ebeln.
      if not it_ekpo[] is initial.
        call method grid2->set_table_for_first_display
      exporting
    *    i_buffer_active               =
    *    i_bypassing_buffer            =
    *    i_consistency_check           =
    *    i_structure_name              =
    *    is_variant                    =
    *    i_save                        =
    *    i_default                     = 'X'
        is_layout                     = wa_layout2
    *    is_print                      =
    *    it_special_groups             =
    *    it_toolbar_excluding          =
    *    it_hyperlink                  =
    *    it_alv_graphics               =
    *    it_except_qinfo               =
    *    ir_salv_adapter               =
          changing
            it_outtab                     = it_ekpo
            it_fieldcatalog               = it_fcat2
    *    it_sort                       =
    *    it_filter                     =
    *  EXCEPTIONS
    *    invalid_parameter_combination = 1
    *    program_error                 = 2
    *    too_many_lines                = 3
    *    others                        = 4
        if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        endif.
      endif.
    endform.                    " GET_EKPO
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    module user_command_0100 input.
      case sy-ucomm.
        when 'BACK' or 'EXIT' or 'CANC'.
          call method container1->free.
          call method container2->free.
          leave to screen 0.
      endcase.
    endmodule.                 " USER_COMMAND_0100  INPUT
    *&      Form  build_fcat
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form build_fcat .
    * fieldcatalog for EKKO table
      wa_fcat1-col_pos = '1'.
      wa_fcat1-fieldname = 'EBELN'.
      wa_fcat1-tabname = 'EKKO'.
      wa_fcat1-coltext = 'PO No.'.
      append wa_fcat1 to it_fcat1.
      clear wa_fcat1.
      wa_fcat1-col_pos = '2'.
      wa_fcat1-fieldname = 'BSART'.
      wa_fcat1-tabname = 'EKKO'.
      wa_fcat1-coltext = 'PO Type'.
      append wa_fcat1 to it_fcat1.
      clear wa_fcat1.
      wa_fcat1-col_pos = '3'.
      wa_fcat1-fieldname = 'LIFNR'.
      wa_fcat1-tabname = 'EKKO'.
      wa_fcat1-coltext = 'Vendor No.'.
      append wa_fcat1 to it_fcat1.
      clear wa_fcat1.
    * fieldcatalog for EKPO table
      wa_fcat2-col_pos = '1'.
      wa_fcat2-fieldname = 'EBELN'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'PO No.'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '2'.
      wa_fcat2-fieldname = 'EBELP'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'PO Item'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '3'.
      wa_fcat2-fieldname = 'MENGE'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'Quantity'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '4'.
      wa_fcat2-fieldname = 'MEINS'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'UOM'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
      wa_fcat2-col_pos = '5'.
      wa_fcat2-fieldname = 'PEINH'.
      wa_fcat2-tabname = 'EKPO'.
      wa_fcat2-coltext = 'Price Unit'.
      append wa_fcat2 to it_fcat2.
      clear wa_fcat2.
    endform.                    " build_fcat
    *&      Form  build_layout
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form build_layout .
      clear wa_layout1.
      wa_layout1-grid_title = 'Header data'.
    *  wa_layout-sel_mode = 'A'.             "allow to select multiple lines
      clear wa_layout2.
      wa_layout2-grid_title = 'Item Data'.
    endform.                    " build_layout
    If you have any poblems while doing this, post it.
    Do reward points for all helpful answers
    Regards,
    Sowjanya

  • In ALV report  list edit a field and insert our own text

    Hi
    In a report when I am in third list using ALV a field which is disabled should be enabled and have to insert the new value in it and save.
    please tell me how to do it using classes and methods and also using ALV's.
    Promise to reward points.
    Regards
    Mac

    See these threads
    Re: Making selected alv rows editable
    Re: selective edit in ALV grid
    Regards,
    Ravi

  • Devloped an ALV report for daily cash receipts for selected date range

    hi,   
                 how to devlop an ALV report for daily cash receipts for selected date range.for this report what are the tables and fields we have to use.what is the selectionscreen&what is logic.give me sample report.

    Hi,
    You can develop simple reports using Report Painter.
    You may be also interested in:
    Check report SAPMF05A for credit memo
    See the following Std reports on Payment Advices execute the Tcodes:
    S_ALR_87009888
    S_ALR_87009889
    S_ALR_87009890
    S_ALR_87009891
    S_ALR_87009892
    S_ALR_87009893
    S_ALR_87009978
    S_ALR_87009979
    S_ALR_87009980
    S_ALR_87009981
    S_ALR_87009982
    S_ALR_87009983
    S_ALR_87010056
    S_ALR_87010057
    S_ALR_87010058
    S_ALR_87010059
    S_ALR_87010060
    S_ALR_87010061
    S_ALR_87010066
    S_ALR_87010067
    S_ALR_87012106
    S_ALR_87012107
    S_ALR_87012108
    S_ALR_87012109
    S_ALR_87012110
    S_ALR_87012111
    S_ALR_87012116
    S_ALR_87012117
    S_ALR_87012200
    S_ALR_87012201
    S_ALR_87012202
    S_ALR_870122
    S_ALR_87012204
    S_ALR_87012205
    S_ALR_87012350
    S_ALR_87012351
    S_ALR_87012352
    S_ALR_87012353
    S_ALR_87012354
    S_ALR_87012355
    sample ALV report:
    tables:
    marav. "Table MARA and table MAKT
    Data to be displayed in ALV
    Using the following syntax, REUSE_ALV_FIELDCATALOG_MERGE can auto-
    matically determine the fieldstructure from this source program
    Data:
    begin of imat occurs 100,
    matnr like marav-matnr, "Material number
    maktx like marav-maktx, "Material short text
    matkl like marav-matkl, "Material group (so you can test to make
                            " intermediate sums)
    ntgew like marav-ntgew, "Net weight, numeric field (so you can test to
                            "make sums)
    gewei like marav-gewei, "weight unit (just to be complete)
    end of imat.
    Other data needed
    field to store report name
    data i_repid like sy-repid.
    field to check table length
    data i_lines like sy-tabix.
    Data for ALV display
    TYPE-POOLS: SLIS.
    data int_fcat type SLIS_T_FIELDCAT_ALV.
    select-options:
    s_matnr for marav-matnr matchcode object MAT1.
    start-of-selection.
    read data into table imat
      select * from marav
      into corresponding fields of table imat
      where
      matnr in s_matnr.
    end-of-selection.
    Now, we start with ALV
    To use ALV, we need a DDIC-structure or a thing called Fieldcatalogue.
    The fieldcatalouge can be generated by FUNCTION
    'REUSE_ALV_FIELDCATALOG_MERGE' from an internal table from any
    report source, including this report.
    The only problem one might have is that the report and table names
    need to be in capital letters. (I had it )
    Store report name
    i_repid = sy-repid.
    Create Fieldcatalogue from internal table
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                I_PROGRAM_NAME         = sy-repid
                I_INTERNAL_TABNAME     = 'IMAT'  "capital letters!
                I_INCLNAME             = sy-repid
           CHANGING
                CT_FIELDCAT            = int_fcat
           EXCEPTIONS
                INCONSISTENT_INTERFACE = 1
                PROGRAM_ERROR          = 2
                OTHERS                 = 3.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM       = i_repid
                I_STRUCTURE_NAME         = 'marav'
                I_DEFAULT                = 'X'
                I_SAVE                   = 'A'
           TABLES
                T_OUTTAB                 = imat.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC .
      ENDIF.
    Hope this will help.
    Regards,
    Naveen.

  • Alv Report for invoice details

    Dear All,
                 I need to develop one alv report for following details. i developed coding for this requirment but i am getting some error.kindley help me to how to move data from different internal table to final internal table. I used LOOP AT and READ Statement even i didn't get any output.
    kindley help me out.
    TYPES: BEGIN OF XT_TAB,
             LIFNR  LIKE LFA1-LIFNR,
             NAME1  LIKE LFA1-NAME1,
             STCD1  LIKE LFA1-STCD1,
             STCD2  LIKE LFA1-STCD2,
             STCD3  LIKE LFA1-STCD3,
             STCD4  LIKE LFA1-STCD4,
           END OF XT_TAB.
    TYPES: BEGIN OF YT_TAB,
            BUKRS LIKE BSEG-BUKRS,
            BELNR LIKE BSEG-BELNR,
            BUZEI LIKE BSEG-BUZEI,
            LIFNR LIKE BSEG-LIFNR,
            GJAHR LIKE BSEG-GJAHR,
           END OF YT_TAB.
    TYPES: BEGIN OF ZT_TAB,
            LIFNR  LIKE LFA1-LIFNR,
            NAME1  LIKE LFA1-NAME1,
            STCD2  LIKE LFA1-STCD2,
            BELNR  LIKE BSEG-BELNR,
            BUZEI  LIKE BSEG-BUZEI,
            GJAHR  LIKE BSEG-GJAHR,
           END OF ZT_TAB.
           I N T E R N A L   T A B L E   D E C L A R A T I O N S         *
    *-----Internal table to store data
    DATA: ITAB1   TYPE STANDARD TABLE OF XT_TAB INITIAL SIZE 0,
          WA_TAB1 TYPE XT_TAB.
    DATA: ITAB2   TYPE STANDARD TABLE OF YT_TAB INITIAL SIZE 0,
          WA_TAB2 TYPE YT_TAB.
    DATA:   ITAB  TYPE STANDARD TABLE OF  ZT_TAB  WITH HEADER LINE,
            WA_ITAB TYPE ZT_TAB,
            ITAB_FINAL2 TYPE STANDARD TABLE OF ZT_TAB.
    DATA: ITAB_TEMP1 TYPE STANDARD TABLE OF ZT_TAB  WITH HEADER LINE.
                    Selection Screen Declarations                        *
    SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN begin OF LINE.
    SELECTION-SCREEN COMMENT (23) text-003 FOR FIELD P_LIFNR.
    PARAMETERS P_LIFNR LIKE LFA1-LIFNR OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK bk1.
    START-OF-SELECTION.
          PERFORM XTRACT_DATA.
    END-OF-SELECTION.
    *-----Filling the Output table
      PERFORM populate_main_table.
          PERFORM BUILD_FIELDCATALOG.
         PERFORM SORTING.
          PERFORM BUILD_LAYOUT.
          PERFORM BUILD_ALV_GRID_DISPLAY.
         Form  XTRACT_DATA
    FORM XTRACT_DATA .
    *SELECT
          a~LIFNR
          a~NAME1
          a~STCD2
          b~BELNR
          b~BUZEI
          b~GJAHR
    INTO TABLE ITAB
    FROM LFA1 as a INNER JOIN BSEG as b
      ON  aLIFNR = bLIFNR
    WHERE  a~LIFNR = P_LIFNR.
    SELECT LIFNR
           NAME1
           STCD1
           STCD2
           STCD3
           STCD4
      FROM LFA1
      INTO TABLE ITAB1
      WHERE LIFNR = P_LIFNR.
    IF NOT ITAB1[] IS INITIAL.
        SORT ITAB1 BY LIFNR.
        SELECT BELNR
               BUZEI
               LIFNR
               GJAHR
    INTO TABLE ITAB2
          FROM BSEG
    FOR ALL ENTRIES IN ITAB1
    WHERE LIFNR = ITAB1-LIFNR.
    ENDIF.
    ENDFORM.                    " XTRACT_DATA
    *&      Form  POPULATE_MAIN_TABLE
          text
    -->  p1        text
    <--  p2        text
    FORM POPULATE_MAIN_TABLE .
       LOOP AT ITAB1 INTO WA_TAB1.
               ITAB-LIFNR = ITAB1-LIFNR.
               ITAB-NAME1 = ITAB1-NAME1.
               ITAB-STCD2 = ITAB1-STCD2.
       READ TABLE ITAB2 INTO WA_TAB2 WITH KEY LIFNR = WA_TAB1-LIFNR.
               IF sy-subrc = 0.
               ITAB-BELNR = ITAB1-BELNR.
               ITAB-BUZEI = ITAB1-BUZEI.
               ITAB-GJAHR = ITAB1-GJAHR.
               ENDIF.
      ENDLOOP.
      ENDFORM.                    " POPULATE_MAIN_TABLE
         Form  BUILD_FIELDCATALOG
    FORM BUILD_FIELDCATALOG .
      REFRESH t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 1.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Vendor Number'.
      wa_fcat-seltext_m = 'Vendor Number'.
      wa_fcat-seltext_l = 'Vendor Number'.
      wa_fcat-fieldname = 'LIFNR'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 2.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Vendor Name'.
      wa_fcat-seltext_m = 'Vendor Name'.
      wa_fcat-seltext_l = 'Vendor Name'.
      wa_fcat-fieldname = 'NAME1'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 3.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Vendor TIN Number'.
      wa_fcat-seltext_m = 'Vendor TIN Number'.
      wa_fcat-seltext_l = 'Vendor TIN Number'.
      wa_fcat-fieldname = 'STCD2'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 4.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Document No'.
      wa_fcat-seltext_m = 'Document No'.
      wa_fcat-seltext_l = 'Document No'.
      wa_fcat-fieldname = 'BELNR'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 5.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Item Number'.
      wa_fcat-seltext_m = 'Item Number'.
      wa_fcat-seltext_l = 'Item Number'.
      wa_fcat-fieldname = 'BUZEI'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 6.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Fiscal Year'.
      wa_fcat-seltext_m = 'Fiscal Year'.
      wa_fcat-seltext_l = 'Fiscal Year'.
      wa_fcat-fieldname = 'GJAHR'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
    ENDFORM.                    " BUILD_FIELDCATALOG
         Form  BUILD_LAYOUT
    FORM BUILD_LAYOUT .
    GD_LAYOUT-NO_INPUT = 'X'.
    GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
    GD_LAYOUT-TOTALS_TEXT = 'TOTALS'.
    ENDFORM.                    " BUILD_LAYOUT
         Form  BUILD_ALV_GRID_DISPLAY
    FORM BUILD_ALV_GRID_DISPLAY .
    gd_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program      = gd_repid
                i_callback_top_of_page  = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
                is_layout               = gd_layout
                it_fieldcat             = t_fcat[]
                it_events               = gt_events
                is_print                = gd_prntparams
                it_sort                 = it_sortcat[]
                i_save                  = 'X'
           TABLES
                t_outtab                = ITAB
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
    thanks and regards
    Murugesh

    TYPES: BEGIN OF XT_TAB,
             LIFNR  LIKE LFA1-LIFNR,
             NAME1  LIKE LFA1-NAME1,
             STCD1  LIKE LFA1-STCD1,
             STCD2  LIKE LFA1-STCD2,
             STCD3  LIKE LFA1-STCD3,
             STCD4  LIKE LFA1-STCD4,
           END OF XT_TAB.
    TYPES: BEGIN OF YT_TAB,
            BUKRS LIKE BSEG-BUKRS,
            BELNR LIKE BSEG-BELNR,
            BUZEI LIKE BSEG-BUZEI,
            LIFNR LIKE BSEG-LIFNR,
            GJAHR LIKE BSEG-GJAHR,
           END OF YT_TAB.
    TYPES: BEGIN OF ZT_TAB,
            LIFNR  LIKE LFA1-LIFNR,
            NAME1  LIKE LFA1-NAME1,
            STCD2  LIKE LFA1-STCD2,
            BELNR  LIKE BSEG-BELNR,
            BUZEI  LIKE BSEG-BUZEI,
            GJAHR  LIKE BSEG-GJAHR,
           END OF ZT_TAB.
           I N T E R N A L   T A B L E   D E C L A R A T I O N S         *
    *-----Internal table to store data
    DATA: ITAB1   TYPE STANDARD TABLE OF XT_TAB INITIAL SIZE 0,
          WA_TAB1 TYPE XT_TAB.
    DATA: ITAB2   TYPE STANDARD TABLE OF YT_TAB INITIAL SIZE 0,
          WA_TAB2 TYPE YT_TAB.
    DATA:   ITAB  TYPE STANDARD TABLE OF  ZT_TAB  WITH HEADER LINE,
            WA_ITAB TYPE ZT_TAB,
            ITAB_FINAL2 TYPE STANDARD TABLE OF ZT_TAB.
    DATA: ITAB_TEMP1 TYPE STANDARD TABLE OF ZT_TAB  WITH HEADER LINE.
                    Selection Screen Declarations                        *
    SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN begin OF LINE.
    SELECTION-SCREEN COMMENT (23) text-003 FOR FIELD P_LIFNR.
    PARAMETERS P_LIFNR LIKE LFA1-LIFNR OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK bk1.
    START-OF-SELECTION.
          PERFORM XTRACT_DATA.
    END-OF-SELECTION.
    *-----Filling the Output table
      PERFORM populate_main_table.
          PERFORM BUILD_FIELDCATALOG.
         PERFORM SORTING.
          PERFORM BUILD_LAYOUT.
          PERFORM BUILD_ALV_GRID_DISPLAY.
         Form  XTRACT_DATA
    FORM XTRACT_DATA .
    *SELECT
          a~LIFNR
          a~NAME1
          a~STCD2
          b~BELNR
          b~BUZEI
          b~GJAHR
    INTO TABLE ITAB
    FROM LFA1 as a INNER JOIN BSEG as b
      ON  aLIFNR = bLIFNR
    WHERE  a~LIFNR = P_LIFNR.
    SELECT LIFNR
           NAME1
           STCD1
           STCD2
           STCD3
           STCD4
      FROM LFA1
      INTO TABLE ITAB1
      WHERE LIFNR = P_LIFNR.
    IF NOT ITAB1[] IS INITIAL.
        SORT ITAB1 BY LIFNR.
        SELECT BELNR
               BUZEI
               LIFNR
               GJAHR
    INTO TABLE ITAB2
          FROM BSEG
    FOR ALL ENTRIES IN ITAB1
    WHERE LIFNR = itab1-lifnr.
    ENDIF.
    ENDFORM.                    " XTRACT_DATA
    *&      Form  POPULATE_MAIN_TABLE
          text
    -->  p1        text
    <--  p2        text
    FORM POPULATE_MAIN_TABLE .
      LOOP AT ITAB1 INTO WA_TAB1.
              ITAB-LIFNR = ITAB1-LIFNR.
              ITAB-NAME1 = ITAB1-NAME1.
              ITAB-STCD2 = ITAB1-STCD2.
      READ TABLE ITAB2 INTO WA_TAB2 WITH KEY LIFNR = WA_TAB1-LIFNR.
              IF sy-subrc = 0.
              ITAB-BELNR = ITAB1-BELNR.
              ITAB-BUZEI = ITAB1-BUZEI.
              ITAB-GJAHR = ITAB1-GJAHR.
              ENDIF.
    ENDLOOP.
    LOOP AT itab1 INTO wa_tab1.
       MOVE:  wa_tab1-lifnr TO itab-lifnr,
              wa_tab1-name1 TO itab-name1,
              wa_tab1-stcd2 TO itab-stcd2.
          Append itab.
      READ TABLE itab2 TRANSPORTING NO FIELDS WITH KEY lifnr = wa_tab1-lifnr.
      IF sy-subrc eq 0.
        MOVE: wa_tab2-lifnr TO itab-lifnr,
              wa_tab2-belnr TO itab-belnr,
              wa_tab2-buzei TO itab-buzei,
              wa_tab2-gjahr TO itab-gjahr.
      Append itab.
    endif.
    endloop.
    *LOOP AT t_agr_tcodes INTO s_agr_tcodes.
    READ TABLE t_tstc
    TRANSPORTING NO FIELDS
    WITH KEY tcode = s_agr_tcodes-tcode.
    IF sy-subrc eq 0.
       MOVE: s_agr_tcodes-tcode TO it_agr_tcodes-tcode,
             s_agr_tcodes-agr_name to it_agr_tcodes-agr_name,
             t_tstc-pgmna to it_agr_pgmna.
    *Append it_agr_tcodes.
    *endif.
    *endloop.
      ENDFORM.                    " POPULATE_MAIN_TABLE
         Form  BUILD_FIELDCATALOG
    FORM BUILD_FIELDCATALOG .
      REFRESH t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 1.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Vendor Number'.
      wa_fcat-seltext_m = 'Vendor Number'.
      wa_fcat-seltext_l = 'Vendor Number'.
      wa_fcat-fieldname = 'LIFNR'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 2.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Vendor Name'.
      wa_fcat-seltext_m = 'Vendor Name'.
      wa_fcat-seltext_l = 'Vendor Name'.
      wa_fcat-fieldname = 'NAME1'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 3.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Vendor TIN Number'.
      wa_fcat-seltext_m = 'Vendor TIN Number'.
      wa_fcat-seltext_l = 'Vendor TIN Number'.
      wa_fcat-fieldname = 'STCD2'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 4.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Document No'.
      wa_fcat-seltext_m = 'Document No'.
      wa_fcat-seltext_l = 'Document No'.
      wa_fcat-fieldname = 'BELNR'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 5.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Item Number'.
      wa_fcat-seltext_m = 'Item Number'.
      wa_fcat-seltext_l = 'Item Number'.
      wa_fcat-fieldname = 'BUZEI'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
      wa_fcat-col_pos = 6.
      wa_fcat-row_pos = 1.
      wa_fcat-seltext_s = 'Fiscal Year'.
      wa_fcat-seltext_m = 'Fiscal Year'.
      wa_fcat-seltext_l = 'Fiscal Year'.
      wa_fcat-fieldname = 'GJAHR'.
      wa_fcat-tabname = 'ITAB'.
      APPEND wa_fcat TO t_fcat.
      CLEAR t_fcat.
    ENDFORM.                    " BUILD_FIELDCATALOG
         Form  BUILD_LAYOUT
    FORM BUILD_LAYOUT .
    GD_LAYOUT-NO_INPUT = 'X'.
    GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
    GD_LAYOUT-TOTALS_TEXT = 'TOTALS'.
    ENDFORM.                    " BUILD_LAYOUT
         Form  BUILD_ALV_GRID_DISPLAY
    FORM BUILD_ALV_GRID_DISPLAY .
    gd_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program      = gd_repid
                i_callback_top_of_page  = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
                is_layout               = gd_layout
                it_fieldcat             = t_fcat[]
                it_events               = gt_events
                is_print                = gd_prntparams
                it_sort                 = it_sortcat[]
                i_save                  = 'X'
           TABLES
                t_outtab                = ITAB
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
    Edited by: Murugesh P on Apr 6, 2009 10:54 AM
    Edited by: Murugesh P on Apr 6, 2009 10:54 AM

  • Devolped an ALV report for daily cash receipts for selected date range

    hi,   
                 how to devlop an ALV report for daily cash receipts for selected date range.for this report what are the tables and fields we have to use.what is the selectionscreen&what is logic.give me sample report.

    hi,   
                 how to devlop an ALV report for daily cash receipts for selected date range.for this report what are the tables and fields we have to use.what is the selectionscreen&what is logic.give me sample report.

  • Custom button  on ALV report for Tcode FL10G ?

    Hi All,
    I want to add custom button in the AVL report for FL10G transaction.  And then need to implement logic for that button (calling BAPI to create shipment for the selected records).
    For VL10G alv program GUI Status - STANDARD001  I think I can add button in this gui by using access key.
    But how to implement logic for this custom button?  Where I can put the code for this button logic?
    Please let me know if any one has any ideas on this issue.
    I appreciate your help and time on this.
    Thanks.
    M

    Hi Murali,
    The standard program it will not allow to copy the GUI Status. Because source and target program should not same.
    It will definitely debug will work. Yo can create the GUI Status through SE41. In SE41 Just give Program name :SAPLV50R_VIEW click the button status. here you should not give any gui status. just blindy say create the then it will popup screen appears in the screen. Here you can mention your Z GUI Status. It is not required to create all the menus manually instead of the there is button which is located in the screen next to blue i button. here you can click and select the standard interface. You can get all the menus as similar to standard. Like that you should create Menu Bar, Application Toolbar and Function Keys  Menus. Then you can add your custom button in the Application tool bar button.
    When you execute the Transaction VL10G and check your cusom menu button will appears. Once you click custom button only exit will trigger. Find the below code for your reference.
    CODE
            loop at ct_postab assigning <fs>
                    where selkz = 'X'.
    *To Fill the BAPI  Header Parameters
                  str_ordhdr-ship_cond = w_sval-value.
    *To Fill the BAPI  HeaderX Parameters
                  str_ordhdrx-updateflag = 'U'.
                  str_ordhdrx-ship_cond = 'X'.
                  call function 'BAPI_SALESORDER_CHANGE'
                    exporting
                      salesdocument    = <fs>-vbelv
                      order_header_in  = str_ordhdr
                      order_header_inx = str_ordhdrx
                    tables
                      return           = str_return.
                endloop.
                read table str_return into w_return index 1.
                if sy-subrc eq 0.
                  if not w_return-type = 'S'.
                    message w_return-message type 'E'.
                    leave to current transaction.
                  endif.
                endif.
    *Do the BAPI Commit
                call function 'BAPI_TRANSACTION_COMMIT'
                  exporting
                    wait = 'X'.
              endif.
            endif.
          endif.
    Let me know if you have anything to discuss on the same.

  • ALV report for Purchase Requisitions(PR)

    Hai All!
      i am developing an ALV report for Purchase Requisitions(PR) tht are not approved ( ie IN RELEASE status), so i want to get who has approved PR and who has not approved it... from which table & which field i can get this data...
    plz help me

    Hi Following fields are used to set / reset release of PR
    EBAN-FRGKZ
    EBAN-FRGZU
    EBAN-FRGST.
    You will have to understand combination of these field from MM Fuctional Consultant.
    rgds
    rajesh
    Edited by: RAJESH KUMAR on Aug 6, 2008 12:18 PM

Maybe you are looking for

  • Help Help Mac not working

    Ok so recently i updated my mac from mountain lion 10.8 to 10.8.2 and then i installed windows 7 exceptthe windows 7 install failed and gives the the messaging saying that an unexpected error took olace during the process and then it restarts and giv

  • MacBook Air wi-fi doesn't work at home but does everywhere else?

    Hello everyone, out of the blue recently my mid-2012 Macbook air started having wifi issues at home.  Everywhere I go except my house the wifi works excellently.  This would lead one to believe my home wifi is at fault, however all of my family's dev

  • I just downloaded the new ADE and it keeps crashing when I try to open books from my library.

    Help? I've used my Nook and this application for years, so I think it's the new version that's causing trouble. Here is what I get when I click "details": Process:               Adobe Digital Editions [538] Path:                  /Applications/Adobe

  • Ipod Formatted to Windows but I want to use Mac!

    I know you should be able to use an ipod formatted to windows on a Mac, but I can't. I have itunes 7 and it won't let me put music on my ipod says software is too old. I've been trying to update the software but everything says you can't unless you h

  • MinBox for Mac, Not Receiving Via iCloud?

    I've recently installed the MinBox service on my mid-2012 MacBook Pro running Yosemite (although that may be irrelevant given my exact issue). I send files via the MinBox application and I receive a confirmation email that I've received the file, but