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-FB01

Former Member
0 Likes
2,544

bdc program for fb01 transaction in sap

5 REPLIES 5
Read only

Former Member
0 Likes
1,067

Hi.

Go to SHDB->Create New Recording->Give Transaction FB-01 and Record the inputs.

Later Save it and Transfer it to the program.

Your customization may be different so you have to record your own.

Reward if useful!

Read only

Former Member
0 Likes
1,067
Read only

Former Member
0 Likes
1,067

Below is the sample program

REPORT ZACRFII_EXCEL2SAP_UPLOAD.

************************************************************************

  • GLOBAL CONSTANTS

************************************************************************

DATA : GC_BDCSESSION(14) TYPE C VALUE ' ZFITRANBDC '.

************************************************************************

  • GLOBAL VARIABLES

************************************************************************

DATA : GV_MODE TYPE C,

GV_INDEX TYPE I,

GV_TO_UPLOAD TYPE I,

GV_COUNT_UNIQSNO TYPE I ,

GV_COUNT_SUCCESS TYPE I,

GV_COUNT_WARNINGS TYPE I,

GV_COUNT_ERRORS TYPE I,

GV_COUNT_INFO TYPE I,

GV_FLAG TYPE I,

GV_FLAGEND TYPE I,

GV_WARNING_FLAG TYPE C,

GV_REPL_TEXT(15) TYPE C,

GV_COUNT TYPE I,

GV_SUCS TYPE I,

GV_SNO TYPE I,

GV_CONVTDDATE TYPE SY-DATUM,

GV_POSTINGKEY TYPE I,

GV_POSTINGKEYCHR(2),

GV_BDCSCREEN1(12) TYPE C,

GV_BDCSCREEN2(12) TYPE C,

GV_SCREEN1(12) TYPE C,

GV_SCREEN2(12) TYPE C,

GV_SCREEN3(12) TYPE C,

GV_SCREEN4(12) TYPE C,

GV_SCREEN5(12) TYPE C,

GV_BDCSCREENNO1 TYPE I,

  • Start of Change - Ritesh Shrivastava - 20/03/2007

GV_BDCSCREENNO2 TYPE I,

  • End of Change - Ritesh Shrivastava - 20/03/2007

GV_SCREENNO1 TYPE I,

GV_SCREENNO2 TYPE I,

GV_SCREENNO3 TYPE I,

GV_SCREENNO4 TYPE I,

GV_SCREENNO5 TYPE I,

GV_DEBCRED TYPE C,

GV_DATE(10),

GV_TEMPREFNO LIKE BKPF-XBLNR,

GV_TEMPITEMTXT LIKE BSEG-SGTXT,

GV_TEMPDOCHDRTXT LIKE BKPF-BKTXT,

  • Start of Change - Ritesh Shrivastava - 15/03/2007

  • GV_AMT(16)." Commented out to add Exchg. Rate

GV_AMT(16),

GV_EXCHG(16).

  • End of Change - Ritesh Shrivastava - 15/03/2007

************************************************************************

  • GLOBAL INTERNAL TABLES

************************************************************************

DATA : GT_EXCEL LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR HOLDING RECORDS TO BE UPLOAD.

DATA : BEGIN OF GT_DATA OCCURS 0,

SNO TYPE I, "SERIAL NUMBER

TYPE LIKE BKPF-BLART, "DOCUMENT TYPE

CURRENCY LIKE BKPF-WAERS, "ACCOUNT GROUP

POSTINGDATE LIKE BKPF-BUDAT, "POSTING DATE

DOCUMENTDATE LIKE BKPF-BLDAT, "DOCUMENT DATE

PERIOD TYPE I, "PERIOD OF ENTRY

EXCHGRATE LIKE BKPF-KURSF, "EXCHANGE RATE

REFNO LIKE BKPF-XBLNR, "REFERENCE NUMBER

DOCHDRTXT LIKE BKPF-BKTXT, "DOCUMENT HEADER TEXT

DEBCRED LIKE RF05A-NEWBS, "DEBIT/CREDIT

GLACCNT LIKE RF05A-NEWKO, "GL ACCOUNT

ASSET LIKE RF05A-NEWKO, "ASSET

VENDOR LIKE RF05A-NEWKO, "VENDOR

CUSTOMER LIKE RF05A-NEWKO, "CUSTOMER

COSTCNTR LIKE BSEG-KOSTL, "COST CENTER

LOB LIKE BSEG-PRCTR, "LINE OF BUSINESS

TOB LIKE BSEG-ZZTYB, "TYPE OF BUSINESS

SOB LIKE BSEG-SEGMENT, "SOURCE OF BUSINESS

TOF LIKE BSEG-GSBER, "TYPE OF FUNDS

AMTDOCCURR LIKE BSEG-WRBTR, "AMOUNT IN DOCUMENT CURRENCY

AMTLOCCURR LIKE BSEG-DMBTR, "AMOUNT IN LOCAL CURRENCY

ITEMTXT LIKE BSEG-SGTXT, "ITEM TEXT

DESC(50), "DESCCRIPTION

AMTLOCCURR2 LIKE BSEG-DMBTR, "AMOUNT IN LOCAL CURRENCY2

  • Assignment field added

ASSIGNMNTNO LIKE BSEG-ZUONR, "ASSIGNMENT NUMBER

END OF GT_DATA.

  • INTERNAL TABLE FOR BDCDATA.

DATA : BEGIN OF GT_BDCDATA OCCURS 0.

INCLUDE STRUCTURE BDCDATA.

DATA : END OF GT_BDCDATA.

  • INTERNAL TABLE FOR MOVING RECORDING INFO FINALLY TO BDCDATA.

DATA : BEGIN OF GT_FINBDCDATA OCCURS 0.

INCLUDE STRUCTURE BDCDATA.

DATA : END OF GT_FINBDCDATA.

  • INTERNAL TABLE FOR HOLDING ALL TYPE OF MESSAGES.

DATA : BEGIN OF GT_MSG OCCURS 0.

INCLUDE STRUCTURE BDCMSGCOLL.

DATA : END OF GT_MSG.

  • INTERNAL TABLE FOR HOLDING ERRORS & WARNING MESSAGES

DATA : BEGIN OF GT_ERRORS OCCURS 0,

SNO TYPE I,

MSGNO LIKE SY-MSGNO,

MSGTY LIKE SY-MSGTY,

ERR_TEXT LIKE T100-TEXT,

END OF GT_ERRORS.

----


  • Selection Screen *

----


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

PARAMETER : P_FNAME LIKE RLGRAP-FILENAME OBLIGATORY. " Input excel file name with path selected

PARAMETER : P_LINENO TYPE I OBLIGATORY DEFAULT 2 . " Input excel file name starting row for data

PARAMETER : P_BUKRS LIKE BKPF-BUKRS OBLIGATORY. " Input Company Code

PARAMETER : P_XLS TYPE I OBLIGATORY DEFAULT 10000. " Input excel file name starting row for data

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-020.

PARAMETER : P_MODE1 RADIOBUTTON GROUP RBMD. " Foreground Processing with screen display

PARAMETER : P_MODE2 RADIOBUTTON GROUP RBMD. " Foreground Processing with screen display of errors only

PARAMETER : P_MODE3 RADIOBUTTON GROUP RBMD DEFAULT 'X'. " " Background Processing with no screen display

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-030.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS p_batch RADIOBUTTON GROUP rb_c. "Create session

SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD p_batch.

SELECTION-SCREEN POSITION 45.

PARAMETERS p_ctu RADIOBUTTON GROUP rb_c. "call transaction

SELECTION-SCREEN COMMENT 48(25) text-s02 FOR FIELD p_ctu.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B3.

----


  • Selection Screen events *

----


  • Get the file name and File Path

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

STATIC = 'X'

CHANGING

FILE_NAME = P_FNAME.

----


  • Start of selection *

----


START-OF-SELECTION.

  • Select the transaction run mode

PERFORM F_SELECT_MODE.

  • Upload the data into table GT_DATA

PERFORM F_UPLOAD_DATA.

  • Append the data of GT_DATA into the BDC table GT_bdcdata

PERFORM F_PERFORM_BDC.

----


  • End of Selection *

----


END-OF-SELECTION.

IF GV_WARNING_FLAG = 'T'.

PERFORM F_DOWNLOAD_ERRORS TABLES GT_ERRORS.

ENDIF.

PERFORM F_WRITE_SUMMARY_REPORT.

----


  • Top of Page *

----


TOP-OF-PAGE.

PERFORM F_WRITE_HEADER.

----


  • START NEW SCREEN *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR GT_bdcdata.

GT_bdcdata-PROGRAM = PROGRAM.

GT_bdcdata-DYNPRO = DYNPRO.

GT_bdcdata-DYNBEGIN = 'X'.

APPEND GT_bdcdata.

ENDFORM. "BDC_DYNPRO

----


  • INSERT FIELD *

----


FORM BDC_FIELD USING FNAM FVAL.

CLEAR GT_bdcdata.

GT_bdcdata-FNAM = FNAM.

GT_bdcdata-FVAL = FVAL.

APPEND GT_bdcdata.

ENDFORM. "BDC_FIELD

&----


*& FORM F_UPLOAD_DATA

&----


  • TEXT

----


  • -->P_ITAB_SKA1 TEXT

----


FORM F_UPLOAD_DATA.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FNAME

I_BEGIN_COL = 1

I_BEGIN_ROW = P_LINENO

I_END_COL = 24

I_END_ROW = P_XLS

TABLES

INTERN = GT_EXCEL

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

GT_ERRORS-MSGNO = SY-MSGNO.

GT_ERRORS-MSGTY = SY-MSGTY.

GT_ERRORS-ERR_TEXT = 'Problem encountered in transaction data upload from Excel Spreadsheet ' .

APPEND GT_ERRORS.

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

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

  • ENDIF.

ELSE.

LOOP AT GT_EXCEL.

CASE GT_EXCEL-COL.

WHEN 1.

GT_DATA-SNO = GT_EXCEL-VALUE.

WHEN 2.

GT_DATA-TYPE = GT_EXCEL-VALUE.

WHEN 3.

GT_DATA-CURRENCY = GT_EXCEL-VALUE.

WHEN 4.

  • Converting Valid-From date from MM/DD/YYYY format to YYYYMMDD format

CALL FUNCTION 'RP_FORMATING_DATE'

EXPORTING

DATE_I = GT_EXCEL-VALUE

BIRTH_DATE = 'X'

IMPORTING

DATE_O = GV_CONVTDDATE

EXCEPTIONS

DATE_INVALID = 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.

GT_DATA-POSTINGDATE = GV_CONVTDDATE.

GT_DATA-DOCUMENTDATE = GT_DATA-POSTINGDATE.

WHEN 5.

GT_DATA-PERIOD = GT_EXCEL-VALUE.

WHEN 6.

GT_DATA-EXCHGRATE = GT_EXCEL-VALUE.

WHEN 7.

GT_DATA-REFNO = GT_EXCEL-VALUE.

WHEN 8.

GT_DATA-DOCHDRTXT = GT_EXCEL-VALUE.

WHEN 9.

GT_DATA-DEBCRED = GT_EXCEL-VALUE.

WHEN 10.

GT_DATA-GLACCNT = GT_EXCEL-VALUE.

WHEN 11.

GT_DATA-ASSET = GT_EXCEL-VALUE.

WHEN 12.

GT_DATA-VENDOR = GT_EXCEL-VALUE.

