2009 Jan 09 4:21 AM
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
2009 Jan 09 4:30 AM
Hi,
While recording BDC press Shift+F12 for page down.
I think it'll work.
2009 Jan 09 4:38 AM
Rami,
Instead of BDC use BAPI BAPI_SALESORDER_CREATEFROMDAT2 for sales order creation.
Thanks
Karan
2009 Jan 09 4:58 AM
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
2009 Jan 09 7:17 AM
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
2009 Jan 09 7:52 AM
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
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |