Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Re: ALVS

Former Member
0 Likes
443

Hi all,

I want to create an ALV grid control using tables lfa1,ekko.ekpo to display vendor related purchase dat, I am new to grid control So explain the steps clearly,

and the code I wil gige u full points.

regards

Sashi

Hi all,

I want to create an ALV grid control using tables lfa1,ekko.ekpo to display vendor related purchase dat, I am new to grid control So explain the steps clearly,

and the code I wil gige u full points.

regards

Sashi

2 REPLIES 2
Read only

Former Member
0 Likes
410

REPORT ZMNTESTALV_NEW NO STANDARD PAGE HEADING.

DATA: BEGIN OF i_sflight OCCURS 0.

INCLUDE STRUCTURE sflight.

DATA: END OF i_sflight.

DATA: w_repid LIKE sy-repid,

w_save(1) TYPE c,

w_default(1) TYPE c,

w_exit(1) TYPE c,

i_variant LIKE disvariant,

i_variant1 LIKE disvariant.

Data: it_fcat type lvc_t_fcat,

wa_fcat type lvc_s_fcat,

gv_contROL TYPE scrfname VALUE 'CONTEROL1',

gv_grid TYPE REF TO cl_gui_alv_grid,

gv_custom_container TYPE REF TO cl_gui_custom_container.

TABLES: SFLIGHT.

************************************************************************

  • Selection Screen

************************************************************************

SELECT-OPTIONS s_carrid FOR SFLIGHT-carrid.

  • Variant for ALV display

PARAMETERS: p_varnt LIKE disvariant-variant.

PARAMETERS: p_local AS CHECKBOX,

p_psfile TYPE localfile DEFAULT text-006.

************************************************************************

  • AT SELECTION-SCREEN.

************************************************************************

  • Process on value request (list of possible variants)

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varnt.

PERFORM f4_for_variant.

  • PAI

AT SELECTION-SCREEN.

PERFORM pai_of_selection_screen.

************************************************************************

*INITIALIZATION.

************************************************************************

INITIALIZATION.

w_repid = sy-repid.

  • Set Options: save variant userspecific or general

  • 'A or 'U' are for user-specific variants list

  • 'X' or 'space' for general

w_save = 'A'.

PERFORM variant_init.

*----- Get default variant

i_variant1 = i_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = w_save

CHANGING

cs_variant = i_variant1

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_varnt = i_variant1-variant.

ENDIF.

START-OF-SELECTION.

perform get_data.

end-of-selection.

if sy-subrc = 0.

PERFORM DOWNLOAD.

call screen 100.

endif.

----


  • FORM F4_FOR_VARIANT *

----


FORM f4_for_variant.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = i_variant

i_save = w_save

  • it_default_fieldcat =

IMPORTING

e_exit = w_exit

es_variant = i_variant1

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF w_exit = space.

p_varnt = i_variant1-variant.

ENDIF.

ENDIF.

ENDFORM. "f4_for_variant

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • to check whether right variant is entered on the selection scr

----


FORM pai_of_selection_screen.

*

IF NOT p_varnt IS INITIAL.

MOVE i_variant TO i_variant1.

MOVE p_varnt TO i_variant1-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = w_save

CHANGING

cs_variant = i_variant1.

i_variant = i_variant1.

ELSE.

PERFORM variant_init.

ENDIF.

ENDFORM. " PAI_OF_SELECTION_SCREEN

&----


*& Form VARIANT_INIT

----


FORM variant_init.

CLEAR i_variant.

i_variant-report = w_repid.

ENDFORM. " VARIANT_INIT

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'ZPF100'.

SET TITLEBAR 'ZT100'.

IF GV_GRID IS INITIAL.

CREATE OBJECT GV_CUSTOM_CONTAINER

EXPORTING

  • PARENT =

CONTAINER_NAME = 'CONTROL1'

  • STYLE =

  • LIFETIME = lifetime_default

  • REPID =

  • DYNNR =

  • NO_AUTODEF_PROGID_DYNNR =

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.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CREATE OBJECT GV_GRID

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

I_PARENT = GV_CUSTOM_CONTAINER

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

  • I_FCAT_COMPLETE = SPACE

EXCEPTIONS

ERROR_CNTL_CREATE = 1

