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

Need Suitable BAPI for KP26 Transaction

Former Member
0 Likes
3,068

Hi all,

I have a requirement to upload the excel data into KP26 T. code, I have tried below 2 BAPI's and for some reason it's not posting any thing, I am not getting any error messages, but the values are not posting.

1) BAPI_ACT_PRICE_CHECK_AND_POST 2)BAPI_COSTACTPLN_POSTACTOUTPUT

I have step through the code and it's going to perform routine call_interface_aci at the end of BAPI logic, in this routine it's not calling Posting FM, before calling this Function Module checking the the Internal tables and it has got blank (gt_acivalline and gt_acitotline).

I have passed all the required info at header level and item level.

Do I missed any thing?

We are at 4.6C version.

Let me know if you need more info.

Thanks!

Thiru

Hi all,

I have a requirement to upload the excel data into KP26 T. code, I have tried below 2 BAPI's and for some reason it's not posting any thing, I am not getting any error messages, but the values are not posting.

1) BAPI_ACT_PRICE_CHECK_AND_POST 2)BAPI_COSTACTPLN_POSTACTOUTPUT

I have step through the code and it's going to perform routine call_interface_aci at the end of BAPI logic, in this routine it's not calling Posting FM, before calling this Function Module checking the the Internal tables and it has got blank (gt_acivalline and gt_acitotline).

I have passed all the required info at header level and item level.

Do I missed any thing?

We are at 4.6C version.

Let me know if you need more info.

Thanks!

Thiru

5 REPLIES 5
Read only

Former Member
0 Likes
2,023

I solved myself.

Read only

Former Member
0 Likes
2,023

Hi Thiru Red,

How did you solved this? i have the same requirment to upload from Excel into ECC 6.0.

Which BAI did you use?

1) BAPI_ACT_PRICE_CHECK_AND_POST or

2)BAPI_COSTACTPLN_POSTACTOUTPUT?

Please respond.

Thanks

Dan

Read only

0 Likes
2,023

Hi Dan,

See the below entire code. all you have to change only internal table structure to fit your excel data, thats it.

REPORT zfii_kp26_upload_acttype .

----


*Project : To Load Activity Type for KP26 Transaction Code

*Program Name : ZFII_KP26_UPLOAD_ACTTYPE

*Program Description : This program reads Activity file from pc and

  • pass the valuse to BAPI and it will Update each

  • and every Cost Center/Activity Type

*Author : Thirupathi Reddy Billa

*Use : This program avoids manual entering of Cos

  • Centers Activity values by using KP26 ZFCC

  • transaction code

----


*--Data Declarations

TABLES : zfi_auth.

TYPE-POOLS: truxs.

DATA : lit_head LIKE bapiplnhdr OCCURS 0 WITH HEADER LINE,

lit_idx LIKE bapiacpstru OCCURS 0 WITH HEADER LINE,

lit_obj LIKE bapiacpobj OCCURS 0 WITH HEADER LINE,

lit_val LIKE bapiacpval OCCURS 0 WITH HEADER LINE,

lit_tval LIKE bapiacptot OCCURS 0 WITH HEADER LINE,

lit_ctrl LIKE bapiacpctrl OCCURS 0 WITH HEADER LINE,

lit_err LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

*--Internal Table to store the final sucessfull results

DATA : BEGIN OF lit_disp OCCURS 0,

kostl LIKE ccss-kostl,

lstar LIKE ccss-lstar,

zval LIKE rkpln-lst,

message LIKE bapiret2-message,

END OF lit_disp.

*--Internal Table to store the final Error results

DATA : BEGIN OF lit_disp_err OCCURS 0,

kostl LIKE ccss-kostl,

message LIKE bapiret2-message,

END OF lit_disp_err.

DATA: count TYPE i,

ncount(2) TYPE n,

tcount TYPE i,

lv_totrec TYPE i,

lv_totrec1 TYPE i,

lv_totct TYPE i,

prev_lstar LIKE zfsr_loc-lstar,

lv_oi LIKE bapiacpstru-object_index,

lv_vi LIKE bapiacpstru-value_index,

lv_ai LIKE bapiacpstru-attrib_index.

TYPES : BEGIN OF ls_act_data,

kostl TYPE ccss-kostl,

lstar TYPE ccss-lstar,

plan_act TYPE rkpln-lst ,

dis_key TYPE spred_appli-spred.

TYPES : END OF ls_act_data.

DATA : lit_act_data TYPE ls_act_data OCCURS 0 WITH HEADER LINE,

lit_raw TYPE truxs_t_text_data.

*--Selection Screen

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.

PARAMETER : p_file LIKE rlgrap-filename.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(8) text-002.

