0% found this document useful (0 votes)
118 views6 pages

ZPRO - FB60 - BDC1 (New Version WORKING IN BGD)

This document contains code for processing data from an Excel file, populating BDC (Batch Data Communication) data, and posting invoices using transaction FB60 in SAP. It defines data structures like T_MAT to store invoice line item data from the Excel file. Upon selection, it converts the Excel file to internal tables and loops through each line, calling forms to populate the BDC data table with fields for transaction FB60. This BDC table is then passed to FB60 to post the invoices in batch mode without a screen. Any error messages are collected and formatted for display.

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)
118 views6 pages

ZPRO - FB60 - BDC1 (New Version WORKING IN BGD)

This document contains code for processing data from an Excel file, populating BDC (Batch Data Communication) data, and posting invoices using transaction FB60 in SAP. It defines data structures like T_MAT to store invoice line item data from the Excel file. Upon selection, it converts the Excel file to internal tables and loops through each line, calling forms to populate the BDC data table with fields for transaction FB60. This BDC table is then passed to FB60 to post the invoices in batch mode without a screen. Any error messages are collected and formatted for display.

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/ 6

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
WRBTR1(10),
PRCTR TYPE invfo-prctr,"Profit Centre
KOSTL TYPE acgl_item-kostl,"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.

* CALL FUNCTION 'F4_FILENAME'


** EXPORTING
** PROGRAM_NAME = SYST-CPROG
** DYNPRO_NUMBER = SYST-DYNNR
** FIELD_NAME = ' '
** IMPORTING
** FILE_NAME =
.
*&---------------------------------------------------------------------*
*& Form POPULATE_BDCDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM POPULATE_BDCDATA .

PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DUMMY'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'INVFO-XMWST'.
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
wa_mat-accnt."'2100810'.
PERFORM BDC_FIELD USING 'INVFO-BLDAT'
wa_mat-bldat.".'28.11.2022'.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
wa_mat-xblnr."'test'.
PERFORM BDC_FIELD USING 'INVFO-BUDAT'
'28.11.2022'.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
wa_mat-wrbtr."'1000'.
PERFORM BDC_FIELD USING 'INVFO-WAERS'
'INR'.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DUMMY'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'INVFO-MWSKZ'.
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
wa_mat-accnt."'2100810'.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
'TEST'.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
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-GST_PART'
'2100810'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
wa_mat-accnt."'2100810'.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
'TEST'.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
wa_mat-wrbtr."'1,000.00'.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'.
PERFORM BDC_FIELD USING 'INVFO-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 'BDC_CURSOR'
'ACGL_ITEM-PRCTR(01)'.
PERFORM BDC_FIELD USING 'ACGL_ITEM-HKONT(01)'
WA_MAT-HKONT."'5081002'.
PERFORM BDC_FIELD USING 'ACGL_ITEM-WRBTR(01)'
wa_mat-wrbtr."'1000'.
PERFORM BDC_FIELD USING 'ACGL_ITEM-KOSTL(01)'
WA_MAT-KOSTL."'11002061'.
PERFORM BDC_FIELD USING 'ACGL_ITEM-PRCTR(01)'
WA_MAT-PRCTR."'2061'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WT'.
PERFORM BDC_FIELD USING 'RF05A-BUSCS'
'R'.
PERFORM BDC_FIELD USING 'INVFO-ACCNT'
wa_mat-accnt."'2100810'.
PERFORM BDC_FIELD USING 'INVFO-XBLNR'
'TEST'.
PERFORM BDC_FIELD USING 'INVFO-WRBTR'
wa_mat-wrbtr."'1,000.00'.
PERFORM BDC_FIELD USING 'INVFO-XMWST'
'X'.
PERFORM BDC_FIELD USING 'INVFO-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)'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BS'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ACWT_ITEM-WT_WITHCD(01)'.
PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=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.
data: lv_str type I.

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