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

ALV Grid append row button

Former Member
0 Likes
2,592

Hi Experts,

I have a requirement in ALV GRID, wherein when I click the APPEND ROW button it will automatically create 5 rows and ADD a sequence number text in my first column(Number). Is this possible ?

CODE:

*&---------------------------------------------------------------------*

*& Report  ZSOFTWARE_ENTRY_ASC

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZSOFTWARE_ENTRY_ASC.

DATA: t_fcat TYPE lvc_t_fcat, "ā€ Field Catalog for List Viewer Control

       w_fcat TYPE lvc_s_fcat, "ā€ ALV control: Field catalog

       w_lay TYPE lvc_s_layo . "ā€ ALV control: Layout structure

DATA : t_cust TYPE REF TO cl_gui_custom_container,

        t_grid TYPE REF TO cl_gui_alv_grid,

        t_grid2 TYPE REF TO cl_gui_alv_grid .

TYPES: BEGIN OF it_cpu,

   zcpu(35) TYPE c,

   zdate TYPE sy-datum,

   END OF it_cpu.

DATA: it_cpu TYPE STANDARD TABLE OF it_cpu,

       wa_cpu LIKE it_cpu WITH HEADER LINE.

DATA: it_zsoftwaredata TYPE STANDARD TABLE OF zsoftwaredata,

       wa_zsoftwaredata LIKE it_zsoftwaredata WITH HEADER LINE.

DATA: it_zserialhistory TYPE STANDARD TABLE OF ZSERIALHISTORY,

       wa_zserialhistory LIKE it_zserialhistory WITH HEADER LINE.

DATA: it_zcurrentcpu TYPE STANDARD TABLE OF zcurrentcpu,

       wa_zcurrentcpu LIKE it_zcurrentcpu  WITH HEADER LINE.

DATA: gv_equnr TYPE equi-equnr,

       equnrmsg TYPE string,

       cpucount(2) TYPE n,

       historycount(2) TYPE c.

TYPES: BEGIN OF it_history,

   zcontrolnum(3) TYPE n,

   zserial TYPE string,

   zdate TYPE sy-datum,

   zcpu(35) TYPE c,

   END OF it_history.

DATA: it_history TYPE STANDARD TABLE OF it_history,

       wa_history LIKE it_history WITH HEADER LINE.

DATA: zswcode TYPE ZSOFTWAREDATA-swcode,"(35) TYPE c,

       zuser TYPE ZSOFTWAREDATA-zuser, "(35) TYPE c,

       ztypes TYPE ZSOFTWAREDATA-ztype, ""(35) TYPE c,

       zclassification TYPE ZSOFTWAREDATA-zclassification, "(35) TYPE c,

       zversion TYPE ZSOFTWAREDATA-zversion,"(35) TYPE c,

       zqty TYPE ZSOFTWAREDATA-zqty, "(35) TYPE c,

       zrenewable TYPE ZSOFTWAREDATA-zrenewable,"(35) TYPE c,

       zsn TYPE ZSOFTWAREDATA-zserial, "(35) TYPE c,

       zexpiration TYPE ZSOFTWAREDATA-zexpiration, "(35) TYPE c,

       zcpu TYPE ZSOFTWAREDATA-zlocation,"(35) TYPE c,

       check,

       check2,

       ZSOFTWAREDATA-zqty TYPE ZSOFTWAREDATA-zqty.

FIELD-SYMBOLS: <fs> TYPE table.

TYPE-POOLS : VRM.

SELECTION-SCREEN FUNCTION KEY 1.

PARAMETER: p_swcode(35) TYPE c OBLIGATORY.

START-OF-SELECTION.

   PERFORM get_cpudata.

   PERFORM get_historydata.

   PERFORM get_softwaredata.

   zswcode = p_swcode.

   zsn p_swcode.

   ZSOFTWAREDATA-zqty = 123.

   CALL SCREEN 0100.

