Application Development 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: 

ALV GRID make a coloumn as required

suganya_rangarajan
Participant
0 Kudos

Hi,

I am using ALC classses and I want to make a column as required field entry.how do i do that?

thanks

Suganya

2 REPLIES 2

Former Member
0 Kudos

You can do a presave check.

MODULE pai_100 INPUT.

CASE sy-ucomm.

WHEN 'BACK'.

PERFORM save_warning.

LEAVE TO SCREEN 0.

WHEN 'EXIT' OR 'CANC'.

PERFORM save_warning.

LEAVE PROGRAM.

WHEN 'SAVE'.

PERFORM save_records.

ENDCASE.

ENDMODULE. "pai_100 INPUT

FORM save_records.

                    • Work Areas / Header Lines **********

DATA: lh_screen TYPE z1274_1,

lh_z1274 TYPE z1274.

                    • Variables **********

DATA: l_error_flag TYPE boolean.

PERFORM pre_save_check CHANGING l_error_flag.

IF l_error_flag IS INITIAL.

DELETE FROM z1274 WHERE kunnr = p_kunnr.

SORT t_screen BY mtart atnam.

LOOP AT t_screen INTO lh_screen WHERE mtart <> space.

MOVE p_kunnr TO lh_z1274-kunnr.

MOVE lh_screen-mtart TO lh_z1274-mtart.

MOVE lh_screen-atinn TO lh_z1274-atinn.

MOVE lh_screen-adzhl TO lh_z1274-adzhl.

MOVE lh_screen-atnam TO lh_z1274-atnam.

MODIFY z1274 FROM lh_z1274.

CLEAR lh_z1274.

CLEAR lh_screen.

ENDLOOP.

CLEAR g_save.

MESSAGE ID 'Z1' TYPE 'S' NUMBER '007'

WITH 'Records Saved.'.

COMMIT WORK.

ENDIF.

ENDFORM. " save_records

FORM pre_save_check CHANGING pl_error_flag.

                    • Internal Tables **********

DATA: row_id TYPE lvc_s_roid OCCURS 0 WITH HEADER LINE.

                    • Work Areas / Header Lines **********

DATA: lh_screen TYPE z1274_1.

                    • Variables **********

DATA: x TYPE i,

dup TYPE i,

cnt TYPE i.

DATA: valid(1).

DATA: l_mtart LIKE t134-mtart,

l_atinn LIKE cabn-atinn.

CLEAR pl_error_flag.

CALL METHOD o_grid->check_changed_data

IMPORTING

e_valid = valid.

IF valid IS INITIAL.

MESSAGE ID 'Z1' TYPE 'S' NUMBER '007' DISPLAY LIKE 'E'

WITH 'Errors exist, cannot save.'.

pl_error_flag = 'X'.

ENDIF.

REFRESH: row_id.

LOOP AT t_screen INTO lh_screen.

ADD 1 TO x.

IF lh_screen-mtart IS INITIAL.

row_id-row_id = x.

APPEND row_id.

CALL METHOD o_grid->set_selected_rows

EXPORTING

it_row_no = row_id[].

MESSAGE ID 'Z1' TYPE 'S' NUMBER '007' DISPLAY LIKE 'E'

WITH 'Material type cannot be blank.'.

pl_error_flag = 'X'.

EXIT.

ELSE.

SELECT SINGLE mtart

INTO l_mtart

FROM t134

WHERE mtart = lh_screen-mtart.

IF sy-subrc <> 0.

MESSAGE ID 'Z1' TYPE 'S' NUMBER '007' DISPLAY LIKE 'E'

WITH 'Invalid material type.'.

pl_error_flag = 'X'.

EXIT.

ENDIF.

ENDIF.

IF lh_screen-atinn IS INITIAL.

row_id-row_id = x.

APPEND row_id.

CALL METHOD o_grid->set_selected_rows

EXPORTING

it_row_no = row_id[].

MESSAGE ID 'Z1' TYPE 'S' NUMBER '007' DISPLAY LIKE 'E'

WITH 'Characteristic cannot be blank.'.

pl_error_flag = 'X'.

EXIT.

ELSE.

SELECT SINGLE atinn

INTO l_atinn

FROM cabn

WHERE atinn = lh_screen-atinn

AND adzhl = 0.

IF sy-subrc <> 0.

MESSAGE ID 'Z1' TYPE 'S' NUMBER '007' DISPLAY LIKE 'E'

WITH 'Invalid characteristic.'.

pl_error_flag = 'X'.

EXIT.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. "pre_save_check

uwe_schieferstein
Active Contributor
0 Kudos

Hello Suganya

Within the fieldcatalog (LVC_S_FCAT) there is no option which allows to mark a column as mandatory for input. Therefore, I believe you have to to check the contents of your editable ALV grid (either in event handler method HANDLE_DATA_CHANGED) or at PAI of the dynpro for <i>initial </i>values in this column.

Regards

Uwe