*&--------------------------------------------------------------------* *& Form VIM_MODIFY_VIEW_ENTRY * *&--------------------------------------------------------------------* * update/insert entry, process all checks * *&--------------------------------------------------------------------* FORM vim_modify_view_entry USING value(vmve_exix) TYPE i vmve_rc TYPE i. DATA: h_ix TYPE i, h_act(1) TYPE c, hact2(1) TYPE c, fieldname TYPE fnam_____4. FIELD-SYMBOLS: TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY, TYPE ANY. CLEAR vmve_rc. nextline = exind = vmve_exix. * new: transfer of changed entries from EXTRACT into TOTAL via dynps * ... first: handle read-only fields and subset fields IF x_header-subsetflag NE space OR x_header-rdonlyflag NE space OR x_header-adrnbrflag NE space. IF NE neuer_eintrag. READ TABLE total WITH KEY BINARY SEARCH. h_act = . ELSE. h_act = . ENDIF. LOOP AT x_namtab WHERE readonly EQ rdonly OR ( readonly EQ subset AND keyflag EQ space ). ASSIGN COMPONENT x_namtab-viewfield OF STRUCTURE TO . CHECK sy-subrc = 0. IF NE neuer_eintrag. ASSIGN COMPONENT x_namtab-viewfield OF STRUCTURE TO . IF sy-subrc = 0. = . ENDIF. * extract+x_namtab-position(x_namtab-flength) = * total+x_namtab-position(x_namtab-flength). ELSE. ASSIGN COMPONENT x_namtab-viewfield OF STRUCTURE TO . IF sy-subrc = 0. = . ENDIF. * extract+x_namtab-position(x_namtab-flength) = * +x_namtab-position(x_namtab-flength). ENDIF. ENDLOOP. IF sy-subrc EQ 0. hact2 = . = h_act. MODIFY extract INDEX vmve_exix. = hact2. ENDIF. ENDIF. PERFORM move_extract_to_view_wa. * ... second: handle address number and GUID CLEAR vim_upgr_address_number. IF x_header-adrnbrflag NE space. IF x_header-adrnbrflag = 'N'. vim_upgr_address_number = . ENDIF. IF NE neuer_eintrag. = . ELSE. CLEAR . ENDIF. ENDIF. IF x_header-guidflag <> space AND <> neuer_eintrag. * update only, GUID will be set in UPDATE_TAB for new entries LOOP AT x_namtab WHERE domname IN vim_guid_domain. CONCATENATE x_header-maintview x_namtab-viewfield INTO fieldname SEPARATED BY '-'. ASSIGN COMPONENT x_namtab-viewfield OF STRUCTURE TO . ASSIGN COMPONENT x_namtab-viewfield OF STRUCTURE TO . * ASSIGN extract+x_namtab-position(x_namtab-flength) TO * CASTING TYPE (fieldname). * ASSIGN total+x_namtab-position(x_namtab-flength) TO * CASTING TYPE (fieldname). IF IS INITIAL AND IS INITIAL. * no GUID-value imported from remote system and GUID not yet set in * current entry PERFORM vim_make_guid USING x_namtab-viewfield. ASSIGN (fieldname) TO CASTING TYPE (fieldname). = . * (including event 27) ELSEIF IS INITIAL. * use old GUID = . IF x_header-frm_af_uid <> space. PERFORM (x_header-frm_af_uid) IN PROGRAM (x_header-fpoolname) USING CHANGING . ELSEIF x_header-frm_af_uid <> space. * overwrite old GUID with GUID from remote client... or not? PERFORM (x_header-frm_af_uid) IN PROGRAM (x_header-fpoolname) USING CHANGING . ENDIF. ENDIF. ENDLOOP. ENDIF. IF EQ neuer_eintrag. status-action = hinzufuegen. = . IF x_header-bastab NE space AND x_header-texttbexst NE space. = . ENDIF. = leer. ELSE. status-action = aendern. = h_act. ENDIF. MODIFY extract INDEX vmve_exix. * ...third: call screen a la replace CASE status-type. WHEN einstufig. PERFORM vim_imp_call_screen USING liste. WHEN zweistufig. IF EQ leer. neuer = 'J'. ENDIF. PERFORM process_detail_screen USING 'C'. ENDCASE. status-action = -st_action = aendern. IF ok_code EQ 'IGN '. vmve_rc = 4. CLEAR ok_code. EXIT. ENDIF. IF function EQ 'ABR '. vmve_rc = 8. CLEAR function. EXIT. ENDIF. ENDFORM. "vim_modify_view_entry