WHEN 13.

GT_DATA-CUSTOMER = GT_EXCEL-VALUE.

WHEN 14.

GT_DATA-COSTCNTR = GT_EXCEL-VALUE.

WHEN 15.

GT_DATA-LOB = GT_EXCEL-VALUE.

WHEN 16.

GT_DATA-TOB = GT_EXCEL-VALUE.

WHEN 17.

GT_DATA-SOB = GT_EXCEL-VALUE.

WHEN 18.

GT_DATA-TOF = GT_EXCEL-VALUE.

WHEN 19.

GT_DATA-AMTDOCCURR = GT_EXCEL-VALUE.

WHEN 20.

GT_DATA-AMTLOCCURR = GT_EXCEL-VALUE.

WHEN 21.

GT_DATA-ITEMTXT = GT_EXCEL-VALUE.

WHEN 22.

GT_DATA-DESC = GT_EXCEL-VALUE.

WHEN 23.

GT_DATA-AMTLOCCURR2 = GT_EXCEL-VALUE.

  • Assignment field added

WHEN 24.

GT_DATA-ASSIGNMNTNO = GT_EXCEL-VALUE.

ENDCASE.

AT END OF ROW.

IF GT_DATA-SNO > '0'.

APPEND GT_DATA.

CLEAR GT_DATA.

ENDIF.

ENDAT.

ENDLOOP.

ENDIF.

ENDFORM. " F_UPLOAD_DATA

&----


*& FORM F_PERFORM_BDC

&----


  • TEXT

----


  • --> P1 TEXT

  • <-- P2 TEXT

----


FORM F_PERFORM_BDC.

  • Batch Data Input processing for executing Financial Document posting transaction

CLEAR: GT_DATA.

  • SORT GT_DATA BY SNO DESCENDING.

CLEAR : GV_COUNT_UNIQSNO,GV_COUNT_SUCCESS.

GV_COUNT_UNIQSNO = 0.

GV_COUNT_SUCCESS = 0.

  • Start of Change - Ritesh Shrivastava - 16/03/2007

If p_batch = 'X'.

Perform open_group.

Endif.

  • End of Change - Ritesh Shrivastava - 16/03/2007

Loop at GT_DATA.

  • Processing logic to obtain posting key value starts here

  • Note: Posting key value cannot exceed two numeric digits.

gv_debcred = GT_DATA-DEBCRED.

Perform obtain_postingkey_value using gv_debcred

changing gv_postingkey.

  • Processing logic to obtain posting key value ends here

  • Note: Posting key value cannot exceed two numeric digits.

  • Processing logic for processing header data

CLEAR: GV_FLAG.

AT NEW SNO.

GV_FLAG = '1'.

GV_COUNT_UNIQSNO = GV_COUNT_UNIQSNO + 1.

perform bdc_dynpro using 'SAPMF05A' '0100'.

  • Start of Change - Ritesh Shrivastava - 23/03/2007

IF GV_POSTINGKEY = '70' OR GV_POSTINGKEY = '75'.

Perform bdc_field using 'BDC_CURSOR'

'RF05A-NEWBW'.

Else.

  • End of Change - Ritesh Shrivastava - 23/03/2007

Perform bdc_field using 'BDC_CURSOR'

'RF05A-NEWKO'.

  • Start of Change - Ritesh Shrivastava - 23/03/2007

Endif.

  • End of Change - Ritesh Shrivastava - 23/03/2007

perform bdc_field using 'BDC_OKCODE'

'/00'.

ENDAT.

CLEAR : GV_FLAGEND.

AT END OF SNO.

GV_FLAGEND = '1'.

ENDAT.

If GV_FLAG = '1'.

perform date_convert using GT_DATA-DOCUMENTDATE

changing gv_date.

perform bdc_field using 'BKPF-BLDAT'

gv_date.

perform bdc_field using 'BKPF-BLART'

GT_DATA-TYPE.

perform bdc_field using 'BKPF-BUKRS'

P_BUKRS.

perform date_convert using GT_DATA-POSTINGDATE

changing gv_date.

perform bdc_field using 'BKPF-BUDAT'

gv_date.

  • perform bdc_field using 'BKPF-MONAT'

  • '2'.

perform bdc_field using 'BKPF-WAERS'

GT_DATA-CURRENCY.

  • Start of Change - Ritesh Shrivastava - 15/03/2007

  • perform bdc_field using 'BKPF-KURSF' " Commented out

  • GT_DATA-EXCHGRATE.

perform amt_convert using GT_DATA-EXCHGRATE

changing GV_EXCHG.

perform bdc_field using 'BKPF-KURSF'

GV_EXCHG.

  • End of Change - Ritesh Shrivastava - 15/03/2007

perform bdc_field using 'BKPF-XBLNR'

GT_DATA-REFNO.

perform bdc_field using 'BKPF-BKTXT'

GT_DATA-DOCHDRTXT.

  • perform bdc_field using 'FS006-DOCID'

  • '*'.

Endif.

  • Based on posting key derived , the corresponding BDC screens are processed

Perform screen_determination using gv_postingkey.

  • Batch Data Input continued for executing Financial Document posting transaction with

  • Posting key, which was derived earlier using the business rules, used for screen input

  • in the next statement

Perform screenprocessing_lineitem using gv_postingkey.

  • Batch Data Input processing completed for one line-item for Financial Document posting

  • Transaction execution

IF GV_FLAGEND NE '1'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno2.

perform bdc_field using 'BDC_CURSOR'

'RF05A-NEWKO'.

  • Start of Change - Ritesh Shrivastava - 23/03/2007

IF GV_POSTINGKEY = '70' OR GV_POSTINGKEY = '75'.

Perform bdc_field using 'BDC_CURSOR'

'100'.

Endif.

  • End of Change - Ritesh Shrivastava - 23/03/2007

perform bdc_field using 'BDC_OKCODE'

'/00'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

ELSE.

  • Sccreen end logic , based on posting key derived ,for General ledger line item

If GV_POSTINGKEY = '40' OR GV_POSTINGKEY = '50'.

perform bdc_dynpro using 'SAPMF05A' '0330'.

perform bdc_field using 'BDC_CURSOR'

'BSEG-CCBTC'.

perform bdc_field using 'BDC_OKCODE'

'=AB'.

ENDIF.

  • Sccreen end logic , based on posting key derived ,for Customer line item

If GV_POSTINGKEY = '01' OR GV_POSTINGKEY = '15'.

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno2.

perform bdc_field using 'BDC_OKCODE'

'/ENTE'.

ENDIF.

  • Screen end logic , based on posting key derived ,for Vendor line item

If GV_POSTINGKEY = '25' OR GV_POSTINGKEY = '31'.

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno2.

perform bdc_field using 'BDC_OKCODE'

'/ENTE'.

ENDIF.

  • Sccreen end logic , for finally saving and creating the FI Document

perform bdc_dynpro using 'SAPMF05A' '0700'.

perform bdc_field using 'BDC_CURSOR'

'RF05A-NEWBS'.

perform bdc_field using 'BDC_OKCODE'

'=BS'.

perform bdc_field using 'BKPF-XBLNR'

GT_DATA-REFNO.

perform bdc_field using 'BKPF-BKTXT'

GT_DATA-DOCHDRTXT.

perform bdc_dynpro using 'SAPMF05A' '0700'.

perform bdc_field using 'BDC_CURSOR'

'RF05A-NEWBS'.

perform bdc_field using 'BDC_OKCODE'

'=BU'.

perform bdc_field using 'BKPF-XBLNR'

GT_DATA-REFNO.

perform bdc_field using 'BKPF-BKTXT'

GT_DATA-DOCHDRTXT.

CLEAR : GT_BDCDATA.

GT_FINBDCDATA[] = GT_BDCDATA[].

  • Start of Change - Ritesh Shrivastava - 16/03/2007

If p_batch = 'X'.

Perform bdc_insert_group USING 'FB01'.

Else.

  • Call transaction processing to input data

Perform CALL_TRANSACTION USING ' FB01'.

Endif.

  • End of Change - Ritesh Shrivastava - 16/03/2007

  • Refreshing Batch input data for processing the next run of the document posting transaction

  • in order to create a new FI Document

REFRESH : GT_BDCDATA.

ENDIF.

GV_COUNT_SUCCESS = GV_COUNT_SUCCESS + 1.

Endloop.

  • Start of Change - Ritesh Shrivastava - 16/03/2007

If p_batch = 'X'.

Perform close_group.

Endif.

  • End of Change - Ritesh Shrivastava - 16/03/2007

ENDFORM. " F_PERFORM_BDC

*&----


**& FORM F_DOWNLOAD_ERRORS

*&----


    • TEXT

*----


    • -->P_GT_ERRORS TEXT

*----


FORM F_DOWNLOAD_ERRORS TABLES P_GT_ERRORS STRUCTURE GT_ERRORS .

CALL FUNCTION 'DOWNLOAD'

EXPORTING

FILENAME = 'C:\ERRORLOG_FB01.TXT'

FILETYPE = 'DAT'

TABLES

DATA_TAB = GT_ERRORS

EXCEPTIONS

INVALID_FILESIZE = 1

INVALID_TABLE_WIDTH = 2

INVALID_TYPE = 3

NO_BATCH = 4

UNKNOWN_ERROR = 5

GUI_REFUSE_FILETRANSFER = 6

CUSTOMER_ERROR = 7

OTHERS = 8.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDFORM. " F_DOWNLOAD_ERRORS

&----


*& FORM F_WRITE_SUMMARY_REPORT

&----


  • TEXT

----


  • --> P1 TEXT

  • <-- P2 TEXT

----


FORM F_WRITE_SUMMARY_REPORT.

DESCRIBE TABLE GT_DATA LINES GV_TO_UPLOAD.

WRITE :/'Total Number of Records to be Uploaded :', GV_TO_UPLOAD.

WRITE :/'Number of Records successfully loaded :', GV_COUNT_SUCCESS.

WRITE :/'Number of Error Records :', GV_COUNT_ERRORS.

WRITE :/'Number of Records with Warnings :', GV_COUNT_WARNINGS.

ENDFORM. " F_WRITE_SUMMARY_REPORT

&----


*& FORM F_WRITE_HEADER

&----


  • TEXT

----


  • --> P1 TEXT

  • <-- P2 TEXT

----


FORM F_WRITE_HEADER.

WRITE /'ASIA CAPITAL REINSURANCE PTE.LTD.' CENTERED.

SKIP 1.

WRITE :/'DATE:', SY-DATUM,'TIME:', SY-UZEIT.

NEW-LINE.

ULINE.

ENDFORM. " F_WRITE_HEADER

&----


*& FORM F_SELECT_MODE

&----


  • TEXT

----


  • --> P1 TEXT

  • <-- P2 TEXT

----


FORM F_SELECT_MODE.

IF P_MODE1 = 'X'.

GV_MODE = 'A'. "DISPLAY ALL SCREENS

ENDIF.

IF P_MODE2 = 'X'.

GV_MODE = 'E'. "DISPLAY SCREEN, IF ERROR

ENDIF.

IF P_MODE3 = 'X'.

GV_MODE = 'N'. "BACKGROUND

ENDIF.

ENDFORM. " F_SELECT_MODE

&----


*& Form open_group

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM open_group .

IF p_mode1 = 'X' OR p_mode2 = 'X' OR P_MODE3 = 'X'.

  • SKIP.

  • WRITE: /(20) 'Create group'(I01), .GROUP.

  • SKIP.

  • Open Batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'ZFITRANBDC'

