DP Proportional factors total value.
Hello,
In DP i want know how it calculates the Proportional value?
Example :I have given Key Figure History as Basis for Proportional calculation with period 01092008 to 31122008
In Calcu prop for i have given period 01092009 to 31122009.
I have one material and two location say X and Y.
When i execute i get total value for each period is 10,000 at material level and at location level it splits properly that sum of both location is 10,000 but if change the history data sum at Material level always shows 10,000.
whether this 10,000 value is fixed some where?
I am know how proportional value at location is calculated i want know whether this 10,000 value is fixed some where?
Kindly let me know?
Thanks,
Nikhil
Hi Nikhil,
10000 is indeed the default value.
If this value is too small for you (if you have some rounding issue) can increase it.
Have a look at note 425741.
I hope it helps
Julien
Similar Messages
-
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 -
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_fieldHi,
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. -
Incorrect data for proportional factor in query based on Planning Book
hi,
We have upgraded from APO 3.1 to SCM 5.0.
Post upgrade, the proportional factor is being displayed incorrectly in the BEX query based on the Planning Book data if we run the query for multiple months.
for eg,
if, in the planning book, the proportional factor for months 10.2009 and 11.2009 are as follows :
Brand >> Month >> Proportional Factor
B1 >> 10.2009 >> 70%
B2 >> 10.2009 >> 30%
B1 >> 11.2009 >> 80%
B2 >> 11.2009 >> 20%
When we execute the query for the above brands for months 10.2009 and 11.2009,
then, at the total level, the % displayed is 100% and the data at brand level is halved.
We do not have any exits or formulae operating at the key figure level in the query and hence are unable to figure out why this is happenning...
Any clue on this ?
regards,
AnirudhaResolved.
-
Lines above and below the total values
Hi All,
This is for an invoice. I display line items and then the totals. I want to draw lines above and below the total values. i am able to underline the total values using the paragraph formats but that will give only lines below the values. how can I get the lines above and below the values in correct proportions? Please give me some ideas on how to do this.
Thank you,
Prathima.Prathima,
You should not be using ULINE and VLINE commands here. Instead you have to declare boxes.
/: BOX FRAME 10 TW
/: BOX XPOS '3.0' CM WIDTH 0 TW FRAME 10 TW
/: BOX XPOS '6.0' CM WIDTH 0 TW FRAME 10 TW
/: BOX XPOS '9.0' CM WIDTH 0 TW FRAME 10 TW
/: BOX XPOS '12.0' CM WIDTH 0 TW FRAME 10 TW
Using boxes is advantageous in a lot of ways as you can specify the x and y positions exactly.
Thanks
Aneesh. -
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 -
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 -
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 -
Format the total value in the column of the graph table
Hello all,
I have a graph table and I need to format the total value in the column of the table.
I am trying to find my table bean with the code below but it's not working in the processRequest. Is there anything else that should be done?
// Get the graph
OAGraphTableBean graphBean = (OAGraphTableBean)webBean.findChildRecursive("MyGraph");
// Get the table
OATableBean tblBean = (OATableBean)graphBean.findChildRecursive("MyTable");
The tblBean is null in the processRequest. In the processFormRequest the tblBean is not null.
Thanks and Regards,
AndreaHi,
The code OAGraphTableBean graphBean = (OAGraphTableBean)webBean.findChildRecursive("MyTable"); does not work because in this case I am getting the table but casting to a graph.
The MyTable bean is a child of MyGraph.
When creating a graph bean we have the option to create a table as a child (select your graphTable region in the Structure pane, and choose New > tabularFormat - to create the table).
The table bean child I can get just in the processFormRequest, but the graph I can get in both processRequest and processFormRequest.
I need to get the table bean in the processRequest to format the total value column.
Do you know if is there anything else that should be done to format the total column?
Thanks and Regards,
Andrea -
How can I get the total "values" in a hashtable ?
i know that i can get the total values in a hashtable by hash.elements() method. It returns an
enumeration with all the values present in this hashtable. this is fine upto here.
Now the preoblem is:
According to what rule this enumeration will be returned. I mean..
If i added in key A with value a,
then key B with value b;
then key C with value c;
then key D with value d;
(They all are objects of type String)
now i call ... hash.elements(); Suppose it returns Enumeration enum;.
Now in what order they all are present in this hashtable.
Meaning is that if i move arond this enum in what sequence they all will be returned.
option A ) In the same order as they were inserted in hashtable.
option B ) According to LIFO;
option C) There is no fix rules , simply it return all the elements and u cannot judge that the first element in enum was really the first element inserted in the hashtable and the second element of enum was really the second element inserted in the hashtable.
What do u think..which option is correct ?
Ny idea will highly appreciated.
Thanks in advance.
Sanjeev Dhimanhi, i am again..
boss ! this is not true..u just change the order and or change the keys and something like ...
"Sanjeev", "hello"
"Dhiman", "hi"
"Technosys" ,"Services"
u will find that its not LIFO..really i was thinking before coding my project that option A is correct and with knowledge i wrote 3 - 4 classes but when i run the programm its starts throwing errors.
so, i posted this question. I think "apppu" is right.
I think , firstly hash is calculated for each value and that value is returned which can be received in a fastest way and hence not necessarily in LIFO and FIFO..
Thanks to u also as u gave ur precious time for me.
Once again.
Thank you very much.
Sanjeev Dhiman -
How to get total value from checkbox list?
I have a list of checkbox items - all number values. I want to then get the total value from all of the check items and add that value to the database. Can this be done?
Also, anyone know of one source where I can get detailed information on how to best use Web Apps and all of it's possibilities and limitations? Most of the tutorials that I have seen so far say that you can do most anything with Web Apps; however, the tutorial examples leave a lot of questions unanswered. I saw that Adobe has an article that shows how to build a basic web app and that it is "part 1" in a series. Anyone know where to find parts 2, 3, etc?
Thanks,Hi there,
Good day, i hope this will give you some ideas
for example this is your html
<input type="checkbox" name="test" value="1">1
<input type="checkbox" name="test" value="2">2
<input type="checkbox" name="test" value="3">3
<input type="checkbox" name="test" value="4">4
and this is your jquery script
<script type="text/javascript">
jQuery("input@[name='test']").click(function() {
var istrue = jQuery(this).is(":checked");
if(istrue == true) {
var urvalue = jQuery(this).val();
alert(urvalue);
</script>
hope this helps you -
Can you calculate multiple text boxes to achieve a total value? If so how is that done? I am trying to create a order form where multiple items can be purchased but i would like the values of each item to calculate so I can achieve a total value.
Hi sashby51,
I've moved your discussion to the PDF Forms forum--the folks who visit this forum regularly should be able to point you in the right direction.
Best,
Sara -
Changing totals value in hierarchical alv for a particular level/row
Hi,
I am displaying a hierarchical ALV having 4 levels.
Using field catalog, totals for all dynamic columns are found out.
I have a requirement not to display totals value for first and second levels.
And if possible, to display another value.
Tried using CL_GUI_ALV_TREE->change_node.
But it not updating.
Please suggest a solution.
Thanks,
Nisha Vengal.Hi Ten Mariga,
I wonder why the second select Query is needed at all instead you can use
---> Not Needed
FORM DATA_RETRIEVAL1.
SELECT * FROM zcontact INTO TABLE it_zcontact WHERE id EQ wa_zcontact-id.
ENDFORM.
----> Instead you can do
READ TABLE it_zcontact INTO wa_zcontact INDEX p_seltab-tabindex.
Append wa_zcontact to Second_table.
And you can use the Second_table to display the second ALV. The second Select Query will affect the performance too.
Cheers,
Krishnakumar B. -
How to Show total value in the header 2nd page but based on 1st page footer
How to show total value in header in report builder but i have the total have related with the total in footer.
Example
===============================================
Page 1
Empno Ename Sal
1 Scott 1000
2 ALlen 2000
3 Susi 1000
Total Sal Page 1: 4000
===============================================
Page 2
Total Sal Page 1: 4000 --> How to get it?????
Empno Ename Sal
4 Budi 1000
5 Roger 200
6 George 2000
Total Sal Page 2: 3200
Please Help..
Thankshmm .. what i would do is
- create a placeholder column
- create a field in the header and one in the footer
- have the footer field reference the summary column
- have the header field reference the placeholder column
- create a fromat trigger on the footer field to
store the value of the footer into the placeholder column
so when the report is executed and the footer field is formatted, the format trigger stores the current value of the summary in the placeholder. then the pagebreak occures and the header field is formatted .. printing the value.
there might actually be an easier way, just reference the two fields to the same summary column and in theory, since there is nothing happening between the time when the footer is formatted and the header is formatted, the values should be the same .. however this is a theory and i have not actually tested this. since reports does all kinds of fancy optimization this might have unexpected results, but it's worth a try.
thanks,
ph. -
Unable to read the total value.
Hi guys,
I am able to get the total for alv table column.. but i want to display the total value in some other text view field.
In order to do that... first i have to read the total value, and have to set the same to text view field,
total value is of type ( DATA: LV_AGGR_RULE TYPE REF TO CL_SALV_WD_AGGR_RULE. )
but my text view field attribute is of STRING TYPE.
So am getting conversion error. Pleas help me in this.
Regards
Farooq
Edited by: farooq basha on Jun 13, 2011 12:52 PMHi ,
Try to loop your internal table on the column "Amount" and make a sum for that particular column, u will get the required sum Amount..
Thanks
Aisurya
Maybe you are looking for
-
File extensions not working as expected, is this normal?
In the finder, there is an option to "Show all file extensions". So normally, a certain image file could be either "image" or "image.jpeg". However, I have some weird files: "image.jpeg.jpeg" EVEN WHEN I HAVE SET THE EXTENSIONS TO BE HIDDEN. What I w
-
Trying to Export the data from a webform into excel and unable do
when i try to export the dataform from the Planning web into excel, iam unable to export it iam able to export the member name but not the data values associated to it. When i try to do the same by using the Mozilla, it works perfectly, iam unable to
-
What do i do when i cant download photoshop because of an installation error?
whenever i try to download photoshop cc, it takes a long period of time to move up by a percentage and then i get a message that says installation error.
-
When I click on something, it doesnt appear on screen?
When I click on the disc icon on the desk top, nothing appears. Then when I swip four fingers to change desk top pages I can see the finder screen until I lift up my fingers then it disappears. Very frustrating not being able to access files easily.
-
How can I reset all content if i don't remember my pin number?
I got a I-pod touch from a friend and it has changed hands a few times and it has a restricted pin number and i have no idea what it is, how can I erase all content and start fresh?