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: 

BDC for F-02

0 Kudos
1,573

someone explain BDC for transaction f-02?

10 REPLIES 10

FredericGirod
Active Contributor
1,456

Could you please clarify your question ? Did you use the search option of the forum. This is a very old transaction & very old technic, it will be very surprising nobody already discuss this.

Sandra_Rossi
Active Contributor
1,456

Why would F-02 be specific with Batch Input? What difficulty do you have?

sanilbhandari
Product and Topic Expert
Product and Topic Expert
0 Kudos
1,456

Hi

If you are on S/4HANA, you might want to look at the standard fiori app F2548 "Upload General Journal Entries" available and check if it already fits your requirement

https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F2548')/S23OP

Thanks & Regards

Sanil Bhandari

Sanil Bhandari

former_member751463
Participant
0 Kudos
1,456

Hi,

It means they are asking you update F-02 transaction data via BDC technique. You have to perform recording in SHDB and then write a program to post the data.

Thanks,

Aditya.

0 Kudos
1,456

yes. This is my program -

__________________________________________________________________________________

REPORT zpmbdc
NO STANDARD PAGE HEADING LINE-SIZE 255.

TYPES:BEGIN OF ty_final,
bldat TYPE bkpf-bldat,
blart TYPE bkpf-blart,
bukrs TYPE bkpf-bukrs,
budat TYPE bkpf-budat,
monat TYPE bkpf-monat,
waers TYPE bkpf-waers,
xblnr TYPE bkpf-xblnr,
newbs TYPE rf05a-newbs,
newko TYPE rf05a-newko,
wrbtr TYPE bseg-wrbtr,
zuonr TYPE bseg-zuonr,
sgtxt TYPE bseg-sgtxt,
kostl TYPE bseg-kostl,
zfbdt TYPE bseg-zfbdt,
END OF ty_final.

data:wrbtr type char50.

DATA:it_final TYPE TABLE OF ty_final WITH HEADER LINE,
wa_final TYPE ty_final.

DATA:it_item TYPE TABLE OF ty_final WITH HEADER LINE,
wa_item TYPE ty_final.

DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA : t_messtab TYPE TABLE OF bdcmsgcoll,
wa_messtab TYPE bdcmsgcoll.

DATA: t_intern LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.

DATA : it_message TYPE TABLE OF bdcmsgcoll,
wa_message TYPE bdcmsgcoll.

DATA: lv_file TYPE string,
loop_ctr TYPE i VALUE 1.
*DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

PARAMETERS:p_file TYPE rlgrap-filename.

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.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
field_name = p_file
CHANGING
file_name = p_file.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.


START-OF-SELECTION.
IF p_file IS NOT INITIAL.
lv_file = p_file.
IF p_file CA 'XL' OR p_file CA 'XLS' OR
p_file CA 'xl' OR p_file CA 'xls'.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = '1'
i_begin_row = '1'
i_end_col = '200'
i_end_row = '6500'
TABLES
intern = t_intern
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.

DELETE t_intern WHERE row EQ '0001'.
LOOP AT t_intern. " INTO t_intern.
IF loop_ctr = 1.
CASE t_intern-col.
WHEN '0001'.
MOVE t_intern-value TO wa_final-bldat.
WHEN '0002'.
MOVE t_intern-value TO wa_final-blart.
WHEN '0003'.
MOVE t_intern-value TO wa_final-bukrs.
WHEN '0004'.
MOVE t_intern-value TO wa_final-budat.
WHEN '0005'.
MOVE t_intern-value TO wa_final-monat.
WHEN '0006'.
MOVE t_intern-value TO wa_final-waers.
WHEN '0007'.
MOVE t_intern-value TO wa_final-xblnr.
WHEN '0008'.
MOVE t_intern-value TO wa_final-newbs.
WHEN '0009'.
MOVE t_intern-value TO wa_final-newko.
* WHEN '0010'.
* MOVE t_intern-value TO wa_final-wrbtr.
WHEN '0011'.
MOVE t_intern-value TO wa_final-zuonr.
WHEN '0012'.
MOVE t_intern-value TO wa_final-sgtxt.
WHEN '0013'.
MOVE t_intern-value TO wa_final-kostl.
WHEN '0014'.
MOVE t_intern-value TO wa_final-zfbdt.
ENDCASE.
AT END OF row.
APPEND wa_final TO it_final .
CLEAR: wa_final.
ENDAT.
ENDIF.
ENDLOOP.
ELSE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_file
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = it_final[]
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.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
it_item[] = it_final[].


