2007 Jan 14 9:25 AM
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.
2007 Jan 14 9:29 AM
2007 Jan 14 9:51 AM
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
2007 Jan 14 11:22 AM
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]
2007 Feb 05 9:08 PM
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
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |