‎2009 Jun 22 7:34 AM
Hi,
I am facing a problem while posting multiple documents from a flat file in FB70 thourgh BDC batch input by using session method. However, the session is getting terminated after posting the first document. Please clarify my problem.
Below is a sample of the data in my flat file -
Customer,Invoice Date,Posting Date,Amount,G/L Account,Amount in doc. Curr.
34,03.06.2009,03.06.2009,100,211000,100
34,03.06.2009,03.06.2009,200,211000,200
34,03.06.2009,03.06.2009,300,211000,300
And below is the sample code of my program.
REPORT ZANI2_BDC_FB70
NO STANDARD PAGE HEADING LINE-SIZE 255.
TYPES: BEGIN OF TY_STR_FB70,
ACCNT(20) TYPE C, "Customer
BLDAT(20) TYPE C, "Invoice Date
BUDAT(20) TYPE C, "Posting Date
WRBTR(20) TYPE C, "Basic Data - Amount
HKONT(20) TYPE C, "G/L Account
ITEM_WRBTR(20) TYPE C,
"Line Item Amount In Document Currency
END OF TY_STR_FB70,
BEGIN OF TY_STR_FILEDATA,
FIELDS TYPE STRING,
END OF TY_STR_FILEDATA.
*----------------------------------------------------------------------*
* data definition
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
* messages of call transaction
MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: IT_STR_FILEDATA TYPE STANDARD TABLE OF TY_STR_FILEDATA,
WA_STR_FILEDATA TYPE TY_STR_FILEDATA,
IT_STR_FB70 TYPE STANDARD TABLE OF TY_STR_FB70,
WA_STR_FB70 TYPE TY_STR_FB70,
G_STR_FILENAME TYPE STRING,
G_FLG_ERROR TYPE I,
G_INDEX TYPE I,
G_STR_INDEX TYPE STRING,
G_STR_FIELDNAME TYPE STRING.
SELECTION-SCREEN BEGIN OF BLOCK INPUT.
PARAMETERS: P_FILE TYPE IBIPPARMS-PATH,
P_SES TYPE APQI-GROUPID.
SELECTION-SCREEN END OF BLOCK INPUT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_FILE'
IMPORTING
FILE_NAME = P_FILE.Continued in the next thread..
‎2009 Jun 22 7:41 AM
...Continued from previous thread
START-OF-SELECTION.
G_FLG_ERROR = 0.
G_STR_FILENAME = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = G_STR_FILENAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ','
TABLES
DATA_TAB = IT_STR_FILEDATA
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
G_FLG_ERROR = 4.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
END-OF-SELECTION.
IF G_FLG_ERROR IS INITIAL.
CLEAR WA_STR_FILEDATA.
"FM GUI_UPLOAD is not being able to split the data from flat file at the commas even after putting
"HAS_FIELD_SEPARATOR = ',' . So the data is manually splitted below..
LOOP AT IT_STR_FILEDATA INTO WA_STR_FILEDATA .
IF G_INDEX <> 0.
CLEAR WA_STR_FB70.
SPLIT WA_STR_FILEDATA-FIELDS AT ',' INTO WA_STR_FB70-ACCNT
WA_STR_FB70-BLDAT
WA_STR_FB70-BUDAT
WA_STR_FB70-WRBTR
WA_STR_FB70-HKONT
WA_STR_FB70-ITEM_WRBTR.
APPEND WA_STR_FB70 TO IT_STR_FB70.
ENDIF.
G_INDEX = 4.
CLEAR WA_STR_FILEDATA.
ENDLOOP.Continued in the next thread....
‎2009 Jun 22 7:46 AM
...Continued from the previous thread.
PERFORM OPEN_GROUP.
G_INDEX = 1.
LOOP AT IT_STR_FB70 INTO WA_STR_FB70.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
"Customer
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
WA_STR_FB70-ACCNT.
"Invoice Date
PERFORM BDC_FIELD USING 'INVFO-BLDAT'
WA_STR_FB70-BLDAT.
"Posting Date
PERFORM BDC_FIELD USING 'INVFO-BUDAT'
WA_STR_FB70-BUDAT.
"Basic data - Amount
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
WA_STR_FB70-WRBTR.
PERFORM BDC_FIELD USING 'INVFO-WAERS'
'EUR'.
G_STR_INDEX = G_INDEX.
IF G_INDEX < 10.
CONCATENATE '0' G_STR_INDEX INTO G_STR_INDEX.
ENDIF.
CONDENSE G_STR_INDEX NO-GAPS.
CLEAR G_STR_FIELDNAME.
CONCATENATE 'ACGL_ITEM-WRBTR(' G_STR_INDEX ')' INTO
G_STR_FIELDNAME.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
G_STR_FIELDNAME.
"'ACGL_ITEM-WRBTR(01)'.
"G/L Acct
CONCATENATE 'ACGL_ITEM-HKONT(' G_STR_INDEX ')' INTO
G_STR_FIELDNAME.
PERFORM BDC_FIELD USING G_STR_FIELDNAME
WA_STR_FB70-HKONT.
"Amount .
CONCATENATE 'ACGL_ITEM-WRBTR(' G_STR_INDEX ')' INTO
G_STR_FIELDNAME.
PERFORM BDC_FIELD USING G_STR_FIELDNAME
WA_STR_FB70-ITEM_WRBTR.
"PERFORM BDC_DYNPRO USING 'SAPMF05A' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
CLEAR WA_STR_FB70.
ENDLOOP.
IF G_FLG_ERROR IS INITIAL.
PERFORM BDC_TRANSACTION USING 'FB70'.
ENDIF.
IF G_FLG_ERROR IS INITIAL.
PERFORM CLOSE_GROUP.
MESSAGE 'Session created successfully.' TYPE 'I'.
ENDIF.
ENDIF.Continued in the next thread..
‎2009 Jun 22 7:49 AM
... Continued from the previous thread
********************************************
* FORM DECLARARIONS.
*********************************************
*----------------------------------------------------------------------*
* Start new screen
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD
*----------------------------------------------------------------------*
* create batchinput session
* (not for call transaction using...)
*----------------------------------------------------------------------*
FORM OPEN_GROUP.
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
GROUP = P_SES
KEEP = 'X'
USER = SY-UNAME
PROG = SY-CPROG
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.
IF NOT SY-SUBRC IS INITIAL.
G_FLG_ERROR = 4.
ENDIF.
ENDFORM. "OPEN_GROUPContinued in the next thread....
‎2009 Jun 22 7:50 AM
...Continued from previous thread
*----------------------------------------------------------------------*
* end batchinput session *
* (call transaction using...: error session) *
*----------------------------------------------------------------------*
FORM CLOSE_GROUP.
* close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM. "CLOSE_GROUP
*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'FB70'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
SIMUBATCH = 'X'
* 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.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE 'Error in creating session.' TYPE 'I'.
G_FLG_ERROR = 4.
ENDIF.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
‎2009 Jun 22 7:44 AM
Hi,
What was the message u r getting in the SESSION?
I think U must always post with 2 line items, one is for CREDIT (Customer) & one is for DEBIT (G/L Account) then only it will POST the document...Contact FI functional to know it exactly...
Rgds,
Pavan
‎2009 Jun 22 7:57 AM
Hi vishnu,
No error msg is being shown. After running the program, it is showing the success message. But when I am processing the session in SM35 in the foreground mode, only the first data is being processed and the session is getting terminated. Any suggestions?
‎2012 Feb 02 6:45 AM
Hi Anirban,
Are you able to find the solution for this problem?
Please let me know the solution as I am facing the similar issue.
Regards,
Rajesh Kumar
‎2012 Feb 02 7:22 AM
Edited by: Michael.Sumaya on Feb 3, 2012 5:43 PM
(sorry didn't realize that this post was just raised back from the dead)
‎2012 Feb 03 10:26 AM
Hi Anirban,
One question, why don't you use a BAPI? Any change in customizing, upgrades and so on is a nightmare with all related with BDC. It's a suggestion.
If you are interested, please, see these notes
SAP Note 306504 - Collective note: BAPIs for the AC interface
SAP Note 487722 - Using EXTENSION1 for accounting BAPIs
SAP Note 556311 - BAPI in the extended withholding tax
I hope this helps you
Regards
Eduardo