2022 Jun 29 7:44 AM
2022 Jun 29 7:57 AM
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.
2022 Jun 29 8:12 AM
Why would F-02 be specific with Batch Input? What difficulty do you have?
2022 Jun 29 8:27 AM
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
2022 Jun 29 10:46 AM
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.
2022 Jun 29 1:20 PM
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.
2022 Jun 29 5:43 PM
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.
2022 Jun 29 6:38 PM
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.
2022 Jun 30 2:58 PM
2022 Jun 29 12:42 PM
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?
2022 Jun 29 6:08 PM