09-10-2007 9:02 PM
Hi,
I am using ALC classses and I want to make a column as required field entry.how do i do that?
thanks
Suganya
09-10-2007 9:16 PM
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
09-10-2007 9:18 PM
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