0% found this document useful (0 votes)
245 views7 pages

ZPRO - FB60 - BDC1 (New Version)

The document describes uploading transaction data from an Excel file into an SAP system. It includes details of converting the Excel file to a table, populating BDC data from the table, and calling the transaction to insert the data. Errors are collected and can be viewed if the transaction fails.

Uploaded by

amir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
245 views7 pages

ZPRO - FB60 - BDC1 (New Version)

The document describes uploading transaction data from an Excel file into an SAP system. It includes details of converting the Excel file to a table, populating BDC data from the table, and calling the transaction to insert the data. Errors are collected and can be viewed if the transaction fails.

Uploaded by

amir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

REPORT ZPRO_FB60_BDC1

NO STANDARD PAGE HEADING LINE-SIZE 255.

TYPES : BEGIN OF T_MAT, "


ACCNT(10),"Vendor
BLDAT(10),"Invoice Date
XBLNR(10),"Reference
WRBTR(10),"Amount
MWSKZ(10),"Tax Rate
BUPLA(10),"Business Place
SECCO(10),"Section Code
HKONT(10),"G/L Account
PRCTR(10),"Profit Centre
KOSTL(10),"Cost centre
END OF T_MAT.

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

PARAMETERS:
P_FILE TYPE RLGRAP-FILENAME, " File Path
* e_file TYPE rlgrap-filename OBLIGATORY, " Error File Path
P_MODE LIKE CTU_PARAMS-DISMODE DEFAULT 'A'. "TYPE c OBLIGATORY DEFAULT 'N'.
" Mode
PARAMETERS:P_UPDATE LIKE CTU_PARAMS-DISMODE DEFAULT 'L' NO-DISPLAY.

SELECTION-SCREEN END OF BLOCK B1.

DATA : I_MAT TYPE TABLE OF T_MAT.


DATA : WA_MAT TYPE T_MAT.
DATA : IT_TYPE TYPE TRUXS_T_TEXT_DATA,
W_MODE TYPE C,
T_BDCDATA LIKE TABLE OF BDCDATA,
FS_BDCDATA LIKE LINE OF T_BDCDATA.

DATA:LV_BLDAT(10),
LV_BUDAT(10).
*INCLUDE BDCRECX1_S.

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.

START-OF-SELECTION.
TYPES:
FS_STRUCT(4096) TYPE C OCCURS 0 .
DATA:
W_STRUCT TYPE FS_STRUCT.
IF P_MODE = 'A' OR P_MODE = 'N' OR P_MODE = 'E' OR P_MODE = 'P'.

W_MODE = P_MODE.

ELSE.
*Error Message
MESSAGE 'PLEASE ENTER THE MODE A or N' TYPE 'E'.
ENDIF.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'


EXPORTING
* I_FIELD_SEPERATOR = 'X'
I_LINE_HEADER = 'X'
I_TAB_RAW_DATA = IT_TYPE
I_FILENAME = P_FILE
TABLES
I_TAB_CONVERTED_DATA = I_MAT "it_final
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.
LOOP AT I_MAT INTO WA_MAT .
REFRESH: t_bdcdata.
CLEAR fs_bdcdata.
PERFORM populate_bdcdata.
PERFORM insert_data.

ENDLOOP.
*perform open_group.

*perform close_group.

.
*&---------------------------------------------------------------------*
*& Form POPULATE_BDCDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM POPULATE_BDCDATA .

PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.

"****OK CODE =DUMMY***


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DUMMY'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'INVFO-XMWST'."system
"****OK CODE =DUMMY***

PERFORM BDC_FIELD USING 'INVFO-ACCNT'


wa_mat-accnt.
*
* CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
* EXPORTING
* input = wa_mat-bldat
* IMPORTING
* output = lv_bldat.
PERFORM BDC_FIELD USING 'INVFO-BLDAT'
wa_mat-bldat. "Invoice Date
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
WA_MAT-XBLNR."Reference

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = sy-datum
IMPORTING
output = lv_budat.
PERFORM BDC_FIELD USING 'INVFO-BUDAT'
lv_budat.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
WA_MAT-WRBTR.
PERFORM BDC_FIELD USING 'INVFO-WAERS'
'INR'.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'.

"****OK CODE =DUMMY***

PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DUMMY'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.

"****OK CODE =DUMMY***

PERFORM BDC_FIELD USING 'BDC_CURSOR'


