Application Development 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: 

FTP_R3_TO_SERVER error issue command error 2

pashasapcha
Participant
0 Kudos

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.

* 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.
<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.

5 REPLIES 5

pashasapcha
Participant
0 Kudos

Plz help me as it is in production.
what possible r the reasons for few documents getting transferred and few others not getting transferred.

0 Kudos

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.

Sandra_Rossi
Active Contributor
0 Kudos

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!

Sandra_Rossi
Active Contributor
0 Kudos

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.

pashasapcha
Participant
0 Kudos

Thanks alot 🙂