Gaps in Scheduling  - PPDS

Hi All,
The issue concerned is gaps appear when rescheduling in Planning board.The operation one before the last operation in an order is shorter in duration than the last operation and when the orders are grouped for the same operation in the resource, the gaps occur in rescheduling.
Tried the reduce gaps in scheduling schequence, but no joy.The strategy used is backward scheduling.Trying to close gaps between the orders for the same operation in that specific resource.
Any help much appreciated.
Regards
Venkat

Hi Venkat,
gaps occur whenever there is a constraint which prevents the operations to be one after the other on one resource. These constraints can be order internal relationships, pegging relationships, capacity constraints, etc.
A schedule without gaps is only possible if all these constraints can be fulfilled without preventing the gap-less sequence on the resource.
If a gap-less sequence on one resource is a business constraint which must be fulfilled then you have to weaken the other constraints which prevent the gap-less sequence. The first candidate for this is usually the finiteness of the other resources: Usually in a scenario like yours it is probably not so important to have all resources finite but only the one resource which has this strong sequence constraint.
So, think about your scenario and your constraints and try to find out which one prevent the sequence and if you can do without it.
Best regards
Thomas

Similar Messages

  • Problem in a Interface

    Hi....
    I have an Interface which actually downloads the "MATERIAL MASTER DATA" from SAP to a flat file.
    The current o/p of the interface looks like:
    MAT NO. MAT DESCRIPTION Subst. Mat no......
    Now they askd me to add 3 more fields to that existing program.
    those are:
    1.OUTSERT No.
    2.MEDICATION PART No.
    3.AWP PRICE.
    So I have written 2 FORMS to retrieve these things.
    1st FORM is for getting OUTSERT and MED. PART No.
    2nd FORM for AWP PRICE.
    (1) OUTSERT: This we get from STPO-IDNRK field. similarly
    (2) MED. PART NO.: This also is from STPO-IDNRK field.
    The method I used for getting these two things is:
    Basically the OUTSERT and MED PART NO. is nothing but the BOM COMPONENTS [STPO-IDNRK].
    There is a simple difference between these two things:
    If the BOM Component contains 'O' or 'OP' in that value then it is taken as OUTSERT.
    For Eg: If STPO-IDNRK value is 73543O or 98723OP then it is OUTSERT.
    and If STPO-IDNRK value is 65489M or 68785MP then it is MED. PART NO.
    and we have two conditions to be satisfied to calculate these two things,
    1.The Material Group[MARA-MATKL] should be 'OST' or 'OSP'.
    means MARA-MATKL = 'OST' or 'OSP'.
    2.The Alternative BOM Text[STKO-STKTX] should be 'UNRESTRICTED'.
    means STKO-STKTX = 'UNRESTRICTED'.
    Coming to AWP PRICE, it should be get from field RATE[KONP-KBETR].
    I have used tables STKO, STPO to get Outsert and Med. Part No and A505, KONP for AWP Price...
    I have highlighted the part of the code which I have included in the existing program....
    But there are some problems with that code...so i'm not getting results....
    Plz look at the code and let me know wher I've gone wrong...
    Thanks much,
    The code is:
    REPORT Z02.
    Table definitions ----------------------------------------------------
    TABLES: AUSP, " Characteristic Values
    CABN, " Characteristic
    CAWN, " Characteristic values
    CAWNT, " Value Texts
    LFA1, " Vendor master (general section)
    MAKT, " Material Descriptions
    MARA, " Material Master: General Data
    MARM, " Units of Measure
    MBEW, " Material Valuation
    MVKE, " Material Master: Sales Data
    TVMST, " Materials: SD Status: Texts
    TVM3T, " Material pricing group 3: Description
    TVM5T, " Material pricing group 5: Description
    KOTD001, " Conditions: Substitution - Sample Structure
    KONDD, " Material Substitution - Data Division
    <b>mast,
    stko,
    stpo,
    a505,
    konp.</b>
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TITLE1.
    SELECT-OPTIONS: S_BWKEY FOR MBEW-BWKEY
    MEMORY ID DEFAULT_BWKEY OBLIGATORY
    No-Extension No Intervals.
    SELECTION-SCREEN END OF BLOCK B1.
    PARAMETERS:
    MATLFILE(100) LOWER CASE OBLIGATORY
    DEFAULT '/sapinterface/ebusiness/matlfile'.
    Constants ------------------------------------------------------------
    CONSTANTS:
    ZERO_DEC_3 TYPE P DECIMALS 3 VALUE 0,
    ZEROS(9) TYPE N VALUE 0,
    REC_TYPE(2) VALUE 'MM',
    DELIMETER_QUOTE VALUE '"',
    BEGIN OF DEFAULTS,
    BWTAR LIKE MBEW-BWTAR VALUE SPACE,
    VKORG LIKE MVKE-VKORG VALUE '1000',
    VTWEG LIKE MVKE-VTWEG VALUE '10',
    END OF DEFAULTS.
    constants:
    c_uncpath_material(43)
    value '/sapinterface/unconverted/zvppo102_matlfile',
    c_final_path(44)
    value '/sapinterface/ebusiness/' ,
    c_uncpath(26)
    value '/sapinterface/unconverted/' .
    Data Elements --------------------------------------------------------
    DATA: PROGNAME LIKE SY-REPID,
    PROG_START_DATE LIKE SY-DATUM,
    PROG_START_TIME LIKE SY-UZEIT,
    WRITE_COUNT TYPE I,
    OUTFILE(100),
    WK_STPRS LIKE MBEW-STPRS,
    WK_AUSP LIKE AUSP,
    WK_CABN LIKE CABN,
    WK_MARA LIKE MARA,
    WK_MARM LIKE MARM.
    DATA: BEGIN OF MATERIAL_DATA occurs 0,
    DELIMITER_START,
    REC_TYPE LIKE REC_TYPE,
    MATNR LIKE MARA-MATNR,
    MAKTX LIKE MAKT-MAKTX,
    SMATN LIKE KONDD-SMATN,
    SMATN_START LIKE KOTD001-DATAB,
    SMATN_END LIKE KOTD001-DATBI,
    VMSTA LIKE MVKE-VMSTA,
    VMSTB LIKE TVMST-VMSTB,
    LAEDA LIKE MARA-LAEDA,
    AENAM LIKE MARA-AENAM,
    VENDOR_NUM LIKE MARA-MFRNR,
    VENDOR_NM LIKE LFA1-NAME1,
    PROD_LINE_CD LIKE MVKE-MVGR5,
    PROD_LINE_DSC(20),
    DEA_SCH_ID LIKE MVKE-MVGR3,
    DEA_SCH_DSC(20),
    NORMT LIKE MARA-NORMT,
    STPRS(13),
    LOGO_DESC(30),
    PRESCRIPT_FLAG(1),
    THER_CLASS(5),
    THER_CLASS_DSC(30),
    THER_SUB_CLASS(5),
    THER_SUB_CLASS_DSC(30),
    THER_EQUIV(2),
    ITEM_PACKAGE_SIZE(10),
    ITEM_PACKAGE_TYPE(2),
    DOSAGE_FORM(3),
    DOSAGE_FORM_DSC(30),
    DOSE_ADMIN(3),
    DOSE_ADMIN_DSC(30),
    BOTTLE_SIZE(6),
    BRAND_NAME(25),
    BRAND_DISTR(20),
    BRAND_COLOR(20),
    BRAND_SHAPE(15),
    ANDA_DATE LIKE SY-DATUM,
    ANDA_NUMBER(9),
    BIO_STUDY,
    DESI_INDICATOR,
    DRUG_TERM_DT LIKE SY-DATUM,
    FDA_APPRV_DT LIKE SY-DATUM,
    ITEM_REG_NM(30),
    MARKET_DT LIKE SY-DATUM,
    PRODUCT_COLOR(20),
    PRODUCT_FLAVOR(15),
    PRODUCT_SHAPE(15),
    PRODUCT_STRENGTH(18),
    MEINS LIKE MARA-MEINS,
    BEGIN OF BASE_MEASURES,
    WEIGHT(15), "* like mara-brgew
    WT_UNIT LIKE MARA-GEWEI,
    VOLUM(15), "* like mara-volum,
    VOL_UNIT LIKE MARA-VOLEH,
    PKG_LENGTH(15), "* like mara-laeng
    PKG_WIDTH(15), "* like mara-breit
    PKG_HEIGHT(15), "* like mara-hoehe
    DIM_UNIT LIKE MARA-MEABM,
    END OF BASE_MEASURES,
    INR_CRTN_COUNT(6), "* like marm-umrez
    INR_CRTN_MEASURES LIKE MATERIAL_DATA-BASE_MEASURES,
    CASE_COUNT(6), "* like marm-umrez
    CASE_MEASURES LIKE MATERIAL_DATA-BASE_MEASURES,
    ITEM_NOTE(500),
    DELIMITER_END,
    <b>component like stpo-idnrk,
    mguide    like stpo-idnrk,
    awp       like konp-kbetr,</b>
    END OF MATERIAL_DATA.
    DATA : F_M_uncFILE(100) . " Material file(unconverted)
    DATA: W_BRM(3) Value 'BRM'.
    <b>data: str1(2) type c value 'O',
    str2(2) type c value 'OP',
    str3(2) type c value 'M',
    str4(2) type c value 'MP'.</b>
    <b>data: begin of i_material,
            matnr like mara-matnr,
            rate  like konp-kbetr,
          end of i_material.
    data: begin of i_outsert occurs 0,
            matnr like mara-matnr,
            stktx like stko-stktx,
            component like stpo-idnrk,
          end of i_outsert.</b>
    INITIALIZATION.
    *--- Initialize text fields for selection screen.
    TITLE1 = 'Set Default'.
    SET PARAMETER ID 'DEFAULT_BWKEY' FIELD W_BRM.
    START-OF-SELECTION.
    PERFORM INITIAL_STUFF.
    PERFORM MAIN_SELECT.
    PERFORM WRAPUP.
    Select all material master records for finished products.
    FORM MAIN_SELECT.
    SELECT MATNR
    BISMT
    LAEDA
    AENAM
    MEINS
    BRGEW
    GEWEI
    VOLUM
    VOLEH
    LAENG
    BREIT
    HOEHE
    MEABM
    NORMT
    INTO (MATERIAL_DATA-MATNR,
    MATERIAL_DATA-SMATN,
    MATERIAL_DATA-LAEDA,
    MATERIAL_DATA-AENAM,
    MATERIAL_DATA-MEINS,
    WK_MARA-BRGEW,
    MATERIAL_DATA-BASE_MEASURES-WT_UNIT,
    WK_MARA-VOLUM,
    MATERIAL_DATA-BASE_MEASURES-VOL_UNIT,
    WK_MARA-LAENG,
    WK_MARA-BREIT,
    WK_MARA-HOEHE,
    MATERIAL_DATA-BASE_MEASURES-DIM_UNIT,
    MATERIAL_DATA-NORMT)
    FROM MARA
    WHERE MTART = 'FERT' "* Finished product
    OR MTART = 'HAWA'
    ORDER BY MATNR.
    Assign default values for fields which may not be available.
    PERFORM ASSIGN_DEFAULTS.
    Get related data from other tables.
    PERFORM GET_MATERIAL_DESCRIPTION.
    PERFORM GET_STANDARD_PRICE.
    PERFORM GET_MVKE.
    PERFORM GET_MARM.
    PERFORM GET_AUSP.
    PERFORM GET_SUBSTITUTE_MATNR.
    PERFORM GET_BASIC_DATA_TEXT.
    PERFORM GET_VENDOR_NAME.
    <b>perform get_outsert.
    perform get_awp.</b>
    SEARCH MATERIAL_DATA FOR '"'.
    IF SY-SUBRC = 0.
    REPLACE '"' WITH ' ' INTO MATERIAL_DATA.
    ENDIF.
    MATERIAL_DATA-DELIMITER_START = DELIMETER_QUOTE.
    MATERIAL_DATA-DELIMITER_END = DELIMETER_QUOTE.
    Write output record.
    ADD 1 TO WRITE_COUNT.
    TRANSFER MATERIAL_DATA TO F_M_UNCFILE .
    Reinitialize work variables.
    CLEAR: MATERIAL_DATA,
    WK_STPRS,
    WK_AUSP,
    WK_CABN,
    WK_MARA,
    WK_MARM.
    ENDSELECT.
    ENDFORM. " main_select
    Assign numeric fields to character fields for output.
    FORM ASSIGN_DEFAULTS.
    MATERIAL_DATA-REC_TYPE = REC_TYPE.
    MATERIAL_DATA-BASE_MEASURES-WEIGHT = WK_MARA-BRGEW.
    MATERIAL_DATA-BASE_MEASURES-VOLUM = WK_MARA-VOLUM.
    MATERIAL_DATA-BASE_MEASURES-PKG_LENGTH = WK_MARA-LAENG.
    MATERIAL_DATA-BASE_MEASURES-PKG_WIDTH = WK_MARA-BREIT.
    MATERIAL_DATA-BASE_MEASURES-PKG_HEIGHT = WK_MARA-HOEHE.
    Set character fields to 0 in case not found on DB.
    MATERIAL_DATA-ANDA_NUMBER = ZEROS. "* ???
    MATERIAL_DATA-ITEM_PACKAGE_SIZE = 0.
    MATERIAL_DATA-INR_CRTN_COUNT = 0.
    MATERIAL_DATA-CASE_COUNT = 0.
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT = ZERO_DEC_3.
    MOVE-CORRESPONDING MATERIAL_DATA-INR_CRTN_MEASURES
    TO MATERIAL_DATA-CASE_MEASURES.
    ENDFORM. " assign_defaults
    FORM GET_VENDOR_NAME.
    SELECT SINGLE NAME1
    INTO MATERIAL_DATA-VENDOR_NM
    FROM LFA1
    WHERE LIFNR = MATERIAL_DATA-VENDOR_NUM.
    ENDFORM. " get_vendor_name
    FORM GET_OUTSERT *
    <b>form get_outsert.
    select matnr from mara into corresponding fields of table material_data
                 where mtart = 'FERT' or mtart = 'HAWA'.
         select didnrk amatnr
             into (i_outsert-component, i_outsert-matnr)
                from stpo as d
               inner join stko as c
                     on dstlnr = cstlnr
               inner join mast as b
                     on cstlnr = bstlnr
               inner join mara as a
                     on bmatnr = amatnr
              for all entries IN material_data
                   where a~matnr = material_data-matnr.
           append i_outsert.
         endselect.
        check i_outsert-stktx = 'UNRESTRICTED'.
      if ( i_outsert-component cs str1 ) or ( i_outsert-component cs str2 ).
               move i_outsert-component to material_data-component.
               append material_data.
      elseif ( i_outsert-component cs str3 ) or
                             ( i_outsert-component cs str4 ).
               move i_outsert-component to material_data-mguide.
               append material_data.
      endif.
          modify material_data transporting component
                          where matnr = i_outsert-matnr.
    endform.                               "get_outsert</b>
    FORM GET_AWP *
    <b>form get_awp.
    select matnr from mara into corresponding fields of table material_data
                  where mtart = 'FERT' or mtart = 'HAWA'.
        select bmatnr ckbetr into (i_material-matnr, i_material-rate)
               from konp as c
              inner join a505 as b
                    on cknumh = bknumh
              inner join mara as a
                    on bmatnr = amatnr
              for all entries IN material_data
                  where a~matnr = material_data-matnr
                    and b~kappl = 'V'
                    and b~kschl = 'ZR10'
                    and b~vkorg = '1000'
                    and b~pltyp = '01'
                    and b~datbi > sy-datum
                    and b~datab < sy-datum.
             append i_material.
        endselect.
            move i_material-rate to material_data-awp.
            append material_data.
            modify material_data transporting awp
                  where matnr = i_material-matnr.
    endform.                               "get_awp</b>
    FORM GET_MATERIAL_DESCRIPTION.
    SELECT SINGLE MAKTX
    INTO MATERIAL_DATA-MAKTX
    FROM MAKT
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND SPRAS = SY-LANGU.
    ENDFORM. " get_material_description
    FORM GET_STANDARD_PRICE.
    data: l_vprsv like mbew-vprsv,
    l_verpr like mbew-verpr.
    clear: l_Vprsv, l_verpr.
    SELECT SINGLE VPRSV VERPR stprs
    into (l_vprsv, l_verpr, WK_stprs)
    FROM MBEW
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND BWKEY IN S_BWKEY
    AND BWTAR = DEFAULTS-BWTAR.
    the need to change the assumption
    that standard price is housed in MBEW-STPRS. This does not apply to
    plant US18, so need to check to see what the price control field is
    (MBEW-VPRSV) and if it is S, use standard price, if it is V, use the
    moving average price.
    IF L_VPRSV = 'V'.
    WK_STPRS = L_VERPR.
    ENDIF.
    MATERIAL_DATA-STPRS = WK_STPRS.
    ENDFORM. " get_standard_price
    FORM GET_MVKE.
    SELECT SINGLE MVGR3
    VMSTA
    MVGR5
    INTO (MATERIAL_DATA-DEA_SCH_ID,
    MATERIAL_DATA-VMSTA,
    MATERIAL_DATA-PROD_LINE_CD)
    FROM MVKE
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND VKORG = DEFAULTS-VKORG
    AND VTWEG = DEFAULTS-VTWEG.
    IF SY-SUBRC = 0.
    PERFORM GET_DEA_ID_DSC.
    PERFORM GET_PROD_LINE_DSC.
    PERFORM GET_VMSTB.
    ENDIF.
    ENDFORM. " get_mvke
    FORM GET_DEA_ID_DSC.
    SELECT SINGLE BEZEI
    INTO MATERIAL_DATA-DEA_SCH_DSC
    FROM TVM3T
    WHERE SPRAS = SY-LANGU
    AND MVGR3 = MATERIAL_DATA-DEA_SCH_ID.
    ENDFORM. " get_dea_id_dsc
    FORM GET_PROD_LINE_DSC.
    SELECT SINGLE BEZEI
    INTO MATERIAL_DATA-PROD_LINE_DSC
    FROM TVM5T
    WHERE SPRAS = SY-LANGU
    AND MVGR5 = MATERIAL_DATA-PROD_LINE_CD.
    ENDFORM. " form get_prod_line_dsc
    FORM GET_VMSTB.
    SELECT SINGLE VMSTB
    INTO MATERIAL_DATA-VMSTB
    FROM TVMST
    WHERE SPRAS = SY-LANGU
    AND VMSTA = MATERIAL_DATA-VMSTA.
    ENDFORM. " form get_vmstb
    Get measurements, etc. for inner carton and case from the MARM table.
    FORM GET_MARM.
    SELECT MEINH " alternative unit of measure for stockkeeping unit
    UMREZ " numerator for conversion to base units of measure
    LAENG " length
    BREIT " width
    HOEHE " height
    MEABM " unit of dimension for length/width/height
    VOLUM " volume
    VOLEH " volume unit
    BRGEW " gross weight
    GEWEI " unit of weight
    INTO (WK_MARM-MEINH,
    WK_MARM-UMREZ,
    WK_MARM-LAENG,
    WK_MARM-BREIT,
    WK_MARM-HOEHE,
    WK_MARM-MEABM,
    WK_MARM-VOLUM,
    WK_MARM-VOLEH,
    WK_MARM-BRGEW,
    WK_MARM-GEWEI)
    FROM MARM
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND MEINH IN ('CS', 'PAK').
    PERFORM EVALUATE_MEINH.
    CLEAR WK_MARM.
    ENDSELECT.
    ENDFORM. " get_marm
    Populate output record fields based on alternative unit of measure.
    FORM EVALUATE_MEINH.
    CASE WK_MARM-MEINH.
    WHEN 'CS'.
    MATERIAL_DATA-CASE_COUNT = WK_MARM-UMREZ.
    MATERIAL_DATA-CASE_MEASURES-WEIGHT = WK_MARM-BRGEW.
    MATERIAL_DATA-CASE_MEASURES-WT_UNIT = WK_MARM-GEWEI.
    MATERIAL_DATA-CASE_MEASURES-VOLUM = WK_MARM-VOLUM.
    MATERIAL_DATA-CASE_MEASURES-VOL_UNIT = WK_MARM-VOLEH.
    MATERIAL_DATA-CASE_MEASURES-PKG_LENGTH = WK_MARM-LAENG.
    MATERIAL_DATA-CASE_MEASURES-PKG_WIDTH = WK_MARM-BREIT.
    MATERIAL_DATA-CASE_MEASURES-PKG_HEIGHT = WK_MARM-HOEHE.
    MATERIAL_DATA-CASE_MEASURES-DIM_UNIT = WK_MARM-MEABM.
    WHEN 'PAK'.
    MATERIAL_DATA-INR_CRTN_COUNT = WK_MARM-UMREZ.
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT = WK_MARM-BRGEW.
    MATERIAL_DATA-INR_CRTN_MEASURES-WT_UNIT = WK_MARM-GEWEI.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM = WK_MARM-VOLUM.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOL_UNIT = WK_MARM-VOLEH.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH = WK_MARM-LAENG.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH = WK_MARM-BREIT.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT = WK_MARM-HOEHE.
    MATERIAL_DATA-INR_CRTN_MEASURES-DIM_UNIT = WK_MARM-MEABM.
    ENDCASE.
    ENDFORM. " evaluate_meinh
    Get characterics from the AUSP & CABN tables.
    FORM GET_AUSP.
    *--- Get object number for classification lookup.
    data: l_objek like ausp-objek.
    clear l_objek.
    select cuobj into l_objek from inob up to 1 rows
    where klart = '001'
    and obtab = 'MARA'
    and objek = material_data-matnr.
    endselect.
    SELECT A~ATINN " internal characteristic
    A~ATWRT " characteristic value
    A~ATAWE " unit of measurement
    A~ATAW1 " unit of measurement
    A~ATFLV " internal floating point from (value if date)
    C~ATNAM " characteristic name
    INTO (WK_AUSP-ATINN,
    WK_AUSP-ATWRT,
    WK_AUSP-ATAWE,
    WK_AUSP-ATAW1,
    WK_AUSP-ATFLV,
    WK_CABN-ATNAM)
    FROM AUSP AS A INNER JOIN
    CABN AS C ON AATINN = CATINN
    where a~objek = l_objek
    AND C~ATNAM LIKE 'MM_%'
    AND A~LKENZ = SPACE.
    PERFORM EVALUATE_CHARACTERISTIC.
    ENDSELECT.
    ENDFORM. " get_ausp
    Populate output record fields based on characteristic type.
    FORM EVALUATE_CHARACTERISTIC.
    DATA: SIZE_TEMP TYPE I.
    CASE WK_CABN-ATNAM.
    when 'MM_BOTTLE_SIZE'.
    MATERIAL_DATA-BOTTLE_SIZE = WK_AUSP-ATWRT.
    when 'MM_BRAND_COLOR'.
    MATERIAL_DATA-BRAND_COLOR = WK_AUSP-ATWRT.
    WHEN 'MM_BRAND_DISTRIBUTOR'.
    MATERIAL_DATA-BRAND_DISTR = WK_AUSP-ATWRT.
    when 'MM_BRAND_NAME'.
    MATERIAL_DATA-BRAND_NAME = WK_AUSP-ATWRT.
    when 'MM_BRAND_SHAPE'.
    MATERIAL_DATA-BRAND_SHAPE = WK_AUSP-ATWRT.
    WHEN 'MM_DOSAGE_FORM'.
    MATERIAL_DATA-DOSAGE_FORM = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-DOSAGE_FORM_DSC.
    when 'MM_DOSE_ADMINISTRATION'.
    MATERIAL_DATA-DOSE_ADMIN = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-DOSE_ADMIN_DSC.
    WHEN 'MM_ITEM_PACKAGE_SIZE'.
    SIZE_TEMP = WK_AUSP-ATFLV.
    MATERIAL_DATA-ITEM_PACKAGE_SIZE = SIZE_TEMP.
    WHEN 'MM_ITEM_PACKAGE_TYPE'.
    MATERIAL_DATA-ITEM_PACKAGE_TYPE = WK_AUSP-ATWRT.
    when 'MM_LOGO_DESC'.
    MATERIAL_DATA-LOGO_DESC = WK_AUSP-ATWRT.
    when 'MM_PRESCRIPTION_FLAG'.
    MATERIAL_DATA-PRESCRIPT_FLAG = WK_AUSP-ATWRT.
    when 'MM_THERAPEUTIC_CLASS'.
    MATERIAL_DATA-THER_CLASS = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-THER_CLASS_DSC.
    when 'MM_THERAPEUTIC_SUB_CLASS'.
    MATERIAL_DATA-THER_SUB_CLASS = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-THER_SUB_CLASS_DSC.
    WHEN 'MM_THERAPEUTIC_RATING'.
    MATERIAL_DATA-THER_EQUIV = WK_AUSP-ATWRT.
    when 'MM_ANDA_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-ANDA_DATE.
    when 'MM_ANDA_NUMBER'.
    MATERIAL_DATA-ANDA_NUMBER = WK_AUSP-ATWRT.
    when 'MM_BIO_STUDY'.
    MATERIAL_DATA-BIO_STUDY = WK_AUSP-ATWRT.
    when 'MM_DESI_INDICATOR'.
    MATERIAL_DATA-DESI_INDICATOR = WK_AUSP-ATWRT.
    when 'MM_DRUG_TERMINATION_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-DRUG_TERM_DT.
    when 'MM_FDA_APPROVAL_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-FDA_APPRV_DT.
    when 'MM_ITEM_REGULATORY_NAME'.
    MATERIAL_DATA-ITEM_REG_NM = WK_AUSP-ATWRT.
    when 'MM_MARKET_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-MARKET_DT.
    when 'MM_PRODUCT_COLOR'.
    MATERIAL_DATA-PRODUCT_COLOR = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_FLAVOR'.
    MATERIAL_DATA-PRODUCT_FLAVOR = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_SHAPE'.
    MATERIAL_DATA-PRODUCT_SHAPE = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_STRENGTH'.
    MATERIAL_DATA-PRODUCT_STRENGTH = WK_AUSP-ATWRT.
    WHEN 'MM_VENDOR'.
    MATERIAL_DATA-VENDOR_NUM = WK_AUSP-ATWRT.
    ENDCASE.
    CLEAR SIZE_TEMP.
    ENDFORM. " evaluate_characteristic
    Get descriptive text from CAWN & CAWNT for characteristics.
    FORM GET_CHARACTERISTIC_DSC USING PARM_ATINN
    PARM_ATWRT
    CHANGING PARM_DSC_TEXT.
    CLEAR PARM_DSC_TEXT.
    SELECT SINGLE ATWTB
    INTO PARM_DSC_TEXT
    FROM CAWN AS C1 INNER JOIN
    CAWNT AS C2 ON C1ATINN = C2ATINN
    AND C1ATZHL = C2ATZHL
    WHERE C1~ATINN = PARM_ATINN
    AND C1~ATWRT = PARM_ATWRT
    AND C2~SPRAS = SY-LANGU
    AND C2~ADZHL = 0.
    ENDFORM. " get_characteristic_dsc
    Call function CTCV_CONVERT_FLOAT_TO_DATE to convert floating point
    number to a date in yyyymmdd format.
    form convert_to_date using date
    changing conv_date.
    clear conv_date.
    data: wrk_date(30) type c."Format YYYYMMDD changing it to MMDDYYYY
    call function 'CTCV_CONVERT_FLOAT_TO_DATE'
    EXPORTING
    float = date
    IMPORTING
    date = wrk_date
    EXCEPTIONS
    others = 1.
    CONV_DATE = WRK_DATE.
    ENDFORM. " convert_to_date
    Get substitute material number.
    FORM GET_SUBSTITUTE_MATNR.
    SELECT SINGLE SMATN
    DATAB
    DATBI
    INTO (MATERIAL_DATA-SMATN,
    MATERIAL_DATA-SMATN_START,
    MATERIAL_DATA-SMATN_END)
    FROM KOTD001 INNER JOIN
    KONDD ON KOTD001~KNUMH = KONDD~KNUMH
    WHERE KAPPL = 'V' "* Sales/Distribution
    AND KSCHL = 'A001' "* Material Entered
    AND MATWA = MATERIAL_DATA-MATNR
    AND DATBI >= SY-DATUM
    AND DATAB <= SY-DATUM
    AND SUGRD = SPACE.
    ENDFORM. " get_substitute_matnr.
    Get basic data text for material item note.
    If this is longer than 500 bytes, it will be truncated at 500.
    FORM GET_BASIC_DATA_TEXT.
    DATA: BEGIN OF TEXT_HEADER.
    INCLUDE STRUCTURE THEAD. "* SAPscript: Text Header
    DATA: END OF TEXT_HEADER.
    DATA: BEGIN OF TEXT_LINES OCCURS 100.
    INCLUDE STRUCTURE TLINE. "* SAPscript: text lines
    DATA: END OF TEXT_LINES.
    DATA: ITEM_NOTE_LENGTH TYPE I.
    Set up text header for call to READ_TEXT.
    TEXT_HEADER-TDOBJECT = 'MATERIAL'.
    TEXT_HEADER-TDNAME = MATERIAL_DATA-MATNR.
    TEXT_HEADER-TDID = 'GRUN'. "* Basic data text
    TEXT_HEADER-TDSPRAS = SY-LANGU.
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    ID = TEXT_HEADER-TDID
    LANGUAGE = TEXT_HEADER-TDSPRAS
    NAME = TEXT_HEADER-TDNAME
    OBJECT = TEXT_HEADER-TDOBJECT
    ARCHIVE_HANDLE = 0
    IMPORTING
    HEADER =
    TABLES
    LINES = TEXT_LINES
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS = 8.
    CASE SY-SUBRC.
    WHEN 0.
    LOOP AT TEXT_LINES.
    IF SY-TABIX = 1.
    MATERIAL_DATA-ITEM_NOTE = TEXT_LINES-TDLINE.
    ELSE.
    Pass up to 500 bytes to Siebel.
    ITEM_NOTE_LENGTH = STRLEN( MATERIAL_DATA-ITEM_NOTE ).
    IF ITEM_NOTE_LENGTH > 498.
    EXIT.
    ELSE.
    CONCATENATE MATERIAL_DATA-ITEM_NOTE
    TEXT_LINES-TDLINE
    INTO MATERIAL_DATA-ITEM_NOTE
    SEPARATED BY SPACE.
    ENDIF.
    ENDIF.
    ENDLOOP.
    WHEN 4.
    Not found; this is normal if no text was entered.
    WHEN OTHERS.
    MESSAGE E000(38) WITH 'Bad call to function READ_TEXT'.
    ENDCASE.
    ENDFORM. " get_substitute_matnr
    Open files, set initial conditions, etc.
    FORM INITIAL_STUFF.
    data : w_length type i .
    PROGNAME = SY-REPID.
    WRITE: / 'Program: ', PROGNAME.
    WRITE: / 'Execution start date: ', SY-DATUM.
    WRITE: / 'Execution start time: ', SY-UZEIT.
    WRITE: / .
    CALL FUNCTION 'Z_SET_INTERFACE_FILENAME'
    EXPORTING
    INTERFACE_NAME = MATLFILE
    DATE_TIME_SW = 'X'
    EXTENSION_TYPE = 'txt'
    IMPORTING
    PATHNAME = OUTFILE
    EXCEPTIONS
    OTHERS = 1.
    f_m_uncfile = outfile .
    clear w_length.
    w_length = strlen( matlfile ).
    replace matlfile with c_uncpath_material into F_M_UNCFILE length
    w_length .
    open dataset F_m_UNCFILE for output in text mode .
    if sy-subrc <> 0 .
    MESSAGE E000(38) WITH 'Unable to open file ' F_m_UNCFILE.
    endif.
    ENDFORM. " initial_stuff.
    Close files, etc.
    FORM WRAPUP.
    CLOSE DATASET F_M_UNCFILE.
    PERFORM CONVERT_FILE.
    WRITE: / 'Material interface file name: ', OUTFILE,
    / 'Number of records written to material file: ', WRITE_COUNT.
    endform.
    This form is included for testing and is performed if the test_rec
    checkbox is checked.
    FORM WRITE_FORMATTED_TEST_RECORD.
    WRITE: /,
    / 'Beginning of new record :',
    / 'Start Delimiter :|' NO-GAP,
    MATERIAL_DATA-DELIMITER_START NO-GAP, '|',
    / 'Record Type :|' NO-GAP,
    MATERIAL_DATA-REC_TYPE NO-GAP, '|',
    / 'Material Number :|' NO-GAP,
    MATERIAL_DATA-MATNR NO-GAP USING NO EDIT MASK, '|',
    / 'Material Description :|' NO-GAP,
    MATERIAL_DATA-MAKTX NO-GAP, '|',
    / 'Substitute Material Number :|' NO-GAP,
    MATERIAL_DATA-SMATN NO-GAP, '|',
    / 'Substitute Start Date :|' NO-GAP,
    MATERIAL_DATA-SMATN_START NO-GAP, '|',
    / 'Substitute End Date :|' NO-GAP,
    MATERIAL_DATA-SMATN_END NO-GAP, '|',
    / 'Status Code :|' NO-GAP,
    MATERIAL_DATA-VMSTA NO-GAP, '|',
    / 'Status Description :|' NO-GAP,
    MATERIAL_DATA-VMSTB NO-GAP, '|',
    / 'Date of last change :|' NO-GAP,
    MATERIAL_DATA-LAEDA NO-GAP, '|',
    / 'User who changed record :|' NO-GAP,
    MATERIAL_DATA-AENAM NO-GAP, '|',
    / 'Manufacturer Number :|' NO-GAP,
    MATERIAL_DATA-VENDOR_NUM NO-GAP, '|',
    / 'Vendor Name :|' NO-GAP,
    MATERIAL_DATA-VENDOR_NM NO-GAP, '|',
    / 'Product Line Code :|' NO-GAP,
    MATERIAL_DATA-PROD_LINE_CD NO-GAP, '|',
    / 'Product Line Description :|' NO-GAP,
    MATERIAL_DATA-PROD_LINE_DSC NO-GAP, '|',
    / 'DEA Schedule ID :|' NO-GAP,
    MATERIAL_DATA-DEA_SCH_ID NO-GAP, '|',
    / 'DEA Schedule Description :|' NO-GAP,
    MATERIAL_DATA-DEA_SCH_DSC NO-GAP, '|',
    / 'Labeller Code :|' NO-GAP,
    MATERIAL_DATA-NORMT NO-GAP, '|',
    / 'Standard Price :|' NO-GAP,
    MATERIAL_DATA-STPRS NO-GAP, '|',
    / 'Logo Description :|' NO-GAP,
    MATERIAL_DATA-LOGO_DESC NO-GAP, '|',
    / 'Prescription Flag :|' NO-GAP,
    MATERIAL_DATA-PRESCRIPT_FLAG NO-GAP, '|',
    / 'Therapeutic Class :|' NO-GAP,
    MATERIAL_DATA-THER_CLASS NO-GAP, '|',
    / 'Therapeutic Class Description :|' NO-GAP,
    MATERIAL_DATA-THER_CLASS_DSC NO-GAP, '|',
    / 'Therapeutic Subclass :|' NO-GAP,
    MATERIAL_DATA-THER_SUB_CLASS NO-GAP, '|',
    / 'Therapeutic Subclass Description:|' NO-GAP,
    MATERIAL_DATA-THER_SUB_CLASS_DSC NO-GAP, '|',
    / 'Therapeutic Equivalence :|' NO-GAP,
    MATERIAL_DATA-THER_EQUIV NO-GAP, '|',
    / 'Item Package Size :|' NO-GAP,
    MATERIAL_DATA-ITEM_PACKAGE_SIZE NO-GAP, '|',
    / 'Item Package Type :|' NO-GAP,
    MATERIAL_DATA-ITEM_PACKAGE_TYPE NO-GAP, '|',
    / 'Dosage Form :|' NO-GAP,
    MATERIAL_DATA-DOSAGE_FORM NO-GAP, '|',
    / 'Dosage Form Description :|' NO-GAP,
    MATERIAL_DATA-DOSAGE_FORM_DSC NO-GAP, '|',
    / 'Dose Administration :|' NO-GAP,
    MATERIAL_DATA-DOSE_ADMIN NO-GAP, '|',
    / 'Dose Administration Description :|' NO-GAP,
    MATERIAL_DATA-DOSE_ADMIN_DSC NO-GAP, '|',
    / 'Bottle Size :|' NO-GAP,
    MATERIAL_DATA-BOTTLE_SIZE NO-GAP, '|',
    / 'Brand Name :|' NO-GAP,
    MATERIAL_DATA-BRAND_NAME NO-GAP, '|',
    / 'Brand Distributor :|' NO-GAP,
    MATERIAL_DATA-BRAND_DISTR NO-GAP, '|',
    / 'Brand Color :|' NO-GAP,
    MATERIAL_DATA-BRAND_COLOR NO-GAP, '|',
    / 'Brand Shape :|' NO-GAP,
    MATERIAL_DATA-BRAND_SHAPE NO-GAP, '|',
    / 'ANDA Date :|' NO-GAP,
    MATERIAL_DATA-ANDA_DATE NO-GAP, '|',
    / 'ANDA Number :|' NO-GAP,
    MATERIAL_DATA-ANDA_NUMBER NO-GAP, '|',
    / 'Bio Study :|' NO-GAP,
    MATERIAL_DATA-BIO_STUDY NO-GAP, '|',
    / 'DESI Indicator :|' NO-GAP,
    MATERIAL_DATA-DESI_INDICATOR NO-GAP, '|',
    / 'Drug Term Date :|' NO-GAP,
    MATERIAL_DATA-DRUG_TERM_DT NO-GAP, '|',
    / 'FDA Approval Date :|' NO-GAP,
    MATERIAL_DATA-FDA_APPRV_DT NO-GAP, '|',
    / 'Item Regulatory Name :|' NO-GAP,
    MATERIAL_DATA-ITEM_REG_NM NO-GAP, '|',
    / 'Market Date :|' NO-GAP,
    MATERIAL_DATA-MARKET_DT NO-GAP, '|',
    / 'Product Color :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_COLOR NO-GAP, '|',
    / 'Product Flavor :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_FLAVOR NO-GAP, '|',
    / 'Product Shape :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_SHAPE NO-GAP, '|',
    / 'Product Strength :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_STRENGTH NO-GAP, '|',
    / 'Base Unit of Measure :|' NO-GAP,
    MATERIAL_DATA-MEINS NO-GAP, '|',
    / 'Base Weight :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-WEIGHT NO-GAP, '|',
    / 'Base Weight Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Base Volume :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-VOLUM NO-GAP, '|',
    / 'Base Volume Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Base Package Length :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Base Package Width :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Base Package Height :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Base Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Inner Carton Count :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_COUNT NO-GAP, '|',
    / 'Inner Carton Weight :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT NO-GAP, '|',
    / 'Inner Carton Weight Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Inner Carton Volume :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM NO-GAP, '|',
    / 'Inner Carton Volume Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Inner Carton Package Length :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Inner Carton Package Width :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Inner Carton Package Height :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Inner Carton Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Case Count :|' NO-GAP,
    MATERIAL_DATA-CASE_COUNT NO-GAP, '|',
    / 'Case Weight :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-WEIGHT NO-GAP, '|',
    / 'Case Weight Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Case Volume :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-VOLUM NO-GAP, '|',
    / 'Case Volume Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Case Length :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Case Width :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Case Height :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Case Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Item Note :|' NO-GAP,
    MATERIAL_DATA-ITEM_NOTE NO-GAP, '|',
    / 'End Delimiter :|' NO-GAP,
    MATERIAL_DATA-DELIMITER_END NO-GAP, '|',
    ENDFORM. " write_formatted_test_record
    Copy the output files to the appropriate archive folder.
    FORM COPY_TO_ARCHIVE USING C_FILE.
    DATA:
    ARCHFILE(100),
    COPYFILES(255),
    ITAB LIKE BTCXPM OCCURS 0 WITH HEADER LINE,
    W_LENGTH TYPE I ,
    W_INFILE(100),
    W_OUTFILE(100).
    PERFORM BUILD_ARCHIVE_NAME USING C_FILE
    CHANGING ARCHFILE.
    CONCATENATE C_FILE C_UNCPATH INTO COPYFILES SEPARATED BY SPACE .
    CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
    EXPORTING
    COMMANDNAME = 'ZUNIXCOPY'
    ADDITIONAL_PARAMETERS = COPYFILES
    OPERATINGSYSTEM = SY-OPSYS
    STDOUT = 'X'
    STDERR = 'X'
    TERMINATIONWAIT = 'X'
    TABLES
    EXEC_PROTOCOL = ITAB
    EXCEPTIONS
    NO_PERMISSION = 1
    COMMAND_NOT_FOUND = 2
    PARAMETERS_TOO_LONG = 3
    SECURITY_RISK = 4
    WRONG_CHECK_CALL_INTERFACE = 5
    PROGRAM_START_ERROR = 6
    PROGRAM_TERMINATION_ERROR = 7
    X_ERROR = 8
    PARAMETER_EXPECTED = 9
    TOO_MANY_PARAMETERS = 10
    ILLEGAL_COMMAND = 11
    WRONG_ASYNCHRONOUS_PARAMETERS = 12
    CANT_ENQ_TBTCO_ENTRY = 13
    JOBCOUNT_GENERATION_ERROR = 14
    OTHERS = 15.
    w_length = strlen( c_final_path ).
    replace c_final_path with ' ' into c_file length w_length.
    shift c_file left deleting leading space .
    concatenate c_uncpath c_file into w_infile .
    concatenate archfile c_file into w_outfile .
    CALL FUNCTION 'Z_CONVERT_UNIX2DOS'
    EXPORTING
    INFILE = w_infile
    OUTFILE = w_outfile
    EXCEPTIONS
    ERROR = 1
    IDENTICAL_FILENAMES = 2
    NO_INPUT_FILE = 3
    OTHERS = 4.
    IF SY-SUBRC = 0.
    SKIP.
    WRITE: / C_FILE, 'copied to', ARCHFILE.
    ELSE.
    MESSAGE E000(38) WITH 'Archive file copy failed.'.
    ENDIF.
    ENDFORM. " copy_to_archive.
    Build Archive file pathnames.
    FORM BUILD_ARCHIVE_NAME USING P_PATH
    CHANGING P_ARCH.
    DATA:
    NODECOUNT TYPE I,
    LASTNODE TYPE I,
    BEGIN OF NODES OCCURS 25,
    NODENAME(100),
    END OF NODES.
    SPLIT P_PATH AT '/' INTO TABLE NODES.
    DESCRIBE TABLE NODES LINES NODECOUNT.
    CLEAR P_ARCH.
    LASTNODE = NODECOUNT - 1.
    LOOP AT NODES.
    CASE SY-TABIX.
    WHEN LASTNODE.
    CONCATENATE P_ARCH NODES-NODENAME '/archive/' INTO P_ARCH.
    WHEN NODECOUNT.
    WHEN OTHERS.
    CONCATENATE P_ARCH NODES-NODENAME '/' INTO P_ARCH.
    ENDCASE.
    ENDLOOP.
    ENDFORM. " build_archive_name
    *& Form CONVERT_FILE
    Move output files from unconverted directory to final destination
    directory and convert from UNIX to DOS format in the process.
    FORM CONVERT_FILE.
    CONCATENATE MATLFILE '.txt' INTO OUTFILE.
    Convert customer file from Unix to DOS
    CALL FUNCTION 'Z_CONVERT_UNIX2DOS'
    EXPORTING
    INFILE = F_M_UNCFILE
    OUTFILE = outFILE
    EXCEPTIONS
    ERROR = 1
    IDENTICAL_FILENAMES = 2
    NO_INPUT_FILE = 3
    OTHERS = 4.
    IF SY-SUBRC <> 0.
    write: /'Error converting file. Input file: ', F_M_UNCFILE.
    write: /' Output file: ', outFILE.
    ENDIF.
    ENDFORM. " CONVERT_FILE

    Hi Vijay,
    thanks very much for the reply with valuable suggestion.
    I have made couple of changes in the program like this:
    i have created another Internal table like this...for selecting the data of MARA...
    <b>data: begin of it_temp occurs 0,
             matnr like mara-matnr,
          end of it_temp.</b>
    then I have changed the FORM like this ....
    Plz have a look on that and let me know if any thing is wrong in that...
    thnx much..
    <b>form get_outsert.
    select matnr from mara into corresponding fields of table
        it_temp where mtart = 'FERT' or mtart = 'HAWA'.
         select didnrk amatnr
             into (i_outsert-component, i_outsert-matnr)
                from stpo as d
               inner join stko as c
                     on dstlnr = cstlnr
               inner join mast as b
                     on cstlnr = bstlnr
               inner join mara as a
                     on bmatnr = amatnr
               for all entries IN it_temp
                   where a~matnr = it_temp-matnr.
           append i_outsert.
         endselect.
         loop at i_outsert where matnr = it_temp-matnr.
      if ( i_outsert-component cs str1 ) or ( i_outsert-component cs str2 ).
               write i_outsert-component to material_data-component.
               append material_data.
      elseif ( i_outsert-component cs str3 ) or
                             ( i_outsert-component cs str4 ).
               write i_outsert-component to material_data-mguide.
               append material_data.
      endif.
          modify material_data transporting component
                          where matnr = i_outsert-matnr.
         endloop.
    endform.                               "get_outsert</b>

  • Scheduling error in ppds

    Hi,
    I got this error "No gap for activity ||| found within the planning horizon" during production planning run.
    Diagnosis
    There is not a large enough gap for the activity ||| on the mode
    1- in the planning period specified in the time profile.
    System Response
    The system does not schedule or reschedule.
    What could be the reason for this error ? Kindly help.
    I am struck with this. i am not getting this error if i create any order manually in product view. but when i run planning for a particular sale order in variable heuristic i am getting this error. any idea pls help
    regards
    vinay

    Dear all,
    I had posted the querry to sap. below is what they are saying*.
    I had a look at system APD and started heuristic SAP_PP_002 for one
    of the customer segments. As expected the following happened:
    1. As the 'planning direction' in the strategy settings of the heuristic is set to 'Backwards + Revers' and the planned order availability
    date should be today (due to the early requirement date) strategy 1
    (backwards scheduling) can't be successful and thus leads to an error /SAPAPO/DM_SCHEDFAIL044
    2. Strategy 2 ('revers', i.e. forward scheduling) is successful then and creates a planned order that starts today and ends in the future.
    Both steps & messages are displayed in the scheduling log of the
    heuristic. Both messages are abolutely correct and are created as
    expected.
    All created orders are overlapping. This is correct, as they are
    scheduled infinitely according to the heuristic settings.
    In order to do a finite scheduling of the created orders a suitable DS
    heuristic should be carried out as a subsequent step after the PP
    heuristic run (as recommended by SAP).
    So altogether your system works absolutely correct and there is no
    indication for a software error.
    SO FRIENDS,
    DOES HE MEAN THAT I SHUD NOT RUN VARIABLE HEURISTIC AT ALL. HE MEANS TO SAY THAT I HAVE TO RUN PLANNING IN PLANNING RUN.
    pLA GUIDE ME AS TO WHAT I SHUD DO.
    THANKS
    VINAY
    Edited by: vinay on Aug 26, 2009 5:27 PM

  • Gap of Time of R3 and PPDS planned orders

    Hello Gurus,
    I'm facing an issue regarding R/3 - PPDS planned orders.
    The customer has the cenário that R3 and APO does not synchronize planned order on-line. R3 sends the orders on line however APO send it only in a determinated  time. As a matter of fact, the issue happens when R3 planned orders are sent to APO. Anyhow, the order into R3 that should be delivered by 03/20/2010 for example, in APO, it is showed as 03/18/2010 or 03/19/2010 without apparently reason.
    I realized that the R3 system server has a gap of 2 hour more in the system time if you compare with APO server, however I cannot understand the reason of this gap of days and I don't think that seems to be the reason.
    Also, the capacity of the resource is not defined at the same time for a shift that is in R3.
    Is there anyone that could help me about it?
    Tks in advance.
    Marcos.

    Hi,
    The time zone depends on the customization done - but one can change it to the desired option by setting the time zone in product view or requirements view as need be. One has the options of choosing:
    Time zone of user
    UTC Time zone
    Location time zone
    Any time zone the user prefers
    so immaterial of the server location, one can change the settings according to the user requirements.
    Regards
    Vinod

  • Scheduling using  Setup Matrix in PPDS

    Hi Gurus,
    We are using PPDS Steup Matrix for scheduling orders. We have scenario that from product A to B, there is a changeover. And after producing A or B for certain hours, there is a cleanout of certain hours.
    Ex- Orders A for 5 hrs, B for 5 Hrs. Setup Matrix: A-B=1 hr and Max order ( A or B)=7 hrs after which cleanout should happen.
    While scheduling , A(5hrs) (Setup) B( 5 hrs), this is acheived.
    But result should be A(5hrs)(Setup)B(2hrs)(Cleanout)(B 3hrs)
    Please give your valuable inputs. How to map extra Cleanout ??/ Should we ceate another setup matrix for cleanout?? Can system take multiple setup matrix???
    thanks,
    Priya

    Hi Priya,
    I think Your case can be achieved through campaigm planning.
    Create a setup group 'PROD' in ECC.
    Under setup group 'PROD' maintain setup keys as 'A' & 'B'
    Assign these setup group and setup keys in master recipe.
    Maintain the same setup group & keys in APO also and than CIF PPM.
    Maintain the setup matrix and assign it to resources
    Create a campaign profile for 'PROD' with no of chargers(Orders) as 7.
    Now schedule orders by using optimization.
    After that create campaigns by using campaign heuristics on the resources.Campaigns will be created for every 7 hours.
    And then create cleanout order by using cleanout heuristics between campaigns.
    By this you will achiece setup between products and change over after your max run length also achieved by cleanout order between campaigns.
    Hope this is clear.
    Regards
    Sravan

  • Rolling schedules for steel options between SNP and PPDS

    We are trying to set up something within the APO SNP/PPDS tool to
    plan rolling schedules for steel.
    eg multiple resources, most of which are 100 percent rolling schedules,
    with many different "blocks", and common rolls may occur say every 4 weeks, or
    every 14 weeks.
    And so each roll we need to plan "Quantity required before the next roll" - eg
    a 14 week quantity.
    We have set up PPDS Blocks using CDP settings with characteristics in our
    test system.
    Seperate to that we have an SNP model where we plan across multiple plants,
    for a 12-24 month period, and we have multiple level BOMS where there may
    be 2 semi-finished products between the Finished and Raw material. Eg heat
    treated and non-heat treated.
    Sometimes one of the interim semi-finished products is the bottleneck, so we
    need to use capacity leveling to reduce quantities at all levels of the BOM.
    Our main issue is that the SNP quantities that we plan, we are not able to feed into
    the PPDS blocks, as SNP does not deal with characteristics.
    So in our test, all we can do is use the SNP quantities for higher level plans.
    Then delete the SNP orders, and re-run a new PPDS plan to get quantities in our blocks,
    but we then have lost all the capacity levelling information from SNP.
    Does anyone have any method to deal with this scenario? ie how to model rolling schedules
    by utilising the strengths of the SNP mult-plant and capacity leveling data, and then
    somehow also taking into account "blocks", or "rolling schedules"?

    In our testing. With CDP setting, we create a fcst element with a characteristic on the material. eg RED/BLUE/GREEN, and in PPDS, I can then create a PPDS order with the characterstic linked and visible in the PPDS order, and linked to the BLOCK on the resource (Blocks of RED GREEN for example)
    But SNP orders do not work with these characteristics.
    This is backed up by various documentation from SAP.
    eg
    http://help.sap.com/saphelp_scm50/helpdata/en/b0/3c2463c7cbb54bacfb75c789100ad4/content.htm
    SNP cannot plan with characteristics. However, the characteristic assignments remain and can be evaluated in PP/DS.
    CDP in SNP
    CDP cannot be used in SNP as the SNP does __not support__ characteristics.
    http://books.google.com.au/books?id=KjvOY_4P8JEC&pg=PA13&lpg=PA13&dq=CDPSNPcharacteristics&source=bl&ots=tG9-FGeIo9&sig=CzW-hktRFP2DrlOaied2QMY7gNE&hl=en#v=onepage&q=CDP%20SNP%20characteristics&f=false
    (In this book - a list of which APO areas do and do not work with Characteristics. SNP does not)

  • How to schedule job to execute after 5 seconds gap using the program

    Hi ALL,
    How to schedule the program to run after 5 seconds to execute using JOB_OPEN,JOB_CLOSE,SUB_SUBMIT function modules in which parameter I should give this 5 secnods?
    Regards
    mahesh

    Hi,
    You can use the import parameters of function module JOB_CLOSE
    SDLSTRTDT & SDLSTRTTM
    to pass the required start date and time (respectively) of your background job. That is, if you want the job to be scheduled and start at a fixed time (as in your case 5 seconds in the future), you can determine the start date and time as 5 seconds ahead of sy-uzeit and pass the resultant values to the mentioned importing parameters.
    Cheers,
    Aditya

  • Scheduling a background Job with gaps in dates

    Hi Experts,
    I am having a requirement : A background job has to be scheduled for running a program every 15 minutes and for every month.But this job should not run from date 10th to 15th of every month.For example,In july month Job should start run from 01.07.2014 to 31.07.2014 excluding 10.07.2014 to 15.07.2014.
    Can we achieve this without a custom program and using SM36?
    Regards,
    Arun.

    Hello Arun,
    is it possible to define a factory calendar to you in the system, if you can define one then you can define the 10-15 the of every month as holiday.
    We can select the factory calendar above defined in the job. This can be found by clicking on the restrictions button in the start condition screen.
    in that start date restrictions, you can find 5 options in those you can pick the do not execute the periodic job on sunday and holidays.
    but this will effect the sundays which are falling in 1-10 th & 15-31st of each month, will that be OK ?
    if you do not want to try out the above all steps, then you can simply create 2 job running for each month
    1st one for 1-10th of every month.
    2nd one for 16th to end date.
    Let us know in case of any concerns on the same.
    thanks,
    Bhaskar

  • Query on PPDS Scheduling

    Hi all,
    We are using PPDS in our scenario.
    We use PDS & dynamic pegging. 
    We have semi finished product(SF) and Final product(F)
    in our BoM. 
    Once the SF is made ready, it has to be consumed within
    3 hours to make the final product F.  There is capacity
    constraint to make F from SF.
    Under these conditions, how to achieve this requirement.
    I tried with Shelf life, but not working.
    Please throw some light on this to meet the requirement.
    Regards
    R. Senthi Mareeswaran.

    Hi senthil,
    From your note, I understand the HALB will not be stored in any physical storage Location and will be taken into the Production staging of the Finished product directly.  I get series of ideas, please check if it helps your business.
    1. Total shelf life should be made to 1 day.
    2. Move any stock expired to Blocked everyday so that unrestricted stock will have only current date stock.
    3. Store the Goods receipt time in batch characteristics. We can transfer the batch characteristics to APO Product master, if needed.
    3. Use FIFO method (Considering the GR time from Batch char) for batch determination. This will consider the first batch that was received that day. Considering the fact the process is continuous there will not be any batch left with out consuming.
    Also I guess this can be achieved by Offset settings in relationships between the operations. You have to assign the Halb in the successor operation and the FERT at the predecessor operation. The offset time should be 3 hrs.
    I guess we need to test these scenarios. I am now in a project where there is no batch managed products. Hence difficult for me to test the same.
    Cheers
    vig

  • PPDS Heuristics- Selection

    Hi Gurus
    I need your help.
    My client has  the following PPDS requirements to be met in Planning run.
    1. SNP runs and the SNP orders have to be converted to PPDS orders in 2 week PPDS horizon.
    2. The PPDS orders have to scheduled according to Product priority.
    3. In the third step component check is to be made for these PPDS orders and if components are not  avilable, the orders with shortsages have to be pushed out in scheduling.
    4. The gaps occuring due to this pushing of orders has to be filled up by rescheduling the remaining orders without disturbing the priorities.
    I have so far tried the following in production planning run:
    First step: SNP - PPDS order conversion
    Second Step: Low level code determination
    Third step: Reschedule heuristics with scheduling sequence - product priority
    Fourth step: Bottom up heuristics
    But I am not getting desired results still especially when there are shortages in the components, I  see them in the bottom  up heuristics log, but the orders are not getting pushed out due to these shortages.
    Am I missing anything? Please suggest steps to achieve these objectives in Planing run.
    Thanks
    Elisabet

    Hi,
    Please check your PP planning procedure in your manufacturing plant. If it is automatic planning (3), then it will do the planning automatically, when it plans for DC. If so, change it to 4- Planning at planning run.
    Please check and revert.
    Regards,
    Manimaran M.

  • Delivery Date in Schedule Line

    Hi,
    The issue is:
    There is a 1 hour time gap between the System time & the local time.
    Say the PRD system date & time is 01.01.2011 23:30 & the local date & time is 02.01.2011 00:30.
    I have a scenario where there are 2 similar MTO sales orders.
    Sales order 1: Create SO with date & time 01.01.2011 22:30 & the schedule line for the item gets the GI date as 01.01.2011 as expected.
    Sales Order 2: Create SO with date & time as 01.01.2011 23:30, then the schedule line for the item gets the GI date as 02.01.2011.
    I am not sure if the time difference could be the reason for picking up the different GI dates eventhough both the orders were created on the same day 01.01.2011.
    Please let me know if i am missing something here.
    thanks & regards
    Narain

    For shipping point or route pick pack time, load time, transit time may be maintained totally 1 hr. Hence when you create the order at 23:30 the delivery date comes to next day.
    or
    Shift time may be maintend.
    Please check the both.

  • Schedule lines in APO

    hi guys
    when i run planning in PPDS for material in APO
    its creating PR's instead of schedule lines.
    when it should create PRs & when it should create Schedule lines
    Doc type is LP
    Ext planning ind : 1 i maintained.
    is there any setting in external procurement relationship.
    can you explain me am new to this APO concept.
    thanks
    nani

    Dear Ritwik,
    I guess you  have done following steps already.
    1. Created APO relevant Scheduling agreement. Ext, Planning Indicator.
    2. CIF transfer of the scheduling agreements.
    Now you check in External Procurement relationships, you need to ensure that you only have one active external procurement relationship for the products( which is Created by your APO relavant Scheduling Agreement CIF). It is possible that you have more than one procurement relationship active for the product and so it is creating PR's instead of Schedule lines.
    Hope  it helps.
    Regards\
    Kumar

  • Scheduling a background job

    Hi all,
    I have a requirement in which i need to run a job only after 5th of everymonth to untill end of month in one hour gap.
    So it should be like that,job start from
    Nov---5th to nov 30th  then
    Dec---5th to Dex31th.How can  i acheive this?I cannot modify the program since it is a standard program?
    Apart from creating the customized program and call the standard program from there...i would like to have some other
    solution than this since there are variants in the standard program.
    Rgards,
    Arun.

    Hi Arun ,
    You can use Background Processing Event.
    An event is a signal stating that a predefined status in the system has
    been reached. The background processing system receives events and then
    starts the background job/jobs that is/are linked to an event.
    So in the "After Events" tab in SM36 you specify a perticular event which will be triggered on 5th of every month and you will schedule your job after that with periodicy as "every hour"
    Hope this will help to you .
    Regards,
    Nikhil

  • How do I remove the gap above my Spry Menu bar?

    Hi Folks,
    I have an extensive web site which I built over many years and using different programs but have now jettisoned all of thse and work exclusively with Dreamweaver to maintain and improve it myself. To date I have always had to edit each item on each page separately then upload everything to keep my now vast website updated.
    I read that if I made an SSi file for my navigation menu then I do not need to edit it on each separate page of my site so long as I load the pages of my site as .shtml files and insert a Server-Side Includes line in the code of my web pages. All great in theory BUT for some reason which is confounding me there is a gap appearing at the top of the page which is not there on the pages which are not .shtml and have my sprymenu embedded in the code.
    Rather than attach long code here, it might be easier to see the problem on my live pages. So please go to any page of www.dominicnatoli.com to see how the site looks with the spry menu in each page and then go to say www.dominicnatoli.com/2011.shtml to see one of the newly loaded pages which displays the menu from the file www.dominicnatoli.com/includes/navmenu.shtml. interestingly enough if I open the navmenu.shtml alone it displays at the top of the page but whenever I open it as embedded code on my .shtml content pages it does not display at the top of the page.
    I have not completely uploaded all the .shtml files of the site as I have encountered this issue and if I cannot resolve it I will ababndon this course of action and search for another solution so if you click on some of the menu items and it takes you to a dead end that is not in and of itself the problem as not all the .shtml files have been loaded to the server yet.
    I have trawled through the css and code to the best of my "limited" ability and am frustrated as I cannot find my error. There ar epossibly hundreds of errors in the pages as this site has been created using many different programs over decades and one of my reason for trying to do this new menu management is part of my overhaul stragtegy which has stumbled already at the first step. LOL I know we say if it ain't broke don't fix it, but I need to sort out a better way of editin the navigation menu universally rather than having to write code into each menu on each page in order for the nav bar to be consistent wite wide.
    I would really be grateful if one of you gurus can tell me where I am going wrong so I can replicate the solution for the remained of my pages. I am not sure if the problem is in teh navmenu.shtml page and its associated css or in the other shtml page with its much larger css. Thanks for any help you can give me to sort his out.
    I am working on Dreamweaver CC and CS6 ( the latter has an Insert Server Side Includes extension which does not work in CC so I tend to use CC for the main updates and CS6 for the SSI stuff.)
    Please let me know if you need any other information or stuff from me. Thanks a lot and
    All the best
    Dominic

    OK Nancy, so I moved the code as you suggested, and it has gone back to showing the nav menu formatted BUT still with a gap at the top.
    Here is the new code for the page. BTW it only has 463 lines
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="Generator" content="DreamweaverCS5.5"/>
    <title>Dominic Natoli 1996 to 1998 Schedule</title>
    <link rel="shortcut icon" href="images/favicon.ico" />
    <meta name="keywords" content="Mario Lanza, Mario Lanza Story, Joshua, Handel, St. John Passion, Melbourne Symphony Orchestra, Ismaele, Nabucco, Don Josè, Carmen, Australian Pops Orchestra, Beethoven, 9th Symphony, Sydney Opera House, Tamino, Adelaide Symphony Orchestra, Melbourne Concert Hall, Ernesto, Don Pasquale, Donizetti, Nemorino, L&#39;Elisir d&#39;amore, Dorset Opera, Messiah, Handel, Adelaide Symphony, Queen Elizabeth Hall, English National Opera, Don Josè, Strike up the Band, Gershwin, Rusalka, Chandos, South Australian State Opera, Opera Queensland, Australian Pops Orchestra, Melbourne Concert Hall, Ernesto, Don Pasquale, Donizetti, Nemorino, L&#39;Elisir d&#39;amore, Dorset Opera, Messiah, Handel, Adelaide Symphony, Queen Elizabeth Hall, English National Opera, Don Josè, Strike up the Band, Gershwin, Rusalka, Chandos, South Australian State Opera, Opera Queensland, Australian Pops Orchestra"/>
    <meta name="description" content="Dominic Natoli Schedule 1996 - 1998"/>
    <meta name="author" content="Alex Weston"/>
    <meta name="copyright" content="© All rights reserved"/>
    <meta http-equiv="Content-Language" content="en-gb"/>
    <style type="text/css">
    <!--
    body {margin: 0px; padding: 0px;}
    a:link {color: #6f0070;}
    a:visited {color: #009c9c;}
    a:hover {color: #6f0070;}
    a:active {color: #6f0070;}
    .Normal-P
            margin:0.0px 0.0px 0.0px 0.0px; text-align:center; font-weight:400;
    .Normal-P0
            margin:0.0px 2.0px 0.0px 2.0px; text-align:right; font-weight:400;
    .Normal-P1
            margin:0.0px 0.0px 0.0px 0.0px; text-align:right; font-weight:400;
    .Normal-P2
            margin:0.0px 0.0px 0.0px 0.0px; text-align:left; font-weight:400;
    .Normal-P3
            margin:0.0px 0.0px 0.0px 0.0px; text-align:justify; font-weight:400;
    .Normal-C
            font-family:"Times New Roman", serif; font-size:15.0px;
            line-height:1.27em; color:#400040;
    .Normal-C0
            font-family:"Times New Roman", serif; font-size:5.0px;
            color:#400040;
    .Normal-C1
            font-family:"Times New Roman", serif; font-size:13.0px;
            line-height:1.31em; color:#400040;
    .Normal-C2
            font-family:"Times New Roman", serif; font-weight:700;
            font-size:13.0px; line-height:1.31em; color:#800000;
    .Normal-C3
            font-family:"Times New Roman", serif; font-weight:700;
            font-size:12.0px; line-height:1.33em;
    .Normal-C4
            font-family:"Times New Roman", serif; font-style:italic;
            font-weight:700; font-size:12.0px; line-height:1.33em;
    .Normal-C5
            font-family:"Bookman Old Style", serif; font-weight:700;
            font-size:16.0px; line-height:1.19em; color:#ffffff;
    .Normal-C6
            font-family:"Times New Roman", serif; font-size:16.0px;
            line-height:1.25em;
    .Normal-C7
            font-family:"Times New Roman", serif; font-style:italic;
            font-weight:700; font-size:16.0px; line-height:1.25em;
    .Normal-C8
            font-family:"Times New Roman", serif; font-style:italic;
            font-size:16.0px; line-height:1.25em;
    .Normal-C9
            font-family:"Times New Roman", serif; font-size:5.0px;
    .Normal-C10
            font-family:"Times New Roman", serif; font-weight:700;
            font-size:16.0px; line-height:1.25em;
    -->
    <style type="text/css">
    body {margin: 0px; padding: 0px;}
    a:link {color: #6f0070;}
    a:visited {color: #009c9c;}
    a:hover {color: #6f0070;}
    a:active {color: #6f0070;}
    </style>
    <link href="../Spry-UI-1.7/css/Menu/basic/SpryMenuBasic.css" rel="stylesheet" type="text/css" />
    <script src="../Spry-UI-1.7/includes/SpryDOMUtils.js" type="text/javascript"></script>
    <script src="../Spry-UI-1.7/includes/SpryDOMEffects.js" type="text/javascript"></script>
    <script src="../Spry-UI-1.7/includes/SpryWidget.js" type="text/javascript"></script>
    <script src="../Spry-UI-1.7/includes/SpryMenu.js" type="text/javascript"></script>
    <script src="../Spry-UI-1.7/includes/plugins/MenuBar2/SpryMenuBarKeyNavigationPlugin.js" type="text/javascript"></script>
    <script src="../Spry-UI-1.7/includes/plugins/MenuBar2/SpryMenuBarIEWorkaroundsPlugin.js" type="text/javascript"></script>
    <style type="text/css">
    .content {
    padding-top: 0px;
    padding-right: 0;
    padding-bottom: 10px;
    padding-left: 0;
    clear: both;
    }#MenuBar_2  {
              background-color: #0036Cc;
              font-family: "Times New Roman", Times, serif;
              font-weight: normal;
              font-size: 12px;
              font-style: normal;
              padding-top: 0;
              padding-right: 0;
              padding-left: 0;
              padding-bottom: 0;
              border-color: #ffffff #ffffff #ffffff #ffffff;
              border-width: 0px;
              border-style: none none none none;
              top: 0px;
    .MenuBar br {           display:none;
    .MenuBar_2LeftShrink {
              float: left;          width: 80px;
    .MenuBar_2RightShrink {
              float: right; /* shrink to content, as well as float the MenuBar */
              width: 80px;
    .MenuBar_2FixedLeft {
              float: left;
              width: 800px;
    .MenuBar_2FixedCentered {
              float: none;
              width: 800px;
              margin-left: auto;
              margin-right: auto;
    .MenuBar_2FixedCentered br {
              clear:both;
              display:block;
    .MenuBar_2FixedCentered .SubMenu br {
              display:none;
    .MenuBar_2Fullwidth {
              float: left;
              width: 800px;
              display: block;
    /* Top level menubar items - these actually apply to all items, and get overridden for 1st or successive level submenus */
    #MenuBar_2  .MenuItemContainer {
              padding: 0px 0px 0px 0px;
              margin: 0;           /* Zero out margin  on the item containers. The MenuItem is the active hover area.
                                            For most items, we have to do top or bottom padding or borders only on the MenuItem
                                            or a child so we keep the entire submenu tiled with items.
                                            Setting this to 0 avoids "dead spots" for hovering. */
    #MenuBar_2  .MenuItem {
              padding: 0px 15px 0px 0px;
              background-color:#0036CC;
              border-width:1px;
              border-color: #FFFFFF;
              border-style: none solid none solid;
    #MenuBar_2  .MenuItemFirst {
              border-style: none none none none;
    #MenuBar_2 .MenuItemLast {
              border-style: none solid none none;
    #MenuBar_2  .MenuItem  .MenuItemLabel{
              text-align:center;
              line-height:1.4em;
              color:#ffffff;
              background-color:#0036cc;
              padding: 0px 30px 6px 3px;
              width: 40px;
              width:38px;
    .SpryIsIE6 #MenuBar_2  .MenuItem  .MenuItemLabel{
              width:44px; /* Equivalent to min-width in modern browsers */
    /* First level submenu items */
    #MenuBar_2 .SubMenu  .MenuItem {
              font-family: "Times New Roman", Times, serif;
              font-weight: normal;
              font-size: 12px;
              font-style: normal;
              background-color:#9999CC;
              padding:0px 22px 0px 10px;
              border-width:1px;
              border-color: #FFFFFF;
              /* Border styles are overriden by first and last items */
              border-style: solid solid none solid;
    #MenuBar_2  .SubMenu .MenuItemFirst {
              border-style: solid solid none solid;
    #MenuBar_2  .SubMenu .MenuItemFirst .MenuItemLabel{
              padding-top: 6px;
    #MenuBar_2 .SubMenu .MenuItemLast {
              border-style: solid solid solid solid;
    #MenuBar_2 .SubMenu .MenuItemLast .MenuItemLabel{
              padding-bottom: 6px;
    #MenuBar_2 .SubMenu .MenuItem .MenuItemLabel{
              text-align:left;
              line-height:1em;
              background-color:#9999CC;
              color:#ffffff;
              padding: 6px 10px 6px 5px;
              width: 30px;
              width:auto;
    /* Hover states for containers, items and labels */
    #MenuBar_2 .MenuItemHover {
              background-color: #9999CC;
              border-color: #FFFFFF;
    #MenuBar_2 .MenuItemWithSubMenu.MenuItemHover .MenuItemLabel{
              background-color: #9999CC; /* consider exposing this prop separately*/
              color: #FFFFFF;
    #MenuBar_2 .MenuItemHover .MenuItemLabel{
              background-color: #9999cc;
              color: #FFFFFF;
    #MenuBar_2 .SubMenu .MenuItemHover {
              background-color: #0036cc;
              border-color: #FFFFFF;
    #MenuBar_2 .SubMenu .MenuItemHover .MenuItemLabel{
              background-color: #0036cc;
              color: #FFFFFF;
    /* Submenu properties -- First level of submenus */
    #MenuBar_2 .SubMenuVisible {
              background-color: #9999CC;
              min-width:auto;  /* This keeps the menu from being skinnier than the parent MenuItemContainer - nice to have but not available on ie6 */
              border-color: #ffffff #ffffff #ffffff #ffffff;
              border-width:0px;
              border-style: none none none none;
    #MenuBar_2.MenuBar .SubMenuVisible {/* For Horizontal menubar only */
              top: 100%;          /* 100% is at the bottom of parent menuItemContainer */
              left:0px; /* 'left' may need tuning depending upon borders or padding applied to menubar MenuItemContainer or MenuItem,
                                                      and your personal taste.
                                                      0px will left align the dropdown with the content area of the MenuItemContainer. Assuming you keep the margins 0
                                                      on MenuItemContainer and MenuItem on the parent
                                                      menubar, making this equal the sum of the MenuItemContainer  MenuItem padding-left will align
                                                      the dropdown with the left of the menu item label.*/
              z-index:10;
    #MenuBar_2.MenuBarVertical .SubMenuVisible {
              top: 0px;
              left:100%;
              min-width:0px; /* Do not neeed to match width to parent MenuItemContainer - items will prevent total collapse */
    /* Submenu properties -- Second level submenu and beyond - these are visible descendents of .MenuLevel1 */
    #MenuBar_2 .MenuLevel1 .SubMenuVisible {
              background-color: #9999CC;
              min-width:0px; /* Do not neeed to match width to parent MenuItemContainer - items will prevent total collapse*/
              top: 0px;          /* If desired, you can move this down a smidge to separate top item''s submenu from menubar -
                                            that is really only needed for submenu on first item of MenuLevel1, or you can make it negative to make submenu more
                                            vertically 'centered' on its invoking item */
              left:100%; /* If you want to shift the submenu left to partially cover its invoking item, you can add a margin-left with a
                                            negative value to this rule. Alternatively, if you use fixed-width items, you can change this left value
                                            to use px or ems to get the offset you want. */
    /* IE6 rules - you can delete these if you do not want to support IE6 */
    /* A note about multiple classes in IE6.
    * Some of the rules above use multiple class names on an element for selection, such as "hover" (MenuItemHover) and "has a subMenu" (MenuItemWithSubMenu),
    * giving the selector '.MenuItemWithSubMenu.MenuItemHover'.
    * Unfortunately IE6 does not support using mutiple classnames in a selector for an element. For a selector such as '.foo.bar.baz', IE6 ignores
    * all but the final classname (here, '.baz'), and sets the specificity accordingly, counting just one of those classs as significant. To get around this
    * problem, we use the plugin in SpryMenuBarIEWorkaroundsPlugin.js to generate compound classnames for IE6, such as 'MenuItemWithSubMenuHover'.
    * Since there are a lot of these needed, the plugin does not generate the extra classes for modern browsers, and we use the CSS2 style mutltiple class
    * syntax for that. Since IE6 both applies rules where
    * it should not, and gets the specificity wrong too, we have to order rules carefully, so the rule misapplied in IE6 can be overridden.
    * So, we put the multiple class rule first. IE6 will mistakenly apply this rule.  We follow this with the single-class rule that it would
    * mistakenly override, making sure the  misinterpreted IE6 specificity is the same as the single-class selector, so the latter wins.
    * We then create a copy of the multiple class rule, adding a '.SpryIsIE6' class as context, and making sure the specificity for
    * the selector is high enough to beat the single-class rule in the "both classes match" case. We place the IE6 rule at the end of the
    * css style block to make it easy to delete if you want to drop IE6 support.
    * If you decide you do not need IE6 support, you can get rid of these, as well as the inclusion of the SpryMenuBarIEWorkaroundsPlugin.js script.
    * The 'SpryIsIE6' class is placed on the HTML element by  the script in SpryMenuBarIEWorkaroundsPlugin.js if the browser is Internet Explorer 6. This avoids the necessity of IE conditional comments for these rules.
    .SpryIsIE6 #MenuBar_2 .MenuBarView .MenuItemWithSubMenuHover .MenuItemLabel /* IE6 selector  */{
              background-color: #0036CC; /* consider exposing this prop separately*/
              color: #FFFFFF;
    .SpryIsIE6 #MenuBar_2 .MenuBarView .SubMenu .MenuItemWithSubMenuHover .MenuItemLabel/* IE6 selector  */{
              background-color: #0036cc; /* consider exposing this prop separately*/
              color: #FFFFFF;
    .SpryIsIE6 #MenuBar_2 .SubMenu .SubMenu  /* IE6 selector  */{
              margin-left: -15px; /* Compensates for at least part of an IE6 "double padding" version of the "double margin" bug */
              /* EndOAWidget_Instance_2141544 */
    </style>
    <script type="text/xml">
    <!--
    <oa:widgets>
      <oa:widget wid="2141544" binding="#MenuBar_2" />
    </oa:widgets>
    -->
    </script></style>
    <script src="_wp_scripts/jsFlashVer.js" type="text/javascript"></script>
    <script src="_wp_scripts/jsDetectBrowser.js" type="text/javascript"></script>
    <script src="_wp_scripts/jsRollover.js" type="text/javascript">
    </script>
    <script type="text/javascript">
    <!--
    PPImgInit('emailroll','pageobjects/off_state.gif','pageobjects/over_state.gif','pageobject s/down_state.gif','pageobjects/down_state.gif',0,0);
    //-->
    </script>
    <script src="_wp_scripts/jsFlashVer.js" type="text/javascript"></script>
    <script src="_wp_scripts/jsDetectBrowser.js" type="text/javascript"></script>
    <script src="_wp_scripts/jsMenus.js" type="text/javascript"></script>
    <script type="text/javascript">
    </script>
    <script src="_wp_scripts/jsRollover.js" type="text/javascript">
    </script>
    <script type="text/javascript">
    <!--
    PPImgInit('emailroll','pageobjects/off_state.gif','pageobjects/over_state.gif','pageobject s/down_state.gif','pageobjects/down_state.gif',0,0);
    //-->
    </script>
    </head>
    <body bgcolor="#9F9EFF">
    <!--#include file="includes/navmenu.shtml" -->
    <div style="background: transparent; position:relative;width:800px;height:1200px;margin-left:auto;margin-right:auto;">
    <div style="position:absolute; left:0px; top:1290px; width:800px; height:110px;">
        <img src="pageobjects/masteralowerfill.jpg" width="800" height="110" border="0" id="masteralowerfill" name="masteralowerfill" title="" alt=""/></div>
    <div style="position:absolute; left:0px; top:128px; width:800px; height:963px;">
        <img src="pageobjects/background.jpg" width="800" height="1163" border="0" id="backgrndpic" name="backgrndpic" title="" alt=""/></div>
    <div class="Normal-P" id="dynamiccontactemailtxt" style="position:absolute; left:322px; top:1300px; width:195px; height:65px;-moz-box-sizing:border-box;box-sizing:border-box; overflow:hidden;" title="emailcontact">
    <span class="Normal-P"><span class="Normal-C"><a href="mailto:[email protected]">[email protected]</a></span><span class="Normal-C0"><a href="mailto:[email protected]"></a></span>
    <span class="Normal-C1">WebMaster: Dynamic Notions</span>
    <br />
    © dynamic notions
    </span></div>
    <div style="position:absolute; left:718px; top:0px; width:82px; height:82px;">
        <img src="_wp_generated/wavingkoala.gif" width="82" height="82" border="0" id="wavingkoala" name="wavingkoala" title="wavingkoala" alt="wavingkoala"/></div>
    <div style="position:absolute; left:0px; top:124px; width:800px; height:15px;">
        <img src="pageobjects/masterbluebartop.jpg" width="800" height="15" border="0" id="masterbluebartop" name="masterbluebartop" title="ScreenBar" alt="ScreenBar"/></div>
    <div style="position:absolute; left:1px; top:153px; width:144px; height:40px;">
        <img src="pageobjects/pagetitlebutton.jpg" width="144" height="40" border="0" id="pagetitlebutton" name="pagetitlebutton" title="button" alt="Button"/></div>
    <div style="position:absolute; left:0px; top:0px; width:115px; height:123px;"><span style="position:absolute; left:4px; top:10px; width:105px; height:79px;"><img src="NewLogo2011.png" width="106" height="79" alt="logo"/></span></div>
    <div id="bannerbar" style="position:absolute; left:112px; top:0px; width:605px; height:125px; background: url(images/AltLiparibanner.jpg); layer-background-image: url(images/AltLiparibanner.jpg); border: 1px none #000000;">
      <script language="JavaScript" type="text/javascript">
        <!--
        var hasReqestedVersion = DetectFlashVer(8, 0, 0);
        if (hasReqestedVersion)
        AC_FL_RunContent(
            "src", "mybannerA",
            "play", "true",
            "loop", "true",
            "width", "605",
            "height", "125",
                        "wmode", "opaque",
            "salign", "C",
            "scale", "ShowAll",
            "id", "bannerbar",
            "quality", "High",
            "name", "bannerbar",
            "type", "application/x-shockwave-flash",
            'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab',
            "pluginspage", "http://www.macromedia.com/go/getflashplayer"
        else
        -->
        </script>
    </div>
    <div style="position:absolute; left:270px; top:1300px; width:50px; height:50px;">
        <a href="mailto:[email protected]"><img src="pageobjects/off_state.gif" width="50" height="50" border="0" id="emailroll" name="emailroll" title="emailbutton" alt="emailbutton"/></a></div>
    <div id="txt_382" style="position:absolute; left:20px; top:161px; width:106px; height:26px;-moz-box-sizing:border-box;box-sizing:border-box; overflow:hidden;">
      <span class="Normal-C5">1995 - 1998</span>
    </div>
    <div id="txt_383" style="position: absolute; left: 38px; top: 195px; width: 738px; height: 435px; -moz-box-sizing: border-box; box-sizing: border-box; overflow: hidden;">
    <span class="Normal-C6">After two years touring around Germany singing Dominic returned to Australia
        in 1995 to perform as <a name="Lanza"></a>Mario Lanza in </span><span class="Normal-C7"><a href="mariolanza.shtml" style="color:#000000;">The Mario Lanza Story</a></span><span class="Normal-C8"> </span><span class="Normal-C6">for a season of 10 shows
        at Mietta’s. It was a great opportunity for Dominic to sing the music of this remarkable
        singer in a tribute which was a marathon consisting of no less than 21 songs and
        duets ranging from Vesti la giubba to Serenade. Audiences and critics alike loved
        the show, so much that he returned to Australia again in 1996 for a further season
        presented in Adelaide, South Australia. </span><br /><span class="Normal-C6">Dominic’s reputation was growing in Australia and <a name="1996"></a>1996 saw him perform in the Melbourne
        Concert Hall with the Melbourne Symphony Orchestra in <a name="joshua"></a>Handel’s </span><span class="Normal-C7"><a href="concertoratorio.shtml#Joshua" style="color:#000000;">Joshua</a></span><span class="Normal-C6">, as well as
        <a name="stjohnpassion"></a>Bach’s </span><span class="Normal-C7"><a href="concertoratorio.shtml#StJohnPassion" style="color:#000000;">St. John Passion</a></span><span class="Normal-C6">, also with the <a name="australianpops"></a>Australian Pops Orchestra in a concert of
        italian hit tunes from Opera and song entitled </span><span class="Normal-C7"><a href="concertoratorio.shtml#Australianpopsorchestra" style="color:#000000;">Viva Italia</a></span><span class="Normal-C6">. In Adelaide he sang Joe
        in <a name="bluemonday"></a>Gershwin’s <a href="concertoratorio.shtml#GershwinBlueMonday" style="color:#000000;">Blue Monday</a> in the Adelaide Town Hall with the Adelaide Symphony Orchestra.
        In Sydney he appeared at the Sydney Concert Hall (Opera House) to sing <a name="ninthsymph"></a>Beethoven’s
        </span><span class="Normal-C7"><a href="concertoratorio.shtml#Beethoven9" style="color:#000000;">Ninth Symphony</a></span><span class="Normal-C6"> with the National Philharmonia Orchestra.</span>
    <br />
    <span class="Normal-C6">Apart from these Australian performances, Dominic also had his usual Tamino in Rostock,
        Ottavio in Hof, and his first <a name="ismaelehersfeld"></a> </span><span class="Normal-C7"><a href="germanyears.shtml#Ismaele1" style="color:#000000;">Ismaele</a></span><span class="Normal-C6"> in </span><span class="Normal-C10">Nabucco </span><span class="Normal-C6">in Germany at Bad Hersfeld, as well
        as a couple of Verdi <a name="verdirequiem"></a><a href="firsttenorroles.shtml#verdirequiem1" style="color:#000000;">Requiem</a>’s. In late 1996 Dominic began making inroads into the
        opera world beyond Austria and Germany. </span>
    <span class="Normal-P3"><br /><span class="Normal-P3"><span class="Normal-C6">His first engagement was in Cork, Ireland for Opera South as <a name="josedebut"></a></span><span class="Normal-C7"><a href="donjose.shtml" style="color:#000000;">Don Josè</a></span><span class="Normal-C10"> </span><span class="Normal-C6">in their production
        of Carmen. This was another role debut and a resounding success for him despite a
        ludicrously short rehearsal period, the last minute replacement of the conductor
        resulting in a dress rehearsal which began at 8:30 and finished at 2:30 the next
        morning which happened to be the day of the opening night which was followed by performances
        on each of the consecutive three evenings. A true baptism of fire for a new role!
        It has become an oft repeated role for Dominic; to date he has been involved in 5
        productions with a total of over 30 performances.</span>
    </span></span></div>
    <div style="position:absolute; left:37px; top:635px; width:740px; height:569px;">
        <iframe id="ifrm_15" name="ifrm_15" src="1997table.shtml" style="width:740px; height:650px;">1997-98 Table</iframe>
    </div>
    </div>
    <script type="text/javascript">
    // BeginOAWidget_Instance_2141544: #MenuBar_2
    var MenuBar_2 = new Spry.Widget.MenuBar2("#MenuBar_2", {
          widgetID: "MenuBar_2",
                widgetClass: "MenuBar  MenuBar_2FixedCentered",
                insertMenuBarBreak: true,
          mainMenuShowDelay: 100,
          mainMenuHideDelay: 200,
          subMenuShowDelay: 200,
          subMenuHideDelay: 200
    // EndOAWidget_Instance_2141544
    </script>
    </body>
    </html>

  • Gaps Between Orders while Rescheduling in DS Board

    Hi All,
    After rescheduling is carried out on DS board , I observe that there are gaps between orders on the resource and the sequence of orders have been changed.I am planning in forward direction and the scheduling mode used is insert operation.
    I need help in understanding the presence of gaps and why does rescheduling change sequence of orders.
    Thanks,
    Shweta

    Hi Thomas,
    Thanks for your valuable response.
    By using "Interrupt" functionality in DS board, the partially confirmed operations can be rescheduled, but when you double click on this operation, you will see the checkbox "Part.Conf." is removed.
    Now customer want to see this flag stays to be set, so as to configure the color for this partial confirmed operation, and meanwhile to enable the rescheduling functionality.
    Is it possible? Any enhancement we have to do for this requirement?
    Looking forward to your reply.
    Best regards,
    Cherry

Maybe you are looking for

  • New outputs generated when changing logical system in output master record

    Hi! We are sending documents from ECC 5 to a legacy system via XI/PI. We are about to move from an old XI installation to a new PI installation. The output record used (for example in a billing document) is set up based on logical system. When moving

  • How do I copy the drum track from my iphone over to my mac

    Hello - I just bought an iphone and downloaded Garageband. I noticed that my iphone version of GB has some really useful drum loops that are not present on my Mac. How can I copy the drum loops from my iphone to my mac, which is where I do most of my

  • Triggers in Oracle Forms

    Hi Friends, I want to study all the Triggers in Oracle Forms..... Can anyone have the List of Triggers in oracle forms? Please help me... Regards Williams.

  • Acrobat Reader DC Uninstalled my LiveCycle...

    Hello, I had to install Acrobat Reader on my PC yesterday for testing purposes and it apparently uninstalled my old copy of Acrobat Pro and LiveCycle and I want them back. Does anyone know how I can go about this? I'm kind of angry that Adobe did thi

  • HP iPrint Photo 3.0 won't connect with HP LaserJet P1102W

    The app I'm having problems with is the HP iPrint Photo 3.0 app. It can't find my LaserJet P1102W. I spoke with someone at HP who told me that it wasn't supported by this app but then I read otherwise in a previous posting. If it is supported, are th