FORM get_softwaredata.

   SELECT SINGLE zuser ztype zclassification zversion zqty zrenewable zexpiration zserial zlocation

     INTO (zuser, ztypes, zclassification, zversion, zqty, zrenewable, zexpiration, zsn, zcpu)

     FROM zsoftwaredata

     WHERE swcode EQ p_swcode.

ENDFORM.

FORM get_cpudata.

   SELECT zcpu zdate

     INTO CORRESPONDING FIELDS OF TABLE it_cpu

     FROM zcurrentcpu

     WHERE swcode EQ p_swcode.

     SORT it_cpu BY zdate.

     IF it_cpu IS INITIAL.

       wa_cpu-zcpu = ''.

       APPEND wa_cpu TO it_cpu.

     ENDIF.

ENDFORM.

FORM get_historydata.

   SELECT zcontrolnum zserial zdate zcpu

     INTO CORRESPONDING FIELDS OF TABLE it_history

     FROM zserialhistory

     WHERE swcode EQ p_swcode.

     SORT it_history BY zdate.

     IF it_history IS INITIAL.

       wa_history-zcontrolnum = ''.

       APPEND wa_history TO it_history.

     ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Module  ALV_CPUOUTPUT  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE ALV_CPUOUTPUT OUTPUT.

* ****Appending data to t_fcat

  w_fcat-fieldname = 'ZCPU'.

  w_fcat-coltext = 'CPU'.

  w_fcat-OUTPUTLEN = 15.

  w_fcat-edit = 'X'.

  APPEND w_fcat TO t_fcat.

  w_fcat-fieldname = 'ZDATE'.

  w_fcat-coltext = 'Date'.

  w_fcat-OUTPUTLEN = 10.

  w_fcat-edit = 'X'.

  APPEND w_fcat TO t_fcat.

* ******Create a object of class ā€˜CL_GUI_CUSTOM_CONTAINER’

  IF t_grid IS INITIAL.

    CREATE OBJECT t_cust

    EXPORTING

*    parent =

    container_name = 'ZALV1'

    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.

    ENDIF.

*   ******Create a object of class ā€˜CL_GUI_ALV_GRID’

    CREATE OBJECT t_grid

    EXPORTING

    i_parent = t_cust

    EXCEPTIONS

    error_cntl_create = 1

    error_cntl_init = 2

    error_cntl_link = 3

    error_dp_create = 4

    OTHERS = 5

    .

    IF sy-subrc <> 0.

    ENDIF.

*   ********Call a method of instance t_grid , class cl_gui_grid_alv and method set_table_for_first_display

    CALL METHOD t_grid->set_table_for_first_display

    EXPORTING

    i_structure_name = 'T_SPFLI'

    is_layout = w_lay

    CHANGING

    it_outtab = it_cpu

    it_fieldcatalog = t_fcat

    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.

    ELSE.

      CALL METHOD: t_grid->refresh_table_display.

   ENDIF.

ENDMODULE.                 " ALV_CPUOUTPUT  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  ALV_SNHISTORYOUTPUT  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE ALV_SNHISTORYOUTPUT OUTPUT.

*  ****Appending data to t_fcat

   CLEAR: w_fcat, t_fcat.

   REFRESH t_fcat.

   w_fcat-fieldname = 'ZCONTROLNUM'.

   w_fcat-coltext = 'Number'.

   w_fcat-OUTPUTLEN = 10.

   w_fcat-edit = 'X'.

   APPEND w_fcat TO t_fcat.

   w_fcat-fieldname = 'ZSERIAL'.

   w_fcat-coltext = 'Serial Number'.

   w_fcat-OUTPUTLEN = 20.

   w_fcat-edit = 'X'.

   APPEND w_fcat TO t_fcat.

   w_fcat-fieldname = 'ZDATE'.

   w_fcat-coltext = 'Date'.

   w_fcat-OUTPUTLEN = 10.

   w_fcat-edit = 'X'.

   APPEND w_fcat TO t_fcat.

   w_fcat-fieldname = 'ZCPU'.

   w_fcat-coltext = 'CPU'.

   w_fcat-OUTPUTLEN = 10.

   w_fcat-edit = 'X'.

   APPEND w_fcat TO t_fcat.

