*----------------------------------------------------------------------* * INCLUDE LSVIMF5E * *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form vim_make_guid *&---------------------------------------------------------------------* * Sets GUID values in a dataset. Only used if a new entry is * created. If p_viewfield is set, only one GUID is filled. *----------------------------------------------------------------------* * --> p_viewfield Name of GUID field in table/view * <-- p2 text *----------------------------------------------------------------------* FORM vim_make_guid USING p_viewfield TYPE viewfield. DATA: fieldname TYPE fnam_____4, old_guid TYPE REF TO data. FIELD-SYMBOLS: TYPE vimnamtab, TYPE ANY, TYPE ANY, TYPE ANY. IF p_viewfield = space. * set all GUIDs in structure LOOP AT x_namtab ASSIGNING WHERE keyflag = space AND bastabname <> x_header-texttab AND domname IN vim_guid_domain. * non-key and non-textfields only CONCATENATE x_header-maintview -viewfield INTO fieldname SEPARATED BY '-'. ASSIGN (fieldname) TO CASTING TYPE (fieldname). IF -prof_found = vim_pr_into_view * importing BC-set manually OR vim_import_profile <> space * importing BC-set in background OR vim_special_mode = vim_upgrade. * importing from remote system/client CHECK IS INITIAL. ENDIF. CREATE DATA old_guid TYPE (fieldname). ASSIGN old_guid->* TO . CASE -domname. WHEN 'SYSUUID'. ASSIGN (fieldname) TO CASTING TYPE guid_16. MOVE TO . CALL FUNCTION 'GUID_CREATE' IMPORTING ev_guid_16 = . WHEN 'SYSUUID_C'. ASSIGN (fieldname) TO CASTING TYPE guid_32. MOVE TO . CALL FUNCTION 'GUID_CREATE' IMPORTING ev_guid_32 = . WHEN 'SYSUUID_22'. ASSIGN (fieldname) TO CASTING TYPE guid_22. MOVE TO . CALL FUNCTION 'GUID_CREATE' IMPORTING ev_guid_22 = . WHEN 'SYSUUID_25'. ASSIGN (fieldname) TO CASTING TYPE rssguid25. MOVE TO . CALL FUNCTION 'RSS_SYSTEM_GET_UNIQUE_ID' IMPORTING e_uni_idc25 = . ENDCASE. IF x_header-frm_af_uid <> space. ASSIGN (x_header-maintview) TO CASTING TYPE (x_header-maintview). PERFORM (x_header-frm_af_uid) IN PROGRAM (x_header-fpoolname) USING CHANGING . ENDIF. ENDLOOP. ELSE. * set GUID for p_viewfield only READ TABLE x_namtab ASSIGNING WITH KEY viewfield = p_viewfield. CHECK sy-subrc = 0 AND -domname IN vim_guid_domain. * non-key and non-textfields only CONCATENATE x_header-maintview -viewfield INTO fieldname SEPARATED BY '-'. ASSIGN (fieldname) TO CASTING TYPE (fieldname). IF -prof_found = vim_pr_into_view * importing BC-set manually OR vim_import_profile <> space * importing BC-set in background OR vim_special_mode = vim_upgrade. * importing from remote system/client CHECK IS INITIAL. ENDIF. CREATE DATA old_guid TYPE (fieldname). ASSIGN old_guid->* TO . CASE -domname. WHEN 'SYSUUID'. ASSIGN (fieldname) TO CASTING TYPE guid_16. MOVE TO . CALL FUNCTION 'GUID_CREATE' IMPORTING ev_guid_16 = . WHEN 'SYSUUID_C'. ASSIGN (fieldname) TO CASTING TYPE guid_32. MOVE TO . CALL FUNCTION 'GUID_CREATE' IMPORTING ev_guid_32 = . WHEN 'SYSUUID_22'. ASSIGN (fieldname) TO CASTING TYPE guid_22. MOVE TO . CALL FUNCTION 'GUID_CREATE' IMPORTING ev_guid_22 = . WHEN 'SYSUUID_25'. ASSIGN (fieldname) TO CASTING TYPE rssguid25. MOVE TO . CALL FUNCTION 'RSS_SYSTEM_GET_UNIQUE_ID' IMPORTING e_uni_idc25 = . ENDCASE. IF x_header-frm_af_uid <> space. ASSIGN (x_header-maintview) TO CASTING TYPE (x_header-maintview). PERFORM (x_header-frm_af_uid) IN PROGRAM (x_header-fpoolname) USING CHANGING . ENDIF. ENDIF. ENDFORM. " vim_make_guid