Sequencing in REM

Hi Experts,
What are the required steps and required configuration for sequencing in MTS-REM. Can somebody plaese tell me in details?
Mil

hi
for rem, Master data is BOM, rate routing (CA21) work center, and production version. make product ccost collector for you material and production version.in KKF6N before that standard cost estimate in ck11n and then update in maerial master by CK24.
In REM it is run scheduling quantity. so remained planned order. with order type PE.
MFBF (backflushing) is nothing but confirmation with goods issues for bom material and goods reciept of finished material.
Regards
Pravin

Similar Messages

  • How to compare two oracle database schemas

    hi all,
    i want to compare and find out differences between two oracle databases. The comparison should be made on between table definition,table data,primary and foreign keys, packages and functions.
    Is there any management console or tool embedded in the oracle enterprise manger?
    it is really appreciate if anyone can point me towards wright direction asap.

    Hi ,
    This script would help u a lot in comparing 2 schemas and generate a report on them.
    Script:
    This script will compare two Oracle schemas and generate a report of
    discrepencies and this script has been used against Oracle 7.3.4, 8.0.5,
    REM and 8.1.7 databases, but it should also work with other versions.
    REM
    REM Please note that the following schema object types and attributes are
    REM not compared by this script at this time:
    REM
    REM cluster definitions
    REM comments on tables and columns
    REM nesting, partition, IOT, and temporary attributes of tables
    REM snapshots/materialized views, logs, and refresh groups
    REM foreign function libraries
    REM object types
    REM operators
    REM indextypes
    REM dimensions
    REM auditing information
    REM new schema attributes added for Oracle 9i
    REM
    REM Version 02-04-2002
    REM
    PROMPT
    PROMPT Schema Comparison
    PROMPT =================
    PROMPT
    PROMPT Run this script while connected to one Oracle schema. Enter the Oracle
    PROMPT username, password, and SQL*Net / Net8 service name of a second schema.
    PROMPT This script will compare the two schemas and generate a report of
    PROMPT differences.
    PROMPT
    PROMPT A temporary database link and table will be created and dropped by
    PROMPT this script.
    PROMPT
    ACCEPT schema CHAR PROMPT "Enter username for remote schema: "
    ACCEPT passwd CHAR PROMPT "Enter password for remote schema: " HIDE
    ACCEPT tnssvc CHAR PROMPT "Enter SQL*Net / Net8 service for remote schema: "
    PROMPT
    ACCEPT report CHAR PROMPT "Enter filename for report output: "
    SET FEEDBACK OFF
    SET VERIFY OFF
    CREATE DATABASE LINK rem_schema CONNECT TO &schema IDENTIFIED BY &passwd
    USING '&tnssvc';
    SET TRIMSPOOL ON
    SPOOL &report
    SELECT SUBSTR (RPAD (TO_CHAR (SYSDATE, 'mm/dd/yyyy hh24:mi:ss'), 25), 1, 25)
    "REPORT DATE AND TIME"
    FROM SYS.dual;
    COL local_schema FORMAT a35 TRUNC HEADING "LOCAL SCHEMA"
    COL remote_schema FORMAT a35 TRUNC HEADING "REMOTE SCHEMA"
    SELECT USER || '@' || C.global_name local_schema,
    A.username || '@' || B.global_name remote_schema
    FROM user_users@rem_schema A, global_name@rem_schema B, global_name C
    WHERE ROWNUM = 1;
    SET PAGESIZE 9999
    SET LINESIZE 250
    SET FEEDBACK 1
    SET TERMOUT OFF
    PROMPT
    REM Object differences
    REM ==================
    COL object_name FORMAT a30
    PROMPT SUMMARY OF OBJECTS MISSING FROM LOCAL SCHEMA
    SELECT object_type, COUNT (*)
    FROM
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects@rem_schema
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects
    GROUP BY object_type
    ORDER BY object_type;
    PROMPT SUMMARY OF EXTRANEOUS OBJECTS IN LOCAL SCHEMA
    SELECT object_type, COUNT (*)
    FROM
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects
    WHERE object_type != 'DATABASE LINK'
    OR object_name NOT LIKE 'REM_SCHEMA.%'
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects@rem_schema
    GROUP BY object_type
    ORDER BY object_type;
    PROMPT OBJECTS MISSING FROM LOCAL SCHEMA
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects@rem_schema
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects
    ORDER BY object_type, object_name;
    PROMPT EXTRANEOUS OBJECTS IN LOCAL SCHEMA
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects
    WHERE object_type != 'DATABASE LINK'
    OR object_name NOT LIKE 'REM_SCHEMA.%'
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects@rem_schema
    ORDER BY object_type, object_name;
    PROMPT OBJECTS IN LOCAL SCHEMA THAT ARE NOT VALID
    SELECT object_name, object_type, status
    FROM user_objects
    WHERE status != 'VALID'
    ORDER BY object_name, object_type;
    REM Table differences
    REM =================
    PROMPT TABLE COLUMNS MISSING FROM ONE SCHEMA
    PROMPT (NOTE THAT THIS REPORT DOES NOT LIST DISCREPENCIES IN COLUMN ORDER)
    SELECT table_name, column_name, 'Local' "MISSING IN SCHEMA"
    FROM user_tab_columns@rem_schema
    WHERE table_name IN
    SELECT table_name
    FROM user_tables
    MINUS
    SELECT table_name, column_name, 'Local' "MISSING IN SCHEMA"
    FROM user_tab_columns
    UNION ALL
    SELECT table_name, column_name, 'Remote' "MISSING IN SCHEMA"
    FROM user_tab_columns
    WHERE table_name IN
    SELECT table_name
    FROM user_tables@rem_schema
    MINUS
    SELECT table_name, column_name, 'Remote' "MISSING IN SCHEMA"
    FROM user_tab_columns@rem_schema
    ORDER BY 1, 2;
    COL schema FORMAT a15
    COL nullable FORMAT a8
    COL data_type FORMAT a9
    COL data_length FORMAT 9999 HEADING LENGTH
    COL data_precision FORMAT 9999 HEADING PRECISION
    COL data_scale FORMAT 9999 HEADING SCALE
    COL default_length FORMAT 9999 HEADING LENGTH_OF_DEFAULT_VALUE
    PROMPT DATATYPE DISCREPENCIES FOR TABLE COLUMNS THAT EXIST IN BOTH SCHEMAS
    SELECT table_name, column_name, 'Remote' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns@rem_schema
    WHERE (table_name, column_name) IN
    SELECT table_name, column_name
    FROM user_tab_columns
    MINUS
    SELECT table_name, column_name, 'Remote' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns
    UNION ALL
    SELECT table_name, column_name, 'Local' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns
    WHERE (table_name, column_name) IN
    SELECT table_name, column_name
    FROM user_tab_columns@rem_schema
    MINUS
    SELECT table_name, column_name, 'Local' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns@rem_schema
    ORDER BY 1, 2, 3;
    REM Index differences
    REM =================
    COL column_position FORMAT 999 HEADING ORDER
    PROMPT INDEX DISCREPENCIES FOR INDEXES THAT EXIST IN BOTH SCHEMAS
    SELECT A.index_name, 'Remote' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes@rem_schema A, user_ind_columns@rem_schema B
    WHERE A.index_name IN
    SELECT index_name
    FROM user_indexes
    AND B.index_name = A.index_name
    AND B.table_name = A.table_name
    MINUS
    SELECT A.index_name, 'Remote' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes A, user_ind_columns B
    WHERE B.index_name = A.index_name
    AND B.table_name = A.table_name
    UNION ALL
    SELECT A.index_name, 'Local' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes A, user_ind_columns B
    WHERE A.index_name IN
    SELECT index_name
    FROM user_indexes@rem_schema
    AND B.index_name = A.index_name
    AND B.table_name = A.table_name
    MINUS
    SELECT A.index_name, 'Local' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes@rem_schema A, user_ind_columns@rem_schema B
    WHERE B.index_name = A.index_name
    AND B.table_name = A.table_name
    ORDER BY 1, 2, 6;
    REM Constraint differences
    REM ======================
    PROMPT CONSTRAINT DISCREPENCIES FOR TABLES THAT EXIST IN BOTH SCHEMAS
    SET FEEDBACK OFF
    CREATE TABLE temp_schema_compare
    database NUMBER(1),
    object_name VARCHAR2(30),
    object_text VARCHAR2(2000),
    hash_value NUMBER
    DECLARE
    CURSOR c1 IS
    SELECT constraint_name, search_condition
    FROM user_constraints
    WHERE search_condition IS NOT NULL;
    CURSOR c2 IS
    SELECT constraint_name, search_condition
    FROM user_constraints@rem_schema
    WHERE search_condition IS NOT NULL;
    v_constraint_name VARCHAR2(30);
    v_search_condition VARCHAR2(32767);
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO v_constraint_name, v_search_condition;
    EXIT WHEN c1%NOTFOUND;
    v_search_condition := SUBSTR (v_search_condition, 1, 2000);
    INSERT INTO temp_schema_compare
    database, object_name, object_text
    VALUES
    1, v_constraint_name, v_search_condition
    END LOOP;
    CLOSE c1;
    OPEN c2;
    LOOP
    FETCH c2 INTO v_constraint_name, v_search_condition;
    EXIT WHEN c2%NOTFOUND;
    v_search_condition := SUBSTR (v_search_condition, 1, 2000);
    INSERT INTO temp_schema_compare
    database, object_name, object_text
    VALUES
    2, v_constraint_name, v_search_condition
    END LOOP;
    CLOSE c2;
    COMMIT;
    END;
    SET FEEDBACK 1
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Remote' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints@rem_schema A, temp_schema_compare B
    WHERE A.table_name IN
    SELECT table_name
    FROM user_tables
    AND B.database (+) = 2
    AND B.object_name (+) = A.constraint_name
    MINUS
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Remote' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints A, temp_schema_compare B
    WHERE B.database (+) = 1
    AND B.object_name (+) = A.constraint_name
    UNION ALL
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Local' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints A, temp_schema_compare B
    WHERE A.table_name IN
    SELECT table_name
    FROM user_tables@rem_schema
    AND B.database (+) = 1
    AND B.object_name (+) = A.constraint_name
    MINUS
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Local' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints@rem_schema A, temp_schema_compare B
    WHERE B.database (+) = 2
    AND B.object_name (+) = A.constraint_name
    ORDER BY 1, 4, 2;
    REM Database link differences
    REM =========================
    PROMPT DATABASE LINK DISCREPENCIES
    COL db_link FORMAT a40
    SELECT db_link, 'Remote' schema, username, host
    FROM user_db_links@rem_schema
    MINUS
    SELECT db_link, 'Remote' schema, username, host
    FROM user_db_links
    UNION ALL
    SELECT db_link, 'Local' schema, username, host
    FROM user_db_links
    WHERE db_link NOT LIKE 'REM_SCHEMA.%'
    MINUS
    SELECT db_link, 'Local' schema, username, host
    FROM user_db_links@rem_schema
    ORDER BY 1, 2;
    REM Sequence differences
    REM ====================
    PROMPT SEQUENCE DISCREPENCIES
    SELECT sequence_name, 'Remote' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences@rem_schema
    MINUS
    SELECT sequence_name, 'Remote' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences
    UNION ALL
    SELECT sequence_name, 'Local' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences
    MINUS
    SELECT sequence_name, 'Local' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences@rem_schema
    ORDER BY 1, 2;
    REM Private synonym differences
    REM ===========================
    PROMPT PRIVATE SYNONYM DISCREPENCIES
    SELECT synonym_name, 'Remote' schema, table_owner, table_name, db_link
    FROM user_synonyms@rem_schema
    MINUS
    SELECT synonym_name, 'Remote' schema, table_owner, table_name, db_link
    FROM user_synonyms
    UNION ALL
    SELECT synonym_name, 'Local' schema, table_owner, table_name, db_link
    FROM user_synonyms
    MINUS
    SELECT synonym_name, 'Local' schema, table_owner, table_name, db_link
    FROM user_synonyms@rem_schema
    ORDER BY 1, 2;
    REM PL/SQL differences
    REM ==================
    PROMPT SOURCE CODE DISCREPENCIES FOR PACKAGES, PROCEDURES, AND FUNCTIONS
    PROMPT THAT EXIST IN BOTH SCHEMAS
    SELECT name, type, COUNT (*) discrepencies
    FROM
    SELECT name, type, line, text
    FROM user_source@rem_schema
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects
    MINUS
    SELECT name, type, line, text
    FROM user_source
    UNION ALL
    SELECT name, type, line, text
    FROM user_source
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects@rem_schema
    MINUS
    SELECT name, type, line, text
    FROM user_source@rem_schema
    GROUP BY name, type
    ORDER BY name, type;
    PROMPT SOURCE CODE DISCREPENCIES FOR PACKAGES, PROCEDURES, AND FUNCTIONS
    PROMPT THAT EXIST IN BOTH SCHEMAS (CASE INSENSITIVE COMPARISON)
    SELECT name, type, COUNT (*) discrepencies
    FROM
    SELECT name, type, line, UPPER (text)
    FROM user_source@rem_schema
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects
    MINUS
    SELECT name, type, line, UPPER (text)
    FROM user_source
    UNION ALL
    SELECT name, type, line, UPPER (text)
    FROM user_source
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects@rem_schema
    MINUS
    SELECT name, type, line, UPPER (text)
    FROM user_source@rem_schema
    GROUP BY name, type
    ORDER BY name, type;
    REM Trigger differences
    REM ===================
    PROMPT TRIGGER DISCREPENCIES
    SET FEEDBACK OFF
    TRUNCATE TABLE temp_schema_compare;
    DECLARE
    CURSOR c1 IS
    SELECT trigger_name, trigger_body
    FROM user_triggers;
    CURSOR c2 IS
    SELECT trigger_name, trigger_body
    FROM user_triggers@rem_schema;
    v_trigger_name VARCHAR2(30);
    v_trigger_body VARCHAR2(32767);
    v_hash_value NUMBER;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO v_trigger_name, v_trigger_body;
    EXIT WHEN c1%NOTFOUND;
    v_trigger_body := REPLACE (v_trigger_body, ' ', NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(9), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(10), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(13), NULL);
    v_trigger_body := UPPER (v_trigger_body);
    v_hash_value := dbms_utility.get_hash_value (v_trigger_body, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (1, v_trigger_name, v_hash_value);
    END LOOP;
    CLOSE c1;
    OPEN c2;
    LOOP
    FETCH c2 INTO v_trigger_name, v_trigger_body;
    EXIT WHEN c2%NOTFOUND;
    v_trigger_body := REPLACE (v_trigger_body, ' ', NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(9), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(10), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(13), NULL);
    v_trigger_body := UPPER (v_trigger_body);
    v_hash_value := dbms_utility.get_hash_value (v_trigger_body, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (2, v_trigger_name, v_hash_value);
    END LOOP;
    CLOSE c2;
    END;
    SET FEEDBACK 1
    SELECT A.trigger_name, 'Local' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 1
    AND A.table_name IN
    SELECT table_name
    FROM user_tables@rem_schema
    MINUS
    SELECT A.trigger_name, 'Local' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 2
    UNION ALL
    SELECT A.trigger_name, 'Remote' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 2
    AND A.table_name IN
    SELECT table_name
    FROM user_tables
    MINUS
    SELECT A.trigger_name, 'Remote' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 1
    ORDER BY 1, 2, 5, 3;
    REM View differences
    REM ================
    PROMPT VIEW DISCREPENCIES
    SET FEEDBACK OFF
    TRUNCATE TABLE temp_schema_compare;
    DECLARE
    CURSOR c1 IS
    SELECT view_name, text
    FROM user_views;
    CURSOR c2 IS
    SELECT view_name, text
    FROM user_views@rem_schema;
    v_view_name VARCHAR2(30);
    v_text VARCHAR2(32767);
    v_hash_value NUMBER;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO v_view_name, v_text;
    EXIT WHEN c1%NOTFOUND;
    v_text := REPLACE (v_text, ' ', NULL);
    v_text := REPLACE (v_text, CHR(9), NULL);
    v_text := REPLACE (v_text, CHR(10), NULL);
    v_text := REPLACE (v_text, CHR(13), NULL);
    v_text := UPPER (v_text);
    v_hash_value := dbms_utility.get_hash_value (v_text, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (1, v_view_name, v_hash_value);
    END LOOP;
    CLOSE c1;
    OPEN c2;
    LOOP
    FETCH c2 INTO v_view_name, v_text;
    EXIT WHEN c2%NOTFOUND;
    v_text := REPLACE (v_text, ' ', NULL);
    v_text := REPLACE (v_text, CHR(9), NULL);
    v_text := REPLACE (v_text, CHR(10), NULL);
    v_text := REPLACE (v_text, CHR(13), NULL);
    v_text := UPPER (v_text);
    v_hash_value := dbms_utility.get_hash_value (v_text, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (2, v_view_name, v_hash_value);
    END LOOP;
    CLOSE c2;
    END;
    SET FEEDBACK 1
    SELECT A.view_name, 'Local' schema, B.hash_value
    FROM user_views A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 1
    AND A.view_name IN
    SELECT view_name
    FROM user_views@rem_schema
    MINUS
    SELECT A.view_name, 'Local' schema, B.hash_value
    FROM user_views@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 2
    UNION ALL
    SELECT A.view_name, 'Remote' schema, B.hash_value
    FROM user_views@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 2
    AND A.view_name IN
    SELECT view_name
    FROM user_views
    MINUS
    SELECT A.view_name, 'Remote' schema, B.hash_value
    FROM user_views A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 1
    ORDER BY 1, 2;
    REM Job queue differences
    REM =====================
    COL what FORMAT a30
    COL interval FORMAT a30
    PROMPT JOB QUEUE DISCREPENCIES
    SELECT what, interval, 'Remote' schema
    FROM user_jobs@rem_schema
    MINUS
    SELECT what, interval, 'Remote' schema
    FROM user_jobs
    UNION ALL
    SELECT what, interval, 'Local' schema
    FROM user_jobs
    MINUS
    SELECT what, interval, 'Local' schema
    FROM user_jobs@rem_schema
    ORDER BY 1, 2, 3;
    REM Privilege differences
    REM =====================
    PROMPT OBJECT-LEVEL GRANT DISCREPENCIES
    SELECT owner, table_name, 'Remote' schema, grantee, privilege, grantable
    FROM user_tab_privs@rem_schema
    WHERE (owner, table_name) IN
    SELECT owner, object_name
    FROM all_objects
    MINUS
    SELECT owner, table_name, 'Remote' schema, grantee, privilege, grantable
    FROM user_tab_privs
    UNION ALL
    SELECT owner, table_name, 'Local' schema, grantee, privilege, grantable
    FROM user_tab_privs
    WHERE (owner, table_name) IN
    SELECT owner, object_name
    FROM all_objects@rem_schema
    MINUS
    SELECT owner, table_name, 'Local' schema, grantee, privilege, grantable
    FROM user_tab_privs@rem_schema
    ORDER BY 1, 2, 3;
    PROMPT SYSTEM PRIVILEGE DISCREPENCIES
    SELECT privilege, 'Remote' schema, admin_option
    FROM user_sys_privs@rem_schema
    MINUS
    SELECT privilege, 'Remote' schema, admin_option
    FROM user_sys_privs
    UNION ALL
    SELECT privilege, 'Local' schema, admin_option
    FROM user_sys_privs
    MINUS
    SELECT privilege, 'Local' schema, admin_option
    FROM user_sys_privs@rem_schema
    ORDER BY 1, 2;
    PROMPT ROLE PRIVILEGE DISCREPENCIES
    SELECT granted_role, 'Remote' schema, admin_option, default_role, os_granted
    FROM user_role_privs@rem_schema
    MINUS
    SELECT granted_role, 'Remote' schema, admin_option, default_role, os_granted
    FROM user_role_privs
    UNION ALL
    SELECT granted_role, 'Local' schema, admin_option, default_role, os_granted
    FROM user_role_privs
    MINUS
    SELECT granted_role, 'Local' schema, admin_option, default_role, os_granted
    FROM user_role_privs@rem_schema
    ORDER BY 1, 2;
    SPOOL OFF
    SET TERMOUT ON
    PROMPT
    PROMPT Report output written to &report
    SET FEEDBACK OFF
    DROP TABLE temp_schema_compare;
    DROP DATABASE LINK rem_schema;
    SET FEEDBACK 6
    SET PAGESIZE 20
    SET LINESIZE 80

  • Sending e-mail prior to Ora 8.0 from PL/SQL

    Dear peers,
    I would like to e-mail from a Pl/SQL block but can't use utl_smtp because the Oracle version is prior to 8.0. Could you recommend ways of doing so?
    My OS is Unix and have Perl,and PHP as well. I have little experience with any of this tools, so please be simple.
    Any suggestions would be greatly appreciated.
    Thanks, CIP

    Hi,
    The following article on sending mail is for Oracle 7.x as well and is specific to UNIX. It uses DBMS_PIPE PL/SQL package, a PRO*C program and UNIX sendmail utility for sending e-mail. For this, the database you are using should have DBMS_PIPE package installed.
    Hope that helps,
    Srinivas
    ARTICLE : How to Generate E-mail within PL/SQL Routines?
    References
    For DBMS_PIPE/architecture, refer to the following:
    "Oracle7 Server Application Developer's Guide" (A32536-1)
    "Oracle8 Application Developer's Guide Release 8.0" (A58241-01)
    "Oracle8i Supplied PL/SQL Packages Reference Release 2 (8.1.6)" (A76936-01)
    Preparation
    Perform the steps below to setup the necessary files.
    Note: When testing on your machine, the code generates simple
    e-mail messages for demonstration purposes.
    1. Read the main comment block of maildaemon.pc and make appropriate
    changes.
    2. Read the main comment block of maildaemon.sql and make appropriate
    changes.
    3. Connect to SQL*Plus. If not already setup, GRANT EXECUTE ON DBMS_PIPE TO
    where userid is public or the schema owner of the package.
    4. Run maildaemon.sql to setup dependencies.
    5. Copy proc.mk (demo_proc.mk on v8 databases) into directory and issue
    the following make line to build the executable for maildaemon:
    make -f proc.mk build EXE=maildaemon OBJS=maildaemon.o
    PROCFLAGS="sqlcheck=semantics parse=full userid=scott/tiger"
    Note: Replace userid=scott/tiger with the schema to build under.
    6. Run the maildaemon executable.
    7. To test, modify the code below and run from SQL*Plus:
    declare
    dummy number;
    begin
    maildaemon.setauditon;
    dummy:= maildaemon.email_msg1( '[email protected]' );
    dummy:= maildaemon.email_msg2( '[email protected]', 'scott',
    to_char( sysdate, 'dd-Mon-yyyy hh:mi:ss' ));
    maildaemon.setauditoff;
    maildaemon.stop;
    end;
    maildaemon.sql
    rem file: maildaemon.sql
    rem last modified: 10/15/98
    rem
    rem This source file generates dependencies for the maildaemon executable
    rem such as logging as well as the PL/SQL package interface to communicate
    rem with the maildaemon Pro*C application.
    rem
    rem Please note: this is just a sample. You will need to modify/replace the
    rem email_msg1() and email_msg2() functions in the maildaemon package.
    rem Both functions have been provided as simple demonstrations on how to
    rem write an interface. Consult the Application Developers Guide for more
    rem information on using the DBMS_PIPE package.
    rem table: emailaudit
    rem purpose: contain auditing messages from the maildaemon Pro*C application
    create table emailaudit
    msgid number constraint msgid_pk primary key,
    msgtype varchar2( 20 ),
    msgstat varchar2( 100 )
    rem sequence: emailmsgseq
    rem purpose: to allow maildaemon Pro*C application to generate unique message
    rem identifiers for opening temporary files and auditing.
    create sequence emailmsgseq;
    rem package: maildaemon
    rem purpose: provide a PL/SQL interface to generate e-mail messages
    create or replace package maildaemon as
    /* setauditon( )
    * procedure
    * parameters: timeout: timeout factor for informing the maildaemon exe
    * exceptions: -20030: error sending message to maildaemon exe
    * description: turn on auditing in the maildaemon exe
    procedure setauditon( timeout number default 10 );
    /* setauditoff( )
    * procedure
    * parameters: timeout: timeout factor for informing the maildaemon exe
    * exceptions: -20030: error sending message to maildaemon exe
    * description: turn off auditing in the maildaemon exe
    procedure setauditoff( timeout number default 10 );
    /* stop( )
    * procedure
    * parameters: timeout: timeout factor for informing the maildaemon exe
    * exceptions: -20030: error sending message to maildaemon exe
    * description: shutdown the maildaemon exe
    procedure stop( timeout number default 10 );
    /* email_msg1( )
    * function
    * parameters: emailaddr: email address to send email to
    * timeout: timeout factor for informing the maildaemon exe
    * returns: return code from mail daemon call
    * exceptions: -20010: maildaemon had an error during sending email
    * -20011: error during sending message to maildaemon exe
    * -20012: message returned from maildaemon other than done
    * -20013: maildaemon returned an error code other than 0
    * description: generic sample to demonstrate a simple interface to the
    * maildaemon exe
    function email_msg1( emailaddr in varchar2, timeout number default 10 ) return number;
    /* email_msg2( )
    * function
    * parameters: emailaddr: email address to send email to
    * userid: userid to place in the mail text
    * timestamp: timestamp to place in the mail text
    * timeout: timeout factor for informing the maildaemon exe
    * returns: return code from mail daemon call
    * exceptions: -20010: maildaemon had an error during sending email
    * -20011: error during sending message to maildaemon exe
    * -20012: message returned from maildaemon other than done
    * -20013: maildaemon returned an error code other than 0
    * description: generic sample to demonstrate a simple interface to the
    * maildaemon exe by passing parameters
    function email_msg2( emailaddr in varchar2, userid in varchar2, timestamp in varchar2,
    timeout number default 10 ) return number;
    end maildaemon;
    create or replace package body maildaemon as
    procedure setauditon( timeout number default 10 ) is
    retval number;
    begin
    dbms_pipe.pack_message( 'AUDIT' );
    retval := dbms_pipe.send_message( 'maildaemon', timeout );
    if retval <> 0 then
    raise_application_error( -20030,
    'maildaemon: error sending audit command. Status = ' &#0124; &#0124; retval );
    end if;
    end setauditon;
    procedure setauditoff( timeout number default 10 ) is
    retval number;
    begin
    dbms_pipe.pack_message( 'NOAUDIT' );
    retval := dbms_pipe.send_message( 'maildaemon', timeout );
    if retval <> 0 then
    raise_application_error( -20030,
    'maildaemon: error sending noaudit command. Status = ' &#0124; &#0124; retval );
    end if;
    end setauditoff;
    procedure stop( timeout number default 10 ) is
    retval number;
    begin
    dbms_pipe.pack_message( 'STOP' );
    retval := dbms_pipe.send_message( 'maildaemon', timeout );
    if retval <> 0 then
    raise_application_error( -20030,
    'maildaemon: error sending stop command. Status = ' &#0124; &#0124; retval );
    end if;
    end stop;
    function email_msg1( emailaddr in varchar2, timeout number default 10 ) return number is
    retval number;
    result varchar2(20);
    cmdcode number;
    pipenm varchar2(30);
    begin
    pipenm := dbms_pipe.unique_session_name;
    dbms_pipe.pack_message( 'MSG1' );
    dbms_pipe.pack_message( pipenm );
    dbms_pipe.pack_message( emailaddr );
    retval := dbms_pipe.send_message( 'maildaemon', timeout );
    if retval <> 0 then
    raise_application_error( -20010,
    'maildaemon: error while sending email. Status = ' &#0124; &#0124; retval );
    end if;
    retval := dbms_pipe.receive_message( pipenm, timeout );
    if retval <> 0 then
    raise_application_error( -20011,
    'maildaemon: error while receiving daemon response. Status = ' &#0124; &#0124; retval );
    end if;
    dbms_pipe.unpack_message( result );
    if result <> 'done' then
    raise_application_error( -20012,
    'maildaemon: error code returned from daemon other than done' );
    end if;
    dbms_pipe.unpack_message( cmdcode );
    if cmdcode <> 0 then
    raise_application_error( -20013,
    'maildaemon: error code returned from daemon ' &#0124; &#0124; cmdcode );
    end if;
    return cmdcode;
    end email_msg1;
    function email_msg2( emailaddr in varchar2, userid in varchar2, timestamp in varchar2,
    timeout number default 10 ) return number is
    retval number;
    result varchar2(20);
    cmdcode number;
    pipenm varchar2(30);
    begin
    pipenm := dbms_pipe.unique_session_name;
    dbms_pipe.pack_message( 'MSG2' );
    dbms_pipe.pack_message( pipenm );
    dbms_pipe.pack_message( em ailaddr );
    dbms_pipe.pack_message( userid );
    dbms_pipe.pack_message( timestamp );
    retval := dbms_pipe.send_message( 'maildaemon', timeout );
    if retval <> 0 then
    raise_application_error( -20010,
    'maildaemon: error while sending email. Status = ' &#0124; &#0124; retval );
    end if;
    retval := dbms_pipe.receive_message( pipenm, timeout );
    if retval <> 0 then
    raise_application_error( -20011,
    'maildaemon: error while receiving daemon response. Status = ' &#0124; &#0124; retval );
    end if;
    dbms_pipe.unpack_message( result );
    if result <> 'done' then
    raise_application_error( -20012,
    'maildaemon: error code returned from daemon other than done' );
    end if;
    dbms_pipe.unpack_message( cmdcode );
    if cmdcode <> 0 then
    raise_application_error( -20013,
    'maildaemon: error code returned from daemon ' &#0124; &#0124; cmdcode );
    end if;
    return cmdcode;
    end email_msg2;
    end maildaemon;
    maildaemon.pc
    * file: maildaemon.pc
    * last modified: 10/15/98
    * This source code is written for the UNIX environment to allow PL/SQL
    * to generate e-mail. Please note, the following code might not work on
    * your system due to configurations of the operating system or your
    * environment. Please consult your systems administrator for more
    * information on specifics.
    * Variables to be set prior to building:
    * mailhost: the mail application to generate email queuing. Default is
    * "/usr/lib/sendmail".
    * mailswitch: the mail application switches to pass to $mailhost. Default
    * is "-t".
    * userpass: the username/password to connect to the database. Default is
    * "scott/tiger"
    * logfile: the logfile to write system messages to.
    * Functions to be modified:
    * main( ): will need to modify the message handling portion to handle the
    * messages from the maildaemon package (PL/SQL). The changes that need
    * to be made are in the else if( ... ) portion with handling MSG1 and
    * MSG2.
    * msg1( ): this is just a stub sample. Replace this with appropriate code
    * and change the call in main( ).
    * msg2( ): this is just a stub sample. Replace this with appropriate code
    * and change the call in main( ).
    * System include files
    #include <stdio.h>
    #include <string.h>
    EXEC SQL INCLUDE sqlca;
    * Global variable declaration
    EXEC SQL BEGIN DECLARE SECTION;
    char *mailhost = "/usr/lib/sendmail";
    /* the mail host application to gen email requests */
    char *mailswitch = "-t";
    /* switches to pass to $mailhost */
    char *userpass = "scott/tiger";
    /* userid/password to connect to the database as */
    char *logfile = "maildaemon.log";
    /* log file to write messages to */
    FILE *loghnd = NULL;
    /* file pointer to log file */
    int retval;
    /* return value for DBMS_PIPE send */
    int calval;
    /* return value set from DBMS_PIPE receive */
    varchar pipeid[ 30 ];
    /* return pipe identifier */
    char filename[ 128 ];
    /* filename to use for email */
    varchar command[ 20 ];
    /* system command received from DBMS_PIPE receive */
    char syscommand[ 2000 ];
    /* hold system command for generating email request */
    varchar emailaddr[ 256 ];
    /* hold the email address for sending message to */
    int auditing= 0;
    /* set whether auditing is to be done */
    varchar string1[ 256 ];
    /* hold string 1 passed from server */
    varchar string2[ 256 ];
    /* hold string 2 passed from server */
    EXEC SQL END DECLARE SECTION;
    * Function definition
    * conerr( )
    * handle connection error
    void conerr( )
    char msgbuf[ 512 ]; /* message buffer */
    int msglen; /* message buffer space used */
    int maxmsglen; /* maximum message length */
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    sqlglm( msgbuf, &maxmsglen, &msglen );
    fprintf( loghnd, "maildaemon: error during connect to database\n" );
    fprintf( loghnd, "error reported: %.*s\n", msglen, msgbuf );
    fprintf( loghnd, "maildaemon: aborting...\n" );
    exit( 1 );
    } /* end conerr( ) */
    * sqlerr( )
    * handle general SQL error
    * does not cause maildaemon to abort
    void sqlerr( )
    char msgbuf[ 512 ]; /* message buffer */
    int msglen; /* message buffer space used */
    int maxmsglen; /* maximum message length */
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    sqlglm( msgbuf, &maxmsglen, &msglen );
    fprintf( loghnd, "maildaemon: error during processing\n" );
    fprintf( loghnd, "error reported: %.*s\n", msglen, msgbuf );
    fprintf( loghnd, "maildaemon: continuing...\n" );
    } /* end sqlerr( ) */
    * msg1( )
    * stub function example 1 for sending an email.
    int msg1( )
    EXEC SQL BEGIN DECLARE SECTION;
    int retcode = 0; /* return code */
    long msgid; /* unique message id */
    FILE msghnd = NULL; / file handle to write email file */
    EXEC SQL END DECLARE SECTION;
    if( emailaddr.len == 0 )
    { /* null address passed */
    fprintf( loghnd, "maildaemon: null address specified to msg1( )\n" );
    retcode= 999;
    return( retcode );
    } /* end if */
    /* get the next sequence number for uniqueness */
    EXEC SQL WHENEVER SQLERROR GOTO sqlerror1;
    EXEC SQL SELECT emailmsgseq.nextval INTO :msgid FROM dual;
    /* generate the filename so it is unique and open the file */
    sprintf( filename, "emailmsg.txt.%ld", msgid );
    msghnd= fopen( filename, "w" );
    if( msghnd == NULL )
    { /* there was an error opening the output file */
    retcode= 1;
    if( auditing )
    { /* set audit trail */
    EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg1', 'maildaemon: status code of: ' &#0124; &#0124; :retcode );
    EXEC SQL COMMIT;
    } /* end if */
    return( retcode );
    } /* end if */
    /* generate email */
    fprintf( msghnd, "To: %s\n", emailaddr.arr );
    fprintf( msghnd, "Subject: msg1 message type\n\n" );
    fprintf( msghnd, "\tmsg1 message type was called for emailing\n" );
    fprintf( msghnd, "\ngenerated by maildaemon\n" );
    /* close the file */
    fclose( msghnd );
    /* create the command line and send the message */
    sprintf( syscommand, "%s %s < %s", mailhost, mailswitch, filename );
    retcode= system( syscommand );
    /* remove the temporary file */
    unlink( filename );
    if( auditing )
    { /* set audit trail */
    EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg1', 'maildaemon: status code of: ' &#0124; &#0124; :retcode );
    EXEC SQL COMMIT;
    } /* end if */
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    return( retcode );
    sqlerror1:
    retcode= 1;
    sqlerr( );
    return( retcode );
    } /* end msg1( ) */
    * msg2( )
    * stub function example 2 for sending an email.
    int msg2( )
    EXEC SQL BEGIN DECLARE SECTION;
    int retcode = 0; /* return code */
    long msgid; /* unique message id */
    FILE msghnd = NULL; / file handle to write email file */
    EXEC SQL END DECLARE SECTION;
    if( emailaddr.len == 0 )
    { /* null address passed */
    fprintf( loghnd, "maildaemon: null address specified to msg2( )\n" );
    retcode= 999;
    return( retcode );
    } /* end if */
    /* get the next sequence number for uniqueness */
    EXEC SQL WHENEVER SQLERROR GOTO sqlerror2;
    EXEC SQL SELECT emailmsgseq.nextval INTO :msgid FROM dual;
    /* generate the filename so it is unique and open the file */
    sprintf( filename, "emailmsg.txt.%ld", msgid );
    msghnd= fopen( filename, "w" );
    if( msghnd == NULL )
    { /* there was an error opening the output file */
    retcode= 1;
    if( auditing )
    { /* set audit trail */
    EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg2', 'maild aemon: status code of: ' &#0124; &#0124; :retcode );
    EXEC SQL COMMIT;
    } /* end if */
    return( retcode );
    } /* end if */
    /* generate email */
    fprintf( msghnd, "To: %s\n", emailaddr.arr );
    fprintf( msghnd, "Subject: msg2 message type\n\n" );
    fprintf( msghnd, "\tmsg2 message type was called for emailing\n" );
    fprintf( msghnd, "Userid of user: %s\n", string1.arr );
    fprintf( msghnd, "Timestamp of transaction: %s\n", string2.arr );
    fprintf( msghnd, "\ngenerated by maildaemon\n" );
    /* close the file */
    fclose( msghnd );
    /* create the command line and send the message */
    sprintf( syscommand, "%s %s < %s", mailhost, mailswitch, filename );
    retcode= system( syscommand );
    /* remove the temporary file */
    unlink( filename );
    if( auditing )
    { /* set audit trail */
    EXEC SQL INSERT INTO emailaudit VALUES( :msgid, 'msg2', 'maildaemon: status code of: ' &#0124; &#0124; :retcode );
    EXEC SQL COMMIT;
    } /* end if */
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    return( retcode );
    sqlerror2:
    retcode= 1;
    sqlerr( );
    return( retcode );
    } /* end msg2( ) */
    void main( )
    /* open file and verify logging */
    loghnd = fopen( logfile, "a" );
    if( loghnd == NULL )
    { /* the logfile was unable to be opened */
    printf( "maildaemon: error opening logfile (%s)\n", logfile );
    exit( 1 );
    } /* end if */
    /* connect to the database */
    EXEC SQL WHENEVER SQLERROR DO conerr( );
    EXEC SQL CONNECT :userpass;
    fprintf( loghnd, "maildaemon: connected.\n" );
    /* loop until stop command given */
    EXEC SQL WHENEVER SQLERROR DO sqlerr();
    while( 1 == 1 )
    { /* inifinite loop */
    /* reset values */
    emailaddr.len = 0;
    string1.len= 0;
    string2.len = 0;
    /* get type of message from 'server' */
    EXEC SQL EXECUTE
    begin
    :calval := dbms_pipe.receive_message( 'maildaemon' );
    if :calval = 0 then
    dbms_pipe.unpack_message( :command );
    end if;
    end;
    END-EXEC;
    if( calval == 0 )
    { /* message received. determine the command */
    command.arr[ command.len ]= '\0';
    if( !strcmp(( char * ) command.arr, "STOP" ))
    { /* 'server' specified to stop */
    fprintf( loghnd, "maildaemon: shutdown in progress...\n" );
    break;
    } /* end if */
    else if( !strcmp(( char * ) command.arr, "AUDIT" ))
    { /* set auditing on */
    fprintf( loghnd, "maildaemon: enable auditing...\n" );
    auditing= 1;
    } /* end else if */
    else if( !strcmp(( char * ) command.arr, "NOAUDIT" ))
    { /* set auditing off */
    fprintf( loghnd, "maildaemon: disable auditing...\n" );
    auditing= 0;
    } /* end else if */
    else if( !strcmp(( char * ) command.arr, "MSG1" ))
    { /* call for message 1 */
    /* retrieve the message */
    EXEC SQL EXECUTE
    begin
    dbms_pipe.unpack_message( :pipeid );
    dbms_pipe.unpack_message( :emailaddr );
    end;
    END-EXEC;
    /* copy into host variable */
    emailaddr.arr[ emailaddr.len ]= '\0';
    /* generate the email */
    retval= msg1( );
    /* reply with response */
    EXEC SQL EXECUTE
    begin
    dbms_pipe.pack_message( 'done' );
    dbms_pipe.pack_message( :retval );
    :retval := dbms_pipe.send_message( :pipeid );
    end;
    END-EXEC;
    } /* end else if */
    else if( !strcmp(( char * ) command.arr, "MSG2" ))
    { /* call for message 2 */
    /* retrieve the message */
    EXEC SQL EXECUTE
    begin
    dbms_pipe.unpack_message( :pipeid );
    dbms_pipe.unpack_message( :emailaddr );
    dbms_pipe.unpack_message( :string1 );
    dbms_pipe.unpack_message( :string2 );
    end;
    END-EXEC;
    /* copy into host variable */
    emailaddr.arr[ emailaddr.len ]= '\0';
    string1.arr[ string1.len ]= '\0';
    string2.arr[ string2.len ]= '\0';
    /* generate the email */
    retval= msg2( );
    /* reply with response */
    EXEC SQL EXECUTE
    begin
    dbms_pipe.pack_message( 'done' );
    dbms_pipe.pack_message( :retval );
    :retval := dbms_pipe.send_message( :pipeid );
    end;
    END-EXEC;
    } /* end else if */
    else
    { /* invalid command received */
    fprintf( loghnd, "maildaemon: illegal command... ignoring request.\n" );
    } /* end else */
    } /* end if */
    else
    { /* time out error occured */
    fprintf( loghnd, "maildaemon: timeout or other error while waiting for signal request.\n" );
    } /* end else */
    } /* end while */
    /* clean up and exit */
    EXEC SQL COMMIT WORK RELEASE;
    fprintf( loghnd, "maildaemon: shutdown.\n" );
    fclose( loghnd );
    } /* end main( ) */
    null

  • SCCM's OSD (not MDT): Task sequence can be tweaked into imaging Windows+VHD Native Boot, but can it go all the way and deploy?

    Hello All,
    What I am trying to do is use SCCM's own OSD Task Sequence / Windows PE to deploy an operating system that boots using VHD Native Boot. (C:\ = VHD File  with Windows, D:\ Data drive with BCDBoot).
    MDT 2013 Can do it I've been told, but I am putting off MDT until Windows 10 if I can get away with it.
    TechNet VHD Native Boot on Windows 8.1:
    http://technet.microsoft.com/en-us/library/hh825689.aspx
    http://technet.microsoft.com/en-us/library/hh825691.aspx
    The good news is it is working up to the "Apply Operating System" phase, but that apply operating system phase is reported as an error even though it completes successfully. It can't clean up the SMSTS folder it's looking for on the C:\ because
    it's been moved over to the D:\ by a diskpart script. We are left with the deployment working but requiring IT staff to deal with the OOBE Personalization wizard and adding each PC to the domain manually. From that point on the SCCM client can do the rest,
    which works for US before we upgrade to Windows 10 with utilizing MDT.
    I am not talking about deploying an OS to a VHD file and putting that file on a network share i.e.
    http://blogs.technet.com/b/configurationmgr/archive/2013/10/31/new-in-system-center-2012-r2-configuration-manager-deploying-an-operating-system-to-a-virtual-hard-drive-vhd.aspx
    I reported getting the diskpart script working first here:
    https://social.technet.microsoft.com/Forums/en-US/ff124f09-1d2e-4fc4-a5b6-63b683f3d208/native-vhd-boot-deployments-from-sccm-2012-r2?forum=configmanagerosd
    Here it is:
    rem work around any USB disk left in or any CDROM detected by PE as drive D
    select volume D
    assign letter=F noerr
    rem select the formatted volume and reassign it's drive letter
    select volume C
    assign letter=D
    rem create and setup VHD file
    create vdisk file=D:\DEV_WIN81.VHD maximum=250000 type=expandable
    select vdisk file=D:\DEV_WIN81.VHD
    attach vdisk
    create partition primary
    active
    format FS=NTFS quick label="Developer Win81 VHD"
    assign letter=C
    rescan
    exit
    (type=fixed is better for performance - we'll surely activate when we have dual boot 8.1 / Windows 10 later for the Win10 VHD's)
    The Task Sequence looks like this:
    I'd like to add a few more steps after apply operating system if I can, but I have to resolve this error with "Apply Operating system before I can go further."
    Question:
    Can an OSD guru tell me if there are any Task Sequence Variables we could throw at this to make the Apply Operating System sequence complete without error so we can do all SCCM OSD Deployment steps?
    If we can, then someone (not me) gets to add a new TechNet blog post about this being possible. It's my understanding presently that only MDT can support deploying WIM files into VHDs on Workstations, that boot them.
    The install image was created using dism to convert a VHD from a Hyper-V host into a wim. I know I'm meant to use SCCM to capture it, but I don't think that's causing this problem because when we are deploying from that image to a HDD without VHD we don't
    get any issues.
    I'm only allowed enough characters to paste the tail end of the apply operating system phase only:
    <![LOG[Execution engine result code: Success (0)]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:929">
    <![LOG[Cleaning Up.]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:675">
    <![LOG[Removing Authenticator]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:686">
    <![LOG[shKey.DeleteValue( c_szRegValue_SecurityToken ), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\ccmutillib\ccmutillib.cpp,1660)]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="ccmutillib.cpp:1660">
    <![LOG[Cleaning up task sequence folder]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:2329">
    <![LOG[Unable to delete file C:\_SMSTaskSequence\TSEnv.dat (0x80070005). Continuing.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="ccmfile.cpp:1056">
    <![LOG[hr, HRESULT=80070091 (e:\nts_sccm_release\sms\framework\core\ccmcore\ccmfile.cpp,1218)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="ccmfile.cpp:1218">
    <![LOG[Failed to delete directory 'C:\_SMSTaskSequence']LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="ccmfile.cpp:1218">
    <![LOG[(dwRet = ::SetNamedSecurityInfoW ((WCHAR*) pszObjectName, objectType, OWNER_SECURITY_INFORMATION, pOwnerSID, NULL, NULL, NULL)) == ERROR_SUCCESS, HRESULT=80070005 (e:\qfe\nts\sms\framework\tscore\utils.cpp,6675)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:6675">
    <![LOG[SetNamedSecurityInfo() failed.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6675">
    <![LOG[SetObjectOwner() failed. 0x80070005.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6687">
    <![LOG[SetObjectOwner (szFName, SE_FILE_OBJECT, c_szAdministrators), HRESULT=80070005 (e:\qfe\nts\sms\framework\tscore\utils.cpp,6772)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:6772">
    <![LOG[RemoveFile() failed for C:\_SMSTaskSequence\TSEnv.dat. 0x80070005.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6816">
    <![LOG[RemoveDirectoryW failed (0x80070091) for C:\_SMSTaskSequence]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:6900">
    <![LOG[Deleting volume ID file C:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca ...]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="resolvesource.cpp:506">
    <![LOG[DeleteFileW(sVolumeIDFile.c_str()), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\resolvesource.cpp,508)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="resolvesource.cpp:508">
    <![LOG[Deleting volume ID file D:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca ...]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="resolvesource.cpp:506">
    <![LOG[DeleteFileW(sVolumeIDFile.c_str()), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\resolvesource.cpp,508)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="resolvesource.cpp:508">
    <![LOG[Successfully unregistered Task Sequencing Environment COM Interface.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="environmentlib.cpp:910">
    <![LOG[Command line for extension .exe is "%1" %*]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="commandline.cpp:228">
    <![LOG[Set command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="commandline.cpp:731">
    <![LOG[Executing command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="commandline.cpp:827">
    <![LOG[==========[ TsProgressUI started in process 8012 ]==========]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:330">
    <![LOG[Command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="0" thread="8040" file="winmain.cpp:332">
    <![LOG[Unregistering COM classes]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:204">
    <![LOG[Unregistering class objects]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:495">
    <![LOG[Shutdown complete.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:512">
    <![LOG[Process completed with exit code 0]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="commandline.cpp:1123">
    <![LOG[Successfully unregistered TS Progress UI.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:2903">
    <![LOG[Sending success status message]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:784">
    <![LOG[MP server http://OUR-SCCM.ourcompany.com. Ports 80,443. CRL=false.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:5881">
    <![LOG[Setting authenticator]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:5903">
    <![LOG[Set authenticator in transport]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:7734">
    <![LOG[Sending StatusMessage]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="libsmsmessaging.cpp:4023">
    <![LOG[Setting message signatures.]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:1295">
    <![LOG[Setting the authenticator.]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:1325">
    <![LOG[CLibSMSMessageWinHttpTransport::Send: URL: OUR-SCCM.ourcompany.com:80 CCM_POST /ccm_system/request]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="libsmsmessaging.cpp:8604">
    <![LOG[Request was successful.]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:8939">
    <![LOG[::RegQueryValueExW(hSubKey, szReg, NULL, NULL, NULL, &dwSize), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\utils.cpp,811)]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:811">
    <![LOG[RegQueryValueExW is unsuccessful for Software\Microsoft\SMS\Task Sequence, SMSTSEndProgram]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:811">
    <![LOG[GetTsRegValue() is unsuccessful. 0x80070002.]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:842">
    <![LOG[End program: ]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:805">
    <![LOG[Finalize logging request ignored from process 856]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tslogging.cpp:1737">
    <![LOG[Process completed with exit code 0]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="commandline.cpp:1123">
    <![LOG[Task Sequence Manager returned code 0x00000000]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="tsmediawizardcontrol.cpp:2180">
    <![LOG[Exiting with return code 0x00000000]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="tsmbootstrap.cpp:1238">
    <![LOG[Execution complete.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="bootshell.cpp:693">
    <![LOG[hMap != 0, HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentscope.cpp,493)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentscope.cpp:493">
    <![LOG[m_pGlobalScope->open(), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentlib.cpp,335)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentlib.cpp:335">
    <![LOG[this->open(), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentlib.cpp,553)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentlib.cpp:553">
    <![LOG[::RegQueryValueExW(hSubKey, szReg, NULL, NULL, NULL, &dwSize), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\utils.cpp,811)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="utils.cpp:811">
    <![LOG[RegQueryValueExW is unsuccessful for Software\Microsoft\SMS\Task Sequence, SMSTSEndProgram]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="2" thread="760" file="utils.cpp:811">
    <![LOG[GetTsRegValue() is unsuccessful. 0x80070002.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="2" thread="760" file="utils.cpp:842">
    <![LOG[End program: ]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="bootshell.cpp:725">
    <![LOG[Finalizing logging from process 752]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1741">
    <![LOG[Finalizing logs to root of first available drive]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1583">
    <![LOG[Successfully finalized logs to D:\SMSTSLog]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1640">
    <![LOG[Cleaning up task sequencing logging configuration.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="tslogging.cpp:584">
    MCSE,MCNE,SCO,Sair Linux/GNU, Open source-enthusiast.

    I have already set it to FALSE. The solution to this will be some different OSD Task Sequence variables or a statement that it can't be made to work.
    I believe that setting defines what volume will be the BOOT / OS Drive Letter. Some people were getting D:\WINDOWS as their boot volume drive letter. Setting to true means whatever was the System Drive letter (usually C) in the image will remain as such
    after it was was applied, setting it to false will make the system have the same drive letter arrangement as what Windows PE detects. In my case I set it to false so that no matter what the new VHD file setup as drive C will be the system drive. I'll set it
    to true on the next deployment but I expect there to be no difference, because in both PE and the WIM the installation volume is the C:.
    We are talking about the DRIVE LETTERS Windows PE SCCM OSD is using for it's temporary files - and how we can manipulate these locations using OSD Task Sequence Variables, so the Apply OS doesn't try and clean up files that are not there
    - and fail with an error if you have added a VHD Native Boot volume.
    This OSDPreserveDriveLetter setting isn't having any effect on the problem here.
    I believe that Format step is setting some task variables used by the OSD Deployment process - telling it where to store it's temporary files. However between the Format Disks and Apply operating system steps the OSD Task Sequence isn't picking up on the
    fact what was the C:\ after Format HDD step is now the D:\ .
    A developer who has an understanding of how the OSD boot process executes in order would be able to see what's going on here.
    MCSE,MCNE,SCO,Sair Linux/GNU, Open source-enthusiast.

  • MFBF and Alternative Routing Sequence

    Hi;
    We are using REM in PP.We confirm via MFBF. And we create routings via ca01. I want to use alternative routing sequence during confirmation.
    What should I do? or Is it possible for REM?
    Thanks.

    Hi;
    Thanks for your answers. I dont want to create new production versions. But routing informations are change.
    Ex: I have two machines in a production line, lets say it A and B. This line has a work center code in SAP ( lets says Line1)
    When I use only machine A I produce 100 pieces in 5 minutes with 2 worker. But when I use A & B at the same time I produce 100 pieces in 3 minutes with 3 worker.
    Machine A and B are connected to the same conveyor belt, so I put the pieces in the same palette. And during confirmation I use Line1 as workcenter.
    What should I do to post the exact activities ?
    Thanks for your information.

  • T codes for production reports in REM

    Dear All,
    What are the std. t code for production reports in REM like daily production report,monthly production reports,shift wise production,bom reports etc.
    Thanx in advance
    rg
    Tushar

    Hi Tushar,
    Following are the standard reporting T-Codes REM
    MCP9 - SFIS: Select Run Schedule
    MCRM - Reporting Point Statistics: Selection
    MCRP - Material Consumption Analysis: Repetitive Manufacturing
    MCRK - Product Cost Analysis: Repetitive Manufacturing
    MCP6 - Goods Receipt Analysis: Repetitive Manufacturing
    MF26 - Display Reporting Point Quantity
    MF51 - Print Production Schedule
    MF52 - Display Master Production Schedule
    MF57 - Coll. Display of Planning Screens
    MF60 - Pull List 4.5
    LAS3 - Display Sequence Schedule
    If you won't find your requirement in these,you need to develop new one accordingly taking the technical consultants help.
    Regards.

  • What are the advantages of using SAP PP-REM?????

    Hi,
    Can anybody tell me the advantage of using Repetitive Manufacturing. How it will help a particular industry if implemented.
    I want to know advantages involved in
    Planning (MRP, Capacity),  Product Cost Controlling,
    WIP calculation, variance Calculation
    if SAP PP-REM is implemented
    Pavan

    Hello Friend ,
    PP REM has advantages following advantages-
    Purpose
    This component can be used for production planning and control in a repetitive manufacturing environment- ie the same product is manufactured repeatedly on the same production line.
    You can use repetitive manufacturing as either make-to-stock REM or make-to-order REM such as in the automotive industry, for example.
    The goals of repetitive manufacturing are the following:
    Creation and revision of production quantities on a period and quantity basis (reduction in individual lot and order-specific processing).
    Reduction in the production control effort and simpler backflushing tools(with the option of using the full scope of the PP functionality).
    Implementation considerations
    You can implement Repetitive Manufacturing if the following is true of your production process:
    You produce the same or similar products over a lengthy period of time.
    You do not manufacture in individually defined lots. Instead, a total quantity is produced over a certain period at a certain rate per part-period.
    Your products always follow the same sequence through the machines and work centers in production.
    Routings tend to be simple and do not vary much.
    Hope this info helps u. Award points if benefitted.
    Hemant

  • Logic Sequencing vs.Performer

    I'm using Logic Express 7 at present, and I still prefer to sequence songs and not going to audio until I have it sequenced to my satisfaction. I go way back to the old C-Lab Creator/Notator days, and I miss some of the features of earlier Logic versions, mainly note overlap correction.
    Can someone recommend the best way to go as far as sequencing features? Should I remain with Logic Express, move up to the full Logic, or heaven forbid, look into PERFORMER?
    Thanks much,
    CMILLE9334

    Hi Swathi:
    In the strict order, your question is more a "concept" than a  technical issue, but, I consider useful give you this remarks:
    1. The scheduling process en SAP could be in both "solutions" I  mean, if you are using a Discrete Manufacturing with Production Orders, you can use a schedule tools to get your production sequencing, but if you are running in a REM (Repetitive Manufacturing Scenario) then, you can use the sequencing tools like Planning Table bye sequencing.
    2. Into SAP there are at least this 2 ways to make a scheduling, even, if you go to the transaction code MF50 you can get  at the Scheduling Tab the next options:
    Detailed Planning
    Rate based planning
    Sequencing
    3. The deliverable in both cases, are: sku, machine (or work center) quantity, start & finish date, at least., just to name a few.
    4. Sequencing is a set of at least one order firmed with dates, Scheduling is the arrangement for at least one production order.
    I hope, my comments give you some clarity about your doubt.
    Please let me know.
    Regards
    O Perea

  • Sequences in routing -reg

    Hi,
    what is the purpose of sequences in routing ?
    normally all the operations list we can put and create routing ?
    if we use sequences will the operations of all the sequences taken in to account while doing standard cost ?
    are these sequences are of reporting purpose or any thing else
    can any one clarify ?
    regards,
    Madhu Kiran

    Hi,
    we use REM , no order reference
    our routing have sequence 0 to sequence 11 etc.. based on operations , these are not parallel sequences
    sequenec 0 is mainline operations
    sequenec 1 is some sub assembly operations etc...
    my doubt is when cost is run whether it will take these other sequences other than 0 also in to consideration ?
    with out giving the sequences if all operations are put in to routing what will be the issue ?
    one doubt with this is
    sequence 2 is handling time 2 min  and when we assign return operation to this sequence as operation 30 of main line where in that operation we give time as 1 min suppose
    whether system takes 2+1 = 3 mins time ? or 1min only from mail line sequence ?
    pl clarify
    regards,
    madhu kiran

  • Reporting points - REM

    Hai PP Experts!!
               I created reporting points in rate routing by assiging the control key with milestone confirmation.But in the MFBF screen during reporting point selection system shows error "reporting points are not maintained in PCC" . I also maintained suitable REM Profile (ie., i activated RP in the profile)
               So pls throw some light on creation of reporting points, required customization and sequence of steps....
    Advace thanks.............
    Ganeshraja

    Dear Mr.Ganesh raja,
    Check in customizing-Control data for REM profile under control data 1,whether GI backflush at GR posting,if it's so deselect that and select RP backflush,then only the system allows you to use RP backflush.
    You have to assign the same REM profile for the material which you want to use RP backflush.
    And also in MFBF,plz include a tick mark in RP backflush field.
    <b>If useful reward points.</b>
    Regards
    Mangal

  • Sequencing in Planning Table

    Hi Gurus,
    Can any one throw light on Sequencing in Planning Table (MF50)?
    Where do we use this?
    What are pre requistites?
    How is useful?
    As anyone made a scenario on this.
    Please reply.
    Srini

    Dear Srini,
    Can any one throw light on Sequencing in Planning Table (MF50)?
    Where do we use this?
    What are pre requistites?
    How is useful?
    1) MF50 is Mostly  used in REM process
    2) say for example you have two PV's for one material in REM
    3) Demand given for this material is 100 Nos
    4)  after running MRP, system will pick one PV for 100 Nos
    5) Now, we can go in MF50, & we can split the qty 100 Nos between two PV's
    PV 1 - 50 Nos
    PV 2 - 50 Nos
    6) Now you can see in MD04, for this material will be splitted ( I.e two plan orders with 50 Each Nos )
    7 ) on the whole, MF50 is used to Split Demand Quantities between PV's
    Your old & good Forum member
    so suggest you to close all your previous threads
    Plz don't misundersatnd
    Regards
    Madhu Kumar

  • REM Planning table - Capacity requirements and Levelling.

    Hi i have few queries in REM planning table.
    In REM planning table MF50 my selection is based on entire plant. Here in total capacity data tab for any particular plant it will show the list of work centers which are maintained in particular plant to know the capacity details as per our requirement.
    1.When i select any WC line and click on change capacity display from CRP it is giving break up with required and available capacity hours for any particular WC available time is assume 22.5 hrs per day which is given in operating time in capacity header in WC but in MF50 it is showing 23hrs.I have defined shift sequence in OP4A and assigned in capacity header grouping which have 3 shift with 30 mins break in each shift which results in 22.5 hrs working for a day so in shift sequence and operating time it is mentioned as 22.5 hrs is the time available for day but in MF50 it is showing 23 hrs available for day?
    2.What is due% in MF50 total capacity data for any work center and how required time would be calculated?
    Appreciate if any one has any example.
    Cheers
    KK

    Hi bump for any suggestions?
    i have noticed one thing the time available is a round up value actual time available as per capacity header is 22.5 but in MF50 it is showing as 23..if i change to 21.5 then it is showing 22hrs available per day is this the standard behaviour?
    can anyone tell me how the required time is calculated?
    Cheers
    KK

  • Sequences are missing

    Finaly I got Oracle Model but there is no Sequences and trigers were crerated for MS SQL Identity columns.
    What do I do wrong ?

    You may have run into
    Bug No: 2649444
    Sequences and triggers are in the Create.sql file, but may not be correct:
    The Create.sql file is created by selecting the 'Action' menu item then 'Generate Migration Scripts'.
    Old code:
    REM
    REM Message : Created Sequence: sa.S_13_1_ADS
    REM User : system
    CREATE SEQUENCE sa.S_13_1_ADS START WITH 1
    REM
    REM Message : Created Sequence Trigger: sa.TR_S_13_1_ADS
    REM User : system
    CREATE TRIGGER sa.TR_S_13_1_ADS BEFORE INSERT ON sa.ADS FOR EACH ROW
    BEGIN SELECT sa.S_13_1_ADS.nextval INTO :new.ID FROM dual; END;
    Should be something like...
    CREATE TRIGGER sa.TR_S_13_1_ADS BEFORE INSERT ON sa.ADS FOR EACH ROW
    BEGIN SELECT sa.S_13_1_ADS.nextval INTO
    omwb_emulation.globalPkg.identity FROM dual;
    :new.ID := omwb_emulation.globalPkg.identity; END;
    This bug has been fixed in code in development and will be available in 9.2.0.1.5 .
    Regards,
    Turloch

  • What is discrete manufacturing and REM?

    Hello All,
    What is discrete manufacturing and REM?
    Sincerely,
    Ketan

    Hi ketan,
    -Discrete manufaturing is  Lot based production system, Porduction order is cretaed for Every Lot and order based confirmation & Cost control is carried out.
    -Repetative manufacturing is period based production system, production order concept will not work, so period based confirmation & cost control is carried out.
    Below points helps to underdstand the difference between them.
    - A typical characteristic of discrete manufacturing is the frequent switching from one manufactured product to another. The products are typically manufactured in individually defined lots, the sequence of work centers through production varying for each one of these. Costs are calculated on the basis of orders and individual lots.
    - In Repetitive Manufacturing, products remain unchanged over a longer period and are not manufactured in individually defined lots. Instead, a total quantity is produced over a certain period at a certain rate.
    - Discrete manufacturing typically involves varying the sequence of work centers through which the products can pass during production. The order of work centers is determined in routings, which can often be very complex. There can be waiting times between the individual work centers. Also, semi-finished products are frequently placed in interim storage prior to further processing.
    - Repetitive Manufacturing, on the other hand, normally involves a relatively constant flow on production lines. Semi-finished products are usually processed further immediately without being put in interim storage. Routings tend to be relatively simple.
    I hope u have understood if yes please reward and close the thread.
    Regards
    Pardeep

  • REM in which industries?

    Dear Gurus,
    Can any one suggest what type industries can go for REM?
    I have seen it in electronics, PC manufacturing, cement industries.
    Any other industries where it can be used? Or is really being used.
    Thanks for your replies in advance.
    Srini

    In beveragies industry can also implement REM and Bulb manfucturing companies.
    You can implement Repetitive Manufacturing if the following is true of your production process:
    You produce the same or similar products over a lengthy period of time.
    You do not manufacture in individually defined lots. Instead, a total quantity is produced over a certain period at a certain rate per part-period.
    Your products always follow the same sequence through the machines and work centers in production.
    Routings tend to be simple and do not vary much.
    Regards,
    Rambabu.

Maybe you are looking for

  • What is 'Growl' and why do I need it?

    My system keeps telling me to install GROWL. What is it and why do I need it? Harold

  • Multiple browser or viewer windows

    I am editing a project in the timeline with A-b roll. When viewing the track and reduce the opacity on one track at a certain point, I no longer can see the other track unless I restore the opacity. What I am getting at is that the time it takes to g

  • Relinking objects in a timeline

    I set up a couple of projects but want to reference them in a different folder on my computer. Can I do that without having to redo the editing I already did on the timeline?

  • Bizarre browser crashes

    Safari and Firefox keep crashing whenever I got onto the BBC Radio 1 site; specifically the chart section. So far this is the only site I have had a problem with. Under Tiger (10.4.11) both Safari and Firefox have no such issues, and neither does Fir

  • Type of JDBC Drivers

    I use two methods to connect to oracle database. 1. through a JNDI datasouce. that is connect program connect to database through a app/web server. 2. directly from program through a OracleDataSource. please tell me what type of driver these two are?