ā2015 Dec 16 9:44 AM
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
ā2015 Dec 16 10:12 AM
Yes, just use some events / methods (read Integration of Self-Defined Functions)
Regards,
Raymond