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

BDC

Former Member
0 Likes
377

I have a problem with the Concur Interface. I have a flat file with pipe seperator and I have to run the file in Call Transaction and the errors should also download in pipe seperator which is not happening. Secondly I have to load the errors in Session Method where the fuctional will correct the errors in Foreground. If you can read my code and let me know where the changes should be made that will be alot appriciated and will be rewarded big time. Thanks Heaps.

<b>The Code:</b>

REPORT Z_SAMPLECONCUR_INTERFACE .

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.

PARAMETERS: p_fname LIKE rlgrap-filename VISIBLE LENGTH 100 DEFAULT

'C:\'.

PARAMETERS: p_chcgo LIKE rlgrap-filename VISIBLE LENGTH 100 DEFAULT

'C:\'.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.

PARAMETERS: r_amex RADIOBUTTON GROUP rad1,

r_empaid RADIOBUTTON GROUP rad1,

r_copaid RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK b2.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,

ERROR LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

opt TYPE ctu_params,

messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA: up_file TYPE STRING,

chicago_file TYPE STRING,

z_download TYPE STRING,

z_download1 TYPE STRING.

DATA: BEGIN OF inrec OCCURS 0,

data(999).

DATA: END OF inrec.

DATA: BEGIN OF temp OCCURS 0,

value(255).

DATA: END OF temp.

DATA: BEGIN OF chicago OCCURS 0,

value(999).

DATA: END OF chicago.

DATA: BEGIN OF header OCCURS 0,

batch_date(10),

rec_count(5),

hash_total(23).

DATA: END OF header.

TYPES: BEGIN OF struc,

batch_id(13), "batch ID

rep_key(48), "report key

rep_name(40), "report name

rep_stamp(32), "report ID

rep_rec_date(8), "report received date

rep_header2(48), "report header2

rep_header3(48), "report header3

rep_date(8), "report date

emp_fname(32), "employee first name

emp_min(1), "employee middle initial

emp_lname(32), "employee last name

emp_id(48), "employee ID

emp_info1(48), "employee info1

emp_info2(48), "employee info2

comp_name(48), "company name

emp_org4(48), "employee org 4

rep_amt_tot(23), "report amount total

rep_amt_apvd(23), "report amount approved

base_ccode(3), "base currency code

trans_date(8), "transaction date

trans_descrip(64), "transaction description

exp_type(64), "expense type

pers_exp(1), "personal expense (Y/N)

entry_amtc(23), "entry amount claimed

entry_amtd(23), "entry amount due

entry_amta(23), "entry amount approved

pay_type(64), "payment type

co_pay_type(80), "company payment type

cc_num(255), "credit card number

cc_ref_num(5), "credit card reference number

acct_num(20), "account number

fo_ccode(3), "foreign currency code

fo_amt(23), "foreign currency amount

fo_rate(23), "foregin currency rate

vendor(64), "vendor

bus_unit(48), "business unit

cost_center(48), "cost center

int_ord(48), "internal order

car_num_dtl(30), "car number detail

bus_mls_dtl(13), "business miles detail

mls_purp_dtl(13). "miles purpose detail

TYPES: END OF struc.

DATA: itab TYPE struc OCCURS 0 WITH HEADER LINE.

DATA: errors TYPE struc OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF doc OCCURS 0,

num(100) TYPE C.

DATA: END OF doc.

DATA: z1256(4) TYPE C value '1256',

zb34(3) TYPE C value ' 34',

z_datum(10),

z_xblnr(16),

z_bktxt(25),

z_hkont(10),

z_service(1), "TEMPORARY

z_file TYPE rlgrap-filename.

DATA: BEGIN OF dynp_value_tab OCCURS 0.

INCLUDE STRUCTURE dynpread.

DATA: END OF DYNP_VALUE_TAB.

start-of-selection.

PERFORM upload_file.

PERFORM load_data.

PERFORM bdc_fb50.

  • PERFORM bdc_errorfb50.