ERROR_CNTL_INIT = 2

ERROR_CNTL_LINK = 3

ERROR_DP_CREATE = 4

others = 5

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

perform build_fcat.

CALL METHOD GV_GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

IS_VARIANT = I_VARIANT

I_SAVE = W_SAVE

I_DEFAULT = 'X'

  • IS_LAYOUT =

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

  • IR_SALV_ADAPTER =

CHANGING

IT_OUTTAB = I_SFLIGHT[]

IT_FIELDCATALOG = IT_FCAT

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

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Form build_fcat

&----


FORM build_fcat .

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

I_STRUCTURE_NAME = 'SFLIGHT'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

I_INTERNAL_TABNAME = 'I_SFLIFGT'

CHANGING

CT_FIELDCAT = IT_FCAT[]

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

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. " build_fcat

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

case SY-UCOMM.

when 'BACK'.

LEAVE TO SCREEN 0.

endcase.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form get_data

&----


FORM get_data .

SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE i_sflight

UP TO 20 ROWS WHERE carrid IN s_carrid.

ENDFORM. " get_data

&----


*& Form DOWNLOAD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DOWNLOAD .

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

FILENAME = 'C:\ABC.XLS'

  • FILETYPE = 'ASC'

  • APPEND = ' '

WRITE_FIELD_SEPARATOR = 'X'

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • WRITE_EOL = ABAP_TRUE

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = I_SFLIGHT

  • FIELDNAMES =

  • EXCEPTIONS

  • FILE_WRITE_ERROR = 1

  • NO_BATCH = 2

  • GUI_REFUSE_FILETRANSFER = 3

  • INVALID_TYPE = 4

  • NO_AUTHORITY = 5

  • UNKNOWN_ERROR = 6

  • HEADER_NOT_ALLOWED = 7

  • SEPARATOR_NOT_ALLOWED = 8

  • FILESIZE_NOT_ALLOWED = 9

  • HEADER_TOO_LONG = 10

  • DP_ERROR_CREATE = 11

  • DP_ERROR_SEND = 12

  • DP_ERROR_WRITE = 13

  • UNKNOWN_DP_ERROR = 14

  • ACCESS_DENIED = 15

  • DP_OUT_OF_MEMORY = 16

  • DISK_FULL = 17

  • DP_TIMEOUT = 18

  • FILE_NOT_FOUND = 19

  • DATAPROVIDER_EXCEPTION = 20

  • CONTROL_FLUSH_ERROR = 21

  • OTHERS = 22

.

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. " DOWNLOAD

Read only

Former Member
0 Likes
410

Sashi,

Maybe this will help. Try to search the forum and you will get many more examples.

REPORT zalv_grid NO STANDARD PAGE HEADING.

*****************
*** Prueba : 1
*** ALV de la tabla de acreedores con customer container
*** que se pueda editar.
*****************

INCLUDE <icon>.

TABLES: lfa1, lfb1, ekko, ekpo.


TYPE-POOLS: slis.


DATA: ok_code LIKE sy-ucomm,
      g_container TYPE scrfname VALUE 'CONTAINER',
      grid1  TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container.
DATA: repname LIKE sy-repid.
DATA: t_disvariant TYPE TABLE OF disvariant WITH HEADER LINE.
DATA: t_fieldtab TYPE lvc_t_fcat.
DATA: t_layout TYPE lvc_s_layo.

DATA: gs_toolbar  TYPE stb_button.
DATA: t_rows TYPE lvc_t_row WITH HEADER LINE.

*----------------------------------------------------------------------
*       TABLA DE DATOS
*----------------------------------------------------------------------


DATA: BEGIN OF ti_acred OCCURS 0,
           bukrs LIKE lfb1-bukrs,
           lifnr LIKE lfa1-lifnr,
           land1 LIKE lfa1-land1,
           name1 LIKE lfa1-name1,
           ort01 LIKE lfa1-ort01,
           pstlz LIKE lfa1-pstlz,
           regio LIKE lfa1-regio,
           sortl LIKE lfa1-sortl,
           stras LIKE lfa1-stras,
           adrnr LIKE lfa1-adrnr,
   END OF ti_acred.

DATA i_salida LIKE ti_acred OCCURS 0.

