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

BAPI_PRICES_CONDITIONS

Former Member
0 Likes
804

i am trying to upload material conditions in vk11 using BAPI_PRICES_CONDITIONS but if i run my program nothing is happenning. can anyone provide me with a sample code. i want to pass the following parameters to the bapi:

material number

condition value

creation date

valid to date

but i also want to pass sales organization and distribution channel but in the tables provided by the bapi there is nowhere to pass the items so i have done a BDC recording for these 2 items.

i am trying to upload material conditions in vk11 using BAPI_PRICES_CONDITIONS but if i run my program nothing is happenning. can anyone provide me with a sample code. i want to pass the following parameters to the bapi:

material number

condition value

creation date

valid to date

but i also want to pass sales organization and distribution channel but in the tables provided by the bapi there is nowhere to pass the items so i have done a BDC recording for these 2 items.

4 REPLIES 4
Read only

Former Member
0 Likes
734

Hi

Are you calling the BAPI for commit?

Max

Read only

0 Likes
734

check the code

&----


*& Report ZBAPITARIFFUPL *

*& *

&----


*& *

*& *

&----


REPORT ZBAPITARIFFUPL .

TYPE-POOLS: truxs.

TABLES: mara, konp, rv13a .

DATA:V_FILE TYPE STRING.

DATA : v_date(8).

Data: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.

PARAMETERS:P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.

PARAMETERS: gen RADIOBUTTON GROUP gr1,

rsa RADIOBUTTON GROUP gr1,

sdc RADIOBUTTON GROUP gr1,

csa RADIOBUTTON GROUP gr1,

cond LIKE rv13a-kschl,

salesorg LIKE vbak-vkorg.

SELECTION-SCREEN END OF BLOCK B1 .

data : wtable1 like BAPICONDCT ,

wtable2 like BAPICONDHD,

wtable3 like BAPICONDIT,

wtable4 like BAPICONDQS,

wtable5 like BAPICONDVS ,

table6 like BAPIRET2 occurs 0,

table7 like BAPIKNUMHS occurs 0,

table8 like CND_MEM_INITIAL occurs 0.

data: begin of table1 occurs 0.

include structure wtable1.

data: end of table1.

data: begin of table2 occurs 0.

include structure wtable2.

data: end of table2.

data: begin of table3 occurs 0.

include structure wtable3.

data: end of table3.

data: begin of table4 occurs 0.

include structure wtable4.

data: end of table4.

data: begin of table5 occurs 0.

include structure wtable5.

data: end of table5.

data: begin of ret occurs 0.

include structure BAPIRET2.

data: end of ret.

TYPES: BEGIN OF t_datatab,

matnr(11),

amount(5),

END OF t_datatab.

DATA: BEGIN OF t_datatabfinal OCCURS 0,

matnr(14),

amount(8),

END OF t_datatabfinal.

DATA: it_datatab TYPE STANDARD TABLE OF t_datatab,

wa_datatab TYPE t_datatab.

DATA: wa_record TYPE t_datatab,

it_record TYPE STANDARD TABLE OF t_datatab INITIAL SIZE 0.

DATA: it_raw TYPE truxs_t_text_data.

DATA: itab LIKE zalsmex_tabline OCCURS 0 WITH HEADER LINE.

DATA: gd_currentrow TYPE i.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = 'P_FILE'

IMPORTING

FILE_NAME = P_FILE.

START-OF-SELECTION.

V_FILE = P_FILE.

START-OF-SELECTION.

CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_file

i_begin_col = '1'

i_begin_row = '1' "Do not require headings

i_end_col = '2'

i_end_row = '1'

TABLES

intern = itab

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE e010(zz) WITH text-001. "Problem uploading Excel Spreadsheet

ENDIF.

  • Sort table by rows and colums

SORT itab BY row col.

  • Get first row retrieved

READ TABLE itab INDEX 1.

  • Set first row retrieved to current row

gd_currentrow = itab-row.

LOOP AT itab.

  • Reset values for next row

IF itab-row NE gd_currentrow.

APPEND wa_datatab TO it_record.

CLEAR wa_datatab.

gd_currentrow = itab-row.

ENDIF.

CASE itab-col.

WHEN '0001'. "date

wa_datatab-matnr = itab-value.

WHEN '0002'.

wa_datatab-amount = itab-value.

WHEN OTHERS.

ENDCASE.

ENDLOOP.

APPEND wa_datatab TO it_record.

.

LOOP AT it_record INTO t_datatabfinal.

APPEND t_datatabfinal.

ENDLOOP.

LOOP AT t_datatabfinal.

IF gen = 'X'.

CONCATENATE 'GEN' t_datatabfinal-matnr INTO t_datatabfinal-matnr.

ENDIF.

IF csa = 'X'.

CONCATENATE 'COM' t_datatabfinal-matnr INTO t_datatabfinal-matnr.

ENDIF.

IF rsa = 'X'.

CONCATENATE 'RSA' t_datatabfinal-matnr INTO t_datatabfinal-matnr.

ENDIF.

IF sdc = 'X'.

CONCATENATE 'SDC' t_datatabfinal-matnr INTO t_datatabfinal-matnr.

ENDIF.

CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum(4) INTO v_date.

SELECT SINGLE * FROM mara WHERE matnr = t_datatabfinal-matnr.

break-point.

IF sy-subrc = 0.

wtable1-table_no = '306'.

wtable1-cond_type = cond.

wtable1-operation = '009'.

wtable1-valid_to = '99991231'.

wtable1-valid_from = v_date.

wtable1-cond_no = t_datatabfinal-matnr.

APPEND wtable1 TO table1.

wtable2-operation = '009'.

wtable2-cond_no = t_datatabfinal-matnr.

wtable2-created_by = sy-uname.

wtable2-creat_date = v_date.

wtable2-cond_type = cond.

wtable2-valid_from = v_date.

wtable2-valid_to = '99991231'.

APPEND wtable2 TO table2.

wtable3-operation = '009'.

wtable3-cond_no = t_datatabfinal-matnr.

wtable3-cond_type = cond.

wtable3-cond_value = t_datatabfinal-amount.

APPEND wtable3 TO table3.

PERFORM PROCESSCONDITIONS.

READ TABLE table6 WITH KEY type = 'E' TRANSPORTING NO FIELDS.

IF sy-subrc = 0.

loop at table6 into ret.

write: / ret-type, ret-message, ret-id, RET-LOG_NO, RET-LOG_MSG_NO,

RET-MESSAGE_V1, RET-MESSAGE_V2, RET-MESSAGE_V3, RET-MESSAGE_V4,

RET-PARAMETER,RET-ROW,RET-FIELD.

endloop.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

*EXPORTING

  • WAIT =

IMPORTING

return = ret.

.

ENDIF.

ENDIF.

ENDLOOP.

&----


*& Form CALL_TRANSACTION

&----


  • text

----


  • -->TRAN text

----


FORM CALL_TRANSACTION USING TRAN.

CALL TRANSACTION TRAN

USING IT_BDCDATA

MODE 'A'

  • mode 'A'

  • mode 'N'

UPDATE 'S'

MESSAGES INTO IT_BDCMSGCOLL.

ENDFORM. " CALL_TRANSACTION

&----


*& Form BDC_DYNPRO

&----


FORM BDC_DYNPRO USING PROGRAM

DYNPRO.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROGRAM.

IT_BDCDATA-DYNPRO = DYNPRO.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


FORM BDC_FIELD USING FNAM

FVAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDFORM. " BDC_FIELD

&----


*& Form PROCESSCONDITIONS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM PROCESSCONDITIONS .

clear: IT_BDCDATA,IT_BDCMSGCOLL.

refresh: IT_BDCDATA,IT_BDCMSGCOLL.

perform bdc_dynpro using 'SAPLV14A' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RV130-SELKZ(04)'.

perform bdc_field using 'BDC_OKCODE'

'=WEIT'.

perform bdc_field using 'RV130-SELKZ(01)'

''.

perform bdc_field using 'RV130-SELKZ(04)'

'X'.

perform bdc_dynpro using 'SAPMV13A' '1004'.

perform bdc_field using 'BDC_CURSOR'

'KOMG-VTWEG'.

perform bdc_field using 'BDC_OKCODE'

'=SICH'.

perform bdc_field using 'KOMG-VKORG'

salesorg.

perform bdc_field using 'KOMG-VTWEG'

'01'.

break-point.

CALL FUNCTION 'BAPI_PRICES_CONDITIONS'

  • EXPORTING

  • PI_initialmode = 'X'

  • PI_BLOCKNUMBER =

TABLES

ti_bapicondct = table1

ti_bapicondhd = table2

ti_bapicondit = table3

ti_bapicondqs = table4

ti_bapicondvs = table5

to_bapiret2 = table6

to_bapiknumhs = table7

to_mem_initial = table8

EXCEPTIONS

update_error = 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. " PROCESSCONDITIONS

Read only

0 Likes
734

Hi

Try this:

[code]DATA: TI_BAPICONDCT LIKE STANDARD TABLE OF BAPICONDCT WITH HEADER LINE,

TI_BAPICONDHD LIKE STANDARD TABLE OF BAPICONDHD WITH HEADER LINE,

TI_BAPICONDIT LIKE STANDARD TABLE OF BAPICONDIT WITH HEADER LINE,

TI_BAPICONDQS LIKE STANDARD TABLE OF BAPICONDQS,

TI_BAPICONDVS LIKE STANDARD TABLE OF BAPICONDVS.

DATA: TO_BAPIRET2 LIKE STANDARD TABLE OF BAPIRET2,

TO_BAPIKNUMHS LIKE STANDARD TABLE OF BAPIKNUMHS,

TO_MEM_INITIAL LIKE STANDARD TABLE OF CND_MEM_INITIAL.

DATA: BEGIN OF VARKEY,

VKORG LIKE A947-VKORG,

/TRILOG/SE LIKE A947-/TRILOG/SE,

/TRILOG/CO LIKE A947-/TRILOG/CO,

VKBUR LIKE A947-VKBUR,

VKGRP LIKE A947-VKGRP,

WAERK LIKE A947-WAERK,

KDGRP LIKE A947-KDGRP,

MATNR LIKE A947-MATNR,

KFRST LIKE A947-KFRST,

END OF VARKEY.

VARKEY-VKORG = '1101'.

VARKEY-/TRILOG/SE = '28'.

VARKEY-/TRILOG/CO = '20'.

VARKEY-VKBUR = '20LC'.

VARKEY-VKGRP = '1'.

VARKEY-WAERK = 'EUR'.

VARKEY-KDGRP = '02'.

VARKEY-MATNR = '8LCY984-L0060402'.

VARKEY-KFRST = SPACE.

TI_BAPICONDCT-OPERATION = '009'.

TI_BAPICONDCT-COND_USAGE = 'A'.

TI_BAPICONDCT-TABLE_NO = 'A947'.

TI_BAPICONDCT-APPLICATIO = 'V'.

TI_BAPICONDCT-COND_TYPE = 'ZPRP'.

TI_BAPICONDCT-VARKEY = VARKEY.

TI_BAPICONDCT-VALID_TO = '20091231'.

TI_BAPICONDCT-VALID_FROM = '20090101'.

TI_BAPICONDCT-COND_NO = '$'.

APPEND TI_BAPICONDCT.

TI_BAPICONDHD-OPERATION = '009'.

TI_BAPICONDHD-COND_USAGE = 'A'.

TI_BAPICONDHD-TABLE_NO = 'A947'.

TI_BAPICONDHD-APPLICATIO = 'V'.

TI_BAPICONDHD-COND_TYPE = 'ZPRP'.

TI_BAPICONDHD-VARKEY = VARKEY.

TI_BAPICONDHD-VALID_TO = '20080101'.

TI_BAPICONDHD-VALID_FROM = '20081231'.

TI_BAPICONDHD-COND_NO = '$'.

APPEND TI_BAPICONDHD.

TI_BAPICONDIT-OPERATION = '009'.

TI_BAPICONDIT-COND_COUNT = '01'.

TI_BAPICONDIT-APPLICATIO = 'V'.

TI_BAPICONDIT-COND_TYPE = 'ZPRP'.

TI_BAPICONDIT-CURRENCKEY = 'EUR'.

TI_BAPICONDIT-CONDCURR = 'EUR'.

TI_BAPICONDIT-COND_NO = '$'.

MOVE '199.75' TO TI_BAPICONDIT-COND_VALUE.

APPEND TI_BAPICONDIT.

CALL FUNCTION 'BAPI_PRICES_CONDITIONS'

  • EXPORTING

  • PI_INITIALMODE = ' '

  • PI_BLOCKNUMBER =

TABLES

TI_BAPICONDCT = TI_BAPICONDCT

TI_BAPICONDHD = TI_BAPICONDHD

TI_BAPICONDIT = TI_BAPICONDIT

TI_BAPICONDQS = TI_BAPICONDQS

TI_BAPICONDVS = TI_BAPICONDVS

TO_BAPIRET2 = TO_BAPIRET2

TO_BAPIKNUMHS = TO_BAPIKNUMHS

TO_MEM_INITIAL = TO_MEM_INITIAL

EXCEPTIONS

UPDATE_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

ENDIF. [/code]

Read only

0 Likes
734

Thank you Max!

I had a similar requirement and your posting helped.

I had to fix the Date From and Date to. I changed the VarKey as per my requirement to suit the condition table key fields.

Cheers!

Sid