USER = sy-uname.

  • KEEP = KEEP.

  • HOLDDATE = HOLDDATE.

If sy-subrc <> 0.

GT_ERRORS-ERR_TEXT = 'Problem encountered in BDC_OPEN_GROUP' .

APPEND GT_ERRORS.

ENDIF.

ENDIF.

ENDFORM. " open_group

&----


*& Form close_group

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM close_group .

IF P_mode1 = 'X' OR P_mode2 = 'X' OR P_mode3 = 'X' .

  • Close Batch Input Group

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

If sy-subrc <> 0.

GT_ERRORS-ERR_TEXT = 'Problem encountered in BDC_CLOSE_GROUP' .

APPEND GT_ERRORS.

ELSE.

SKIP 1.

WRITE 😕 'Batch Input Session',GC_BDCSESSION,'created for Transaction Data Upload'.

SKIP 1.

NEW-LINE.

ENDIF.

ENDIF.

ENDFORM. " close_group

&----


*& Form obtain_postingkey_value

&----


  • text

----


  • -->P_GV_DEBCRED text

----


FORM obtain_postingkey_value USING P_GV_DEBCRED

CHANGING P_GV_POSTINGKEY.

  • Processing logic to obtain posting key value starts here

  • Note: Posting key value cannot exceed two numeric digits.

  • Logic for Scenarios where Indicator field is a Debit 'D'

If P_GV_DEBCRED = 'D'.

If GT_DATA-GLACCNT IS NOT INITIAL.

IF GT_DATA-VENDOR IS INITIAL.

IF GT_DATA-CUSTOMER IS INITIAL.

IF GT_DATA-ASSET IS INITIAL.

P_GV_POSTINGKEY = '40'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

If GT_DATA-GLACCNT IS INITIAL.

IF GT_DATA-VENDOR IS NOT INITIAL.

IF GT_DATA-CUSTOMER IS INITIAL.

IF GT_DATA-ASSET IS INITIAL.

P_GV_POSTINGKEY = '25'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

If GT_DATA-GLACCNT IS INITIAL.

IF GT_DATA-VENDOR IS INITIAL.

IF GT_DATA-CUSTOMER IS NOT INITIAL.

IF GT_DATA-ASSET IS INITIAL.

P_GV_POSTINGKEY = '01'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

If GT_DATA-GLACCNT IS INITIAL.

IF GT_DATA-VENDOR IS INITIAL.

IF GT_DATA-CUSTOMER IS INITIAL.

IF GT_DATA-ASSET IS NOT INITIAL.

P_GV_POSTINGKEY = '70'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

  • Logic for Scenarios where Indicator field is a Credit 'C'

ELSEIF P_GV_DEBCRED = 'C'.

If GT_DATA-GLACCNT IS NOT INITIAL.

IF GT_DATA-VENDOR IS INITIAL.

IF GT_DATA-CUSTOMER IS INITIAL.

IF GT_DATA-ASSET IS INITIAL.

P_GV_POSTINGKEY = '50'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

If GT_DATA-GLACCNT IS INITIAL.

IF GT_DATA-VENDOR IS NOT INITIAL.

IF GT_DATA-CUSTOMER IS INITIAL.

IF GT_DATA-ASSET IS INITIAL.

P_GV_POSTINGKEY = '31'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

If GT_DATA-GLACCNT IS INITIAL.

IF GT_DATA-VENDOR IS INITIAL.

IF GT_DATA-CUSTOMER IS NOT INITIAL.

IF GT_DATA-ASSET IS INITIAL.

P_GV_POSTINGKEY = '15'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

If GT_DATA-GLACCNT IS INITIAL.

IF GT_DATA-VENDOR IS INITIAL.

IF GT_DATA-CUSTOMER IS INITIAL.

IF GT_DATA-ASSET IS NOT INITIAL.

P_GV_POSTINGKEY = '75'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " obtain_postingkey_value

&----


*& Form date_convert

&----


  • text

----


  • -->P_GT_DATE text

  • <--P_GV_DATE text

----


FORM date_convert USING P_GT_DATE

CHANGING P_GV_DATE.

DATA : lv_dd(2),

lv_mm(2),

lv_yyyy(4).

lv_dd = P_GT_DATE+6(2).

lv_mm = P_GT_DATE+4(2).

lv_yyyy = P_GT_DATE+0(4).

CONCATENATE lv_dd lv_mm lv_yyyy INTO gv_date SEPARATED BY '.'.

ENDFORM. " date_convert

&----


*& Form amt_convert

&----


  • text

----


  • -->P_GT_DATA_AMTDOCCUR text

  • <--P_GV_AMT text

----


FORM amt_convert USING P_GT_DATA_AMTDOCCURR

CHANGING P_GV_AMT.

WRITE P_GT_DATA_AMTDOCCURR TO P_GV_AMT.

ENDFORM. " amt_convert

&----


*& Form screen_determination

&----


  • text

----


  • -->P_GV_POSTINGKEY text

----


FORM screen_determination USING P_GV_POSTINGKEY.

CASE P_GV_POSTINGKEY.

WHEN '40'.

gv_bdcscreenno1 = '0300'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0330'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '50'.

gv_bdcscreenno1 = '0300'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0330'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '25'.

gv_bdcscreenno1 = '0302'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0332'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '31'.

gv_bdcscreenno1 = '0302'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0332'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '01'.

gv_bdcscreenno1 = '0301'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0331'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '15'.

gv_bdcscreenno1 = '0301'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0331'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '70'.

gv_bdcscreenno1 = '0305'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0305'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

WHEN '75'.

gv_bdcscreenno1 = '0305'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

gv_bdcscreenno2 = '0305'.

  • End of Change - Ritesh Shrivastava - 20/03/2007

ENDCASE.

ENDFORM. " screen_determination

&----


*& Form screenprocessing_lineitem

&----


  • text

----


  • -->P_GV_POSTINGKEY text

----


FORM screenprocessing_lineitem USING P_GV_POSTINGKEY.

WRITE P_GV_POSTINGKEY TO GV_POSTINGKEYCHR.

  • Start of Change - Ritesh Shrivastava - 15/03/2007

  • Adding leading zeroes to Profit Center , which has field length of 10

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = GV_POSTINGKEYCHR

IMPORTING

OUTPUT = GV_POSTINGKEYCHR.

perform bdc_field using 'RF05A-NEWBS'

GV_POSTINGKEYCHR.

  • End of Change - Ritesh Shrivastava - 15/03/2007

  • Start of Change - Ritesh Shrivastava - 20/03/2007

  • Changes to ensure that the vendor/customer/Asset accounts are picked up

  • instead of GL Account for correct posting key

  • perform bdc_field using 'RF05A-NEWKO' " Commented out

  • GT_DATA-GLACCNT.

  • End of Change - Ritesh Shrivastava - 20/03/2007

CASE GV_POSTINGKEYCHR.

  • Screen Processing logic for General Ledger data

WHEN '40' OR '50'.

perform bdc_field using 'RF05A-NEWKO'

GT_DATA-GLACCNT.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno1.

perform bdc_field using 'BDC_CURSOR'

'BSEG-ZUONR'.

perform bdc_field using 'BDC_OKCODE'

'=ZK'.

IF GT_DATA-AMTDOCCURR IS NOT INITIAL.

perform amt_convert using GT_DATA-AMTDOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-WRBTR'

GV_AMT.

  • Start of Change - Ritesh Shrivastava - 28/03/2007

  • Include code for updating the local currency amount instead of calculating it in SAP

perform amt_convert using GT_DATA-AMTLOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-DMBTR'

GV_AMT.

  • End of Change - Ritesh Shrivastava - 28/03/2007

  • perform bdc_field using 'BSEG-MWSKZ'

  • ''.

perform bdc_field using 'BKPF-XMWST'

''.

perform bdc_field using 'BSEG-ZUONR'

GT_DATA-ASSIGNMNTNO.

perform bdc_field using 'BSEG-SGTXT'

GT_DATA-ITEMTXT.

  • This screen logic is valid when GL Account does not have null value

perform bdc_field using 'DKACB-FMORE'

'X'.

perform bdc_dynpro using 'SAPLKACB' '0002'.

perform bdc_field using 'BDC_CURSOR'

'COBL-KOSTL'.

perform bdc_field using 'BDC_OKCODE'

'=ENTE'.

perform bdc_field using 'COBL-GSBER'

GT_DATA-TOF.

perform bdc_field using 'COBL-KOSTL'

GT_DATA-COSTCNTR.

perform bdc_field using 'COBL-PRCTR'

GT_DATA-LOB.

perform bdc_field using 'COBL-SEGMENT'

GT_DATA-SOB.

perform bdc_field using 'COBL-ZZTYB'

GT_DATA-TOB.

Endif.

  • End of Change - Ritesh Shrivastava - 20/03/2007

  • Screen Processing logic for Vendor Master data

WHEN '25' OR '31'.

perform bdc_field using 'RF05A-NEWKO'

GT_DATA-VENDOR.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno1.

perform bdc_field using 'BDC_CURSOR'

'BSEG-SGTXT'.

perform bdc_field using 'BDC_OKCODE'

'=ZK'.

IF GT_DATA-AMTDOCCURR IS NOT INITIAL.

perform amt_convert using GT_DATA-AMTDOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-WRBTR'

GV_AMT.

  • Start of Change - Ritesh Shrivastava - 28/03/2007

  • Include code for updating the local currency amount instead of calculating it in SAP

perform amt_convert using GT_DATA-AMTLOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-DMBTR'

GV_AMT.

  • End of Change - Ritesh Shrivastava - 28/03/2007

perform bdc_field using 'BKPF-XMWST'

''.

  • perform bdc_field using 'BSEG-MWSKZ'

  • ''.

perform bdc_field using 'BSEG-GSBER'

GT_DATA-TOF.

perform bdc_field using 'DKACB-FMORE'

'X'.

perform bdc_field using 'BDC_CURSOR'

'COBL-PARGB'.

perform bdc_field using 'BDC_OKCODE'

'=ZK'.

  • perform bdc_field using 'BSEG-ZFBDT'

  • '22.02.2007'.

  • perform bdc_field using 'BSEG-ZUONR'

  • GT_DATA-ASSIGNMNTNO.

  • perform bdc_field using 'BSEG-SGTXT'

  • GT_DATA-ITEMTXT.

Endif.

  • End of Change - Ritesh Shrivastava - 20/03/2007

  • Screen Processing logic for Customer Master data

WHEN '01' OR '15'.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

perform bdc_field using 'RF05A-NEWKO'

GT_DATA-CUSTOMER.

  • perform bdc_field using 'DKACB-FMORE'

  • ' '.

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno1.

perform bdc_field using 'BDC_CURSOR'

'BSEG-SGTXT'.

perform bdc_field using 'BDC_OKCODE'

'=ZK'.

IF GT_DATA-AMTDOCCURR IS NOT INITIAL.

perform amt_convert using GT_DATA-AMTDOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-WRBTR'

GV_AMT.

  • Start of Change - Ritesh Shrivastava - 28/03/2007

  • Include code for updating the local currency amount instead of calculating it in SAP

perform amt_convert using GT_DATA-AMTLOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-DMBTR'

GV_AMT.

  • End of Change - Ritesh Shrivastava - 28/03/2007

perform bdc_field using 'BKPF-XMWST'