DATA: d_bukrs LIKE t001-bukrs.

DATA  container.

DATA save VALUE 'X'.


*---------------------------------------------------------------------*
*--------              Pantalla de Selección                 ---------*
*---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK bloq1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : lifnr FOR lfa1-lifnr,
                 bukrs FOR lfb1-bukrs.
SELECTION-SCREEN END OF BLOCK bloq1.

SELECTION-SCREEN BEGIN OF BLOCK bloq3 WITH FRAME TITLE text-003.
PARAMETERS: p_alvasg TYPE slis_vari.  " Disposición ALV
SELECTION-SCREEN END   OF BLOCK bloq3.


****************************************************************
* LOCAL CLASSES: Definition
****************************************************************
*===============================================================
* class lcl_event_receiver: local class to
*                         define and handle own functions.
*
* Definition:
* ~~~~~~~~~~~
CLASS lcl_event_receiver DEFINITION.

  PUBLIC SECTION.

    CLASS-METHODS:
    handle_toolbar
        FOR EVENT toolbar OF cl_gui_alv_grid
            IMPORTING e_object e_interactive,

    handle_menu_button
        FOR EVENT menu_button OF cl_gui_alv_grid
            IMPORTING e_object e_ucomm,

    handle_user_command
        FOR EVENT user_command OF cl_gui_alv_grid
            IMPORTING e_ucomm.

  PRIVATE SECTION.

ENDCLASS.
*
* lcl_event_receiver (Definition)
*===============================================================

****************************************************************
* LOCAL CLASSES: Implementation
****************************************************************
*===============================================================
* class lcl_event_receiver (Implementation)
*
*
CLASS lcl_event_receiver IMPLEMENTATION.

  METHOD handle_toolbar.
* § 2.At event TOOLBAR define a toolbar element of type 1 by using
*     event paramenter E_OBJECT. Remember its function code.
*.......
* Part I: Define a menu button including a function code that
*         is evaluated in 'handle_MENU_BUTTON
*.......

*...................
* append a menu with default button (Type 1)
* The function code of the default button is the same as
* the one for the menu.
* If the user klicks on the default button ALV raises
* directly event BEFORE_USER_COMMAND
* (then USER_COMMAND, AFTER_USER_COMMAND).
* If the user klicks on the menu button ALV raises event MENU_BUTTON.

    CLEAR gs_toolbar.
    MOVE 'MODIFY' TO gs_toolbar-function.
* --&gt; This function code is evaluated in 'handle_menu_button'
    MOVE icon_change TO gs_toolbar-icon.
    MOVE 'Modificar' TO gs_toolbar-quickinfo.
    MOVE 0 TO gs_toolbar-butn_type.
    MOVE space TO gs_toolbar-disabled.
    APPEND gs_toolbar TO e_object-&gt;mt_toolbar.

  ENDMETHOD.
*--------------------------------------------------------------------
  METHOD handle_menu_button.
* § 3.At event MENU_BUTTON query your function code and define a
*     menu in the same way as a context menu.
*..........
* Part II: Evaluate 'e_ucomm' to see which menu button of the toolbar
*          has been clicked on.
*          Define then the corresponding menu.
*          The menu contains function codes that are evaluated
*          in 'handle_user_command'.
*...........

*  query e_ucomm to find out which menu button has been clicked on
    IF e_ucomm = 'MODIFY'.
      CALL METHOD e_object-&gt;add_function
                  EXPORTING fcode   = 'MODIFY'
                            text    = 'Modificar'. "modificar
*  § 3a.) choose a default function and define the same function code
*         as used for the menu.
*      CALL METHOD e_object-&gt;add_function
*                  EXPORTING fcode   = 'DECISION'
*                            text    = 'Decisión de empleo'. "Decisión
*                                                            "de empleo
*
    ENDIF.
  ENDMETHOD.
*---------------------------------------------------------------------
  METHOD handle_user_command.
* § 4.At event USER_COMMAND query the function code of each function
*     defined in step 3.
*.........
* Part III : Evaluate user command to invoke the corresponding
*                   function.
*.........

    DATA: lt_rows TYPE lvc_t_row.

* get selected row
    CALL METHOD grid1-&gt;get_selected_rows
             IMPORTING et_index_rows = lt_rows.
    CALL METHOD cl_gui_cfw=&gt;flush.
    IF sy-subrc NE 0.
