LOOP AT idoc_contrl ASSIGNING FIELD-SYMBOL(<ls_idoc_contrl>).
IF <ls_idoc_contrl>-mestyp NE 'mestyp'.
RAISE wrong_function_called.
ENDIF.
* Before reading a new entry, clear application buffer.
LOOP AT idoc_data[] ASSIGNING FIELD-SYMBOL(<ls_idoc_data>)
WHERE docnum EQ idoc_contrl-docnum.
case segmname
when segA
ls_tablefield1 = ls_idocsegfield1,
ls_tablefield2 = ls_idocsegfield2,
ls_tablefield3 = ls_idocsegfield3,
ls_tablefield4 = ls_idocsegfield4,
when segB
ls_tablefield5 = ls_idocsegfield5,
ls_tablefield6 = ls_idocsegfield6,
when segC
ls_tablefield7 = ls_idocsegfield7,
ls_tablefield8 = ls_idocsegfield8,
endcase.
MODIFY TABLE lt_tableFROM ls_table
IF sy-subrc EQ 0.
lv_edi_status = '53'.
ELSE.
lv_edi_status = '51'.
ENDIF.
endloop.
endloop.
* IF lt_table[] IS NOT INITIAL.
*
* MODIFY ztabel FROM TABLE lt_table.
*
* COMMIT WORK.
*
* ENDIF.