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

Regarding problem in BDC

Former Member
0 Likes
690

Dear all,

I am getting problem in Creation of sales order through BDC. After 5 line items '=p+' logic is not working . I am sending my logic. Plz sugggest solution.

CLEAR GK_BDCDATA.

GK_bdcdata-program = 'SAPMV45A'.

GK_bdcdata-dynpro = '0101'.

GK_bdcdata-dynbegin = 'X'.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_CURSOR'.

GK_bdcdata-fval = 'VBAK-VKGRP'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

  • CLEAR GK_bdcdata.

  • GK_bdcdata-fnam = 'BDC_OKCODE'.

  • GK_bdcdata-fval = '/00'.

  • APPEND GK_bdcdata TO GT_BDCDATA..

  • clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-AUART'.

GK_bdcdata-fval = G_AUART.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VKORG'.

GK_bdcdata-fval = G_VKORG.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VTWEG'.

GK_bdcdata-fval = G_VTWEG.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-SPART'.

GK_bdcdata-fval = G_SPART.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VKBUR'.

GK_bdcdata-fval = G_VKBUR.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VKGRP'.

GK_bdcdata-fval = G_VKGRP.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_OKCODE'.

GK_bdcdata-fval = '/00'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_BDCDATA.

GK_bdcdata-program = 'SAPMV45A'.

GK_bdcdata-dynpro = '4001'.

GK_bdcdata-dynbegin = 'X'.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'KUAGV-KUNNR'.

GK_bdcdata-fval = G_KUNNR.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'KUWEV-KUNNR'.

GK_bdcdata-fval = G_KUNNR1.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBKD-BSTKD'.

GK_bdcdata-fval = G_EBELN.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_SUBSCR'.

GK_bdcdata-fval = 'SAPMV45A'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_CURSOR'.

GK_bdcdata-fval = 'VBAP-PSTYV(01)'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

IDX = '01'.

G_CNT = 1.

LOOP AT GT_FINAL INTO GK_FINAL.