*  ******Create a object of class ā€˜CL_GUI_CUSTOM_CONTAINER’

  IF t_grid2 IS INITIAL.

     CREATE OBJECT t_cust

     EXPORTING

*     parent =

     container_name = 'ZALV2'

     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.

     ENDIF.

*    ******Create a object of class ā€˜CL_GUI_ALV_GRID’

     CREATE OBJECT t_grid2

     EXPORTING

     i_parent = t_cust

     EXCEPTIONS

     error_cntl_create = 1

     error_cntl_init = 2

     error_cntl_link = 3

     error_dp_create = 4

     OTHERS = 5

     .

     IF sy-subrc <> 0.

     ENDIF.

*    ********Call a method of instance t_grid , class cl_gui_grid_alv and method set_table_for_first_display

     CALL METHOD t_grid2->set_table_for_first_display

     EXPORTING

     i_structure_name = 'T_SPFLI'

     CHANGING

     it_outtab = it_history

     it_fieldcatalog = t_fcat

     EXCEPTIONS

     invalid_parameter_combination = 1

     program_error = 2

     too_many_lines = 3

     OTHERS = 4

     .

     IF sy-subrc <> 0.

     ENDIF.

   ENDIF.

ENDMODULE.                 " ALV_SNHISTORYOUTPUT  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE USER_COMMAND_0100 INPUT.

CASE sy-ucomm.

   WHEN 'BACK'.

     LEAVE TO SCREEN 0.

   WHEN 'EXIT' OR 'CANCEL'.

*    LEAVE PROGRAM.

     LEAVE TO SCREEN 0.

   WHEN '&SAVE'.

     "Validate

     "quantity and cpu number

     "sw code already exist in table zsoftwaredata

     "zcpu is existing in table equi

     wa_zsoftwaredata-swcode = zsn.

     wa_zsoftwaredata-zuser = zuser.

     wa_zsoftwaredata-ztype = ztypes.

     wa_zsoftwaredata-zclassification = zclassification.

     wa_zsoftwaredata-zversion = zversion.

     wa_zsoftwaredata-zqty = zqty.

     wa_zsoftwaredata-zrenewable = zrenewable.

     wa_zsoftwaredata-zexpiration = zexpiration.

     wa_zsoftwaredata-zserial = zsn.

     wa_zsoftwaredata-zlocation = zcpu.

     MODIFY zsoftwaredata FROM wa_zsoftwaredata.

     clear: check, check2.

     CALL METHOD t_grid->check_changed_data

       IMPORTING e_valid = check.

     CALL METHOD t_grid2->check_changed_data

       IMPORTING e_valid = check2.

     DELETE it_cpu WHERE zcpu IS INITIAL AND zdate IS INITIAL.

     DESCRIBE TABLE it_cpu LINES cpucount.

     IF cpucount > zqty.

       MESSAGE 'Installed CPU is grater than the quantity' TYPE 'W' DISPLAY LIKE 'E'.

       LEAVE LIST-PROCESSING.

       EXIT.

     ENDIF.

     DELETE FROM zcurrentcpu WHERE swcode EQ p_swcode.

     LOOP AT it_cpu INTO wa_cpu.

       SELECT SINGLE equnr

         INTO gv_equnr

         FROM equi

         WHERE equnr EQ wa_cpu-zcpu.

       IF sy-subrc NE 0.

         CONCATENATE 'CPU:' wa_cpu-zcpu 'is not valid' INTO equnrmsg SEPARATED BY space.

         MESSAGE equnrmsg TYPE 'W' DISPLAY LIKE 'E'.

         LEAVE LIST-PROCESSING.

         EXIT.

       ENDIF.

     ENDLOOP.