''.

  • perform bdc_field using 'BSEG-MWSKZ'

  • ''.

perform bdc_field using 'BSEG-GSBER'

GT_DATA-TOF.

perform bdc_field using 'DKACB-FMORE'

'X'.

perform bdc_field using 'BDC_CURSOR'

'COBL-PARGB'.

perform bdc_field using 'BDC_OKCODE'

'=ZK'.

  • perform bdc_field using 'BSEG-ZFBDT'

  • '22.02.2007'.

  • perform bdc_field using 'BSEG-ZUONR'

  • GT_DATA-ASSIGNMNTNO.

  • perform bdc_field using 'BSEG-SGTXT'

  • GT_DATA-ITEMTXT.

Endif.

  • End of Change - Ritesh Shrivastava - 20/03/2007

  • Screen Processing logic for Asset Master data

WHEN '70' OR '75'.

perform bdc_field using 'RF05A-NEWKO'

GT_DATA-ASSET.

  • Start of Change - Ritesh Shrivastava - 20/03/2007

  • Hardcoding the value of Transaction Type for Asset as 100

perform bdc_field using 'RF05A-NEWBW'

'100'.

perform bdc_dynpro using 'SAPMF05A' gv_bdcscreenno1.

perform bdc_field using 'BDC_CURSOR'

'BSEG-WRBTR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

IF GT_DATA-AMTDOCCURR IS NOT INITIAL.

perform amt_convert using GT_DATA-AMTDOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-WRBTR'

GV_AMT.

  • Start of Change - Ritesh Shrivastava - 28/03/2007

  • Include code for updating the local currency amount instead of calculating it in SAP

perform amt_convert using GT_DATA-AMTLOCCURR

changing GV_AMT.

perform bdc_field using 'BSEG-DMBTR'

GV_AMT.

  • End of Change - Ritesh Shrivastava - 28/03/2007

perform bdc_field using 'DKACB-FMORE'

'X'.

perform bdc_field using 'BDC_CURSOR'

'COBL-PARGB'.

perform bdc_field using 'BDC_CURSOR'

GT_DATA-TOF.

perform bdc_field using 'BDC_OKCODE'

'/00'.

Endif.

  • End of Change - Ritesh Shrivastava - 20/03/2007

ENDCASE.

  • End of Change - Ritesh Shrivastava - 15/03/2007

ENDFORM. " screenprocessing_lineitem

&----


*& Form Call_transaction

&----


  • text

----


  • -->P_0895 text

----


FORM Call_transaction USING P_TRANCODE.

REFRESH GT_MSG.

  • Call transaction processing

Call Transaction 'FB01' Using GT_FINBDCDATA

Mode GV_MODE

Update 'A'

Messages into GT_MSG.

  • Trap Call Transaction Error messages for Error report.

  • IF sy-subrc = 0.

GV_WARNING_FLAG = 'F'.

DESCRIBE TABLE GT_MSG LINES GV_INDEX.

READ TABLE GT_MSG INDEX GV_INDEX.

  • IF GT_MSG-MSGTYP = 'S' OR GT_MSG-MSGTYP = ''.

  • GV_COUNT_SUCCESS = GV_COUNT_SUCCESS + 1.

  • ENDIF.

IF GT_MSG-MSGTYP = 'W'.

GV_WARNING_FLAG = 'T'.

GV_COUNT_WARNINGS = GV_COUNT_WARNINGS + 1.

ENDIF.

IF GT_MSG-MSGTYP = 'E'.

GV_WARNING_FLAG = 'T'.

GV_COUNT_ERRORS = GV_COUNT_ERRORS + 1.

ENDIF.

IF GT_MSG-MSGTYP = 'I'.

GV_WARNING_FLAG = 'T'.

GV_COUNT_INFO = GV_COUNT_INFO + 1.

ENDIF.

  • Processing logic for obtaining texts corresponding to warning messages

IF GV_WARNING_FLAG = 'T'.

GT_ERRORS-MSGTY = GT_MSG-MSGTYP.

GT_ERRORS-MSGNO = GT_MSG-MSGNR.

MOVE GT_DATA-SNO TO GT_ERRORS-SNO.

SELECT TEXT FROM T100 INTO GT_ERRORS-ERR_TEXT

WHERE MSGNR = GT_ERRORS-MSGNO

AND SPRSL = 'E'

AND ARBGB = GT_MSG-MSGID.

ENDSELECT.

GV_REPL_TEXT = GT_MSG-MSGV1.

DO.

REPLACE '&1' WITH GV_REPL_TEXT INTO GT_ERRORS-ERR_TEXT.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

CONDENSE GT_ERRORS-ERR_TEXT.

ENDDO.

GV_REPL_TEXT = GT_MSG-MSGV2.

DO.

REPLACE '&2' WITH GV_REPL_TEXT INTO GT_ERRORS-ERR_TEXT.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

CONDENSE GT_ERRORS-ERR_TEXT.

ENDDO.

GV_REPL_TEXT = GT_MSG-MSGV3.

DO.

REPLACE '&3' WITH GV_REPL_TEXT INTO GT_ERRORS-ERR_TEXT.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

CONDENSE GT_ERRORS-ERR_TEXT.

ENDDO.

GV_REPL_TEXT = GT_MSG-MSGV4.

DO.

REPLACE '&4' WITH GV_REPL_TEXT INTO GT_ERRORS-ERR_TEXT.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

CONDENSE GT_ERRORS-ERR_TEXT.

ENDDO.

APPEND GT_ERRORS.

CLEAR GT_ERRORS.

ENDIF.

  • ENDIF.

  • TCT: Count the number of input records in the unsuccessful call

  • Transaction.Display the input records that could not be

  • successfully processed

ENDFORM. " Call_transaction

&----


*& Form bdc_insert_group

&----


  • text

----


  • -->P_0971 text