* add your handling, for example
      CALL FUNCTION 'POPUP_TO_INFORM'
           EXPORTING
                titel = repname
                txt2  = sy-subrc
                txt1  = 'Error in Flush'(500).
    ENDIF.
* go to other table
    CASE e_ucomm.
*      WHEN 'DECISION'.
*        REFRESH T_ROWS.
*        PERFORM SELECCION_LINEAS_DECISION TABLES lt_rows.

      WHEN 'MODIFY'.
        REFRESH t_rows.
*        PERFORM SELECCION_LINEAS_modify TABLES lt_rows.
*        CALL SCREEN 200.

    ENDCASE.
  ENDMETHOD.                           "handle_user_command
ENDCLASS.
*
* lcl_event_receiver (Implementation)
*===================================================================
************************************************************************



*--------------------------------------------------------------------*
*--------               INITIALIZATION                      ---------*
*--------------------------------------------------------------------*
INITIALIZATION.
  repname = sy-repid.
  PERFORM initialize_fieldcat.
  PERFORM initializa_layout.

*--------------------------------------------------------------------*
*--------   AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alv     ------*
*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvasg.
  PERFORM alvl_value_request USING p_alvasg '  '.


*--------------------------------------------------------------------*
*--------             START-OF-SELECTION                     --------*
*--------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM obtener_datos.



*--------------------------------------------------------------------*
*--------             END-OF-SELECTION                        -------*
*--------------------------------------------------------------------*
END-OF-SELECTION.

  CALL SCREEN 9010.



*--------------------------------------------------------------------*
*--------               Subrutinas                            -------*
*--------------------------------------------------------------------*

*-------------------------------------------------------------------*
*      Form  obtener_datos
*-------------------------------------------------------------------*
FORM obtener_datos.
  REFRESH ti_acred.
  CLEAR ti_acred.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ti_acred
           FROM lfa1
           WHERE lifnr IN lifnr.
  LOOP AT ti_acred.
    SELECT SINGLE bukrs INTO ti_acred-bukrs FROM lfb1
           WHERE lifnr = ti_acred-lifnr.
    MODIFY ti_acred.
  ENDLOOP.
  i_salida[] = ti_acred[].
ENDFORM.



*---------------------------------------------------------------------*
*       MODULE PBO OUTPUT                                             *
*---------------------------------------------------------------------*
MODULE status_9010 OUTPUT.

  DATA it_toolbar_excluding TYPE ui_func.
  SET PF-STATUS 'EMPRESA'.
*  CLEAR g_custom_container.
  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
           EXPORTING container_name = g_container.
    CREATE OBJECT grid1
           EXPORTING i_parent = g_custom_container.

    CALL METHOD grid1-&gt;set_table_for_first_display
         EXPORTING i_structure_name = 'I_SALIDA'
                   is_variant       = t_disvariant
                   i_save           = save
*                   I_DEFAULT        = ' '
                   is_layout        = t_layout
         CHANGING  it_outtab        = i_salida
                   it_fieldcatalog  = t_fieldtab.
    SET HANDLER lcl_event_receiver=&gt;handle_user_command
                lcl_event_receiver=&gt;handle_menu_button
                lcl_event_receiver=&gt;handle_toolbar FOR ALL INSTANCES.
    CALL METHOD grid1-&gt;set_toolbar_interactive.
  ELSE.
    CALL METHOD grid1-&gt;refresh_table_display.
  ENDIF.
ENDMODULE.

*---------------------------------------------------------------------
*      Module  EXIT  INPUT
*---------------------------------------------------------------------
MODULE exit INPUT.
*  REFRESH i_salida.
*  CLEAR i_salida.
  SET SCREEN 0.
  LEAVE SCREEN.
ENDMODULE.                 " EXIT  INPUT

*---------------------------------------------------------------------*
*      Form  initialize_fieldcat
*---------------------------------------------------------------------*
FORM initialize_fieldcat.

  DATA: l_fieldcat TYPE lvc_t_fcat WITH HEADER LINE.
  REFRESH t_fieldtab.