SELECTION-SCREEN POSITION 11.

PARAMETER : p_tstrun AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN: END OF BLOCK b01.

*--This logic is for F4 for selection parameter

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

static = 'X'

  • MASK = ' '

CHANGING

file_name = p_file

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.

AT SELECTION-SCREEN ON BLOCK b01.

IF p_file IS INITIAL.

MESSAGE e002(zz) WITH 'Select The Activity File to Process'.

ENDIF.

*--Start Of Selection

START-OF-SELECTION.

PERFORM get_file_into_itab.

PERFORM build_bapi_data.

*--process only for successful BAPI execution.

IF NOT lit_disp[] IS INITIAL.

PERFORM display_details.

ENDIF.

*--Check errors before displaying

IF NOT lit_disp_err[] IS INITIAL.

PERFORM display_err_details.

ENDIF.

TOP-OF-PAGE.

IF NOT lit_disp[] IS INITIAL.

WRITE:/ 'BAPI Posted Sucessfully Planned Activity Types'

COLOR COL_NEGATIVE.

IF p_tstrun = 'X'.

WRITE:/52 'NOTE : THIS IS A TEST RUN' COLOR COL_NEGATIVE.

ENDIF.

SKIP 1.

WRITE:/ 'Cost Center' COLOR COL_POSITIVE,

15 'Activity Type' COLOR COL_POSITIVE,

32 'Activity Value' COLOR COL_POSITIVE,

57 'Message' COLOR COL_POSITIVE.

ENDIF.

&----


*& Form build_bapi_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_bapi_data.

SORT lit_act_data BY lstar kostl.

CLEAR: lit_obj, lit_idx, lit_tval, lit_ctrl, lit_disp.

REFRESH : lit_obj, lit_idx, lit_tval, lit_ctrl, lit_disp.

lv_oi = 0.

lv_vi = 0.

lv_ai = 0.

PERFORM generate_header_data.

PERFORM generate_item_data.

PERFORM call_bapi.

ENDFORM. " build_bapi_data

&----


*& Form get_file_into_itab

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_file_into_itab.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

EXPORTING

  • I_FIELD_SEPERATOR =

  • I_LINE_HEADER =

i_tab_raw_data = lit_raw

i_filename = p_file

TABLES

i_tab_converted_data = lit_act_data

EXCEPTIONS

conversion_failed = 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. " get_file_into_itab

&----


*& Form generate_header_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM generate_header_data.

CLEAR lit_head.

REFRESH lit_head.

*--Header Data

lit_head-co_area = 'MHCC'.

lit_head-fisc_year = '2008'.

lit_head-period_from = '001'.

lit_head-period_to = '012'.

lit_head-version ='0'.

lit_head-doc_hdr_tx = 'Uploading Planned Budget Volume'.

lit_head-plan_currtype = 'C'.

APPEND lit_head.

ENDFORM. " generate_header

&----


*& Form generate_item_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM generate_item_data.

LOOP AT lit_act_data.

*--Increment Object, Attribute and Value indexes for each iteration

lv_oi = lv_oi + 000001.

lv_vi = lv_vi + 000001.

lv_ai = lv_ai + 000001.

*--Object Data

lit_obj-object_index = lv_oi.

lit_obj-costcenter = lit_act_data-kostl.

lit_obj-acttype = lit_act_data-lstar.

APPEND lit_obj.

*--Index Data

lit_idx-object_index = lv_oi.

lit_idx-value_index = lv_vi.

lit_idx-attrib_index = lv_ai.

APPEND lit_idx.

*--Total Data

lit_tval-value_index = lv_vi.

lit_tval-actvty_qty = lit_act_data-plan_act.

lit_tval-dist_key_quan = lit_act_data-dis_key.

APPEND lit_tval.

*--Control Record Data

lit_ctrl-attrib_index = lv_ai.

lit_ctrl-price_indicator = '001'.

APPEND lit_ctrl.

ENDLOOP.

ENDFORM. " generate_item_data

&----


*& Form call_bapi

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM call_bapi.

CALL FUNCTION 'BAPI_ACT_PRICE_CHECK_AND_POST'

EXPORTING

header_info = lit_head

testrun = p_tstrun

  • DELTA = ' '

TABLES

idx_structure = lit_idx

object = lit_obj

per_value = lit_val

tot_value = lit_tval

contrl = lit_ctrl

return = lit_err.

READ TABLE lit_err WITH KEY type = 'E'.

IF sy-subrc NE 0.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

*--Append all the sucess values to the table

IF sy-subrc EQ 0.

READ TABLE lit_err INDEX 1.

LOOP AT lit_obj.

