BDC Example Program
BDC Example Program
* flat File
*_____________
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
BKPF-BLDAT
BKPF-BLART
BKPF-BUKRS
BKPF-BUDAT
BKPF-MONAT
BKPF-WAERS
BKPF-BKTXT
RF05A-NEWBS
RF05A-NEWKO
BSEG-WRBTR
BSEG-GSBER
BSEG-ZFBDT
BSEG-SGTXT
RF05A-NEWBS
RF05A-NEWKO
BSEG-WRBTR
BSEG-SGTXT
26.11.2012
DR
rel
26.11.2012
8
inr
Invoice Posting
1
1400001
5000
relh
26.11.2012
Invoice No:
50
300000
5000
Invoice No:1234 posting
INITIALIZATION.
**********************************************************************
*********************** T A B L E S *********************************
**********************************************************************
**********************************************************************
*************************** T Y P E S ********************************
**********************************************************************
type-pools : TRUXS.
types : begin Of ty_flat_file,
Doc_Date
,
Doc_Type
Company_Code
Posting_Date
Posting_Period
Currency
Doc_Header_Text
TYPE
BKPF-BLDAT,
"
'BKPF-BLDAT'
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
BKPF-BLART,
BKPF-BUKRS,
BKPF-BUDAT,
BKPF-MONAT,
BKPF-WAERS,
BKPF-BKTXT,
"
"
"
"
"
"
'BKPF-BLART',
'BKPF-BUKRS',
'BKPF-BUDAT',
'BKPF-MONAT',
'BKPF-WAERS',
'BKPF-BKTXT',
Posting_Key
Cust_Account_No
TYPE
TYPE
Amt_in_Local
TYPE
BSEG-WRBTR,
" 0000
BSEG-W
Business_area
TYPE
BSEG-GSBER,
" 0000
BSEG-G
Base_Line_Date
TYPE
BSEG-ZFBDT,
" 0000
BSEG-Z
Text
TYPE
BSEG-SGTXT,
" 0000
BSEG-S
Posting_Key1
TYPE
RF05A-
Account_No
TYPE
RF05A-
TYPE
TYPE
BSEG-WRBTR,
BSEG-SGTXT,
RBTR
SBER
FBDT
GTXT
NEWBS
NEWKO
Amount_in_Local_Curr1
Text1
end of ty_flat_file.
*PROGRAM
*DYNPRO
*DYNBEGIN
*FNAM
*FVAL
" 0000
TYPE
TYPE
BDC_PROG
BDC_DYNR
TYPE
BDC_START
TYPE
FNAM_____4
TYPE
BDC_FVAL
**********************************************************************
**************I N T E R N A L T A B L E S ***************************
**********************************************************************
DATA : IT_FLAT_FILE TYPE TABLE OF TY_FLAT_FILE,
IT_BDCDATA TYPE TABLE OF BDCDATA.
**********************************************************************
******************* W O R K A R E A ******************************
**********************************************************************
DATA : WA_FLAT_FILE TYPE TY_FLAT_FILE,
WA_BDCDATA TYPE BDCDATA.
**********************************************************************
******************* F I E L D S Y M B O L S ************************
**********************************************************************
**********************************************************************
************************* V A R I A B L E ****************************
**********************************************************************
DATA : FILENAME LIKE RLGRAP-FILENAME.
DATA : IT_FLAT_FILE_EXCEL TYPE TABLE OF ALSMEX_TABLINE," Interne Tabelle mit Ex
cel-Daten
WA_FLAT_FILE_EXCEL TYPE ALSMEX_TABLINE," Interne Tabelle mit Excel-Date
n
WA_FLAT_FILE_EXCEL1 TYPE ALSMEX_TABLINE," Interne Tabelle mit Excel-Date
n
*
it_flat_file TYPE STANDARD TABLE of ty_flat_file.
I_TAB_RAW_DATA TYPE TRUXS_T_TEXT_DATA.
*
p_file
LIKE RLGRAP-FILENAME.
**********************************************************************
*************** S E L E C T I O N S C R E E N ********************
**********************************************************************
PARAMETERS : P_FILE TYPE IBIPPARMS-PATH.
PARAMETERS : R_TXT RADIOBUTTON GROUP G1,
R_EXCEL RADIOBUTTON GROUP G1.
**********************************************************************
*************** AT SELECTION-SCREEN ON VALUE-REQUEST FOR ************
**********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME
= SYST-CPROG
* DYNPRO_NUMBER
= SYST-DYNNR
* FIELD_NAME
= ' '
IMPORTING
FILE_NAME
= P_FILE
of Filemngr
.
**********************************************************************
*************** AT SELECTION-SCREEN ************
**********************************************************************
AT SELECTION-SCREEN.
perform validation_for_file_extention.
**********************************************************************
*************** START-OF-SELECTION ********************
**********************************************************************
START-OF-SELECTION.
translate p_file TO UPPER CASE.
PERFORM flat_file_into_itab_4_txt_file.
PERFORM flat_file_into_itab_4_xls_file.
'RF05A-NEWKO',
'/00',
wa_FLAT_FILE-Doc_Date
'BKPF-BLART'
wa_FLAT_FILE-Doc_Type
'BKPF-BUKRS'
wa_FLAT_FILE-Company_Code
'BKPF-BUDAT'
wa_FLAT_FILE-Posting_Date
'BKPF-MONAT'
wa_FLAT_FILE-Posting_Period
'BKPF-WAERS'
wa_FLAT_FILE-Currency
'BKPF-BKTXT'
wa_FLAT_FILE-Doc_Header_Tex
'FS006-DOCID'
'RF05A-NEWBS'
'*',
wa_FLAT_FILE-Posting_Key
'RF05A-NEWKO'
wa_FLAT_FILE-Cust_Account_N
'BDC_SUBSCR'
'BDC_SUBSCR'
'SAPMF05A',
'SAPLSEXM'.
,
,
,
,
,
,
t ,
,
o
'0301' 'X'.
'RF05A-NEWKO',
'/00',
wa_FLAT_FILE-Amt_in_Lo
wa_FLAT_FILE-Amt_in_L
wa_FLAT_FILE-Business_
'BSEG-ZTERM'
'BSEG-ZFBDT'
'0001',
wa_FLAT_FILE-Base_Line_
'BSEG-SGTXT'
wa_FLAT_FILE-Text
'RF05A-NEWBS'
wa_FLAT_FILE-Posting_Ke
'RF05A-NEWKO'
wa_FLAT_FILE-Account_No
area,
Date,
,
y1 ,
.
endloop.
*
*__________
*
*SAPMF05A
*
*
*
*
0000 T F-22
0100 X
0000
BDC_CURSOR
0000
BDC_OKCODE
0000
BKPF-BLDAT
0000
BKPF-BLART
RF05A-NEWKO
/00
28.11.2012
DR
'X'.
'RF05A-NEWBS',
'=BU',
'doc header text'.
*
*
*
*
*
*
*
*
*
*
*SAPMF05A
*
*
*
*
*
*
*
*
*
*SAPMF05A
*
*
*
*
*
*
*SAPLKACB
*
*
*
*
*
*
*SAPMF05A
*
*
*
*SAPMF05A
*
*
*
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0301
0000
0000
0000
0000
0000
0000
0000
0000
0000
0300
0000
0000
0000
0000
0000
0000
0002
0000
0000
0000
0000
0000
0000
0700
0000
0000
0000
0700
0000
0000
0000
BKPF-BUKRS
BKPF-BUDAT
BKPF-MONAT
BKPF-WAERS
BKPF-BKTXT
FS006-DOCID
RF05A-NEWBS
RF05A-NEWKO
BDC_SUBSCR
BDC_SUBSCR
atl1
28.11.2012
08
inr
doc header text
*
01
16
SAPMF05A
SAPLSEXM
BDC_CURSOR
BDC_OKCODE
BSEG-WRBTR
BSEG-GSBER
BSEG-ZTERM
BSEG-ZFBDT
BSEG-SGTXT
RF05A-NEWBS
RF05A-NEWKO
RF05A-NEWKO
/00
10000
001
0001
28.11.2012
invoice no
50
304001
BDC_CURSOR
BDC_OKCODE
BSEG-WRBTR
BSEG-SGTXT
BDC_SUBSCR
DKACB-FMORE
RF05A-NEWBS
=BU
10000
+
SAPLKACB
X
BDC_CURSOR
BDC_OKCODE
COBL-GSBER
BDC_SUBSCR
COBL-KOSTL
BDC_SUBSCR
COBL-GSBER
ENTE
001
SAPLKACB
1001
SAPLKACB
BDC_CURSOR
BDC_OKCODE
BKPF-BKTXT
RF05A-NEWBS
/00
doc header text
BDC_CURSOR
BDC_OKCODE
BKPF-BKTXT
RF05A-NEWBS
=BU
doc header text
1300APPL_SUB_T
0200APPL_SUB
0001BLOCK
0003BLOCK1
0003BLOCK1
*
*&---------------------------------------------------------------------*
*&
Form flat_file_into_itab_4_txt_file
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form flat_file_into_itab_4_txt_file.
DATA : filename TYPE STRING.
filename = P_FILE.
IF R_TXT = 'X'.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
= filename "P_FILE
*
FILETYPE
= 'ASC'
HAS_FIELD_SEPARATOR
= 'X'
*
HEADER_LENGTH
= 0
*
READ_BY_LINE
= 'X'
*
DAT_MODE
= ' '
*
CODEPAGE
= ' '
*
IGNORE_CERR
= ABAP_TRUE
*
REPLACEMENT
= '#'
*
CHECK_BOM
= ' '
*
VIRUS_SCAN_PROFILE
=
*
NO_AUTH_CHECK
= ' '
*
IMPORTING
*
FILELENGTH
=
*
HEADER
=
tables
data_tab
= IT_FLAT_FILE
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.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
endform.
" flat_file_into_itab_4_txt_file
*&---------------------------------------------------------------------*
*&
Form flat_file_into_itab_4_xls_file
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form flat_file_into_itab_4_xls_file.
filename = P_FILE.
IF R_EXCEL = 'X'.
*
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
*
EXPORTING
*
I_FIELD_SEPERATOR
= 'X'
**
I_LINE_HEADER
=
*
i_tab_raw_data
= i_tab_raw_data
*
i_filename
= p_file
*
tables
*
i_tab_converted_data
= it_flat_file
*
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.
*
endif.
WA_flat_file-Company_Code
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 4.
WA_flat_file-Posting_Date
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 5.
WA_flat_file-Posting_Period
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 6.
WA_flat_file-Currency
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 7.
WA_flat_file-Doc_Header_Text
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 8.
WA_flat_file-Posting_Key
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 9.
WA_flat_file-Cust_Account_No
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 10.
WA_flat_file-Amt_in_Local
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 11.
WA_flat_file-Business_area
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 12.
WA_flat_file-Base_Line_Date
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 13.
WA_flat_file-Text
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 14.
WA_flat_file-Posting_Key1
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 15.
WA_flat_file-Account_No
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 16.
WA_flat_file-Amount_in_Local_Curr1
= WA_FLAT_FILE_EXCEL-VALUE.
WHEN 17.
WA_flat_file-Text1
= WA_FLAT_FILE_EXCEL-VALUE.
ENDIF.
endform.
" VALIDATION_FOR_FILE_EXTENTION
*&---------------------------------------------------------------------*
*&
Form CALL_SCREEN_DETAILS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_0163 text
*
-->P_0164 text
*
-->P_0165 text
*----------------------------------------------------------------------*
form CALL_SCREEN_DETAILS using
value(p_0163)
value(p_0164)
value(p_0165).
WA_BDCDATA-PROGRAM
= p_0163.
WA_BDCDATA-DYNPRO
= p_0164.
WA_BDCDATA-DYNBEGIN = p_0165.
APPEND WA_BDCDATA TO IT_BDCDATA.
CLEAR WA_BDCDATA.
endform.
" CALL_SCREEN_DETAILS
*&---------------------------------------------------------------------*
*&
Form CALL_FIELD_DETAILS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_0169 text
*
-->P_0170 text
*----------------------------------------------------------------------*
form CALL_FIELD_DETAILS using
value(p_0169)
value(p_0170).
WA_BDCDATA-fnam
= p_0169.
if p_0169 eq 'BSEG-WRBTR'.
WA_BDCDATA-FVAL
= p_0170.
CONDENSE WA_BDCDATA-FVAL.
REPLACE ALL OCCURRENCES OF '.' IN WA_BDCDATA-FVAL WITH ','.
ELSE.
WA_BDCDATA-FVAL
= p_0170.
ENDIF.
APPEND WA_BDCDATA TO IT_BDCDATA.
CLEAR WA_BDCDATA.
endform.
" CALL_FIELD_DETAILS
*&---------------------------------------------------------------------*
*&
Form CALL_FIELD_DETAILS1
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_0267 text
*
-->P_0268 text
*----------------------------------------------------------------------*
form CALL_FIELD_DETAILS1 using
value(p_0267)
value(p_0268).
*
WA_BDCDATA-FVAL = WA_BDCDATA-FVAL
WA_BDCDATA-fnam = p_0267.
WA_BDCDATA-FVAL
= p_0268.