Jun 30, 2026

How to Move Files between Directories on the Application Server?

SAP developers natively accomplish this using one of three standard methods: standard ABAP dataset commands, OS-level commands via SXPG_COMMAND_EXECUTE, or specialized functions like ARCHIVFILE_SERVER_TO_SERVER. 

Option 1: Native ABAP Statements (Recommended & Safest)
The cleanest, platform-independent approach is to copy the file content data line-by-line using datasets and then delete the original file. This completely eliminates operating system dependencies. 
abap
DATA: lv_line TYPE string.

" 1. Open the original source file
OPEN DATASET p_src_file FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
  
  " 2. Open the destination target file
  OPEN DATASET p_tgt_file FOR OUTPUT IN BINARY MODE.
  IF sy-subrc = 0.
    
    " 3. Read line by line and transfer data
    DO.
      READ DATASET p_src_file INTO lv_line.
      IF sy-subrc <> 0.
        EXIT.
      ENDIF.
      TRANSFER lv_line TO p_tgt_file.
    ENDDO.
    
    CLOSE DATASET p_tgt_file.
  ENDIF.
  
  CLOSE DATASET p_src_file.
  
  " 4. Delete the source file once successfully transferred
  IF sy-subrc = 0.
    DELETE DATASET p_src_file.
  ENDIF.
ENDIF.

Option 2: Function Module ARCHIVFILE_SERVER_TO_SERVER
You can utilize the standard function module ARCHIVFILE_SERVER_TO_SERVER to replicate a copy of the file on the server and then pair it with a DELETE DATASET statement. [1, 2]
  • Limitation: The source and target parameter variables have a maximum length of 70 characters. If your filepath or filename structure exceeds this limitation, you must utilize Option 1 instead. [1]
abap
CALL FUNCTION 'ARCHIVFILE_SERVER_TO_SERVER'
  EXPORTING
    sourcepath       = p_src_file
    targetpath       = p_tgt_file
  EXCEPTIONS
    error_file       = 1
    OTHERS           = 2.

IF sy-subrc = 0.
  DELETE DATASET p_src_file. " Removes original file to complete the move action
ENDIF.

Option 3: Function Module SXPG_COMMAND_EXECUTE
If you are moving exceptionally large files, executing an operating system level command (mv for Unix/Linux or move for Windows) is the fastest option since it changes file pointers rather than rewriting raw blocks. 
  1. Create a custom OS command (e.g., ZMV) mapped to your OS type in transaction SM69.
  2. Call the function module programmatically: 
abap
DATA: lv_parameters TYPE btcxpgpar,
      lv_status     TYPE btcxpgstat.

" Concatenate source and target paths as arguments for the terminal command
CONCATENATE p_src_file p_tgt_file INTO lv_parameters SEPARATED BY space.

CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
  EXPORTING
    commandname         = 'ZMV'
    additional_parameters = lv_parameters
  IMPORTING
    status              = lv_status
  EXCEPTIONS
    no_permission       = 1
    command_not_found   = 2
    security_risk       = 3
    OTHERS              = 4.

If you would like to proceed with setting up one of these options, let me know:
  • What is the average size of the files you are moving?
  • Will your typical filepaths exceed 70 characters?
  • Which Operating System (Unix, Linux, Windows) is your SAP application server running on?

SAP Fiori - Add an SAP transaction as an SAP Fiori tile


SAP Fiori - Add an SAP transaction as an SAP Fiori tile




Source: https://www.youtube.com/@ERP-UP

Jun 21, 2026

Convert Warehouse from WM to EWM Vice Versa.

Function Modules to Convert EWM to WM Vice Versa


Data Delaration: Include LZDIFG_EWMTOP

FUNCTION-POOL zdifg_ewm.                    "MESSAGE-ID ..

DATAgt_whmap TYPE /scwm/tt_tmapwhnum.


Function: ZDIFM_EWM_TO_WM

FUNCTION zdifm_ewm_to_wm.
*"--------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IV_WHEWM) TYPE  /SCWM/LGNUM
*"  CHANGING
*"     VALUE(CV_WHWM) TYPE  HUM_LGNUM
*"--------------------------------------------------------------------

  IF gt_whmap[] IS INITIAL.
    SELECT * FROM /scwm/tmapwhnum INTO TABLE gt_whmap.
  ENDIF.

  cv_whwm = VALUE #( gt_whmap[ whnumwme = iv_whewm ]-whnumerp OPTIONAL ).

ENDFUNCTION.


Function: ZDIFM_WM_TO_EWM

FUNCTION zdifm_wm_to_ewm.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IV_WHWM) TYPE  HUM_LGNUM
*"  CHANGING
*"     VALUE(CV_WHEWM) TYPE  /SCWM/LGNUM
*"----------------------------------------------------------------------

  IF gt_whmap[] IS INITIAL.
    SELECT FROM /scwm/tmapwhnum INTO TABLE gt_whmap.
  ENDIF.

  cv_whewm VALUE #gt_whmap[ whnumerp iv_whwm ]-whnumerp OPTIONAL ).

ENDFUNCTION.