LOOP AT it_final INTO wa_final.
* PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
* PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.
* PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
* PERFORM bdc_field USING 'BKPF-BLDAT' wa_final-bldat . "'06/16/2022'.
* PERFORM bdc_field USING 'BKPF-BLART' wa_final-blart. " 'SA'.
* PERFORM bdc_field USING 'BKPF-BUKRS' wa_final-bukrs. "'TRAN'.
* PERFORM bdc_field USING 'BKPF-BUDAT' wa_final-budat. "'06/16/2022'.
* PERFORM bdc_field USING 'BKPF-MONAT' wa_final-monat . " '06'.
* PERFORM bdc_field USING 'BKPF-WAERS' wa_final-waers. " 'USD'.
* PERFORM bdc_field USING 'BKPF-XBLNR' wa_final-xblnr. "'TEST BDC'.
* PERFORM bdc_field USING 'FS006-DOCID' '*'.
* PERFORM bdc_field USING 'RF05A-NEWBS' wa_final-newbs. "'40'.
* PERFORM bdc_field USING 'RF05A-NEWKO' wa_final-newko. "'40000045'.
* PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
* PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-SGTXT'.
* PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
* PERFORM bdc_field USING 'BSEG-WRBTR' wa_final-wrbtr. "'100'.
* PERFORM bdc_field USING 'BSEG-ZUONR' wa_final-zuonr. "'RENT05'.
* PERFORM bdc_field USING 'BSEG-SGTXT' wa_final-sgtxt . "'BDC TEST'.
* PERFORM bdc_field USING 'RF05A-NEWBS' '50'.
* PERFORM bdc_field USING 'RF05A-NEWKO' '20000004'.
* 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-KOSTL' wa_final-kostl . "'30000003'.
* PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
* PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-ZFBDT'.
* PERFORM bdc_field USING 'BDC_OKCODE' '=AB'.
* PERFORM bdc_field USING 'BSEG-WRBTR' '100'.
* PERFORM bdc_field USING 'BSEG-ZFBDT' wa_final-zfbdt. "'06/30/2022'.
* PERFORM bdc_field USING 'DKACB-FMORE' 'X'.
* PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
* PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
* 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' 'TEST BDC'.
** PERFORM bdc_transaction USING 'F-02'.
ENDLOOP.

FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program .
bdcdata-dynpro = dynpro .
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro

*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
IF fval <> space.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
CONDENSE bdcdata-fval.
APPEND bdcdata.
ENDIF.
ENDFORM.

________________________________________________________________

but I have no idea about performs.

0 Kudos
1,456

Hi Pratiksha,

The performs call the subroutine bdc_dynpro and bdc_field to populate screen number and input data.

copy the subroutine bdc_transaction which will call the Tcode.

FORM BDC_TRANSACTION USING TCODE.
  DATA: L_MSTRING(480).
  DATA: L_SUBRC LIKE SY-SUBRC.
* batch input session
  IF SESSION = 'X'.
    CALL FUNCTION 'BDC_INSERT'
         EXPORTING TCODE     = TCODE
         TABLES    DYNPROTAB = BDCDATA.
    IF SMALLLOG <> 'X'.
      WRITE: / 'BDC_INSERT'(I03),
               TCODE,
               'returncode:'(I05),
               SY-SUBRC,
               'RECORD:',
               SY-INDEX.
    ENDIF.
* call transaction using
  ELSE.
    REFRESH MESSTAB.
<b>    CALL TRANSACTION TCODE USING BDCDATA
                     MODE   CTUMODE
                     UPDATE CUPDATE
                     MESSAGES INTO MESSTAB.</b>

Thanks,

Aditya.

0 Kudos
1,456

You need to uncomment all perform statement and copy the bdc_transfaction subroutine which i mentioned earlier. Try to generate the program code from SHDB recording. Then declare your own internal table and file structure. Then pass the value like you are passing in It_Final table.

0 Kudos
1,456

Uncomment the required performs, and replace the constants of your recording with values from your uploaded internal table. (insure also those values respect the expected format of the field, e.g. WRITE ... LEFT JUSTIFIED can be useful)

RaymondGiuseppi
Active Contributor
1,456

Did you perform a record with SHDB to generate a sample program to wrap F-02 call?

Or did you look for an easier tool such as FM POSTING_INTERFACE_START, POSTING_INTERFACE_DOCUMENT and POSTING_INTERFACE_END that will create the BDC managing the sequence of screens for you

Or could you consider some BAPI from BAPI_ACC_GL_POSTING_POST to BAPI_ACC_DOCUMENT_POST?

0 Kudos
1,456

LOL for the 2