Monday, October 29, 2018

How to split path and filename

  1. DATA: filepath TYPE char255 VALUE '/usr/<sys_id>/sap/tmp/filename.txt'.
  2. DATA: path TYPE char255.
  3. DATA: file TYPE char255.
  4.  
  5. DEFINE macro_reverse_string.
  6.  
  7. call function 'STRING_REVERSE'
  8. exporting
  9. string = &1
  10. lang = sy-langu
  11. importing
  12. rstring = &1.
  13.  
  14. END-OF-DEFINITION.
  15.  
  16. macro_reverse_string filepath.
  17. SPLIT filepath AT '/' INTO file path.
  18. macro_reverse_string filepath.
  19. macro_reverse_string file.
  20. shift path right by 1 places. path(1) = '/'.
  21. macro_reverse_string path.
  22.  
  23. WRITE:/ filepath.
  24. WRITE:/ path.
  25. WRITE:/ file.
  26.  
  27.  
  28. Or 
  29. ------------------------------------------------------------
  30.  
    1. DATA: filepath TYPE char255 VALUE '/usr/<sys_id>/sap/tmp/filename.txt'.
    2. DATA: path TYPE char255.
    3. DATA: file TYPE char255.
    4. DATA: dummy TYPE string.
    5.  
    6. CHECK filepath CA '/'.
    7. dummy = filepath.
    8. DO.
    9. SHIFT dummy RIGHT CIRCULAR.
    10. IF dummy(1) = '/'.
    11. SHIFT dummy LEFT CIRCULAR.
    12. SPLIT dummy AT '/' INTO file path.
    13. CONCATENATE '/' path INTO path.
    14. EXIT.
    15. ENDIF.
    16. ENDDO.
    17.  
    18. WRITE:/ filepath.
    19. WRITE:/ path.
    20. WRITE:/ file.