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

BDC Program

Former Member
0 Likes
465

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.

1 REPLY 1
Read only

Former Member
0 Likes
362

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