Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Error in Proportional Factor Calculation Program

Former Member
0 Likes
420

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

1 REPLY 1
Read only

Former Member
0 Likes
335

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.