READ TABLE lit_act_data WITH KEY kostl = lit_obj-costcenter

lstar = lit_obj-acttype.

tcount = tcount + 1.

lit_disp-kostl = lit_obj-costcenter.

lit_disp-lstar = lit_obj-acttype.

lit_disp-zval = lit_act_data-plan_act.

lit_disp-message = 'Uploaded CostCenter Activity Volume Successfully'.

APPEND lit_disp.

ENDLOOP.

ENDIF.

*--If the any errors append to the error table

ELSE.

LOOP AT lit_err.

IF lit_err-type = 'E'.

lit_disp_err-kostl = lit_err-message_v2.

lit_disp_err-message = lit_err-message.

APPEND lit_disp_err.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " call_bapi

&----


*& Form display_details

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_details.

CLEAR count.

LOOP AT lit_disp.

count = count + 1.

WRITE:/2 lit_disp-kostl, 17 lit_disp-lstar,

24 lit_disp-zval, 57 lit_disp-message.

ENDLOOP.

SKIP 1.

WRITE 😕 'Total count ', tcount.

SKIP 2.

ENDFORM. " display_details

&----


*& Form display_err_details

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_err_details.

WRITE:/ 'BAPI is Not Sucessfull for Below Cost Centers'

COLOR COL_NEGATIVE.

SKIP 1.

WRITE:/ 'Cost Center' COLOR COL_POSITIVE,

20 'Message' COLOR COL_POSITIVE.

LOOP AT lit_disp_err.

WRITE:/2 lit_disp_err-kostl,

20 lit_disp_err-message.

ENDLOOP.

ENDFORM. " display_err_details

Read only

0 Likes
2,023

Hi Thiru Reddy ,

Thanks a lot..Where do i assiign points to you.

Only things i that i am not able t get the Return messages from this BAPI.

Can you please tell me how to do this?

Thanks

Dany

Read only

0 Likes
2,023

Thx a lot Thiru for this coding!

Additionnaly, here is some coding to update Fixed of variable price by costcenter/activity type:

FORM generate_item_data.

* CC C0113200-AMO- fix price
* Increment Object, Attribute and Value indexes for each iteration
  lv_oi = lv_oi + 000001.
  lv_vi = lv_vi + 000001.
  lv_ai = lv_ai + 000001.
*--Object Data
  lit_obj-object_index = lv_oi.
  lit_obj-costcenter = 'C0113200'.
  lit_obj-acttype = 'AMO'.
  APPEND lit_obj.
*--Index Data
  lit_idx-object_index = lv_oi.
  lit_idx-value_index = lv_vi.
  lit_idx-attrib_index = lv_ai.
  APPEND lit_idx.
*--Total Data
  CLEAR lit_tval.
  lit_tval-value_index = lv_vi.
*  lit_tval-actvty_qty = lit_act_data-plan_act.
*  lit_tval-dist_key_quan = lit_act_data-dis_key.
  lit_tval-price_fix = '0.97'.
  lit_tval-dist_key_price_fix = '2'.
  lit_tval-price_unit = '00001'.
  lit_tval-equivalence_no = '1'.
*  lit_tval-currency = 'EUR'.
  APPEND lit_tval.
*--Control Record Data
  lit_ctrl-attrib_index = lv_ai.
*  lit_ctrl-price_indicator = '001'.
  APPEND lit_ctrl.

* CC C0113200-MOD- variable price
* Increment Object, Attribute and Value indexes for each iteration
  lv_oi = lv_oi + 000001.
  lv_vi = lv_vi + 000001.
  lv_ai = lv_ai + 000001.
*--Object Data
  lit_obj-object_index = lv_oi.
  lit_obj-costcenter = 'C0113200'.
  lit_obj-acttype = 'MOD'.
  APPEND lit_obj.
*--Index Data
  lit_idx-object_index = lv_oi.
  lit_idx-value_index = lv_vi.
  lit_idx-attrib_index = lv_ai.
  APPEND lit_idx.
*--Total Data
  CLEAR lit_tval.
  lit_tval-value_index = lv_vi.
*  lit_tval-actvty_qty = lit_act_data-plan_act.
*  lit_tval-dist_key_quan = lit_act_data-dis_key.
  lit_tval-price_var = '27.35'.
  lit_tval-dist_key_price_var = '2'.
  lit_tval-price_unit = '00001'.
  lit_tval-equivalence_no = '1'.
*  lit_tval-currency = 'EUR'.
  APPEND lit_tval.
*--Control Record Data
  lit_ctrl-attrib_index = lv_ai.
*  lit_ctrl-price_indicator = '001'.
  APPEND lit_ctrl.

ENDFORM.                    " generate_item_data