Error in Proportional Factor Calculation Program
Hi ,
I have developed an ABAP Program to calculate Proportional Factor(PF) as below.
Generally,to calculate the PF for a period , we need to use transaction /sapapo/sdp94 to create a profile .After doing that , to calculate PF we need to go transaction /sapapo/mv8v .
Now,the given program has three options :-
1)Create : To create the selection-ID by taking areabasepackRS as name of the selection-ID . Here we need to give the excel sheet that is used to load data into /sapapo/mc8v to calculate PF.
2)Calculate PF : This option is used to calculate proportional factor.
Now if we try to calculate PF ,I get an error message saying there are no
plannable characteristic combinations .
3) Delete : This option is used to delete the selection profile.
I am getting an error in this program which I have explained with the document attached in this mail .
Please could anyone help me out with this .
The program is as below:-
<b>report ZRSNORMS_PPF
no standard page heading line-size 255.</b>
*include bdcrecx1.
INCLUDE ZAPO_DATA_DECLARATION_PPF.
INCLUDE Z_APO_FORMS_PPF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
DYNPRO_NUMBER = SYST-DYNNR
field_name = p_file1
STATIC = ' '
MASK = ' '
CHANGING
file_name = p_file1
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
start-of-selection.
PERFORM READ_DATA TABLES I_PROFILE
I_EXEL
IT_PROFILE_NAME
USING P_FILE1
CHANGING W_SUBRC.
PERFORM SAVE_SELECTION TABLES I_EXEL
IT_SAVE_SEL
IT_PROFILE_NAME.
IT_GRP-OBJNAM = 'ZRSBASPCK'.
APPEND IT_GRP.
LOOP AT IT_GRP INTO W_GROUP.
APPEND W_GROUP TO IT_GROUP.
ENDLOOP.
G_PAREAID = 'ZRSPAHPC'.
G_MVIEW = 'ZRSPAHPC'.
G_COUNT = 0.
IF CREATE = 'X'.
LOOP AT IT_SAVE_SEL INTO W_SEL_SAVE.
IF W_SEL_SAVE-IOBJNM = '9AVERSION' AND SY-TABIX > 1.
G_COUNT = G_COUNT + 1.
READ TABLE IT_PROFILE_NAME INDEX G_COUNT.
G_NAME = IT_PROFILE_NAME-F_NAME.
CALL FUNCTION '/SAPAPO/MCPSH_SELECTION_SAVE'
EXPORTING
IV_SELID =
IV_FLG_USED_FOR =
IV_PAREAID = G_PAREAID
IV_MVIEW = G_MVIEW
IV_SEL_DESCRIPTION = G_NAME
IT_SELECTION = IT_SEL_SAVE
IT_OBJECTS =
IT_SEL_GROUP = IT_GROUP
IV_POPUP_SEL_DESCRIPTION =
IMPORTING
EV_SELID =
EV_SEL_DESCRIPTION =
EXCEPTIONS
DUPLICATE_SELECTION = 1
MULTIPLE_SELECTION = 2
INCONSISTENT_DATABASE = 3
DUPLICATE_DESCRIPTION = 4
INVALID_DESCRIPTION = 5
NO_PERMISSION = 6
SELID_INVALID = 7
OTHERS = 8
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR IT_SEL_SAVE[].
APPEND W_SEL_SAVE TO IT_SEL_SAVE.
ELSEIF W_SEL_SAVE-IOBJNM = '9AVERSION' AND SY-TABIX = 1.
APPEND W_SEL_SAVE TO IT_SEL_SAVE.
ELSE.
APPEND W_SEL_SAVE TO IT_SEL_SAVE.
ENDIF.
ENDLOOP.
G_COUNT = G_COUNT + 1.
READ TABLE IT_PROFILE_NAME INDEX G_COUNT.
G_NAME = IT_PROFILE_NAME-F_NAME.
CALL FUNCTION '/SAPAPO/MCPSH_SELECTION_SAVE'
EXPORTING
IV_SELID =
IV_FLG_USED_FOR =
IV_PAREAID = G_PAREAID
IV_MVIEW = G_MVIEW
IV_SEL_DESCRIPTION = G_NAME
IT_SELECTION = IT_SEL_SAVE
IT_OBJECTS =
IT_SEL_GROUP = IT_GROUP
IV_POPUP_SEL_DESCRIPTION =
IMPORTING
EV_SELID =
EV_SEL_DESCRIPTION =
EXCEPTIONS
DUPLICATE_SELECTION = 1
MULTIPLE_SELECTION = 2
INCONSISTENT_DATABASE = 3
DUPLICATE_DESCRIPTION = 4
INVALID_DESCRIPTION = 5
NO_PERMISSION = 6
SELID_INVALID = 7
OTHERS = 8
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IV_GROUP = 'ZRSBASPCK'.
LOOP AT IT_SEL_SAVE INTO w_confirm_sel.
APPEND w_confirm_sel TO it_confirm_sel.
ENDLOOP.
CALL FUNCTION '/SAPAPO/MSDP_SH_OBJ_LIST_BUILD'
EXPORTING
IV_PAREAID = G_PAREAID
IV_MVIEW = G_MVIEW
IV_DVIEW =
IV_FROMDATE =
IV_ENDDATE =
IV_NO_POPUPS =
IMPORTING
ET_SH_OBJECTS =
EXCEPTIONS
INVALID_INPUT = 1
INTERNAL_ERROR = 2
OTHERS = 3
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR IT_SEL_SAVE[].
ENDIF.
if calc_ppf = 'X'.
PERFORM CALC_PPF TABLES I_EXEL
BDCTAB
IT_PROFILE_NAME.
ENDIF.
if del_prof = 'X'.
LOOP AT I_EXEL.
concatenate i_exel-area I_EXEL-BASE INTO DEL_NAME.
SELECT SINGLE * FROM /SAPAPO/TS_SELKO INTO IT_TS_SELKO
WHERE SEL_DESRCIPTION = DEL_NAME.
DEL_PROFILE = IT_TS_SELKO-SELECTIONID.
CALL FUNCTION '/SAPAPO/MCPSH_SELECTION_DELETE'
EXPORTING
IV_SELID = DEL_PROFILE
IV_FLG_CONFIRM_TRANS = 'X'
EXCEPTIONS
NO_ENTRY = 1
NO_AUTHORITY = 2
DELETION_NOT_POSSIBLE = 3
OTHERS = 4
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDIF.
<b>INCLUDE ZAPO_DATA_DECLARATION_PPF .</b>
types: t_ts_selpo type /sapapo/ts_selpo.
TYPES: BEGIN OF T_EXEL,
PROF_DATFRM TYPE DATS,
PROF_DATTO TYPE DATS,
FORCAST_FROM TYPE DATS,
FORCAST_TO TYPE DATS,
AREA(60),
BASE(60),
POPID(60),
RATING(60),
RS(60),
END OF T_EXEL.
types: begin of t_profile,
obj(30),
val(60),
end of t_profile.
TYPES: begin of t_profile_name,
f_name(60),
end of t_profile_name.
DATA: G_COUNT TYPE I VALUE 0.
*TYPES: T_SAVE_SEL LIKE IT_SELECTION.
data: w_subrc TYPE sy-subrc,
I_TS_SELPO TYPE Table of t_ts_selpo with header line,
I_EXEL TYPE Table of t_EXEL with header line.
DATA: IV_GROUP TYPE /SAPAPO/IOBJNM.
DATA: IT_PROFILE_NAME TYPE TABLE OF T_PROFILE_NAME WITH HEADER LINE.
data: i_profile type table of t_profile with header line.
*/sapapo/ts_iobj_selection_tab.
data: IT_SEL_SAVE TYPE /sapapo/ts_iobj_selection_tab,
w_SEL_SAVE type /SAPAPO/TS_IOBJ_SELECTION.
DATA: IT_CONFIRM_SEL TYPE /SAPAPO/SH_SEL_RANGE_TAB,
W_CONFIRM_SEL TYPE /SAPAPO/SH_SEL_RANGE_STR.
TYPES: BEGIN OF T_SAVE_SEL,
IOBJNM(30),
SIGN,
OPTION(2),
LOW(60),
HIGH(60),
END OF T_SAVE_SEL.
DATA: IT_SAVE_SEL TYPE TABLE OF T_SAVE_SEL WITH HEADER LINE.
TYPES: BEGIN OF T_GRP,
OBJNAM(30),
END OF T_GRP.
DATA: IT_GRP TYPE TABLE OF T_GRP WITH HEADER LINE.
DATA DECLARATION FOR FUNC MODULE **************
DATA: IT_GROUP TYPE /SAPAPO/TS_GROUP_BY_TAB,
W_GROUP TYPE /SAPAPO/TS_GROUP_BY_STR.
DATA: G_PAREAID TYPE /SAPAPO/TS_PAREAID,
G_MVIEW TYPE /SAPAPO/PB_MVIEW,
G_NAME TYPE /SAPAPO/TS_SEL_DESCR.
BDC TABLES ***************************
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: it_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA : BDCTAB like BDCDATA occurs 0 with header line.
DATA : w_file type string.
****************BDC ERROR TAB ***************************
DATA : xcount1 TYPE i,
xstat TYPE i,
xmsgv1 LIKE balm-msgv1,
xmsgv2 LIKE balm-msgv2,
xmsgv3 LIKE balm-msgv3,
xmsgv4 LIKE balm-msgv4,
xmessage(80) TYPE c.
DATA : BEGIN OF t_errlog OCCURS 0,
sno TYPE i,
message(80) TYPE c,
END OF t_errlog.
DATA: DEL_PROFILE TYPE /SAPAPO/SELECTIONID2,
DEL_NAME(60).
************DUPLICATE NAME TAB **************************
DATA: IT_NOT_PROCESSED TYPE TABLE OF /SAPAPO/TS_SELPO WITH HEADER LINE.
DELETE TAB *****************************
DATA: IT_TS_SELKO TYPE TABLE OF /SAPAPO/TS_SELKO WITH HEADER LINE.
SELECTION-SCREEN : BEGIN OF BLOCK b1.
parameters: p_file1 TYPE rlgrap-filename.
parameters: create type c radiobutton group g1,
calc_ppf type c radiobutton group g1,
del_prof type c radiobutton group g1.
SELECTION-SCREEN END OF BLOCK b1.
Include Z_APO_FORMS_PPF
*& Include Z_APO_FORMS_PPF
*& Form READ_DATA
text
-->P_I_PROFILE text
-->P_I_EXEL text
-->P_IT_PROFILE_NAME text
-->P_P_FILE1 text
<--P_W_SUBRC text
FORM READ_DATA TABLES P_I_PROFILE STRUCTURE I_PROFILE
P_I_EXEL STRUCTURE I_EXEL
P_IT_PROFILE_NAME STRUCTURE IT_PROFILE_NAME
USING P_P_FILE1
CHANGING P_W_SUBRC.
DATA : iexcel LIKE zexcel_read OCCURS 0 WITH HEADER LINE,
G_DATE TYPE DATS.
data: l_name(60).
CLEAR p_w_subrc.
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_p_file1
i_begin_col = 1
i_begin_row = 1
i_end_col = 62
i_end_row = 50000
TABLES
intern = iexcel.
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
p_w_subrc = 0 .
endif.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT iexcel WHERE row > 1.
IF iexcel-col = '0001'.
PERFORM CONVERT_DATE CHANGING G_DATE iexcel-value.
p_i_EXEL-PROF_DATFRM = G_DATE.
ENDIF.
IF iexcel-col = '0002'.
PERFORM CONVERT_DATE CHANGING G_DATE iexcel-value.
p_i_EXEL-PROF_DATTO = G_DATE.
ENDIF.
IF iexcel-col = '0003'.
PERFORM CONVERT_DATE CHANGING G_DATE iexcel-value.
p_i_EXEL-FORCAST_FROM = G_DATE.
ENDIF.
IF iexcel-col = '0004'.
PERFORM CONVERT_DATE CHANGING G_DATE iexcel-value.
p_i_EXEL-FORCAST_TO = G_DATE.
ENDIF.
IF iexcel-col = '0005'.
p_i_EXEL-AREA = iexcel-value.
p_i_profile-obj = 'ZRSAREA'.
p_i_profile-VAL = iexcel-value.
append p_i_PROFILE.
clear p_i_PROFILE.
ENDIF.
IF iexcel-col = '0006'.
p_i_EXEL-BASE = iexcel-value.
p_i_profile-obj = 'ZRSBASPCK'.
p_i_profile-VAL = iexcel-value.
append p_i_PROFILE.
clear p_i_PROFILE.
ENDIF.
IF iexcel-col = '0007'.
p_i_EXEL-POPID = iexcel-value.
p_i_profile-obj = 'ZRSPOPULN'.
p_i_profile-VAL = iexcel-value.
append p_i_PROFILE.
clear p_i_PROFILE.
ENDIF.
IF iexcel-col = '0008'.
p_i_EXEL-RATING = iexcel-value.
ENDIF.
IF iexcel-col = '0009'.
p_i_EXEL-RS = iexcel-value.
p_i_profile-obj = 'ZRSCUSTMR'.
p_i_profile-VAL = iexcel-value.
append p_i_PROFILE.
clear p_i_PROFILE.
ENDIF.
at end of row.
append p_i_EXEL.
clear p_i_EXEL.
endat.
endloop.
loop at P_I_EXEL.
concatenate P_I_EXEL-AREA P_I_EXEL-BASE INTO L_NAME.
P_it_profile_name-f_name = l_name.
append P_it_profile_name.
ENDLOOP.
ENDFORM. " READ_DATA
*& Form CONVERT_DATE
text
<--P_G_DATE text
<--P_IEXCEL_VALUE text
FORM CONVERT_DATE CHANGING P_G_DATE
P_IEXCEL_VALUE.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = p_iexcel_value
ACCEPT_INITIAL_DATE =
IMPORTING
DATE_INTERNAL = p_g_date
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " CONVERT_DATE
*& Form SAVE_SELECTION
text
-->P_I_EXEL text
-->P_IT_SAVE_SEL text
-->P_IT_PROFILE_NAME text
FORM SAVE_SELECTION TABLES P_I_EXEL STRUCTURE I_EXEL
P_IT_SAVE_SEL STRUCTURE IT_SAVE_SEL
P_IT_PROFILE_NAME STRUCTURE IT_PROFILE_NAME.
DATA: L_PAREAID(40).
loop at p_i_exel.
p_it_save_sel-iobjnm = '9AVERSION'.
p_it_save_sel-SIGN = 'I'.
p_it_save_sel-OPTION = 'EQ'.
p_it_save_sel-LOW = '000'.
APPEND P_IT_SAVE_SEL.
CLEAR P_IT_SAVE_SEL.
p_it_save_sel-iobjnm = 'ZRSAREA'.
p_it_save_sel-SIGN = 'I'.
p_it_save_sel-OPTION = 'EQ'.
p_it_save_sel-LOW = P_I_EXEL-AREA.
APPEND P_IT_SAVE_SEL.
CLEAR P_IT_SAVE_SEL.
IF NOT P_I_EXEL-BASE IS INITIAL.
p_it_save_sel-iobjnm = 'ZRSBASPCK'.
p_it_save_sel-SIGN = 'I'.
p_it_save_sel-OPTION = 'EQ'.
p_it_save_sel-LOW = P_I_EXEL-BASE.
ENDIF.
APPEND P_IT_SAVE_SEL.
CLEAR P_IT_SAVE_SEL.
IF NOT P_I_EXEL-POPID IS INITIAL.
p_it_save_sel-iobjnm = 'ZRSPOPULN'.
p_it_save_sel-SIGN = 'I'.
p_it_save_sel-OPTION = 'EQ'.
p_it_save_sel-LOW = P_I_EXEL-POPID.
APPEND P_IT_SAVE_SEL.
CLEAR P_IT_SAVE_SEL.
ENDIF.
IF NOT P_I_EXEL-RS IS INITIAL.
p_it_save_sel-iobjnm = 'ZRSCUSTMR'.
p_it_save_sel-SIGN = 'I'.
p_it_save_sel-OPTION = 'EQ'.
p_it_save_sel-LOW = P_I_EXEL-RS.
APPEND P_IT_SAVE_SEL.
CLEAR P_IT_SAVE_SEL.
ENDIF.
write 'hi'.
*CLEAR P_IT_SAVE_SEL[].
ENDLOOP.
*submit
ENDFORM. " SAVE_SELECTION
*& Form CALC_PPF
text
-->P_I_EXEL text
-->P_BDCTAB text
-->P_IT_PROFILE_NAME text
FORM CALC_PPF TABLES P_I_EXEL STRUCTURE I_EXEL
P_BDCTAB STRUCTURE BDCTAB
P_IT_PROFILE_NAME STRUCTURE IT_PROFILE_NAME.
DATA: PERIOD_FROM TYPE /SAPAPO/BASIS_VON_BIS,
PERIOD_TO TYPE /SAPAPO/BASIS_VON_BIS,
TRANSFER_FORM TYPE /SAPAPO/TARGET_VON_BIS,
TRANSFER_TO TYPE /SAPAPO/TARGET_VON_BIS,
SEL_PROFILE TYPE /SAPAPO/SEL_TXT.
DATA: SEL_NAME(60).
DATA : L_TEMP TYPE SY-DATUM,
L_TEMP1 TYPE SY-DATUM,
L_TEMP2 TYPE SY-DATUM,
L_TEMP3 TYPE SY-DATUM.
LOOP AT P_I_EXEL.
L_TEMP0(2) = P_I_EXEL-FORCAST_FROM6(2). "passed date
L_TEMP2(2) = P_I_EXEL-FORCAST_FROM4(2). "passed Month
L_TEMP4(4) = P_I_EXEL-FORCAST_FROM0(4). "passed year
L_TEMP10(2) = P_I_EXEL-FORCAST_TO6(2). "passed date
L_TEMP12(2) = P_I_EXEL-FORCAST_TO4(2). "passed Month
L_TEMP14(4) = P_I_EXEL-FORCAST_TO0(4). "passed year
L_TEMP20(2) = P_I_EXEL-PROF_DATFRM6(2). "passed date
L_TEMP22(2) = P_I_EXEL-PROF_DATFRM4(2). "passed Month
L_TEMP24(4) = P_I_EXEL-PROF_DATFRM0(4). "passed year
L_TEMP30(2) = P_I_EXEL-PROF_DATTO6(2). "passed date
L_TEMP32(2) = P_I_EXEL-PROF_DATTO4(2). "passed Month
L_TEMP34(4) = P_I_EXEL-PROF_DATTO0(4). "passed year
PERIOD_FROM = L_TEMP2.
PERIOD_TO = L_TEMP3.
transfer_form = L_TEMP.
TRANSFER_TO = L_TEMP1.
concatenate P_I_EXEL-AREA P_I_EXEL-BASE INTO SEL_NAME.
SEL_PROFILE = SEL_NAME.
perform bdc_dynpro using '/SAPAPO/RMDP_SHARE_VERSION_M' '1000'.
perform bdc_field using 'BDC_CURSOR'
'BPAREAID'.
perform bdc_field using 'BDC_OKCODE'
'=ONLI'.
perform bdc_field using 'PAREAID'
'ZRSPAHPC'.
perform bdc_field using 'FLG_AREA'
'X'.
perform bdc_field using 'BPAREAID'
'ZRSPAHPC'.
perform bdc_dynpro using '/SAPAPO/RMDP_SHARE_MANAGER' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=UCOMM1'.
perform bdc_field using 'BDC_CURSOR'
'Z_DATE-HIGH'.
perform bdc_field using 'B_VER'
'000'.
perform bdc_field using 'B_KENN'
'9AVCORHIST'.
perform bdc_field using 'B_DATE-LOW'
PERIOD_FROM.
perform bdc_field using 'B_DATE-HIGH'
PERIOD_TO.
perform bdc_field using 'VERSION'
'000'.
perform bdc_field using 'Z_DATE-LOW'
transfer_form.
perform bdc_field using 'Z_DATE-HIGH'
TRANSFER_TO.
perform bdc_field using 'FLG_ONE'
'X'.
perform bdc_dynpro using '/SAPAPO/RMDP_SHARE_MANAGER' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=ONLI'.
perform bdc_field using 'BDC_CURSOR'
'SEL_TXT'.
perform bdc_field using 'SEL_TXT'
SEL_PROFILE.
perform bdc_dynpro using '/SAPAPO/RMDP_SHARE_MANAGER' '1000'.
perform bdc_field using 'BDC_OKCODE'
'/EE'.
perform bdc_dynpro using '/SAPAPO/RMDP_SHARE_VERSION_M' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=ONLI'.
perform bdc_field using 'BDC_OKCODE'
'/EE'.
perform bdc_field using 'BDC_CURSOR'
'PAREAID'.
*perform bdc_transaction using '/SAPAPO/MC8V'.
SELECT SINGLE * FROM /SAPAPO/TS_SELKO INTO IT_TS_SELKO
WHERE SEL_DESRCIPTION = sel_NAME.
if sy-subrc = 0.
call transaction '/SAPAPO/MC8V'
using bdctab
mode 'A'
update 'L'
messages into it_messtab.
describe table it_messtab lines xcount1.
read table it_messtab index xcount1.
LOOP AT it_messtab WHERE msgtyp = 'E'
OR msgtyp = 'A'.
MOVE It_messtab-msgv1 TO xmsgv1.
MOVE It_messtab-msgv2 TO xmsgv2.
MOVE It_messtab-msgv3 TO xmsgv3.
MOVE It_messtab-msgv4 TO xmsgv4.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
LANGUAGE = sy-langu
msg_id = It_messtab-msgid
msg_no = It_messtab-msgnr
MSG_VAR1 = xmsgv1
MSG_VAR2 = xmsgv2
MSG_VAR3 = xmsgv3
MSG_VAR4 = xmsgv4
IMPORTING
MSG_TEXT = xmessage
EXCEPTIONS
FUNCTION_NOT_COMPLETED = 1
MESSAGE_NOT_FOUND = 2
OTHERS = 3
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
MOVE sy-tabix TO t_errlog-sno.
MOVE xmessage TO t_errlog-message.
APPEND t_errlog.
CLEAR t_errlog..
ENDLOOP.
CLEAR BDCTAB[].
CLEAR SEL_NAME.
CLEAR P_I_EXEL.
endif.
ENDLOOP.
ENDFORM. " CALC_PPF
*& Form bdc_dynpro
text
-->P_0424 text
-->P_0425 text
FORM bdc_dynpro USING PROGRAM DYNPRO.
CLEAR bdcTAB.
bdcTAB-program = program.
bdcTAB-dynpro = dynpro.
bdcTAB-dynbegin = 'X'.
APPEND bdcTAB.
ENDFORM. " bdc_dynpro
*& Form bdc_field
text
-->P_0494 text
-->P_TRANSFER_FROM text
FORM bdc_field USING FNAM FVAL.
CLEAR bdcTAB.
bdcTAB-fnam = fnam.
bdcTAB-fval = fval.
APPEND bdcTAB.
ENDFORM. " bdc_field
Hi,
As I have not been able to attach the document, I will explain the problem in full as below:-
Business scenario - Consider a factory having 5 different customers (which is known as Customer_rs). We need to supply stock to each of them based on their past consumption. So to forecast this, we calculate a factor known as proportional factor based on the data we have for previous months.
So to calculate the PF for a period, we need to create a profile in /sapapo/sdp94 .
After creating the profile, the profile can be seen by clicking on SPD94 and going to selection-screen button .
Then to calculate PF , we need to go to transaction /sapapo/mv8v .
Here we will have to give the selection id that was saved in SDP94.
All this process has to be automated and a program has been created to do this.
A description of how the program works is as given below.
When we try to calculate the proportional factor with this program , the following error is obtained :-
There are no plannable characteristic combinations.
We are passing the same parameters that were passed by the SDP94 transaction to the standard function module for saving the selection ids. This is shown in the below screenshots.
In spite of this we are getting the error.
Now to delete the selection ids,click on delete option in the program .
But the problem is even if we click on delete , the PPF data will be stored in the database inspite of deleting the selection profiles .
Please can anyone help me out with this .
Regards,
Sushanth H.S.
Now we will have to give the selection description
Now the profile can be seen by going to SDP94 and clicking on selection profile button.
Now to calculate PF, go to transaction /sapapo/mv8v
Click on execute and give following inputs
This will forecast the PF for the period 01.09.2007 to 21.02.2007 based on data from 21.04.2007 to 20.05.2007
Click on other settings
Here we will have to give the selection id that was saved in SDP94.
Click on execute.
All this process has to be automated and a program was created to do this.
A description of how the program is given below.
Program zrsnorms_ppf
Execute.
Give file path of excel sheet.
Execute.
This will create the selection id by taking areabasepackRS as name of id.
This is the excel sheet that is used to load data into /sapapo/mc8v to calculate the PF.
Upon executing, the ids have been created
The new selection ids can be seen by going to /sapapo/sdp94
And clicking on selection profile.
Parameters passed to standard function module in order to save the selection id.
Now if we try to calculate PF using the program, the following happens
When executed,
BDC is called to input data to transaction /sapapo/mc8v to calculate ppf.
An error screen is generated with the message There are no plannable characteristic combinations.
We are passing the same parameters that were passed by the SDP94 transaction to the standard function module for saving the selection ids. This is shown in the below screenshots.
In spite of this we are getting the error.
When IV_POPUP_SEL_DESCRIPTION is passed, a popup will be displayed where the selection description will have to be entered. I am passing the same selection description here as is picked by the program.( H3HPCDEL00110096, H3HPCDEL00110063)
To avoid this, we need to go to SDP94 and after going to selection window, we need to save the selections as shown in the following screenshots.
Select the selection id one by one.
Click on save selection
Click on save.
Do the same for all ids created by the program.
Now if we try to calculate the PF using the program, it is seen to work
So what needs to be done is that we need to avoid going to SDP94 in order to save the selections after the ids are created by the program.
How the Program works
Se38
Program zrsnorms_ppf
Execute.
Give file path of excel sheet.
Execute.
This will create the selection id by taking areabasepackRS as name of id.
The new selection ids can be seen by going to /sapapo/sdp94
And clicking on selection profile.
Now the selection has to be saved. For that, follow the following procedure.
Click on selection window.
Click on load selection.
Select the ids.
Select and then press save.
Do the same for every id.
Only then can proportional factor be calculated.
Now go to program and select Calc_ppf, with filepath to excel sheet as the sel_ids will be pulled from the excel.
When executed,
BDC is called to input data to transaction /sapapo/mc8v to calculate ppf.
Now go to sdp94 and load the selection
Click on load data.
And make sure, data view is TDP_VIEW_PROP as shown
PPF will be shown for the period chosen in the excel sheet.
Now to delete the selection ids.
Go to the program and give file path of the excel sheet and execute.
The selection profiles will be deleted as shown.
But PPF data will be stored in the database inspite of deleting the selection profiles. And ppf can be shown by selecting the basepack and the sales area.
Click load data.
Business scenario - Consider a factory having 5 different customers (which is known as Customer_rs). We need to supply stock to each of them based on their past consumption. So to forecast this, we calculate a factor known as proportional factor based on the data we have for previous months.
So to calculate the PF for a period, we need to create a profile in /sapapo/sdp94
How it is done in standard transaction /SAPAPO/SDP94
Important pushbuttons and their functions
Click on selection window.
Give the selections
Click on save selection
A break-point has been set in the standard program to show what all parameters are being passed to the standard function module /SAPAPO/MCPSH_SELECTION_SAVE used to save the selection
Now we will have to give the selection description
Now the profile can be seen by going to SDP94 and clicking on selection profile button.
Now to calculate PF, go to transaction /sapapo/mv8v
Click on execute and give following inputs
This will forecast the PF for the period 01.09.2007 to 21.02.2007 based on data from 21.04.2007 to 20.05.2007
Click on other settings
Here we will have to give the selection id that was saved in SDP94.
Click on execute.
All this process has to be automated and a program was created to do this.
A description of how the program is given below.
Program zrsnorms_ppf
Execute.
Give file path of excel sheet.
Execute.
This will create the selection id by taking areabasepackRS as name of id.
This is the excel sheet that is used to load data into /sapapo/mc8v to calculate the PF.
Upon executing, the ids have been created
The new selection ids can be seen by going to /sapapo/sdp94
And clicking on selection profile.
Parameters passed to standard function module in order to save the selection id.
Now if we try to calculate PF using the program, the following happens
When executed,
BDC is called to input data to transaction /sapapo/mc8v to calculate ppf.
An error screen is generated with the message There are no plannable characteristic combinations.
We are passing the same parameters that were passed by the SDP94 transaction to the standard function module for saving the selection ids. This is shown in the below screenshots.
In spite of this we are getting the error.
When IV_POPUP_SEL_DESCRIPTION is passed, a popup will be displayed where the selection description will have to be entered. I am passing the same selection description here as is picked by the program.( H3HPCDEL00110096, H3HPCDEL00110063)
To avoid this, we need to go to SDP94 and after going to selection window, we need to save the selections as shown in the following screenshots.
Select the selection id one by one.
Click on save selection
Click on save.
Do the same for all ids created by the program.
Now if we try to calculate the PF using the program, it is seen to work
So what needs to be done is that we need to avoid going to SDP94 in order to save the selections after the ids are created by the program.
How the Program works
Se38
Program zrsnorms_ppf
Execute.
Give file path of excel sheet.
Execute.
This will create the selection id by taking areabasepackRS as name of id.
The new selection ids can be seen by going to /sapapo/sdp94
And clicking on selection profile.
Now the selection has to be saved. For that, follow the following procedure.
Click on selection window.
Click on load selection.
Select the ids.
Select and then press save.
Do the same for every id.
Only then can proportional factor be calculated.
Now go to program and select Calc_ppf, with filepath to excel sheet as the sel_ids will be pulled from the excel.
When executed,
BDC is called to input data to transaction /sapapo/mc8v to calculate ppf.
Now go to sdp94 and load the selection
Click on load data.
And make sure, data view is TDP_VIEW_PROP as shown
PPF will be shown for the period chosen in the excel sheet.
Now to delete the selection ids.
Go to the program and give file path of the excel sheet and execute.
The selection profiles will be deleted as shown.
But PPF data will be stored in the database inspite of deleting the selection profiles. And ppf can be shown by selecting the basepack and the sales area.
Click load data.
Similar Messages
-
APO DP Proportional factors with LIKE profile settings
Can someone explain how Proportional factors get generated when we setup a new product with LIKE profile settings? We are getting forecast generated at lower levels such as customer characteristic at levels we would not anticipate, and we don't see any proportional factors generated.
Example: we have Existing product A and new product B. We setup the LIKE profile for Product B to replace product A. At the product level the forecast is generated correctly. Currently product A has customers 1, 2, 3, 4 where customer 3 has 80% of the volume and customer 4 has 15% and customers 1 & 2 have the remaining volume. When the forecast is generated for product B customer 4 is getting 60%, customer 3 50% and 1 & 2 the remaining volume. There are no proportional factors generated for this new product. When I try to create proportional factors for the new product it says there is no historical shipments to use which would be correct. How do I get the dis aggregation of customers under product B to use the proportions that were used for product A?Hi Ganesh,
Please refer following thread -
APO DP proportional factor calculation
Also you can refer to following link where its explained indetail -
Generation of Proportional Factors - Master Data Setup - SAP Library
Hope it helps.
Regards,
Alok -
Hi Gurus,
Am New to APO DP,Could any one Provide me Documentation with Screen Shots on:"APO DP Proportional factors" It will be helpful in my current project.
Currently am using below key figures please explore...
Key figures:
Forecast
promotion
History
Actual Forecast
Thanks
GaneshHi Ganesh,
Please refer following thread -
APO DP proportional factor calculation
Also you can refer to following link where its explained indetail -
Generation of Proportional Factors - Master Data Setup - SAP Library
Hope it helps.
Regards,
Alok -
Hi,
In DP, when i specified the Disaggregation KF for the proportional distribution based on KF. the system disaggregating equally for every member? what could be the reason?
in another, the disaggregated values in the future differ from each other, but the values should be the same and should not be dependent on the period? can you pls help.
Thanks,
Regards,
DhanushAs I understood from your requirement that you need a disaggregation of KF1 based on the proportions of other key figures KF2 .
Please check following settings in Planning Area maintenance..
1.For Key figure-KF1 you have maintained the u2018Calculation typeu2019 as P i.e. Based on Different Key Figure .
2.On this screen for key figure KF1 in the field u2018Disaggregation key figureu2019 the key figure(KF2) on which disaggregation is based.
3.Whereas if you want the disaggregation based on some constant proportional factors, then with Calculation type 'P' choose the key figure APODPDANT in the field Disaggregation key figure.
Regards,
Digambar -
Hi All
We are creating POs from interface program "Import Standard Purchase Order Program". Only for few of the POs, we are encountering the error 'Warning: An error occurred during tax calculation
. Please correct the problem or contact your system administrator.'
This error is happening for few PO's, other POs with same vendor, ship to and bill to location created successfully by the program
Any inputs on how to resolve this error is greatly appreciated.
Regards,
BrajeshHi Hussein,
Thank for the prompt response.
We have already applied the patch related to doc 1272684.1.
Below are the environment detail.
Database: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
Application : 12.1.3
Diagnostic tool output :-
INTERFACE_
TRANSACTION_ID
INTERFACE_TYPE
COLUMN_NAME
PROCESSING_DATE
TABLE_NAME
ERROR_MESSAGE_NAME
ERROR_MESSAGE
100148
PO_DOCS_OPEN_INTERFACE
09-Aug-2013
PO_HEADERS_INTERFACE
PO_PDOI_TAX_CALCULATION_ERR
Warning: An error occurred during tax calculation. Please correct the problem or contact your system administrator.
Log file :-
+---------------------------------------------------------------------------+
Purchasing: Version : 12.0.0
Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
POXPOPDOI module: Import Standard Purchase Orders
+---------------------------------------------------------------------------+
Current system time is 09-AUG-2013 21:09:04
+---------------------------------------------------------------------------+
+-----------------------------
| Starting concurrent program execution...
+-----------------------------
Arguments
STANDARD
N
INCOMPLETE
12805
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
To get the log messages for PDOI, please use the following id to query against FND_LOG_MESSAGES table:
AUDSID = 12076063
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
Executing request completion options...
Output file size:
69
+------------- 1) PRINT -------------+
Printing output file.
Request ID : 55116524
Number of copies : 0
Printer : noprint
+--------------------------------------+
Finished executing request completion options.
+---------------------------------------------------------------------------+
Concurrent request completed successfully
Current system time is 09-AUG-2013 22:27:42
+---------------------------------------------------------------------------+
Brajesh -
Error when running mortgage calc program from DOS prompt
I have a GUI Mortgage Calculator program. It probably isn't the most efficient use of code, but it gets the job done. I am running java SDK 1.6.0_06. This is a class assignment. We are to compile the code and post the .class file for our team members to run. I am trying to get the .class file to run after I compile it with javac. I used jCreator LE to create it... it compiles and runs there just fine. The program will compile at the DOS prompt, but will not run properly. The following is the error I get (any help would be appreciated):
Exception in thread "mani" java.lang.NoClassDefFoundError: manchorMortgage3
Caused by: java.lang.ClassNotFoundException: manchorMortgage3
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader1.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Below is my code:
* manchorMortgage3.java
* Created on July 10, 2008
* This program calculates and displays the mortgage amount
* from user input of the amount of the mortgage and the user's
* selection from a menu of available mortgage loans.
import java.math.*; //*loan calculator
import java.text.*; //*formats numbers
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class manchorMortgage3 extends javax.swing.JFrame {
/** Creates new form manchorMortgage3 */
public manchorMortgage3() {
initComponents();
setLocation(300,200);
/** This method is called from within the constructor to
* initialize the form.
// Begin Initialize Components
private void initComponents() {
mortgageAmount = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
termAndInterest = new javax.swing.JLabel();
jRadioButton1 = new javax.swing.JRadioButton();
jRadioButton2 = new javax.swing.JRadioButton();
jRadioButton3 = new javax.swing.JRadioButton();
calcButton = new javax.swing.JButton();
enterAmount = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Manchor - Mortgage Calculator - Week 3");
mortgageAmount.setText("Enter the Mortgage Amount:");
termAndInterest.setText("Select Your Term and Interest Rate:");
jRadioButton1.setText("7 years at 5.35%");
jRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0));
jRadioButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton1ActionPerformed(evt);
jRadioButton2.setText("15 years at 5.5%");
jRadioButton2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0));
jRadioButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton2ActionPerformed(evt);
jRadioButton3.setText("30 years at 5.75%");
jRadioButton3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jRadioButton3.setMargin(new java.awt.Insets(0, 0, 0, 0));
jRadioButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton3ActionPerformed(evt);
calcButton.setText("Calculate");
calcButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
calcButtonActionPerformed(evt);
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton2.setText("Quit");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(26, 26, 26)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 324, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(enterAmount)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 222, Short.MAX_VALUE)
.addComponent(calcButton)
.addGap(75, 75, 75))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jRadioButton3)
.addComponent(jRadioButton2)
.addComponent(jRadioButton1)
.addComponent(termAndInterest)
.addComponent(mortgageAmount)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(224, Short.MAX_VALUE)))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(277, Short.MAX_VALUE)
.addComponent(jButton2)
.addGap(70, 70, 70))
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(31, 31, 31)
.addComponent(mortgageAmount)
.addGap(14, 14, 14)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(20, 20, 20)
.addComponent(termAndInterest)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jRadioButton1)
.addGap(15, 15, 15)
.addComponent(jRadioButton2)
.addGap(19, 19, 19)
.addComponent(jRadioButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(calcButton)
.addComponent(enterAmount))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(jButton2)
.addGap(20, 20, 20))
pack();
}// End initialize components
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//event_jButton2ActionPerformed
System.exit(1);
}//event_jButton2ActionPerformed
static NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
static NumberFormat np = NumberFormat.getPercentInstance();
static NumberFormat ni = NumberFormat.getIntegerInstance();
static BufferedReader br;
private void calcButtonActionPerformed(java.awt.event.ActionEvent evt) {//event_calcButtonActionPerformed
enterAmount.setText(null);
jTextArea1.setText(null);
double monthlyPayment;
double interest;
double amount ;
int years ;
double monthlyInterest, monthlyPrinciple, principleBalance;
int paymentsRemaining, lineCount;
np.setMinimumFractionDigits(2);
br = new BufferedReader(new InputStreamReader(System.in));
lineCount = 0;
try
amount=Double.parseDouble(jTextField1.getText());
catch (Exception e)
enterAmount.setText("Please Enter Mortgage Amount");
return;
if(jRadioButton1.isSelected())
interest=0.0535;
years=7;
else if(jRadioButton2.isSelected())
interest=0.055;
years=15;
else if(jRadioButton3.isSelected())
interest=0.0575;
years=30;
else
enterAmount.setText("Please Select Your Term and Interest Rate");
return;
jTextArea1.append(" For a mortgage of " + nf.format(amount)+"\n"+" With a Term of " + ni.format(years) + " years"+"\n"+" And an Interest rate of " + np.format(interest)+"\n"+" The Payment Amount is " + nf.format(getMortgagePmt(amount, years, interest)) + " per month."+"\n"+"\n");
principleBalance = amount - ((getMortgagePmt(amount, years, interest)) - (amount*(interest/12)));
paymentsRemaining = 0;
do
monthlyInterest = principleBalance * (interest/12);//*Current monthly interest
monthlyPrinciple = (getMortgagePmt(amount, years, interest)) - monthlyInterest;//*Principal payment each month minus interest
paymentsRemaining = paymentsRemaining + 1;
principleBalance = principleBalance - monthlyPrinciple;//*New balance of loan
jTextArea1.append(" Principal on payment " + ni.format(paymentsRemaining) + " is " + nf.format(monthlyPrinciple)+"\n");
jTextArea1.append(" Interest on payment " + ni.format(paymentsRemaining) + " is " + nf.format(monthlyInterest)+"\n");
jTextArea1.append(" New loan balance on payment " + ni.format(paymentsRemaining) + " is " + nf.format(principleBalance)+"\n"+"\n"+"\n");
while (principleBalance > 1);
}//Begin event_jRadioBtton1Action Performed
public static double getMortgagePmt(double balance, double term, double rate)
double monthlyRate = rate / 12;
double monthlyPayment = (balance * monthlyRate)/(1-Math.pow(1+monthlyRate, - term * 12));
return monthlyPayment;
private void jRadioButton3ActionPerformed(java.awt.event.ActionEvent evt) {//Begin event_jRadioButton3ActionPerformed
if(jRadioButton2.isSelected())
jRadioButton2.setSelected(false);
if(jRadioButton1.isSelected())
jRadioButton1.setSelected(false);
}//End event_jRadioButton3ActionPerformed
private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {//Begin event_jRadioButton2ActionPerformed
if(jRadioButton1.isSelected())
jRadioButton1.setSelected(false);
if(jRadioButton3.isSelected())
jRadioButton3.setSelected(false);
}//End event_jRadioButton2ActionPerformed
private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton1ActionPerformed
if(jRadioButton2.isSelected())
jRadioButton2.setSelected(false);
if(jRadioButton3.isSelected())
jRadioButton3.setSelected(false);
}//End event_jRadioButton1ActionPerformed
* @param args the command line arguments
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new manchorMortgage3().setVisible(true);
// Begin variables declaration
private javax.swing.JButton calcButton;
private javax.swing.JButton jButton2;
private javax.swing.JLabel mortgageAmount;
private javax.swing.JLabel termAndInterest;
private javax.swing.JLabel enterAmount;
private javax.swing.JRadioButton jRadioButton1;
private javax.swing.JRadioButton jRadioButton2;
private javax.swing.JRadioButton jRadioButton3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End variables declaration
}The class is not in your classpath. Likely you blew away your classpath with some silly environment variable.
If you are in the directory where your class file is then execute
java -cp . manchorMortgage3and it will work. (Note the -cp . which tells java to include the current directory in the runtime classpath) -
ME21N--Quantity conversion error in net price calculation
Hi MM experts,
Issue: while creating PO, when attempting to add the net price for line item. but system removes the cost and gives the follow error message says "Quantity conversion error in net price calculation".
The system was not able to convert the order unit into the purchase order price unit. Possible reasons:
i) the conversion results in a net price that is too high, or
ii) the conversion factor for the units has not been properly maintained.
iii) Check whether the units of measure and their conversion factor are correct.
I have checked material master>unit of measure> 1 PL = 22 KG maintained.
Can you please tell me how to resolve this issue?
Appreciated early response.
Thanks in advance.
SureshHi Suresh,
Please check on Material Master Data - Accounting 1 tab - Price Unit
Moshe -
How to maintain Proportional Factors in SNP (not in DP)
Hi Gurus!
I want to maintain proportional Factors in SNP but could not know how to do. I read saphelp and know that we have to set up as following Steps:
-In Planning Area:
1.Set the Keyfigure calculation type For Key Figure KF1 to P or I
2.Set disaggregation key figure for KF1 to u201CAPODPDANTu201D
-When creating Planning Book/Dataview:
3.Check u201CManual Proportion Maintenaceu201D
4.Create a new Dataview that contain only KF APODPDANT
But I find that we can do step 3 only when we create Planning book with Planning Area that based on Planning Object Structure of Demand Planning Only (like 9ADPBAS).
With the Planning Area that based on Planning Object structure of SNP (like 9ASNPBAS), when creating planning book I could not check u201CManual Proportion Maintenanceu201D although I did the set up steps 1 and 2.
The question are:
1. Can we maintain Proportional Factors in SNP? If yes, How to do?
2. Can we create a new KF and consider it as Proportional Factor (as KF APODPDANT)? Is there any propblem?
Thanks very much for your help.Hi Mr. M Manimaran
This is my reason:
We have:
- one DC
- and some locations those receive money from that DC.
The storage capacity of each Location is different from others and has different limit. Each location also need a number of money that is differrent from other.
There is one thing to take notice here: Money is a special good. Letu2019s say location L1 needs 1 million usd, DC can give them in some ways. For example:
- First choice: 100usd: 90 %; 10usd: 10% ( so percentage of each denomination here is proportional factor)
- Second choice: 100usd: 10%; 10usd: 90%
So quantity of notes of money of first choice is less than the second one although the total value of two choices are the same. So the Location L1 can store money with first choice. With the second choice, it could not store.
Here, we want to calculate and store Proportional Factor in SNP so that we can run SNP Optimizer or Heuristic inorder to enable the DC to supply money to satisfy the requirement of Location regarding locationu2019s storage capacity.
Please so me the way!
Thanks very much!
Edited by: xuanduyen on Aug 12, 2011 9:41 AM -
Customizing Proportional Factors in APO DP
How can I base my proportional factors APODPANT on a future mix of a Statistical Model. For instance, a Stat Model is run to create a suggested forecast. Then my users can go into another KF to type in their forecast at the Product Family level. I want to use the Proportions of the individual products from the Stat model projections to take their typed in Product Family forecast and disaggregate it down into the individual products in that family. I see some options in the Planning Area for dissaggregations on KFs, but not sure which one to pick to base the proportions on future months.
Also, as a further exercise, they want me to disallow certain materials where they don't want their forecast to change in the disaggregation. They will type in this forecast at the product level for a couple products only, but still want to put in a Product Family forecast and disaggregate to all other products proportionallly, but exclude these.
Thanks for any suggestions.
AndreaAndrea
In Planning Area administration, Key Figure aggregation tab, for the user input Key Figure, specify the calculation type as 'P' and the disaggregation key figure as the Stat fcst.
You dont need to use APODPDANT in this scenario. Generally, APODPDANT is used if you want to use historical proportions to disaggregate future periods. Another reason for using APODPANT is if you want users to manually edit Proportional factors in the Planning book. Neither of this appears applicable in your scenario.
Refer to this link for information on fixing key figures (You can fix the value of a key figure in interactive demand planning so that the value does not change if you change other values of the key figure at other planning levels. The system saves information relevant for fixing at detail level.)
http://help.sap.com/saphelp_scm50/helpdata/en/02/7650c7353611d398290000e8a49608/content.htm
Rishi Menon -
SQL Error 3114 occured when accessing program CX_
Hi there,
I have build an infoset on a infocube and ODS. On this infoset I've build a query using a calculated key figure: Availibility%
Inside this key figure I have 2 restricted key figures: Allocation and Availibility
When I execute this query I get the error: "SQL Error 3114 occured when accessing program CX_"
If I remove the calculated key figure from the columns it works fine. If I place one of the 2 restricted key figures in the query it also work fine. But If i place both the restricted key figures in the columns, I also get the error. Or If I place the calculated key figure in the columns, I also get the error. Does somebody know what the problem is?No they don't show me the problem. I've executed with RSRT transaction and I;ve got this error with the ABAP-debugger:
error in >> l_repid <<
>> l_include <<
>> l_source_line << -
Proportional Factors Detailed or Fixed
I would appreciate any feedback although I may have answered my own question. I am new to the organization and we just implemented APO for Demand Planning.
We have discoverd negative forecasts at the Product Customer level that are due to Credits which the APODPDANT (12 month history) is taking into account in terms of our proportions. Our APODPDANT is set to detailed proportions which is causing the problem, but forecasting Net Shipments rather than Orders is also part of the problem.
With only two years history is it logical to set the APODPDANT to Detailed proportions.
Any help would be greatly appreciated.
Thanks.Hi Kevin,
Please check the aggregation and disaggregation data along with proportional factors. If any thing is mismatched in calculation type(S,P,N,I,D,E,F etc) it will cause the problem.
Also check the time based disaggregation.
Check your forecast profile for correct calculation(Adjust the alpha,gama factor accordingly). You can write the macro for forecast adjustment if you are not able to solve it by functionality. System can write the specified data and can correct the forecast..
Please let me knoe is implementation going on or already implemented. Since problem is critics so I can assume only after getting the system details , Version details and project status(Impl. Support,Upgrade).
Regards,
Santosh -
I need help in a calculator program
hi
I'm writing a calculator program and i keep having this error in the actionPerformed method:
this is the error :
symbol : method parseInt (int)
location: class java.lang.Integer
tf.setText( Integer.parseInt(result));
^
1 error
here's the actionPerformed method :
public void actionPerformed(ActionEvent e) {
int num1, num2, result;
char c = e.getActionCommand().charAt(0);
switch(c)
case '0': //theses are keys 0 to 9 on the calculator
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '.':
tf.setText(tf.getText( ) + c); //concatenation of the numbers
break;
case 'C': //this is the clear button
tf.setText("");
break;
switch (c)
case '+': //if the key + is presses
num1= Integer.parseInt(tf.getText()); //stores the 1st number in the num1 variable
tf.setText("");//clears the display
num2=Integer.parseInt(tf.getText()); //stores the 2nd number in num2 variable
result= (num1 + num2) ;//adds num1+num2
break;
case 'x': //theses are the other operations that i haven't done yet
case '-':
case '/':
tf.setText("");
case '=':
tf.setText( Integer.parseInt(result));//this is where the error isOr rather "tf.setText( String.valueOf(result));".
You should not be parsing an integer value from its string representation but the opposite: trying to get a string from an integer value. -
Hi All,
Can anyone pls help me with this qn?
Qn> Is there a way to copy the calculated proportional factors from one planning version to another. For example,
i am copying the planning data (DP) from active version to simulation version and viceversa. I tried using RTS copy and version copy option and found its not possible.Your help is appreciated.
Kind Regards,
SSPHi Ken,
Thanks for your answer. It was helpful.
Kind Regards,
SSP
Edited by: ssp_sap on Nov 17, 2009 10:08 AM -
Flexible Planning -Proportional Factors MC8U
Hi,
How does the system calculate the portional factors via MC8U transaction code, when ever i change change the plan with some quantity , save it & execute MC8U there is change in the propotional factors in MC63 , but i am not able to realate this values(calculation)
How does the system calculate proportional factors??
Regards
PraveenHi There,
Here is how the system calculates the Proportional factors using MC8U:
1. You load historical data into the Version (normally 000, to start off)
2. This historical data is best loaded at the most detailed level on your planning hierarchy. It depends on how you capture & update transactional data (at what levels)
3. With consistent planning, system automatically aggregates the loaded data to the higher levels (by summing the member data to owner data) & calculates the numbers. This takes place until it reaches the top most level
4. From there, the MC8U transaction then reads top-down the relations between the owner & the member levels (by virtue of the numbers calculated) & establishes the proportions.
5. Once you open MC63, you see weird 6 decimal proportion figures
Cheers
Anand -
Could u guys help me with a calculator program
hi
i'm writing a calculator program for my java class and the code ur about to read actually works but when i click on the keypad i don't get any numbers in the display screen, the textfield
Could u guys have a look at it please:
here we go
import javax.swing.* ;
import java.awt.* ;
import java.awt.event.* ;
public class Calculator extends JFrame implements ActionListener {
public boolean firstDigit;
public int temp1 = 0;
public int temp = 0;
public int result = 0;
public String opr = "";
JTextField tf= new JTextField ("",20) ; //sets the display initially at 0
//tf.setEditable (false) ; this doesn't work
JPanel pan = new JPanel() ;
JButton bclear= new JButton("C") ;
JButton b0= new JButton("0") ;
JButton badd = new JButton("+") ;
JButton bsub = new JButton("-") ;
JButton bmult = new JButton("x");
JButton bdiv = new JButton("/") ;
JButton bpoint= new JButton(".");
JButton bequal = new JButton("=");
public Calculator (String title) // constructor
super(title) ;
pan.add(tf);
for ( int i=1; i<=3; i++)
JButton butt=new JButton(""+i);
butt.addActionListener(this);
pan.add(butt); }
badd.addActionListener(this);
pan.add(badd);
for ( int i=4; i<=6; i++)
JButton butt=new JButton(""+i);
butt.addActionListener(this);
pan.add(butt);
bsub.addActionListener(this);
pan.add(bsub);
for ( int i=7; i<=9; i++)
JButton butt=new JButton(""+i);
butt.addActionListener(this);
pan.add(butt);
bmult.addActionListener(this);
pan.add(bmult);
bclear.addActionListener(this);
pan.add(bclear);
b0.addActionListener(this);
pan.add(b0);
bpoint.addActionListener(this);
pan.add(bpoint);
bequal.addActionListener(this);
pan.add(bequal);
bdiv.addActionListener(this);
pan.add(bdiv);
//pan.add(new Button(""));
setContentPane(pan) ;
public boolean action(Event e, Object o)
//checks for operator keys
if (e.target == badd)
temp1 = temp; //to "save" for calculation
opr = "+";
else if (e.target == bsub)
temp1 = temp;
opr = "-";
else if (e.target == bmult)
temp1 = temp;
opr = "*";
else if (e.target == bdiv)
temp1 = temp;
opr = "/";
else if (e.target == bequal)
result = calculate(temp1,opr,temp);
tf.setText(Integer.toString(result)); //does the calculation
temp= result; //to be able to do an operation on the result
else if (e.target == bclear)
tf.setText("");
temp1 = 0; //resets the temps and display to 0
temp = 0;
else
//numeric buttons
if (firstDigit)
tf.setText( o.toString() );
firstDigit = false;
temp = Integer.parseInt(tf.getText()); //saves the number in a temp
else
tf.setText(tf.getText() + o.toString()); //for numbers longer than 1 digit
temp = Integer.parseInt(tf.getText());
return true;
firstDigit = true; // GET READY FOR NEXT NUMBER
return true;
public int calculate(int num1,String op, int num2 )
// calculate the numbers
int answers = 0;
if (op == "+")
answers = num1 + num2; //does the calculation for +
else if(op == "-")
answers = num1 - num2; //does the calculation for -
else if(op == "/")
if(num2 == 0)
tf.setText("ERROR");//gives error message if dividing by 0
else
answers = num1 / num2;
else if(op == "*")
answers = num1 * num2; //does the calculation for *
return answers;
public void actionPerformed(ActionEvent e) {
Object source = e.getSource() ;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName() );
catch (Exception e) {
System.err.println("impossible to use system setting : " + e ); }
Calculator fen = new Calculator("CALCULATOR");
fen.setSize(235, 300);
fen.setVisible(true);
fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);I Hope this would help you.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=2&txtCodeId=2275
Thanks,
Vikas Karwal
[email protected]
Maybe you are looking for
-
Don't know what to add. How do I get rid of Get Glue and have Firefox open by itself?
-
Adobe Photoshop Elements 11 does not open in OS X 10.10 Yosemite
Ever since I upgraded to OS X 10.10 Yosemite, Adobe Photoshop Elements 11 crashes immediately upon launch. The system generates a report that Apple receives. However, it states to contact the developer of the app. I already deleted and reinstalled t
-
Macbook pro express card connected hard drives get disconnected
I have a Macbook pro 17" 2010 i7, my external drives are getting ejected misteriously when the system sleeps and wakes up, i have this problem with esata, USB3 cards and all kinds of encolsures, running 10.7.2, help, its driving me crazy!
-
My origo has changed and is not (0, 0) any more, why?
It happened when I was attaching MovieClip to the Slide. Some how my origo has changed from (0, 0) which it should be the North West corner of my slide to (435, 322). In the other slides the origo is still (0, 0). How come? Thanx!
-
Lookup attched to Gauge pointer... not quite working right
Need your help please. I have a very simple data set. Looks like this: Status Count Percentage Compliant 50 50 Non-Compliant 15 15 Unknown 35 35 I