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

  • APO DP Proportional factors

    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
    Ganesh

    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

  • DP Proportional Factors error

    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,
    Dhanush

    As 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

  • Warning: An error occurred during tax calculation. Please correct the problem or contact your system administrator.

    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,
    Brajesh

    Hi 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.
    Suresh

    Hi 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.
    Andrea

    Andrea
    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 is

    Or 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.

  • Copying proportional factors

    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,
    SSP

    Hi 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
    Praveen

    Hi 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