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.