CONCATENATE 'RV45A-MABNR(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-MATNR.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CONCATENATE 'VBAP-POSNR(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-POSNR.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CONCATENATE 'RV45A-KWMENG(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-KWMENG.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CONCATENATE 'VBAP-PSTYV(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-PSTYV.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CONCATENATE 'VBAP-UEPOS(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-UEPOS.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

IF G_CNT = 5.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_OKCODE'.

GK_bdcdata-fval = '/00'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

G_CNT = 1.

ENDIF.

G_CNT = G_CNT + 1.

IDX = IDX + 01.

ENDLOOP.

Thanx

Rami

Dear all,

I am getting problem in Creation of sales order through BDC. After 5 line items '=p+' logic is not working . I am sending my logic. Plz sugggest solution.

CLEAR GK_BDCDATA.

GK_bdcdata-program = 'SAPMV45A'.

GK_bdcdata-dynpro = '0101'.

GK_bdcdata-dynbegin = 'X'.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_CURSOR'.

GK_bdcdata-fval = 'VBAK-VKGRP'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

  • CLEAR GK_bdcdata.

  • GK_bdcdata-fnam = 'BDC_OKCODE'.

  • GK_bdcdata-fval = '/00'.

  • APPEND GK_bdcdata TO GT_BDCDATA..

  • clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-AUART'.

GK_bdcdata-fval = G_AUART.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VKORG'.

GK_bdcdata-fval = G_VKORG.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VTWEG'.

GK_bdcdata-fval = G_VTWEG.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-SPART'.

GK_bdcdata-fval = G_SPART.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VKBUR'.

GK_bdcdata-fval = G_VKBUR.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBAK-VKGRP'.

GK_bdcdata-fval = G_VKGRP.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_OKCODE'.

GK_bdcdata-fval = '/00'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_BDCDATA.

GK_bdcdata-program = 'SAPMV45A'.

GK_bdcdata-dynpro = '4001'.

GK_bdcdata-dynbegin = 'X'.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'KUAGV-KUNNR'.

GK_bdcdata-fval = G_KUNNR.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'KUWEV-KUNNR'.

GK_bdcdata-fval = G_KUNNR1.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'VBKD-BSTKD'.

GK_bdcdata-fval = G_EBELN.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_SUBSCR'.

GK_bdcdata-fval = 'SAPMV45A'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_CURSOR'.

GK_bdcdata-fval = 'VBAP-PSTYV(01)'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

IDX = '01'.

G_CNT = 1.

LOOP AT GT_FINAL INTO GK_FINAL.

CONCATENATE 'RV45A-MABNR(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-MATNR.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

CONCATENATE 'VBAP-POSNR(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-POSNR.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CONCATENATE 'RV45A-KWMENG(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-KWMENG.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CONCATENATE 'VBAP-PSTYV(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-PSTYV.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

CONCATENATE 'VBAP-UEPOS(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-UEPOS.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

IF G_CNT = 5.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_OKCODE'.

GK_bdcdata-fval = '/00'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

G_CNT = 1.

ENDIF.

G_CNT = G_CNT + 1.

IDX = IDX + 01.

ENDLOOP.

Thanx

Rami

5 REPLIES 5
Read only

Former Member
0 Likes
662

Hi,

While recording BDC press Shift+F12 for page down.

I think it'll work.

Read only

Former Member
0 Likes
662

Rami,

Instead of BDC use BAPI BAPI_SALESORDER_CREATEFROMDAT2 for sales order creation.

Thanks

Karan

Read only

Former Member
0 Likes
662

CONCATENATE 'VBAP-UEPOS(' IDX ')' INTO G_FIELD.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = G_FIELD.

GK_bdcdata-fval = GK_FINAL-UEPOS.

APPEND GK_bdcdata TO GT_BDCDATA.

clear GK_bdcdata.

Make this changes to ypur code.

I am sure this will work.

IF G_CNT = 5.

CLEAR GK_bdcdata.

GK_bdcdata-fnam = 'BDC_OKCODE'.

GK_bdcdata-fval = '/00'.

APPEND GK_bdcdata TO GT_BDCDATA..

clear GK_bdcdata.

*Add codes for the new line (You can capture the code by cliking on new line button durin recording)

-


-


*End of codes

*NOTE: After this don't change the value of IDX.

ELSE.

G_CNT = G_CNT + 1.

IDX = IDX + 01.

endif.

ENDLOOP.

Thanx

Rami

Read only

Former Member
0 Likes
662

Hello Ramireddy,

I also tried something like this ,Below is a dummy program of an BDC through Table Control using 'P+' function code functionality:

DATA: VCOUNT TYPE I,

V_CH(3),

V_CHAR(16).

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = 'SESSION11'

  • HOLDDATE = FILLER8

KEEP = 'X'

USER = SY-UNAME

  • RECORD = FILLER1

PROG = SY-CPROG

  • DCPFM = '%'

  • DATFM = '%'

  • IMPORTING

  • QID =

  • 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 <> 0.

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

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

start-of-selection.

*include bdcrecx1.

*start-of-selection.

*perform open_group.

perform bdc_dynpro using 'ZSAP_MA_TABC' '9000'.

perform bdc_field using 'BDC_OKCODE'

'=CREATE'.

perform bdc_field using 'BDC_CURSOR'

'ZVBAK-VBELN'.

LOOP AT KTAB.

VCOUNT = VCOUNT + 1.

V_CH = VCOUNT.

CONDENSE V_CH.

perform bdc_dynpro using 'ZSAP_MA_TABC' '9003'.

perform bdc_field using 'BDC_CURSOR'

'IT_TAB-MATKL(01)'.

CLEAR V_CHAR.

CONCATENATE 'IT_TAB-VBELN( ' V_CH ' )' INTO V_CHAR.

perform bdc_field using V_CHAR

KTAB-VBELN.

CONCATENATE 'IT_TAB-POSNR( ' V_CH ' )' INTO V_CHAR.

perform bdc_field using V_CHAR

KTAB-POSNR.

CONCATENATE 'IT_TAB-MATNR( ' V_CH ' )' INTO V_CHAR.

perform bdc_field using V_CHAR

KTAB-MATNR.

CONCATENATE 'IT_TAB-MATKL( ' V_CH ' )' INTO V_CHAR.

perform bdc_field using V_CHAR

KTAB-MATKL.

IF VCOUNT = 17.-->These are the maximum number of rows being displayed ion the table control.

*->After this 'P' function code is triggered and for the next entry to be entered again from the first row of the table control ,we have initialized the v_count again from 1 so as the control goes to the 1st line of the table control.*+

VCOUNT = 1.

ENDIF.

ENDLOOP.

perform bdc_field using 'BDC_OKCODE'

'=SAVE'.

perform bdc_dynpro using 'ZSAP_MA_TABC' '9003'.

perform bdc_field using 'BDC_OKCODE'

'=EXIT'.

perform bdc_field using 'BDC_CURSOR'

'IT_TAB-VBELN(01)'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'ZTABC'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

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 <> 0.

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

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*perform bdc_transaction using 'ZTABC'.

*perform close_group.

CALL FUNCTION 'BDC_CLOSE_GROUP'

  • EXCEPTIONS

  • NOT_OPEN = 1

  • QUEUE_ERROR = 2

  • OTHERS = 3

.

IF sy-subrc <> 0.

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

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

----


  • Start new screen *

----


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.

IF FVAL <> SPACE.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDIF.

ENDFORM.

Hope it helps you.

Regards Mansi

Read only

Former Member
0 Likes
662

hello

In your code every thing is right ,just write fval for bdc_okcode = '=p+' instead of '/00' in the if condition inside loop.

and then execute.

thanks