Hola a todos
Después de una noche de sueño, encontré una solución para mi problema. Encontré una forma de no modificar directamente el itab, sino la fila recién insertada en el alv. De esta manera, el protocolo de cambios del alv ya no afecta mis cambios de datos.
Aquí está el código de referencia:
* V-----------------set default Value for new row---------------------------V*
" leer la tabla de filas insertadas y asignar valores predeterminados
READ TABLE p_data_changed->mt_inserted_rows INTO dl_ins_row INDEX 1.
" Encontrar el índice de fila para la tabla GW_JOBSTEP según la tabla coincidente
READ TABLE p_data_changed->MT_ROID_FRONT WITH KEY ROW_ID = DL_INS_ROW-ROW_ID TRANSPORTING NO FIELDS.
"(sy-tabix contiene el ID de fila de MT_ROID_FRONT con la fila coincidente.)
IF sy-subrc EQ 0.
DATA: idx TYPE sy-tabix.
idx = sy-tabix.
ENDIF.
" Establecer valores predeterminados para la nueva fila
PERFORM modify_alv_cell USING dl_ins_row-row_id 'MANDT' sy-mandt CHANGING p_data_changed.
PERFORM modify_alv_cell USING dl_ins_row-row_id 'JOBNAME' ZBC_JOB-JOBNAME CHANGING p_data_changed.
PERFORM modify_alv_cell USING dl_ins_row-row_id 'STEPCOUNT' idx CHANGING p_data_changed.
PERFORM modify_alv_cell USING dl_ins_row-row_id 'XPGFLAG' K_DEFAULT_XPGFLAG CHANGING p_data_changed.
PERFORM modify_alv_cell USING dl_ins_row-row_id 'PRNEW' 'X' CHANGING p_data_changed.
PERFORM modify_alv_cell USING dl_ins_row-row_id 'PDEST' K_DEFAULT_PRINTER CHANGING p_data_changed.
PERFORM modify_alv_cell USING dl_ins_row-row_id 'LANGUAGE' sy-LANGU CHANGING p_data_changed.
" Deshabilitar ciertos campos para editar (en nueva fila)
PERFORM ALV_DISABLE_FIELDS USING K_DEFAULT_XPGFLAG CHANGING it_style.
LOOP AT it_style INTO wa_style.