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
-
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_FILEHi 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> -
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
vinayDear 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,
PriyaHi 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
maheshHi,
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 -
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 -
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
ElisabetHi,
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
NarainFor 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. -
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
naniDear 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 -
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
DominicOK 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'Elisir d'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'Elisir d'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,
ShwetaHi 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
-
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