** Catálogo de Campos
  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
  l_fieldcat-key        = 'X'.
  l_fieldcat-ref_field   = 'BUKRS'.
  l_fieldcat-ref_table   = 'LFB1'.
  l_fieldcat-fieldname  = 'BUKRS'.
  APPEND l_fieldcat TO t_fieldtab.


  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
  l_fieldcat-key        = 'X'.
  l_fieldcat-ref_field   = 'LIFNR'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'LIFNR'.
  APPEND l_fieldcat TO t_fieldtab.

  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'NAME1'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'NAME1'.
  APPEND l_fieldcat TO t_fieldtab.

  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'LAND1'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'LAND1'.
  APPEND l_fieldcat TO t_fieldtab.




  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'ORT01'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'ORT01'.
  APPEND l_fieldcat TO t_fieldtab.


  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'PSTLZ'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'PSTLZ'.
  APPEND l_fieldcat TO t_fieldtab.



  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'REGIO'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'REGIO'.
  APPEND l_fieldcat TO t_fieldtab.


  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'SORTL'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'SORTL'.
  APPEND l_fieldcat TO t_fieldtab.

  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
*  l_fieldcat-edit       = 'X'.
  l_fieldcat-ref_field   = 'STRAS'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'STRAS'.
  APPEND l_fieldcat TO t_fieldtab.

  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'I_SALIDA'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
  l_fieldcat-key        = 'X'.
  l_fieldcat-ref_field   = 'ADRNR'.
  l_fieldcat-ref_table   = 'LFA1'.
  l_fieldcat-fieldname  = 'ADRNR'.
  APPEND l_fieldcat TO t_fieldtab.

ENDFORM.                    " initialize_fieldcat

*---------------------------------------------------------------------*
*      Form  initializa_layout
*---------------------------------------------------------------------*
FORM initializa_layout.

  t_layout-zebra        = 'X'.
  t_layout-cwidth_opt   = 'X'.
*  t_layout-no_toolbar   = 'X'.
*  T_LAYOUT-EDIT         = 'X'.
  T_LAYOUT-DETAILINIT    = 'X'.
  T_LAYOUT-CWIDTH_OPT    = 'X'.
  T_LAYOUT-TOTALS_BEF    = 'X'.
  T_LAYOUT-NUMC_TOTAL    = 'X'.


ENDFORM.                    " initializa_layout
*---------------------------------------------------------------------*
*      Module  USER_COMMAND_9010  INPUT
*---------------------------------------------------------------------*
MODULE user_command_9010 INPUT.
  CASE sy-ucomm.
    WHEN 'SAVE'.
      CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
*          TITLEBAR                    = ' '
*          DIAGNOSE_OBJECT             = ' '
          text_question               = 'Pulsaste SAVE'
*          TEXT_BUTTON_1               = 'Ja'(001)
*          ICON_BUTTON_1               = ' '
*          TEXT_BUTTON_2               = 'Nein'(002)
*          ICON_BUTTON_2               = ' '
*          DEFAULT_BUTTON              = '1'
*          DISPLAY_CANCEL_BUTTON       = 'X'
*          USERDEFINED_F1_HELP         = ' '
*          START_COLUMN                = 25
*          START_ROW                   = 6
*          POPUP_TYPE                  =
*        IMPORTING
*          ANSWER                      =
*        TABLES
*          PARAMETER                   =
*        EXCEPTIONS
*          TEXT_NOT_FOUND              = 1
*          OTHERS                      = 2
                .
      IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_9010  INPUT
*---------------------------------------------------------------------*
*      Form  alvl_value_request
*---------------------------------------------------------------------*
FORM alvl_value_request USING    pi_alv
                                 value(p_0158).
  DATA: l_disvariant TYPE disvariant.

* Wertehilfe
  l_disvariant-report  = sy-cprog.
*  l_disvariant-report(1) = 'A'.
  l_disvariant-variant = pi_alv.
  l_disvariant-log_group = p_0158.
  CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
       EXPORTING
            i_save_load = 'F'
            i_tabname   = '1'
       CHANGING
            cs_variant  = l_disvariant
       EXCEPTIONS
            OTHERS      = 1.
  IF sy-subrc = 0.
    pi_alv = l_disvariant-variant.
  ELSE.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

ENDFORM.                    " ALVL_VALUE_REQUEST

Thanks

Aneesh.