*    LOOP AT it_cpu INTO wa_cpu.

*      wa_zcurrentcpu-swcode = zswcode.

*      wa_zcurrentcpu-zcpu = wa_cpu-zcpu.

*      wa_zcurrentcpu-zdate = wa_cpu-zdate.

*      MODIFY zcurrentcpu FROM wa_zcurrentcpu.

*    ENDLOOP.

     DELETE it_history WHERE zserial IS INITIAL AND zcpu IS INITIAL.

     LOOP AT it_history INTO wa_history.

       SELECT SINGLE equnr

         INTO gv_equnr

         FROM equi

         WHERE equnr EQ wa_history-zcpu.

       IF sy-subrc NE 0.

         CONCATENATE 'CPU:' wa_history-zcpu 'is not valid' INTO equnrmsg SEPARATED BY space.

         MESSAGE equnrmsg TYPE 'W' DISPLAY LIKE 'E'.

         LEAVE LIST-PROCESSING.

         EXIT.

       ENDIF.

       wa_zserialhistory-swcode = zswcode.

       wa_zserialhistory-zcpu = wa_history-zcpu.

       wa_zserialhistory-zdate = wa_history-zdate.

       wa_zserialhistory-zserial = wa_history-zserial.

       wa_zserialhistory-zcontrolnum = wa_history-zcontrolnum.

       MODIFY zserialhistory FROM wa_zserialhistory.

     ENDLOOP.

     LOOP AT it_cpu INTO wa_cpu.

       wa_zcurrentcpu-swcode = zswcode.

       wa_zcurrentcpu-zcpu = wa_cpu-zcpu.

       wa_zcurrentcpu-zdate = wa_cpu-zdate.

       MODIFY zcurrentcpu FROM wa_zcurrentcpu.

     ENDLOOP.

     MESSAGE 'Equipment Successfuly Saved' TYPE 'S'.

     CALL METHOD: t_grid->refresh_table_display.

     CALL METHOD: t_grid2->refresh_table_display.

   ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE STATUS_0100 OUTPUT.

   SET PF-STATUS 'ZSTANDARD'.

   DATA: ld_field    TYPE VRM_ID ,

       it_type  TYPE VRM_VALUES,

       wa_type  LIKE LINE OF it_type,

       it_class  TYPE VRM_VALUES,

       wa_class  LIKE LINE OF it_type.

   DATA: it_swtype TYPE STANDARD TABLE OF zsoftwaretype,

         wa_swtype LIKE it_swtype WITH HEADER LINE,

         it_swclass TYPE STANDARD TABLE OF zsoftwaretype,

         wa_swclass LIKE it_swclass WITH HEADER LINE.

   SELECT name

     INTO CORRESPONDING FIELDS OF TABLE it_swtype

     FROM zsoftwaretype

     WHERE status EQ 'TYPE'.

   SELECT name

     INTO CORRESPONDING FIELDS OF TABLE it_swclass

     FROM zsoftwaretype

     WHERE status EQ 'CLASSIFICATION'.

   LOOP AT it_swtype INTO wa_swtype.

     wa_type-key = wa_swtype-name.

     wa_type-text = wa_swtype-name.

     append wa_type to it_type.

   ENDLOOP.

   LOOP AT it_swclass INTO wa_swclass.

     wa_class-key = wa_swclass-name.

     wa_class-text = wa_swclass-name.

     append wa_class to it_class.

   ENDLOOP.

   ld_field = 'ZTYPES'.

   CALL FUNCTION 'VRM_SET_VALUES'

     EXPORTING

       id     = ld_field

       values = it_type.

   ld_field = 'ZCLASSIFICATION'.

   CALL FUNCTION 'VRM_SET_VALUES'

     EXPORTING

       id     = ld_field

       values = it_class.

ENDMODULE.                 " STATUS_0100  OUTPUT

1 REPLY 1
Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,499

Yes, just use some events / methods (read Integration of Self-Defined Functions)

Regards,

Raymond