Skip to Content
0
Feb 28, 2014 at 01:00 PM

BDC F-04 Background time can`t work

448 Views

Dear SAP Professionals,


while Creating BDC for Tcode F-04 Post with Clearing , Radio button Transfer Posting with Clearing is not working in background mode where as it work fine in foreground mode.


REPORT ZF_04 NO STANDARD PAGE HEADING LINE-SIZE 255.

TYPES : BEGIN OF RECORD,
BLDAT TYPE CHAR10, "Doc Date
BLART TYPE BLART, "Doc Type
BUKRS TYPE BUKRS, "Company Code
BUDAT TYPE CHAR10,"Posting Date
* MONAT TYPE MONAT,
WAERS TYPE WAERS, "Currency
XBLNR TYPE XBLNR, "Reference
AUGTX TYPE AUGTX_F05A, "Clearing Text
* DOCID TYPE DOCID,
NEWBS TYPE NEWBS, "Posting Key
NEWKO TYPE NEWKO, "Account
WRBTR TYPE WRBTR, "Amount
BUPLA TYPE BUPLA, "Business Place
SGTXT TYPE SGTXT, "Text
* FMORE TYPE FMORE,
* AGBUK TYPE AGBUK,
AGKON TYPE AGKON,
AGKOA TYPE KOART,
* XNOPS TYPE XNOPS,
SEL01 TYPE SELXX_F05A,


* XPOS1 TYPE XPOS1,
* XPOS1 TYPE XPOS1,
* SEL01 TYPE SEL01,
* ABPOS TYPE ABPOS,
* XBLNR,
END OF RECORD.

DATA: I_RECORD TYPE TABLE OF RECORD,
W_RECORD TYPE RECORD.

DATA : I_BDCDATA TYPE TABLE OF BDCDATA,
W_BDCDATA TYPE BDCDATA.

DATA: I_MESSTAB TYPE TABLE OF BDCMSGCOLL,
W_MESSTAB TYPE BDCMSGCOLL.

DATA : IT_FILE TYPE TABLE OF ALSMEX_TABLINE,
WA_FILE TYPE ALSMEX_TABLINE.
DATA : GNUMBER TYPE CHAR15.
*Structure for error message
TYPES : BEGIN OF TY_S_ERROR,
MSG_ERR(60) TYPE C,
END OF TY_S_ERROR.
DATA:
WA_PATH TYPE STRING ,
WA_ERROR TYPE STRING,
WA_CNT TYPE I,
W_MODE TYPE C,
WA_CNT1(2) TYPE N,
IT_OUTPUT TYPE TABLE OF TY_S_ERROR,
WA_OUTPUT LIKE LINE OF IT_OUTPUT.

DATA: T_MSG TYPE TABLE OF BDCMSGCOLL, " Collecting Error messages
W_MSG TYPE BDCMSGCOLL,
W_MSG1(51).
DATA : TAB1 TYPE SY-INDEX,
TEMP1 TYPE STR.
DATA : MSG TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE FTXT.
PARAMETER: P_FILE TYPE RLGRAP-FILENAME.
* E_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.

IF P_FILE IS INITIAL.
MESSAGE 'Select Excel Sheet' TYPE 'I' DISPLAY LIKE 'E'.
EXIT.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_FILE
EXCEPTIONS
OTHERS = 1.


CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = '1'
I_BEGIN_ROW = '2'
I_END_COL = '15'
I_END_ROW = '2000'
TABLES
INTERN = IT_FILE
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE 'Select Excel Sheet' TYPE 'I' DISPLAY LIKE 'E'.
EXIT.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* BREAK-POINT.
LOOP AT IT_FILE INTO WA_FILE.
CASE WA_FILE-COL.
WHEN 1.
W_RECORD-BLDAT = WA_FILE-VALUE. "Doc Date
WHEN 2.
W_RECORD-BLART = WA_FILE-VALUE. "Doc Type
WHEN 3.
W_RECORD-BUKRS = WA_FILE-VALUE. "Company Code
WHEN 4.
W_RECORD-BUDAT = WA_FILE-VALUE. "Posting Date
* WHEN 5.
* W_RECORD-MONAT = WA_FILE-VALUE.
WHEN 5.
W_RECORD-WAERS = WA_FILE-VALUE. "Currency
WHEN 6.
W_RECORD-XBLNR = WA_FILE-VALUE. "Reference
WHEN 7.
W_RECORD-AUGTX = WA_FILE-VALUE. "Clearing Text
WHEN 8.
W_RECORD-NEWBS = WA_FILE-VALUE. "Posting Key
WHEN 9.
W_RECORD-NEWKO = WA_FILE-VALUE. "Account
WHEN 10.
W_RECORD-WRBTR = WA_FILE-VALUE. "amount
WHEN 11.
W_RECORD-BUPLA = WA_FILE-VALUE. "Business Place
WHEN 12.
W_RECORD-SGTXT = WA_FILE-VALUE. "Text
WHEN 13.
W_RECORD-AGKON = WA_FILE-VALUE.
WHEN 14.
W_RECORD-AGKOA = WA_FILE-VALUE.
WHEN 15.
W_RECORD-SEL01 = WA_FILE-VALUE.

* W_RECORD-XNOPS = WA_FILE-VALUE.
* WHEN 16.
* W_RECORD-XPOS1 = WA_FILE-VALUE.
* WHEN 17.
* W_RECORD-ABPOS = WA_FILE-VALUE.

ENDCASE.
* BREAK ABAP.
AT END OF ROW.
APPEND W_RECORD TO I_RECORD.
CLEAR W_RECORD.
ENDAT.
ENDLOOP.




START-OF-SELECTION.
IF I_RECORD IS INITIAL.
MESSAGE 'No Such Record found in Excel Sheet' TYPE 'E'.
EXIT.
ENDIF.
LOOP AT I_RECORD INTO W_RECORD.
CLEAR : I_BDCDATA[].
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0122'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT'
W_RECORD-BLDAT. "RECORD-BLDAT_001.
PERFORM BDC_FIELD USING 'BKPF-BLART'
W_RECORD-BLART." RECORD-BLART_002.
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
W_RECORD-BUKRS."RECORD-BUKRS_003.
PERFORM BDC_FIELD USING 'BKPF-BUDAT'
W_RECORD-BUDAT."RECORD-BUDAT_004.
* PERFORM BDC_FIELD USING 'BKPF-MONAT'
* W_RECORD-MONAT."RECORD-MONAT_005.
PERFORM BDC_FIELD USING 'BKPF-WAERS'
W_RECORD-WAERS."RECORD-WAERS_006.
PERFORM BDC_FIELD USING 'BKPF-XBLNR'
W_RECORD-XBLNR."RECORD-XBLNR_007.
PERFORM BDC_FIELD USING 'RF05A-AUGTX'
W_RECORD-AUGTX."RECORD-AUGTX_008.
* PERFORM BDC_FIELD USING 'FS006-DOCID'
* RECORD-DOCID_009.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
W_RECORD-NEWBS."RECORD-NEWBS_010.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
W_RECORD-NEWKO."RECORD-NEWKO_011.
* PERFORM BDC_FIELD USING 'RF05A-XPOS1(02)'
* 'X'."RECORD-XPOS1_02_012.
* PERFORM BDC_FIELD USING 'RF05A-XPOS1(04)'
* W_RECORD-XPOS1."RECORD-XPOS1_04_013.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PA'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_RECORD-WRBTR. "RECORD-WRBTR_014.
PERFORM BDC_FIELD USING 'BSEG-BUPLA'
W_RECORD-BUPLA."RECORD-BUPLA_015.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
W_RECORD-SGTXT."RECORD-SGTXT_016.
* PERFORM BDC_FIELD USING 'DKACB-FMORE'
* W_RECORD-FMORE."RECORD-FMORE_017.
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0710'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-XPOS1(03)'.
* PERFORM BDC_FIELD USING 'RF05A-XPOS1(03)'
* 'X'."RECORD-XPOS1_03_023.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
* PERFORM BDC_FIELD USING 'RF05A-AGBUK'
* RECORD-AGBUK_018.
PERFORM BDC_FIELD USING 'RF05A-AGKON'
W_RECORD-AGKON."RECORD-AGKON_019.
PERFORM BDC_FIELD USING 'RF05A-AGKOA'
W_RECORD-AGKOA."RECORD-AGKOA_020.
* PERFORM BDC_FIELD USING 'RF05A-XNOPS'
* W_RECORD-XNOPS."RECORD-XNOPS_021.
* PERFORM BDC_FIELD USING 'RF05A-XPOS1(01)'
* 'X'.
"W_RECORD-XPOS1."RECORD-XPOS1_01_022.
PERFORM BDC_FIELD USING 'RF05A-XPOS1(03)'
'X'."RECORD-XPOS1_03_023.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0731'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-SEL01(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF05A-SEL01(01)'
W_RECORD-SEL01."RECORD-SEL01_01_024.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0731'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-SEL01(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0731'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-SEL01(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=RW'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0710'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-AGBUK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
* PERFORM BDC_FIELD USING 'RF05A-AGBUK'
* W_RECORD-AGBUK."_025.
PERFORM BDC_FIELD USING 'RF05A-AGKON'
W_RECORD-AGKON."_026.
* PERFORM BDC_FIELD USING 'RF05A-AGKOA'
* W_RECORD-AGKOA."_027.
PERFORM BDC_FIELD USING 'RF05A-XNOPS'
'X'."W_RECORD-XNOPS."_028.
PERFORM BDC_DYNPRO USING 'SAPDF05X' '3100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BS'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'DF05B-PSSKT(01)'.
* PERFORM BDC_FIELD USING 'RF05A-ABPOS'
* W_RECORD-ABPOS."RECORD-ABPOS_029.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0700'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-NEWBS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
* PERFORM BDC_FIELD USING 'BKPF-XBLNR'
* RECORD-XBLNR_030.
PERFORM BDC_TRANSACTION USING 'F-04'.





*ENDDO.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR W_BDCDATA.
W_BDCDATA-PROGRAM = PROGRAM.
W_BDCDATA-DYNPRO = DYNPRO.
W_BDCDATA-DYNBEGIN = 'X'.
APPEND W_BDCDATA TO I_BDCDATA.
CLEAR W_BDCDATA.
ENDFORM. "BDC_DYNPRO

*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
* IF FVAL <> NODATA.
CLEAR W_BDCDATA.
W_BDCDATA-FNAM = FNAM.
W_BDCDATA-FVAL = FVAL.
SHIFT W_BDCDATA-FVAL LEFT DELETING LEADING SPACE.
APPEND W_BDCDATA TO I_BDCDATA.
CLEAR W_BDCDATA.
* ENDIF.
ENDFORM. "BDC_FIELD

*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA MOD(1).
BREAK ABAP.
MOD = 'N'.
CALL TRANSACTION TCODE USING I_BDCDATA
MODE MOD "CTUMODE' "A N Debug Mode
UPDATE 'S'"CUPDATE
MESSAGES INTO T_MSG."I_MESSTAB.
BREAK ABAP.
TAB1 = TAB1 + 1.

IF SY-SUBRC EQ 0.

LOOP AT T_MSG INTO W_MSG WHERE MSGNR = '312'.
* Format Message
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = W_MSG-MSGID
MSGNR = W_MSG-MSGNR
MSGV1 = W_MSG-MSGV1
MSGV2 = W_MSG-MSGV2
MSGV3 = W_MSG-MSGV3
MSGV4 = W_MSG-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = W_MSG1.
MOVE W_MSG-MSGV1 TO GNUMBER.
WRITE : TAB1 .
WRITE : GNUMBER.
WRITE : 'Document for Customer incoming payment generated' .
NEW-LINE NO-SCROLLING.
ENDLOOP.

ELSE.

* Error Found
LOOP AT T_MSG INTO W_MSG WHERE MSGTYP EQ 'E'.
* Format Message
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = W_MSG-MSGID
MSGNR = W_MSG-MSGNR
MSGV1 = W_MSG-MSGV1
MSGV2 = W_MSG-MSGV2
MSGV3 = W_MSG-MSGV3
MSGV4 = W_MSG-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = W_MSG1.


WA_OUTPUT-MSG_ERR = W_MSG1.

* CONCATENATE TAB1 WA_OUTPUT-MSG_ERR INTO
* WA_OUTPUT-MSG_ERR SEPARATED BY SPACE.

* APPEND WA_OUTPUT-MSG_ERR TO IT_OUTPUT.

WRITE : TAB1.
WRITE : WA_OUTPUT-MSG_ERR .
NEW-LINE NO-SCROLLING.

ENDLOOP.
ENDIF.
CLEAR : T_MSG,W_MSG.
ENDFORM. "BDC_TRANSACTION




Please Help me...........


Thank You in Advance