2024 Jan 04 2:19 PM
Hi, gurus,
I am using the STANDARD FM FTP_R3_TO_SERVER and I am getting command error and data is not getting pushed. Kindly please help as it is
in production. Thanks in advance.
SET EXTENDED CHECK OFF.<br> lv_slen = strlen( lv_pwd ).
CALL FUNCTION 'HTTP_SCRAMBLE'
<br> EXPORTING
<br> source = lv_pwd
<br> sourcelen = lv_slen
<br> key = lv_key
<br> IMPORTING
<br> destination = lv_pwd.
<br> CALL FUNCTION 'FTP_CONNECT'
<br> EXPORTING
<br> user = lv_user
<br> password = lv_pwd
<br> host = lv_host
<br> rfc_destination = lv_dest
<br> IMPORTING
<br> handle = lv_hdl
<br> EXCEPTIONS
<br> not_connected = 1.
<br> IF sy-subrc IS INITIAL.
<br> IF lv_cmd1 NE ' '.
<br> CONCATENATE 'cd' lv_val2 INTO lv_cmd1 SEPARATED BY space.
<br> CALL FUNCTION 'FTP_COMMAND'
<br> EXPORTING
<br> handle = lv_hdl
<br> command = lv_cmd1
<br> compress = lv_compress
<br> TABLES
<br> data = lt_text1
<br> EXCEPTIONS
<br> command_error = 1
<br> tcpip_error = 2.
<br> LOOP AT result.
<br> WRITE AT / result-line.
<br> ENDLOOP.
<br> REFRESH result.
<br> ENDIF.
<br><br><br>* READ TABLE it_sales_data INTO ls_sales_data INDEX 1.
<br> LOOP AT it_sales_data INTO ls_sales_data WHERE supp_gstin IS NOT INITIAL.
<br> IF ls_sales_data-supp_gstin IS NOT INITIAL.
<br> EXIT.
<br> ENDIF.
<br> ENDLOOP.
<br> IF ls_sales_data-supp_gstin IS NOT INITIAL.
<br> CONCATENATE sy-datum sy-uzeit INTO lv_time.
<br> IF sy-sysid = 'PDR' OR sy-sysid = 'PQR'.
<br> CONCATENATE '/GSTR1/TEST/INPUT/UNPROCESSED/GSTR1_ALL_'
<br> ls_sales_data-supp_gstin '_' lv_time '_62a9726934d95e258be1' '.csv' INTO lv_file.
<br> ELSEIF sy-sysid = 'PPR'.
<br> CONCATENATE '/GSTR1/PRODUCTION/INPUT/UNPROCESSED/GSTR1_ALL_'
<br> ls_sales_data-supp_gstin '_' lv_time '_62a9726934d95e258be1' '.csv' INTO lv_file.
<br> ENDIF.
<br>* CONCATENATE 'GSTR1_ALL_' ls_sales_data-supp_gstin '_' lv_time '_62a9726934dca95e258be17d' '.csv' INTO lv_file.
<br> CALL FUNCTION 'FTP_R3_TO_SERVER'
<br> EXPORTING
<br> handle = lv_hdl
<br> fname = lv_file
<br>* BLOB_LENGTH =
<br> character_mode = 'X'
<br> TABLES
<br>* BLOB =
<br> text = lt_text
<br> EXCEPTIONS
<br> tcpip_error = 1
<br> command_error = 2
<br> data_error = 3
<br> OTHERS = 4.
********************************facing error sy-subrc = 2 command error*************************************<br> IF sy-subrc <> 0.<br>* Implement suitable error handling here
ELSE.
CLEAR lt_staging_data.
LOOP AT it_sales_data INTO ls_sales_data.
MOVE-CORRESPONDING ls_sales_data TO ls_staging_data.
READ TABLE lt_header INTO ls_header WITH KEY bukrs = ls_staging_data-bukrs
belnr = ls_staging_data-belnr
gjahr = ls_staging_data-gjahr.
IF sy-subrc IS INITIAL.
ls_staging_data-invoice_value = ls_header-invoice_value.
ls_staging_data-taxable_value = ls_header-taxable_value.
ls_staging_data-igst_amount = ls_header-igst_amount.
ls_staging_data-cgst_amount = ls_header-cgst_amount.
ls_staging_data-sgst_amount = ls_header-sgst_amount.
ls_staging_data-cess_amount = ls_header-cess_amount.
ENDIF.
ls_staging_data-ftp_status = 'Y'.
ls_staging_data-valid_flag = 'Y'.
ls_staging_data-filename = lv_file.
ls_staging_data-ftp_date = sy-datum.
ls_staging_data-ernam = sy-uname.
ls_staging_data-erdat = sy-datum.
CLEAR:ls_staging_data-response_date,ls_staging_data-reverse_filename,
ls_staging_data-aenam, ls_staging_data-aedat.
APPEND ls_staging_data TO lt_staging_data.
CLEAR ls_staging_data.
<br><br> CALL FUNCTION 'FTP_DISCONNECT'<br> EXPORTING<br> handle = lv_hdl.
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = lv_dest
EXCEPTIONS
OTHERS = 1.
ENDIF.
ELSE.
MESSAGE 'FTP connection error' TYPE 'I'.
ENDIF.
* ENDIF.
ENDIF.
*
ENDFUNCTION.
2024 Jan 04 2:44 PM
Plz help me as it is in production.
what possible r the reasons for few documents getting transferred and few others not getting transferred.
2024 Jan 04 3:12 PM
Please use the COMMENT button for comments, asking for complements, adding details, replying to a comment or a proposed solution or to the OP question, etc., ANSWER is only to propose a solution, dixit SAP text at the right of the answer area.
2024 Jan 04 3:13 PM
Please edit your question (Actions>Edit), select your code and press the button [CODE], which makes the code appear colored/indented, it'll be easier for people to look at it. Thanks!
2024 Jan 04 5:40 PM
Now it's worse, you really have a problem with editing.
Here is the code well formatted to help anybody who wants to answer.
SET EXTENDED CHECK OFF.
lv_slen = strlen( lv_pwd ).
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING source = lv_pwd
sourcelen = lv_slen
key = lv_key
IMPORTING destination = lv_pwd.
CALL FUNCTION 'FTP_CONNECT'
EXPORTING user = lv_user
password = lv_pwd
host = lv_host
rfc_destination = lv_dest
IMPORTING handle = lv_hdl
EXCEPTIONS not_connected = 1.
IF sy-subrc IS INITIAL.
IF lv_cmd1 NE ' '.
CONCATENATE 'cd' lv_val2 INTO lv_cmd1 SEPARATED BY space.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING handle = lv_hdl
command = lv_cmd1
compress = lv_compress
TABLES data = lt_text1
EXCEPTIONS command_error = 1
tcpip_error = 2.
LOOP AT result.
WRITE AT / result-line.
ENDLOOP.
REFRESH result.
ENDIF.
" read table it_sales_data into ls_sales_data index 1.
LOOP AT it_sales_data INTO ls_sales_data WHERE supp_gstin IS NOT INITIAL.
IF ls_sales_data-supp_gstin IS NOT INITIAL.
EXIT.
ENDIF.
ENDLOOP.
IF ls_sales_data-supp_gstin IS NOT INITIAL.
CONCATENATE sy-datum sy-uzeit INTO lv_time.
IF sy-sysid = 'PDR' OR sy-sysid = 'PQR'.
CONCATENATE '/GSTR1/TEST/INPUT/UNPROCESSED/GSTR1_ALL_'
ls_sales_data-supp_gstin '_' lv_time '_62a9726934d95e258be1' '.csv' INTO lv_file.
ELSEIF sy-sysid = 'PPR'.
CONCATENATE '/GSTR1/PRODUCTION/INPUT/UNPROCESSED/GSTR1_ALL_'
ls_sales_data-supp_gstin '_' lv_time '_62a9726934d95e258be1' '.csv' INTO lv_file.
ENDIF.
CALL FUNCTION 'FTP_R3_TO_SERVER'
EXPORTING handle = lv_hdl
fname = lv_file
character_mode = 'X'
TABLES text = lt_text
EXCEPTIONS tcpip_error = 1
command_error = 2
data_error = 3
OTHERS = 4.
" facing error sy-subrc = 2 command error*************************************
IF sy-subrc <> 0.
" Implement suitable error handling here
ELSE.
CLEAR lt_staging_data.
LOOP AT it_sales_data INTO ls_sales_data.
MOVE-CORRESPONDING ls_sales_data TO ls_staging_data.
READ TABLE lt_header INTO ls_header WITH KEY bukrs = ls_staging_data-bukrs
belnr = ls_staging_data-belnr
gjahr = ls_staging_data-gjahr.
IF sy-subrc IS INITIAL.
ls_staging_data-invoice_value = ls_header-invoice_value.
ls_staging_data-taxable_value = ls_header-taxable_value.
ls_staging_data-igst_amount = ls_header-igst_amount.
ls_staging_data-cgst_amount = ls_header-cgst_amount.
ls_staging_data-sgst_amount = ls_header-sgst_amount.
ls_staging_data-cess_amount = ls_header-cess_amount.
ENDIF.
ls_staging_data-ftp_status = 'Y'.
ls_staging_data-valid_flag = 'Y'.
ls_staging_data-filename = lv_file.
ls_staging_data-ftp_date = sy-datum.
ls_staging_data-ernam = sy-uname.
ls_staging_data-erdat = sy-datum.
CLEAR:ls_staging_data-response_date,ls_staging_data-reverse_filename,
ls_staging_data-aenam, ls_staging_data-aedat.
APPEND ls_staging_data TO lt_staging_data.
CLEAR ls_staging_data.
" Item details
MOVE-CORRESPONDING ls_sales_data TO ls_staging_itm.
ls_staging_itm-ernam = sy-uname.
ls_staging_itm-erdat = sy-datum.
CLEAR:ls_staging_itm-aenam,ls_staging_itm-aedat, ls_staging_itm-error.
APPEND ls_staging_itm TO lt_staging_itm.
CLEAR ls_staging_itm.
ENDLOOP.
IF lt_staging_data IS NOT INITIAL.
MODIFY ztreco_sales_det FROM TABLE lt_staging_data.
MODIFY ztreco_sales_itm FROM TABLE lt_staging_itm.
ENDIF.
et_staging_data = lt_staging_data.
et_staging_itm = lt_staging_itm.
ENDIF.
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING handle = lv_hdl.
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING destination = lv_dest
EXCEPTIONS OTHERS = 1.
ENDIF.
ELSE.
MESSAGE 'FTP connection error' TYPE 'I'.
ENDIF.
2024 Jan 04 5:42 PM
2024 Jun 26 8:07 AM
any solution to this?
Background job getting failed with error - Invalid FTP handle
we have WINSCP in place, and Foreground is working fine.