PERFORM download_file.

PERFORM upload_ERRORfile.

PERFORM BDC_ERROR.

----


  • At Selection Screen

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.

PERFORM get_filename.

p_fname = z_file.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_chcgo.

PERFORM get_filename.

p_chcgo = z_file.

&----


*& Form get_filename

&----


FORM get_filename.

MOVE: 'DS_NAME' TO dynp_value_tab-fieldname.

APPEND dynp_value_tab.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-REPID

DYNUMB = SY-DYNNR

  • TRANSLATE_TO_UPPER = ' '

  • REQUEST = ' '

  • PERFORM_CONVERSION_EXITS = ' '

  • PERFORM_INPUT_CONVERSION = ' '

  • DETERMINE_LOOP_INDEX = ' '

TABLES

DYNPFIELDS = DYNP_VALUE_TAB

EXCEPTIONS

INVALID_ABAPWORKAREA = 04

INVALID_DYNPROFIELD = 08

INVALID_DYNPRONAME = 12

INVALID_DYNPRONUMMER = 16

INVALID_REQUEST = 20

NO_FIELDDESCRIPTION = 24

  • INVALID_PARAMETER = 7

UNDEFIND_ERROR = 28

  • DOUBLE_CONVERSION = 9

  • STEPL_NOT_FOUND = 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.

READ TABLE dynp_value_tab INDEX 1.

MOVE: dynp_value_tab-fieldvalue TO z_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

DEF_FILENAME = SPACE

DEF_PATH = z_file

MASK = ',.,.. '

MODE = 'O'

TITLE = ' '

IMPORTING

FILENAME = z_file

EXCEPTIONS

INV_WINSYS = 1

NO_BATCH = 2

SELECTION_CANCEL = 3

SELECTION_ERROR = 4

OTHERS = 5.

ENDFORM. " SUB_GET_FILENAME

&----


*& Form upload_file

&----


FORM upload_file .

up_file = p_fname.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = up_file

TABLES

DATA_TAB = inrec.

ENDFORM. " upload_file

&----


*& Form load_data

&----


FORM load_data.

*

  • Split data file into separate fields and load internal table

LOOP AT inrec.

SPLIT inrec-data AT '|' INTO TABLE temp.

READ TABLE temp INDEX 1.

IF temp-value = 'EXTRACT'.

*

  • Extract header record

  • Batch Date

READ TABLE temp INDEX 2.

CHECK sy-subrc IS INITIAL.

CONCATENATE temp-value0(4) temp-value5(2) temp-value+8(2)

INTO header-batch_date.

*

  • Record Count

READ TABLE temp INDEX 3.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO header-rec_count.

*

  • Hash Total

READ TABLE temp INDEX 4.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO header-hash_total.

APPEND header.

ELSEIF temp-value = 'DETAIL'.

READ TABLE temp INDEX 10.

CHECK sy-subrc IS INITIAL.

IF temp-value = '12'.

LOOP AT temp.

IF sy-tabix = 1.

chicago-value = temp-value.

ELSE.

CONCATENATE chicago-value temp-value INTO chicago-value

SEPARATED BY '|'.

ENDIF.

ENDLOOP.

APPEND chicago.

ELSEIF temp-value = '11'. "TEMPORARY

z_service = 'Y'. "TEMPORARY

ELSE.

*

  • Extract detail record

  • Batch ID

READ TABLE temp INDEX 2.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-batch_id.

*

  • Report Key

READ TABLE temp INDEX 20.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_key.

*

  • Report Name

READ TABLE temp INDEX 27.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_name.

*

  • Report Stamp

READ TABLE temp INDEX 19.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_stamp.

*

  • Report Received Date

READ TABLE temp INDEX 24.

CHECK sy-subrc IS INITIAL.

CONCATENATE temp-value0(4) temp-value5(2) temp-value+8(2)

INTO itab-rep_rec_date.

*

  • Report Header2

READ TABLE temp INDEX 45.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_header2.

*

  • Report Header3

READ TABLE temp INDEX 46.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_header3.

*

  • Report Date

READ TABLE temp INDEX 25.

CHECK sy-subrc IS INITIAL.

CONCATENATE temp-value0(4) temp-value5(2) temp-value+8(2)

INTO itab-rep_date.

*

  • Employee First Name

READ TABLE temp INDEX 7.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_fname.

*

  • Employee Middle Initial

READ TABLE temp INDEX 8.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_min.

*

  • Employee Last Name

READ TABLE temp INDEX 6.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_lname.

*

  • Employee ID

READ TABLE temp INDEX 5.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_id.

*

  • Employee Info1

READ TABLE temp INDEX 37.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_info1.

*

  • Employee Info2

READ TABLE temp INDEX 12.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_info2.

*

  • Company Name

READ TABLE temp INDEX 11.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-comp_name.

*

  • Emp Org4

READ TABLE temp INDEX 13.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-emp_org4.

*

  • Report Amount Total

READ TABLE temp INDEX 31.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_amt_tot.

*

  • Report Amount Approved

READ TABLE temp INDEX 32.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-rep_amt_apvd.

*

  • Base Currency Code

READ TABLE temp INDEX 22.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-base_ccode.

*

  • Transaction Date

READ TABLE temp INDEX 64.

CHECK sy-subrc IS INITIAL.

CONCATENATE temp-value0(4) temp-value5(2) temp-value+8(2)

INTO itab-trans_date.

*

  • Transaction Description

READ TABLE temp INDEX 69.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-trans_descrip.

*

*Expense Type

READ TABLE temp INDEX 63.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-exp_type.

*

  • Personal Expense

READ TABLE temp INDEX 68.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-pers_exp..

*

  • Entry Amount Claimed

READ TABLE temp INDEX 124.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-entry_amtc.

*

  • Entry Amount Due

READ TABLE temp INDEX 169.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-entry_amtd.

*

  • Entry Amount Approved

READ TABLE temp INDEX 125.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-entry_amta.

*

  • Payment Type

READ TABLE temp INDEX 165.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-pay_type.

*

  • Company Payment Type

READ TABLE temp INDEX 166.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-co_pay_type.

*

  • Credit Card Number

READ TABLE temp INDEX 130.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-cc_num.

*

  • Credit Card Reference Number

READ TABLE temp INDEX 133.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-cc_ref_num.

*

  • Account Number

READ TABLE temp INDEX 167.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-acct_num.

*

  • Foreign Currency Code

READ TABLE temp INDEX 178.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-fo_ccode.

*

  • Foreign Currency Amount

READ TABLE temp INDEX 123.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-fo_amt.

*

  • Foregin Currency Rate

READ TABLE temp INDEX 66.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-fo_rate.

*

  • Vendor

READ TABLE temp INDEX 70.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-vendor.

*

  • Business Unit

READ TABLE temp INDEX 79.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-bus_unit.

*

  • Cost Center

IF z_service = 'Y'. "TEMPORARY

MOVE '51400' TO itab-cost_center. "TEMPORARY

CLEAR z_service. "TEMPORARY

ELSE. "TEMPORARY

READ TABLE temp INDEX 80.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-cost_center.

ENDIF. "TEMPORARY

*

  • Internal Order

READ TABLE temp INDEX 83.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-int_ord.

*

  • Car Number Detail

READ TABLE temp INDEX 174.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-car_num_dtl.

*

  • Business Miles Detail

READ TABLE temp INDEX 171.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-bus_mls_dtl.

*

  • Miles Purpose Detail

READ TABLE temp INDEX 69.

CHECK sy-subrc IS INITIAL.

MOVE temp-value TO itab-mls_purp_dtl.

APPEND itab.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " load_data

&----


*& Form download_file

&----


FORM download_file .

chicago_file = p_chcgo.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = chicago_file

TABLES

DATA_TAB = chicago.

concatenate 'C:\' sy-datum 'docnums.txt' INTO z_download.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = z_download

TABLES

DATA_TAB = doc.

IF NOT doc[] IS INITIAL.

WRITE:/ text-003.

LOOP AT doc.

WRITE:/ doc-num.

ENDLOOP.

ENDIF.

concatenate 'C:\' sy-datum 'errors.txt' INTO z_download1.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = z_download1

TABLES

DATA_TAB = errors.

ENDFORM. " download_file

&----


*& Form bdc_fb50

&----


form bdc_fb50.

LOOP AT itab.

PERFORM conversions.

PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'

z_datum.

  • '04/22/07'.

PERFORM bdc_field USING 'ACGL_HEAD-WAERS'

itab-base_ccode.

  • 'USD'.

PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'

z_datum.

  • '04/27/07'.

PERFORM bdc_field USING 'ACGL_HEAD-XBLNR'

z_xblnr.

  • 'concur ref'.

PERFORM bdc_field USING 'ACGL_HEAD-BKTXT'

z_bktxt.

  • 'concur header txt'.

PERFORM bdc_field USING 'BDC_CURSOR'

'ACGL_ITEM-AUFNR(01)'.

PERFORM bdc_field USING 'ACGL_ITEM-HKONT(01)'

itab-acct_num.

  • '52250'.

PERFORM bdc_field USING 'ACGL_ITEM-HKONT(02)'

z_hkont.

  • '20100'.

PERFORM bdc_field USING 'ACGL_ITEM-WRBTR(01)'

itab-entry_amta.

  • ' 100'.

PERFORM bdc_field USING 'ACGL_ITEM-WRBTR(02)'

itab-entry_amta.

  • ' 100'.

PERFORM bdc_field USING 'ACGL_ITEM-SGTXT(02)'

itab-trans_descrip.

  • 'item text'.

PERFORM bdc_field USING 'ACGL_ITEM-KOSTL(01)'

itab-cost_center.

  • '50020'.

PERFORM bdc_field USING 'ACGL_ITEM-AUFNR(01)'

itab-int_ord.

  • '30020'.

PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'ACGL_HEAD-XBLNR'

z_xblnr.

  • 'CONCUR REF'.

PERFORM bdc_field USING 'ACGL_HEAD-BKTXT'

z_bktxt.

  • 'concur header txt'.

PERFORM bdc_field USING 'BDC_CURSOR'

'ACGL_ITEM-SHKZG(01)'.

PERFORM bdc_field USING 'ACGL_ITEM-SHKZG(01)'

'S'.

CALL TRANSACTION 'FB50' USING bdcdata MESSAGES INTO messtab

MODE 'N'.

IF sy-subrc NE 0.

MOVE-CORRESPONDING itab TO errors.

APPEND errors.

ENDIF.

REFRESH bdcdata. CLEAR bdcdata.

ENDLOOP.

write: / 'Records process for errors go to SM35'.

LOOP AT messtab WHERE msgnr = '312'.

MOVE messtab-msgv1 TO doc-num.

APPEND doc.

ENDLOOP.

ENDFORM.

*ENDFORM. " bdc_fb50

*UPLOADING THE ERRORS

FORM upload_ERRORfile.

Z_DOWNLOAD = p_fname.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = z_download1

TABLES

DATA_TAB = ERRORS.

ENDFORM. " upload_file

*BDC ERRORS

FORM BDC_ERROR.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = 'fb50'

HOLDDATE = sy-datum

KEEP = 'X'

USER = sy-uname

  • RECORD = FILLER1

  • PROG = SY-CPROG

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

LOOP AT ERRORS.

perform conversions.

*PERFORM COPYDATA.

  • PERFORM bdc_dynpro1 USING 'SAPMF05A' '1001'.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field1 USING 'ACGL_HEAD-BLDAT'

z_datum.

  • '04/22/07'.

PERFORM bdc_field1 USING 'ACGL_HEAD-WAERS'

itab-base_ccode.

  • 'USD'.

PERFORM bdc_field1 USING 'ACGL_HEAD-BUDAT'

z_datum.

  • '04/27/07'.

PERFORM bdc_field1 USING 'ACGL_HEAD-XBLNR'

z_xblnr.

  • 'concur ref'.

PERFORM bdc_field1 USING 'ACGL_HEAD-BKTXT'

z_bktxt.

  • 'concur header txt'.

PERFORM bdc_field1 USING 'BDC_CURSOR'

'ACGL_ITEM-AUFNR(01)'.

PERFORM bdc_field1 USING 'ACGL_ITEM-HKONT(01)'

itab-acct_num.

  • '52250'.

PERFORM bdc_field1 USING 'ACGL_ITEM-HKONT(02)'

z_hkont.

  • '20100'.

PERFORM bdc_field1 USING 'ACGL_ITEM-WRBTR(01)'

itab-entry_amta.

  • ' 100'.

PERFORM bdc_field1 USING 'ACGL_ITEM-WRBTR(02)'

itab-entry_amta.

  • ' 100'.

PERFORM bdc_field1 USING 'ACGL_ITEM-SGTXT(02)'

itab-trans_descrip.

  • 'item text'.

PERFORM bdc_field1 USING 'ACGL_ITEM-KOSTL(01)'

itab-cost_center.

  • '50020'.

PERFORM bdc_field1 USING 'ACGL_ITEM-AUFNR(01)'

itab-int_ord.

  • '30020'.

PERFORM bdc_dynpro1 USING 'SAPMF05A' '1001'.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field1 USING 'ACGL_HEAD-XBLNR'

z_xblnr.

  • 'CONCUR REF'.

PERFORM bdc_field1 USING 'ACGL_HEAD-BKTXT'

z_bktxt.

  • 'concur header txt'.

PERFORM bdc_field1 USING 'BDC_CURSOR'

'ACGL_ITEM-SHKZG(01)'.

PERFORM bdc_field1 USING 'ACGL_ITEM-SHKZG(01)'

'S'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'FB50'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

DYNPROTAB = errors

  • 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 sy-subrc NE 0.

  • MOVE-CORRESPONDING itab TO errors.

  • APPEND errors.

  • ENDIF.

REFRESH error.

ENDLOOP.

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.

*SUBMIT rsbdcsub AND RETURN

*

  • WITH bis = sy-datum

*

  • WITH mappe = 'fb50'

*

  • WITH von = sy-datum

*

  • WITH z_verarb = 'X'.

ENDFORM.

*----


*

  • Start new screen

*

*----


*

FORM bdc_dynpro USING program TYPE ANY dynpro TYPE ANY.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. "BDC_DYNPRO

**----


**

    • Insert field

**

**----


**

FORM bdc_field USING fnam TYPE ANY fval TYPE ANY.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. "BDC_FIELD

**----


**

    • Start new screen

**

**----


**

FORM bdc_dynpro1 USING program TYPE ANY dynpro TYPE ANY.

CLEAR error.

error-program = program.

error-dynpro = dynpro.

error-dynbegin = 'X'.

APPEND error.

ENDFORM. "BDC_DYNPRO1

**----


**

    • Insert field

**

**----


**

FORM bdc_field1 USING fnam TYPE ANY fval TYPE ANY.

CLEAR errors.

error-fnam = fnam.

error-fval = fval.

APPEND error.

ENDFORM. "BDC_FIELD1

*

&----


*& Form conversions

&----


FORM conversions .

IF itab-int_ord+0(1) CA z1256.

CLEAR itab-cost_center.

itab-acct_num = '80001'.

ELSEIF itab-int_ord+0(1) CA zb34. "statistical orders

itab-acct_num = '52250'.

ENDIF.

IF r_amex = 'X'.

z_hkont = '20100'.

ELSEIF r_empaid = 'X'.

ELSEIF r_copaid = 'X'.

ENDIF.

WRITE: sy-datum MM/DD/YYYY TO z_datum.

CONCATENATE itab-emp_lname0(8) itab-emp_fname0(8)

INTO z_xblnr SEPARATED BY SPACE.

IF r_amex = 'X'.

CONCATENATE 'CONCUR' 'CC' sy-datum

INTO z_bktxt SEPARATED BY SPACE.

ELSE.

CONCATENATE 'CONCUR' 'Cash' sy-datum

INTO z_bktxt SEPARATED BY SPACE.

ENDIF.

IF itab-trans_descrip IS INITIAL.

CONCATENATE itab-emp_lname itab-emp_fname

INTO itab-trans_descrip SEPARATED BY SPACE.

ENDIF.

2 REPLIES 2
Read only

Former Member
0 Likes
288

Hi Mukunda,

For having Pipeline as separator in the downloaded file use function module 'SAP_CONVERT_TO_TEX_FORMAT' before gui_download.

following is the sample siple bdc prg showing that.

Regarding second question. If you want to give the functional consultant to do corrections. Move all error records into one internal table and create a separate session for that. Then Functional consultant can correct the session online in sm35. Or download and give it in excel.

&----


*& Report ZGS_TEST

*&

&----


*&

*&

&----


REPORT ZGS_TEST.

TYPE-POOLS: truxs.

TYPES:

BEGIN OF ty_Line,

vbeln LIKE vbap-vbeln,

posnr LIKE vbap-posnr,

END OF ty_Line.

types : ty_Lines TYPE STANDARD TABLE of ty_Line WITH DEFAULT KEY.

DATA: itab TYPE ty_Lines.

DATA: itab1 TYPE truxs_t_text_data.

SELECT

vbeln

posnr

UP TO 10 ROWS

FROM vbap

INTO TABLE itab.

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'

EXPORTING

i_field_seperator = '|'

  • I_LINE_HEADER =

  • I_FILENAME =

  • I_APPL_KEEP = ' '

tables

i_tab_sap_data = itab

CHANGING

I_TAB_CONVERTED_DATA = itab1

  • EXCEPTIONS

  • CONVERSION_FAILED = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

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

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

ENDIF.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

filename = 'C:\Documents and Settings\c5085404\Desktop\test.txt'

FILETYPE = 'ASC'

  • APPEND = ' '

  • WRITE_FIELD_SEPARATOR = '|'

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE

  • SHOW_TRANSFER_STATUS = ABAP_TRUE

  • IMPORTING

  • FILELENGTH =

tables

data_tab = itab1

  • FIELDNAMES =

  • EXCEPTIONS

  • FILE_WRITE_ERROR = 1

  • NO_BATCH = 2

  • GUI_REFUSE_FILETRANSFER = 3

  • INVALID_TYPE = 4

  • NO_AUTHORITY = 5

  • UNKNOWN_ERROR = 6

  • HEADER_NOT_ALLOWED = 7

  • SEPARATOR_NOT_ALLOWED = 8

  • FILESIZE_NOT_ALLOWED = 9

  • HEADER_TOO_LONG = 10

  • DP_ERROR_CREATE = 11

  • DP_ERROR_SEND = 12

  • DP_ERROR_WRITE = 13

  • UNKNOWN_DP_ERROR = 14

  • ACCESS_DENIED = 15

  • DP_OUT_OF_MEMORY = 16

  • DISK_FULL = 17

  • DP_TIMEOUT = 18

  • FILE_NOT_FOUND = 19

  • DATAPROVIDER_EXCEPTION = 20

  • CONTROL_FLUSH_ERROR = 21

  • OTHERS = 22

.

IF sy-subrc <> 0.

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

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

ENDIF.

Award points if useful else getbk,

Aleem.

Read only

Former Member
0 Likes
288

I also have to write this interface. Can I ask, why did you do this as a BDC rather than utilizing the BAPIs to create the postings that are needed? Can you also let me know any other issues that you ran into when writing this interface?