----


FORM bdc_insert_group USING lv_trancode.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = lv_trancode

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

DYNPROTAB = GT_FINBDCDATA

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.

ENDFORM. " bdc_insert_group

Read only

Former Member
0 Likes
1,067

BDC program for revesal posting using fb08

FORM bdc_gl_docu_reversal.

CLEAR:i_messtab,i_bdcdata.

PERFORM bdc_dynpro USING 'SAPMF05A' '0105'.

PERFORM bdc_field USING 'BDC_CURSOR'

'BSIS-BUDAT'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'RF05A-BELNS'

g_document_number.

PERFORM bdc_field USING 'BKPF-BUKRS'

g_subobj.

PERFORM bdc_field USING 'RF05A-GJAHS'

g_toyear.

PERFORM bdc_field USING 'UF05A-STGRD'

p_revrea.

PERFORM bdc_field USING 'BSIS-BUDAT'

g_posting_date.

REFRESH i_messtab.

CALL TRANSACTION 'FB08' USING i_bdcdata

MODE 'N'

MESSAGES INTO i_messtab.

PERFORM message_tab.

ENDFORM. " bdc_gl_docu_reversal

-


*

  • Start new screen *

----


FORM bdc_dynpro USING program dynpro.

CLEAR wa_bdcdata.

wa_bdcdata-program = program.

wa_bdcdata-dynpro = dynpro.

wa_bdcdata-dynbegin = 'X'.

APPEND wa_bdcdata TO i_bdcdata.

ENDFORM. "BDC_DYNPRO

----


  • Insert field *

----


FORM bdc_field USING fnam fval.

  • IF FVAL <> NODATA.

CLEAR wa_bdcdata.

wa_bdcdata-fnam = fnam.

wa_bdcdata-fval = fval.

APPEND wa_bdcdata TO i_bdcdata.

  • ENDIF.

ENDFORM. "BDC_FIELD

&----


*& Form MESSAGE_TAB

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM message_tab .

CLEAR: i_t100,wa_messtab,l_mstring,l_symsgv,wa_t100, g_rev_document_number.

SELECT *

INTO TABLE i_t100

FROM t100

FOR ALL ENTRIES IN i_messtab

WHERE sprsl = i_messtab-msgspra

AND arbgb = i_messtab-msgid

AND msgnr = i_messtab-msgnr.

LOOP AT i_messtab INTO wa_messtab.

READ TABLE i_t100 INTO wa_t100 WITH KEY sprsl = wa_messtab-msgspra

arbgb = wa_messtab-msgid

msgnr = wa_messtab-msgnr.

IF sy-subrc = 0.

l_mstring = wa_t100-text.

IF l_mstring CS '&1'.

REPLACE '&1' WITH wa_messtab-msgv1 INTO l_mstring.

REPLACE '&2' WITH wa_messtab-msgv2 INTO l_mstring.

REPLACE '&3' WITH wa_messtab-msgv3 INTO l_mstring.

REPLACE '&4' WITH wa_messtab-msgv4 INTO l_mstring.

ELSE.

REPLACE '&' WITH wa_messtab-msgv1 INTO l_mstring.

REPLACE '&' WITH wa_messtab-msgv2 INTO l_mstring.

REPLACE '&' WITH wa_messtab-msgv3 INTO l_mstring.

REPLACE '&' WITH wa_messtab-msgv4 INTO l_mstring.

ENDIF.

CONDENSE l_mstring.

  • WRITE: / wa_messtab-msgtyp, l_mstring(250).

ELSE.

ROLLBACK WORK.

WRITE: / wa_messtab.

ENDIF.

ENDLOOP.

ENDFORM. " MESSAGE_TAB

Read only

Former Member
0 Likes
1,067

This is an example program for changing document number for changing document number using FB02 transaction.Here i am updating sgtxt filed (Line item text).

&----


*& Form bdc_update_sgtxt

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_update_sgtxt .

*First Screen

REFRESH i_bdcdata.

CLEAR wa_bdcdata.

PERFORM bdc_dynpro USING 'SAPMF05L' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF05L-BELNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

*Reversal document number

PERFORM bdc_field USING 'RF05L-BELNR'

g_rev_document_number.

*Company Code

PERFORM bdc_field USING 'RF05L-BUKRS'

g_subobj.

*Fiscal year.

PERFORM bdc_field USING 'RF05L-GJAHR'

g_toyear.

*Second Screen

PERFORM bdc_dynpro USING 'SAPMF05L' '0700'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF05L-ANZDT(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=PK'.

*Third Screen

*Loop at line items.

LOOP AT i_bseg INTO wa_bseg.

CLEAR:g_rev_lineitemtext,g_sgtxt.

g_rev_lineitemtext = wa_bseg-sgtxt.

CONCATENATE c_rev_of_doc

g_document_number

g_rev_lineitemtext

INTO g_sgtxt

SEPARATED BY space .

PERFORM bdc_dynpro USING 'SAPMF05L' '0300'.

PERFORM bdc_field USING 'BDC_CURSOR'

'BSEG-SGTXT'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=Z+'.

PERFORM bdc_field USING 'BSEG-SGTXT'

g_sgtxt.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-AUFNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMF05L' '0300'.

PERFORM bdc_field USING 'BDC_CURSOR'

'BSEG-ZUONR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=AE'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

REFRESH i_messtab.

CALL TRANSACTION 'FB02' USING i_bdcdata

MODE 'A'

MESSAGES INTO i_messtab.

LOOP AT i_messtab INTO wa_messtab.

IF wa_messtab-msgtyp EQ c_e.

ROLLBACK WORK.

MESSAGE e000(z1) WITH 'Problem while updating the sgtxt for document number'.

ENDIF.

ENDLOOP.

COMMIT WORK.

ENDFORM. " bdc_update_sgtxt