‎2007 Apr 18 7:23 AM
Hi All,
i have developed a bdc program to upload data in trasaction code vk11.
wherein after metioning the condition type which needs to be a constant, one of the key combition is chosen,after which organisation is mentioned thn material no and then directly choose the scale icon and enter both the dates and then mention scales,either all the 5 scales as declared in the program or only 1 scale as required.
data is not getting uploaded.
The code is as follows:
CONSTANTS :
c_kschl(004) VALUE 'ZLSP',
c_tcode(004) VALUE 'VK11'.
----
----
Declaration for workarea
----
TYPES: BEGIN OF itab_wa,
vkorg(4),
matlno(18),
validon(10),
validto(10),
scale1(15),
scale_rate1(15),
scale2(15),
scale_rate2(15),
scale3(15),
scale_rate3(15),
scale4(15),
scale_rate4(15),
scale5(15),
scale_rate5(15),
END OF itab_wa.
----
Declaration for Tables
----
DATA : itab TYPE itab_wa OCCURS 20 WITH HEADER LINE,
bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
session LIKE apqi-groupid VALUE 'ZVK11_TEST',
messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
----
Event Start Of SELECTION
----
START-OF-SELECTION.
*Upload data from presentation server
CALL FUNCTION 'UPLOAD'
EXPORTING
filename = 'C:\VK11_DATA.TXT'
filetype = 'ASC'
TABLES
data_tab = itab
EXCEPTIONS
conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
**Populate data from internal table to BDC structure
PERFORM get_data_bdc.
&----
*& Form get_data_BDC
&----
FORM get_data_bdc.
PERFORM open_trans_session.
LOOP AT itab.
REFRESH bdcdata.
IF sy-subrc <> 0. EXIT. ENDIF.
PERFORM bdc_dynpro USING 'SAPMV13A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-KSCHL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ANTA'.
PERFORM bdc_field USING 'RV13A-KSCHL'
c_kschl.
PERFORM bdc_dynpro USING 'SAPLV14A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV130-SELKZ(07)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WEIT'.
PERFORM bdc_field USING 'RV130-SELKZ(01)'
''.
PERFORM bdc_field USING 'RV130-SELKZ(07)'
'X'.
PERFORM bdc_dynpro USING 'SAPMV13A' '1906'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KOMG-MATNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PSTF'.
PERFORM bdc_field USING 'KOMG-VKORG'
itab-vkorg.
PERFORM bdc_field USING 'KOMG-MATNR(01)'
itab-matlno.
PERFORM bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATBI'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KONM-KBETR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RV13A-DATAB'
itab-validon.
PERFORM bdc_field USING 'RV13A-DATBI'
itab-validto.
PERFORM bdc_field USING 'KONM-KSTBM(01)'
itab-scale1.
PERFORM bdc_field USING 'KONM-KSTBM(02)'
itab-scale2.
PERFORM bdc_field USING 'KONM-KBETR(01)'
itab-scale_rate1.
PERFORM bdc_field USING 'KONM-KBETR(02)'
itab-scale_rate2.
PERFORM bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KONM-KSTBM(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'RV13A-DATAB'
'01.04.2007'.
PERFORM bdc_field USING 'RV13A-DATBI'
'31.12.2007'.
*Transcation to call Vk11
PERFORM insert_trans_session.
ENDLOOP.
PERFORM close_trans_session.
ENDFORM. " get_data_BDC
********************************************************************
*& Form open_trans_session.
&----
FORM open_trans_session.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = session
user = sy-uname
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.
IF sy-subrc NE 0.
WRITE: / 'BDC_OPEN_GROUP ERROR', sy-subrc.
ELSE.
WRITE: / 'BDC_OPEN_GROUP OK', sy-subrc.
ENDIF.
ENDFORM.
----
FORM INSERT_TRANS_SESSION *
----
----
FORM insert_trans_session.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'VK11'
TABLES
dynprotab = bdcdata
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
IF sy-subrc NE 0.
WRITE: / 'BDC_INSERT ERROR', sy-subrc.
ELSE.
WRITE: / 'BDC_INSERT OK', sy-subrc.
ENDIF.
ENDFORM.
----
FORM CLOSE_TRANS_SESSION *
----
........ *
----
FORM close_trans_session.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
WRITE: / 'BDC_CLOSE_GROUP ERROR', sy-subrc.
ELSE.
WRITE: / 'BDC_CLOSE_GROUP OK', sy-subrc.
ENDIF.
ENDFORM.
----
Populate screen number and name *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM.
----
Insert field *
----
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM.
‎2007 Apr 18 7:54 AM
The solution of every problem is debugging. First you debug the program and try to find the what is the exact problem with the code or any other functional problem. There is no problem with the code side. you just debug the program and reach at exact problem.
Regards
Mukesh