'INVFO-MWSKZ'.
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
wa_mat-accnt.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
'TEST'."WA_MAT-XBLNR.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
'TEST'." wa_mat-wrbtr.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'. "NO
PERFORM BDC_FIELD USING 'INVFO-MWSKZ'
WA_MAT-MWSKZ. "'9B'."NO
PERFORM BDC_FIELD USING 'INVFO-GST_PART'
'2100810'."NO

"****OK CODE /00***

PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.

"****OK CODE /00***

PERFORM BDC_FIELD USING 'INVFO-ACCNT'


'123'. "wa_mat-accnt.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
WA_MAT-XBLNR.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
WA_MAT-WRBTR.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'.
PERFORM BDC_FIELD USING 'INVFO-MWSKZ'
'9B'.
PERFORM BDC_FIELD USING 'INVFO-BUPLA'
WA_MAT-BUPLA.
PERFORM BDC_FIELD USING 'INVFO-SECCO'
WA_MAT-SECCO.
PERFORM BDC_FIELD USING 'INVFO-GST_PART'
'2100810'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ACGL_ITEM-PRCTR(01)'.
PERFORM BDC_FIELD USING 'ACGL_ITEM-HKONT(01)'
WA_MAT-HKONT.
PERFORM BDC_FIELD USING 'ACGL_ITEM-WRBTR(01)'
WA_MAT-HKONT.
PERFORM BDC_FIELD USING 'ACGL_ITEM-KOSTL(01)'
'11002061'.
PERFORM BDC_FIELD USING 'ACGL_ITEM-PRCTR(01)'
'2061'.
"****OK CODE =WT***

PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WT'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
"****OK CODE =WT***

PERFORM BDC_FIELD USING 'INVFO-ACCNT'


'TEST'."|wa_mat-accnt.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
'TEST'.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
'TEST'."WA_MAT-WRBTR."'1,000.00'.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'.
PERFORM BDC_FIELD USING 'INVFO-MWSKZ'.
* WA_MAT-MWSKZ."'9B'.
PERFORM BDC_FIELD USING 'INVFO-BUPLA'
'2061'.
PERFORM BDC_FIELD USING 'INVFO-SECCO'
'2000'.
PERFORM BDC_FIELD USING 'INVFO-GST_PART'
'2100810'.
PERFORM BDC_FIELD USING 'INVFO-PLC_SUP'
'06'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ACGL_ITEM-HKONT(02)'.
"****OK CODE =BS***

PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BS'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ACWT_ITEM-WT_WITHCD(01)'.
"****OK CODE =BS***

"****OK CODE =BU***

PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.

"****OK CODE =BU***

* PERFORM BDC_TRANSACTION USING 'FB60'.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form INSERT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM INSERT_DATA .

DATA:
t_msg TYPE TABLE OF bdcmsgcoll, " Collecting Error messages
w_msg TYPE bdcmsgcoll,
w_msg1(51),
l_option type CTU_PARAMS.
**if p_mode = 'N'.
**
**************************************************88
clear L_OPTION.
l_option-defsize = 'X'.
*
l_option-dismode = p_mode."----->here pass as 'N' N means no screen (background)
*
l_option-updmode = 'A'.
*
l_option-NOBINPT = 'X'.
*
l_option-NOBIEND = 'X'.
*
l_option-RACOMMIT = 'X'.

*X_OPTIONS-DISMODE = 'E'.
*
*X_OPTIONS-UPDMODE = 'A'.
***
**X_OPTIONS-CATTMODE = 'X'.
****
*X_OPTIONS-DEFSIZE = 'X'.
****
*l_OPTIONS-RACOMMIT = 'X'.
***
*l_OPTION-NOBINPT = 'X'.
****
*X_OPTIONS-NOBIEND = 'X'.
***
call transaction 'FB60' using T_BDCDATA options from l_OPTION MESSAGES INTO t_msg.
*
*endif.
* CALL TRANSACTION 'FB60' USING t_bdcdata
* MODE 'N'"w_mode
* UPDATE 'A'
* MESSAGES INTO t_msg.

IF sy-subrc EQ 0.
* Uploaded into the database
WRITE :/ 'Documented Posted'."'DATA UPLOADED...' .
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.

ENDLOOP.
ENDIF.

ENDFORM.

*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR FS_bdcdata.
FS_bdcdata-program = program.
FS_bdcdata-dynpro = dynpro.
FS_bdcdata-dynbegin = 'X'.
APPEND FS_bdcdata TO t_bdcdata.
ENDFORM.

*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR FS_bdcdata.
FS_bdcdata-fnam = fnam.
FS_bdcdata-fval = fval.
APPEND FS_bdcdata TO t_bdcdata.
ENDFORM.

You might also like