02-25-2009 5:49 AM
hi all,
Cont. after commit in bdc how to use it in coding ... if its possable please send the code
02-25-2009 5:53 AM
Hi Santosh
Check the link
https://www.sdn.sap.com/irj/scn/profile?editmode=true&userid=3828796
and check my answer.
Regards
Sachin
02-25-2009 5:53 AM
Hi,
Once you save your recording there is a option to create a program in SHDB only. From that you can create the program directly and use it in you own way.
Thanks,
Bharathi.
02-25-2009 5:55 AM
hi,
but Cont. after commit is not work when by the genrated program..... i think we as t write coding...
02-25-2009 5:53 AM
Hi Santosh
Check the link
https://www.sdn.sap.com/irj/scn/profile?editmode=true&userid=3828796
and check my answer.
Regards
Sachin
02-25-2009 5:55 AM
<CONSTANTS: GR_NAME LIKE APQI-GROUPID VALUE 'ZSATXD01', "HOLDS GROUP NAME
T_CODE LIKE TSTC-TCODE VALUE 'XD01'. "HOLDS TR CODE
DATA: S_FLAG. "FLAG TO HOLD SESSION STATUS
DATA: DATE1 LIKE SY-DATUM. "VARIABLE TO HOLD THE CURRENT DATE
*INTERNAL TABLE HODS THE XD01 FIELDS
DATA: BEGIN OF IT_RECORD OCCURS 0,
KTOKD(4),
KUNNR(16),
BUKRS(4),
VKORG(4),
VTWEG(2),
SPART(2),
REF_KUNNR(16),
ANRED(15),
NAME1(35),
SORTL(10),
LAND1(3),
SPRAS(2),
CIVVE(1),
AWAHR(3),
WAERS(5),
KZAZU(1),
ANTLF(1),
END OF IT_RECORD.
*INTERNAL TABLE FOR BDCDATA STRUCTURE
DATA: BEGIN OF IT_BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF IT_BDCDATA.
*INTERNAL TABLE HOLDS MESSAGES
DATA: BEGIN OF IT_BDCMSGCOLL OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF IT_BDCMSGCOLL.
*INTERNAL TABLE FOR MENU
*DATA: BEGIN OF IT_MENU1 OCCURS 0,
ITEM(10),
END OF IT_MENU1.
DATE1 = SY-DATUM.
START-OF-SELECTION.
*Sub Routine to Read Data from Presentation Server Flat file
PERFORM READ_DATA.
*Sub Routine to Write Data to App Srv
PERFORM DATA_TO_APP_SRV.
*Sub Routine to Read Data form App Srv into Internal Table
PERFORM READ_APP_DATA.
*Sub Routine to Write Data to Session
PERFORM WRITE_DATA.
END-OF-SELECTION.
WRITE:/30 'CLICK OPEN SESSION BUTTON TO SEE THE ERRONEOUS RECORDS'.
SET TITLEBAR 'ZTL1' WITH SY-UNAME SY-DATUM.
SET PF-STATUS 'ZM1'.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'SM35'.
MESSAGE I010 WITH TEXT-003.
CALL TRANSACTION 'SM35'.
WHEN 'ALOG'.
MESSAGE I010 WITH TEXT-004.
SUBMIT RSBDCLOG WITH MAPPE = GR_NAME AND RETURN.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'DELS'.
SUBMIT RSBDCDRU WITH MAPPE = GR_NAME AND RETURN.
ENDCASE.
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.
FORM BDC_FIELD USING FNAM FVAL.
IF NOT FVAL IS INITIAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
ENDIF.
ENDFORM.
FORM READ_DATA.
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = ' '
FILENAME = 'C:\ABC'
FILETYPE = 'ASC'
ITEM = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
LINE_EXIT = ' '
USER_FORM = ' '
USER_PROG = ' '
SILENT = 'S'
IMPORTING
FILESIZE =
CANCEL =
ACT_FILENAME =
ACT_FILETYPE =
TABLES
DATA_TAB = IT_RECORD
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.
ENDFORM. " READ_DATA
FORM WRITE_DATA.
LOOP AT IT_RECORD.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'ENTR'.
PERFORM BDC_FIELD USING 'RF02D-KTOKD'
IT_RECORD-KTOKD.
PERFORM BDC_FIELD USING 'RF02D-KUNNR'
IT_RECORD-KUNNR.
PERFORM BDC_FIELD USING 'RF02D-BUKRS'
IT_RECORD-BUKRS.
PERFORM BDC_FIELD USING 'RF02D-VKORG'
IT_RECORD-VKORG.
PERFORM BDC_FIELD USING 'RF02D-VTWEG'
IT_RECORD-VTWEG.
PERFORM BDC_FIELD USING 'RF02D-SPART'
IT_RECORD-SPART.
PERFORM BDC_FIELD USING 'RF02D-REF_KUNNR'
IT_RECORD-REF_KUNNR.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNA1-ANRED'
IT_RECORD-ANRED.
PERFORM BDC_FIELD USING 'KNA1-NAME1'
IT_RECORD-NAME1.
PERFORM BDC_FIELD USING 'KNA1-SORTL'
IT_RECORD-SORTL.
PERFORM BDC_FIELD USING 'KNA1-LAND1'
IT_RECORD-LAND1.
PERFORM BDC_FIELD USING 'KNA1-SPRAS'
IT_RECORD-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNA1-LIFNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0125'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNA1-NIELS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0340'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0370'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'KNA1-CIVVE'
IT_RECORD-CIVVE.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0360'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0210'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB1-AKONT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0215'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB1-ZTERM'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0220'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB5-MAHNA'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0230'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNB1-VRSNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0310'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVV-BZIRK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNVV-AWAHR'
IT_RECORD-AWAHR.
PERFORM BDC_FIELD USING 'KNVV-WAERS'
IT_RECORD-WAERS.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0315'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVV-LPRIO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KNVV-KZAZU'
IT_RECORD-KZAZU.
PERFORM BDC_FIELD USING 'KNVV-ANTLF'
IT_RECORD-ANTLF.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0320'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVV-PERFK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '1350'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPMF02D' '0324'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KNVP-PARVW(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*Calling the XD01 transaction and placing erroneous messages into
*BDCMSGCOLL
CALL TRANSACTION 'XD01'
USING IT_BDCDATA
MODE 'N'
UPDATE 'S'
MESSAGES INTO IT_BDCMSGCOLL.
*If Transaction is not Successfull then open a Session
IF SY-SUBRC <> 0.
IF S_FLAG EQ SPACE.
PERFORM OPEN_GROUP.
S_FLAG = 'X'.
ENDIF.
*Writing Erroneous Records into Session
PERFORM INSERT_REC.
ENDIF.
REFRESH IT_BDCDATA.
ENDLOOP.
*Closing the Session if it is opened
IF S_FLAG = 'X'.
PERFORM CLOSE_GROUP.
ENDIF.
ENDFORM. " WRITE_DATA
FORM DATA_TO_APP_SRV.
IF NOT IT_RECORD[] IS INITIAL.
OPEN DATASET 'SATXD01' FOR OUTPUT IN TEXT MODE.
LOOP AT IT_RECORD.
TRANSFER IT_RECORD TO 'SATXD01'.
ENDLOOP.
ELSE.
MESSAGE E010 WITH TEXT-001.
ENDIF.
CLOSE DATASET 'SATXD01'.
ENDFORM. " DATA_TO_APP_SRV
FORM READ_APP_DATA.
CLEAR IT_RECORD.
REFRESH IT_RECORD.
OPEN DATASET 'SATXD01' FOR INPUT IN TEXT MODE.
DO.
READ DATASET 'SATXD01' INTO IT_RECORD.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
APPEND IT_RECORD.
ENDDO.
CLOSE DATASET 'SATXD01'.
ENDFORM. " READ_APP_DATA
FORM OPEN_GROUP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
DEST = FILLER8
GROUP = GR_NAME
HOLDDATE = DATE1
KEEP = 'X'
USER = SY-UNAME
RECORD = FILLER1
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.
ENDFORM. " OPEN_GROUP
&----
*& Form INSERT_REC
&----
SUB ROUTINE WRITES DATA TO SESSION
----
--> p1 text
<-- p2 text
----
FORM INSERT_REC.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = T_CODE
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
TABLES
DYNPROTAB = IT_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.
ENDFORM. " INSERT_REC
&----
*& Form CLOSE_GROUP
&----
SUB ROUTINE CLOSES SESSION
----
--> p1 text
<-- p2 text
----
FORM 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.
ENDFORM. " CLOSE_GROUP >