<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Tab space in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/tab-space/m-p/1383116#M186787</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First some minor remark: if you are in a newer release, use a class to define the 'tab':&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;  class cl_abap_char_utilities definition load.
  data: l_field_seperator.
  l_field_seperator = cl_abap_char_utilities=&amp;gt;horizontal_tab.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Then you have a char1 field with the tabulator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But looking at your code: why do you concatenate at all? You make an effort to assign % to empty fields, later you convert them back to space...&lt;/P&gt;&lt;P&gt;I would use a fixed structure. If you would like to have separators, I would include as every second field a sep01, sep02, sep03... which will be filled with '|', ' ', or the tabulator (just as you like).&lt;/P&gt;&lt;P&gt;Then you have a fixed field width - if you prefer to have shrinked display, just move this structure into a char255 field and use statement condense -&amp;gt; separatores like '|' will remain, but empty texts like ekpo-txz01 will be smaller.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In newer releases (700?) the concatenate has an option 'respecting blanks' -&amp;gt; you don't need the macros any longer, even if you stay with the concatenate version.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Christian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Jun 2006 09:42:40 GMT</pubDate>
    <dc:creator>christian_wohlfahrt</dc:creator>
    <dc:date>2006-06-29T09:42:40Z</dc:date>
    <item>
      <title>Tab space</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/tab-space/m-p/1383115#M186786</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;I have placed fields on concatenate statement..separeted by tab space..but if the field contains null value i have placed tab space by using MACROS ..but i found it is taking more runtime and it is outdated...so any body can suggest any other method for the below code....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT ztest1 LINE-SIZE 200.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES : ekko,ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*for tab delimiter&lt;/P&gt;&lt;P&gt;CONSTANTS : c_tab TYPE x VALUE '09'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*for total value&lt;/P&gt;&lt;P&gt;DATA : v_total1 TYPE p DECIMALS 2,&lt;/P&gt;&lt;P&gt;       v_total(15) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*output string&lt;/P&gt;&lt;P&gt;DATA : output_string1 TYPE string,&lt;/P&gt;&lt;P&gt;       output_string2 TYPE string,&lt;/P&gt;&lt;P&gt;       output_string3 TYPE string,&lt;/P&gt;&lt;P&gt;       output_string4 TYPE string,&lt;/P&gt;&lt;P&gt;       output_string5 TYPE string,&lt;/P&gt;&lt;P&gt;       output_string6 TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*for selection based on creation date and document type&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS : so_aedat FOR ekko-aedat,&lt;/P&gt;&lt;P&gt;                 so_bsart FOR ekko-bsart.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*File Detail Record&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Purchasing Document Header&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF lt_ekko OCCURS 0,&lt;/P&gt;&lt;P&gt;         lv_record_identifier2(3) TYPE c,&lt;/P&gt;&lt;P&gt;         lv_org_id1(4) TYPE c,&lt;/P&gt;&lt;P&gt;         ebeln LIKE ekko-ebeln,           " Purchasing Document Number&lt;/P&gt;&lt;P&gt;         aedat LIKE ekko-aedat,           " Date on which the record was&lt;/P&gt;&lt;P&gt;                                          " created&lt;/P&gt;&lt;P&gt;         bedat LIKE ekko-bedat,           " Purchasing document date&lt;/P&gt;&lt;P&gt;         bsart LIKE ekko-bsart,           " Purchasing document type&lt;/P&gt;&lt;P&gt;         lifnr LIKE ekko-lifnr,           " Vendor's account number&lt;/P&gt;&lt;P&gt;         zsrm_pcnum LIKE ekko-zsrm_pcnum, " SRM: Procurement card number&lt;/P&gt;&lt;P&gt;         bukrs LIKE ekko-bukrs,           " Company Code&lt;/P&gt;&lt;P&gt;         name1 LIKE lfa1-name1,                             " Name 1&lt;/P&gt;&lt;P&gt;       END OF lt_ekko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Purchasing Document Item&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF lt_ekpo OCCURS 0,&lt;/P&gt;&lt;P&gt;         ebeln LIKE ekpo-ebeln,   " Purchasing Document Number&lt;/P&gt;&lt;P&gt;         ebelp LIKE ekpo-ebelp,   " Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;         aedat LIKE ekpo-aedat,   " Purchasing document item change date&lt;/P&gt;&lt;P&gt;         vrtkz LIKE ekpo-vrtkz,   " Distribution indicator for multiple&lt;/P&gt;&lt;P&gt;                                  " account assignment&lt;/P&gt;&lt;P&gt;         afnam LIKE ekpo-afnam,   " Name of requisitioner/requester&lt;/P&gt;&lt;P&gt;         txz01 LIKE ekpo-txz01,   " Short text&lt;/P&gt;&lt;P&gt;         netwr LIKE ekpo-netwr,   " Net order value in PO currency&lt;/P&gt;&lt;P&gt;         menge LIKE ekpo-menge,   " Purchase order quantity&lt;/P&gt;&lt;P&gt;         knttp LIKE ekpo-knttp,   " Account assignment category&lt;/P&gt;&lt;P&gt;         mwskz TYPE ekpo-mwskz,   " Tax on sales/purchases code&lt;/P&gt;&lt;P&gt;       END OF lt_ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Account Assignment in Purchasing Document&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF lt_ekkn OCCURS 0,&lt;/P&gt;&lt;P&gt;         ebeln LIKE ekkn-ebeln,    " Purchasing Document Number&lt;/P&gt;&lt;P&gt;         ebelp LIKE ekkn-ebelp,    " Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;         zekkn LIKE ekkn-zekkn,    " Sequential number of account&lt;/P&gt;&lt;P&gt;                                   " assignment&lt;/P&gt;&lt;P&gt;         vproz LIKE ekkn-vproz,    " Distribution percentage in the case&lt;/P&gt;&lt;P&gt;                                   " of multiple acct assgt&lt;/P&gt;&lt;P&gt;         sakto LIKE ekkn-sakto,    " G/L account number&lt;/P&gt;&lt;P&gt;         kostl LIKE ekkn-kostl,    " Cost Center&lt;/P&gt;&lt;P&gt;         ps_psp_pnr LIKE ekkn-ps_psp_pnr, " Work breakdown structure&lt;/P&gt;&lt;P&gt;                                          " element (WBS element)&lt;/P&gt;&lt;P&gt;         aufnr LIKE ekkn-aufnr,    " Order Number&lt;/P&gt;&lt;P&gt;       END OF lt_ekkn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Scheduling Agreement Schedule Lines&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF lt_eket OCCURS 0,&lt;/P&gt;&lt;P&gt;         ebeln LIKE eket-ebeln,  " Purchasing Document Number&lt;/P&gt;&lt;P&gt;         ebelp LIKE eket-ebelp,  " Item Number of Purchasing Document&lt;/P&gt;&lt;P&gt;         eindt LIKE eket-eindt,  " Item delivery date&lt;/P&gt;&lt;P&gt;       END OF lt_eket.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Organization Footer Record&lt;/P&gt;&lt;P&gt;DATA : lv_record_identifier3(3) TYPE c VALUE '130',&lt;/P&gt;&lt;P&gt;       lv_org_id2(4) TYPE c VALUE '1744',&lt;/P&gt;&lt;P&gt;       lv_org_name1(60) TYPE c VALUE 'CLICK',&lt;/P&gt;&lt;P&gt;       lv_detail_record_count(5) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*File Footer Record&lt;/P&gt;&lt;P&gt;DATA : lv_record_identifier4(3) TYPE c VALUE '140',&lt;/P&gt;&lt;P&gt;       lv_extract_record_count(5) TYPE c,&lt;/P&gt;&lt;P&gt;       lv_file_record_count(5) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*for date and time format&lt;/P&gt;&lt;P&gt;lv_creation_date = sy-datum.&lt;/P&gt;&lt;P&gt;lv_creation_time = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*concatenate for File Header Record&lt;/P&gt;&lt;P&gt;CONCATENATE lv_record_identifier&lt;/P&gt;&lt;P&gt;            lv_sp_id&lt;/P&gt;&lt;P&gt;            lv_sp_name&lt;/P&gt;&lt;P&gt;            lv_creation_date&lt;/P&gt;&lt;P&gt;            lv_creation_time&lt;/P&gt;&lt;P&gt;            lv_file_format&lt;/P&gt;&lt;P&gt;            lv_file_version&lt;/P&gt;&lt;P&gt;            INTO output_string1&lt;/P&gt;&lt;P&gt;    SEPARATED BY c_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; output_string1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*concatenate Organization Header Record&lt;/P&gt;&lt;P&gt;CONCATENATE lv_record_identifier1&lt;/P&gt;&lt;P&gt;            lv_org_id&lt;/P&gt;&lt;P&gt;            lv_org_name&lt;/P&gt;&lt;P&gt;            INTO output_string2&lt;/P&gt;&lt;P&gt;    SEPARATED BY c_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; output_string2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*selection of fields&lt;/P&gt;&lt;P&gt;SELECT ebeln&lt;/P&gt;&lt;P&gt;       aedat&lt;/P&gt;&lt;P&gt;       bsart&lt;/P&gt;&lt;P&gt;       zsrm_pcnum&lt;/P&gt;&lt;P&gt;       lifnr&lt;/P&gt;&lt;P&gt;       bukrs&lt;/P&gt;&lt;P&gt;       FROM ekko&lt;/P&gt;&lt;P&gt;       INTO CORRESPONDING FIELDS OF TABLE lt_ekko&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      WHERE ( aedat IN so_aedat OR aedat = sy-datum )&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       WHERE bsart IN so_bsart&lt;/P&gt;&lt;P&gt;       AND ( bsart = 'ECDP' OR bsart = 'ECPO' )&lt;/P&gt;&lt;P&gt;       AND zsrm_pcnum IS not NULL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT lt_ekko[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT ebeln&lt;/P&gt;&lt;P&gt;         ebelp&lt;/P&gt;&lt;P&gt;         aedat&lt;/P&gt;&lt;P&gt;         vrtkz&lt;/P&gt;&lt;P&gt;         afnam&lt;/P&gt;&lt;P&gt;         txz01&lt;/P&gt;&lt;P&gt;         netwr&lt;/P&gt;&lt;P&gt;         menge&lt;/P&gt;&lt;P&gt;         knttp&lt;/P&gt;&lt;P&gt;         mwskz&lt;/P&gt;&lt;P&gt;         FROM ekpo&lt;/P&gt;&lt;P&gt;         INTO TABLE lt_ekpo&lt;/P&gt;&lt;P&gt;         FOR ALL ENTRIES IN lt_ekko&lt;/P&gt;&lt;P&gt;         WHERE ebeln = lt_ekko-ebeln&lt;/P&gt;&lt;P&gt;         AND ( aedat IN so_aedat ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT lt_ekpo[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT ebeln&lt;/P&gt;&lt;P&gt;         ebelp&lt;/P&gt;&lt;P&gt;         zekkn&lt;/P&gt;&lt;P&gt;         vproz&lt;/P&gt;&lt;P&gt;         sakto&lt;/P&gt;&lt;P&gt;         kostl&lt;/P&gt;&lt;P&gt;         ps_psp_pnr&lt;/P&gt;&lt;P&gt;         aufnr&lt;/P&gt;&lt;P&gt;         FROM ekkn&lt;/P&gt;&lt;P&gt;         INTO TABLE lt_ekkn&lt;/P&gt;&lt;P&gt;         FOR ALL ENTRIES IN lt_ekpo&lt;/P&gt;&lt;P&gt;         WHERE ebeln = lt_ekpo-ebeln&lt;/P&gt;&lt;P&gt;         AND ebelp = lt_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT ebeln&lt;/P&gt;&lt;P&gt;         ebelp&lt;/P&gt;&lt;P&gt;         eindt&lt;/P&gt;&lt;P&gt;         FROM eket&lt;/P&gt;&lt;P&gt;         INTO TABLE lt_eket&lt;/P&gt;&lt;P&gt;         FOR ALL ENTRIES IN lt_ekpo&lt;/P&gt;&lt;P&gt;         WHERE ebeln = lt_ekpo-ebeln&lt;/P&gt;&lt;P&gt;         AND ebelp = lt_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*for specifying the record length&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*describe table lt_ekko LINES record_count.&lt;/P&gt;&lt;P&gt;lv_record_count = sy-dbcnt.&lt;/P&gt;&lt;P&gt;lv_detail_record_count = lv_record_count.&lt;/P&gt;&lt;P&gt;lv_extract_record_count = lv_record_count - 2.&lt;/P&gt;&lt;P&gt;lv_file_record_count = lv_record_count + 4.&lt;/P&gt;&lt;P&gt;SHIFT lv_detail_record_count LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;SHIFT lv_extract_record_count LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;SHIFT lv_file_record_count LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;*for macro declaration&lt;/P&gt;&lt;P&gt;DEFINE macro_check_value.&lt;/P&gt;&lt;P&gt;  if &amp;amp;1 is initial.&lt;/P&gt;&lt;P&gt;    &amp;amp;1 = '%'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*concatenate for File Detail Record&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT lt_ekko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE name1 FROM lfa1 INTO lt_ekko-name1&lt;/P&gt;&lt;P&gt;                               WHERE lifnr = lt_ekko-lifnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR v_total1.&lt;/P&gt;&lt;P&gt;  LOOP AT lt_ekpo WHERE ebeln = lt_ekko-ebeln.&lt;/P&gt;&lt;P&gt;    v_total1 = v_total1 + lt_ekpo-netwr.&lt;/P&gt;&lt;P&gt;    MOVE v_total1 TO v_total.&lt;/P&gt;&lt;P&gt;    SHIFT v_total LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT lt_ekpo WHERE ebeln = lt_ekko-ebeln.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE lt_ekkn WITH KEY ebeln = lt_ekpo-ebeln&lt;/P&gt;&lt;P&gt;                                ebelp = lt_ekpo-ebelp BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE lt_eket WITH KEY ebeln = lt_ekpo-ebeln&lt;/P&gt;&lt;P&gt;                                ebelp = lt_ekpo-ebelp BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*clearing zeros for integer values&lt;/P&gt;&lt;P&gt;    CLEAR : v_netwr,v_menge,v_vproz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    v_netwr = lt_ekpo-netwr.&lt;/P&gt;&lt;P&gt;    SHIFT v_netwr LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    v_menge = lt_ekpo-menge.&lt;/P&gt;&lt;P&gt;    SHIFT v_menge LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for vrtkz field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF lt_ekpo-vrtkz EQ '1' OR lt_ekpo-vrtkz EQ '2'.&lt;/P&gt;&lt;P&gt;      MOVE 'M' TO v_vrtkz.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MOVE 'S' TO v_vrtkz.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for vproz field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF lt_ekkn-vproz EQ '0.0'.&lt;/P&gt;&lt;P&gt;      MOVE '100.0' TO v_vproz.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MOVE lt_ekkn-vproz TO v_vproz.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    SHIFT v_vproz LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*for knttp value&lt;/P&gt;&lt;P&gt;    CASE lt_ekpo-knttp.&lt;/P&gt;&lt;P&gt;      WHEN 'K'.&lt;/P&gt;&lt;P&gt;        MOVE lt_ekkn-kostl TO v_knttp.&lt;/P&gt;&lt;P&gt;      WHEN 'P'.&lt;/P&gt;&lt;P&gt;        MOVE lt_ekkn-ps_psp_pnr TO v_knttp.&lt;/P&gt;&lt;P&gt;      WHEN  'O'.&lt;/P&gt;&lt;P&gt;        MOVE lt_ekkn-aufnr TO v_knttp.&lt;/P&gt;&lt;P&gt;      WHEN OTHERS.&lt;/P&gt;&lt;P&gt;        MOVE lt_ekpo-knttp TO v_knttp.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SHIFT v_knttp LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR output_string3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;*macro declaration for tab space for null values&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-lv_record_identifier2.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-lv_org_id1.&lt;/P&gt;&lt;P&gt;    macro_check_value v_vrtkz.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-ebeln.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-lifnr.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-name1.&lt;/P&gt;&lt;P&gt;    macro_check_value v_total.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-aedat.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-zsrm_pcnum.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekpo-afnam.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekpo-txz01.&lt;/P&gt;&lt;P&gt;    macro_check_value v_netwr.&lt;/P&gt;&lt;P&gt;    macro_check_value v_vproz.&lt;/P&gt;&lt;P&gt;    macro_check_value v_menge.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_eket-eindt.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekko-bukrs.&lt;/P&gt;&lt;P&gt;    macro_check_value v_knttp.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekkn-sakto.&lt;/P&gt;&lt;P&gt;    macro_check_value lt_ekpo-mwskz.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;*output string&lt;/P&gt;&lt;P&gt;    lt_ekko-lv_record_identifier2 = '120'.&lt;/P&gt;&lt;P&gt;    lt_ekko-lv_org_id1 = '1744'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE lt_ekko-lv_record_identifier2&lt;/P&gt;&lt;P&gt;                lt_ekko-lv_org_id1&lt;/P&gt;&lt;P&gt;                v_vrtkz&lt;/P&gt;&lt;P&gt;                lt_ekko-ebeln&lt;/P&gt;&lt;P&gt;                lt_ekko-lifnr&lt;/P&gt;&lt;P&gt;                lt_ekko-name1&lt;/P&gt;&lt;P&gt;                v_total&lt;/P&gt;&lt;P&gt;                lt_ekko-aedat&lt;/P&gt;&lt;P&gt;                lt_ekko-zsrm_pcnum&lt;/P&gt;&lt;P&gt;                lt_ekpo-afnam&lt;/P&gt;&lt;P&gt;                lt_ekpo-txz01&lt;/P&gt;&lt;P&gt;                v_netwr&lt;/P&gt;&lt;P&gt;                v_vproz&lt;/P&gt;&lt;P&gt;                v_menge&lt;/P&gt;&lt;P&gt;                lt_eket-eindt&lt;/P&gt;&lt;P&gt;                lt_ekko-bukrs&lt;/P&gt;&lt;P&gt;                v_knttp&lt;/P&gt;&lt;P&gt;                lt_ekkn-sakto&lt;/P&gt;&lt;P&gt;                lt_ekpo-mwskz&lt;/P&gt;&lt;P&gt;              INTO output_string3&lt;/P&gt;&lt;P&gt;          SEPARATED BY c_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF v_vrtkz = 'M'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT lt_ekkn WHERE ebeln = lt_ekpo-ebeln&lt;/P&gt;&lt;P&gt;                      AND   ebelp = lt_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MOVE: lt_ekkn-vproz TO v_vproz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CASE lt_ekpo-knttp.&lt;/P&gt;&lt;P&gt;          WHEN 'K'.&lt;/P&gt;&lt;P&gt;            MOVE lt_ekkn-kostl TO v_knttp.&lt;/P&gt;&lt;P&gt;          WHEN 'P'.&lt;/P&gt;&lt;P&gt;            MOVE lt_ekkn-ps_psp_pnr TO v_knttp.&lt;/P&gt;&lt;P&gt;          WHEN  'O'.&lt;/P&gt;&lt;P&gt;            MOVE lt_ekkn-aufnr TO v_knttp.&lt;/P&gt;&lt;P&gt;          WHEN OTHERS.&lt;/P&gt;&lt;P&gt;            MOVE lt_ekpo-knttp TO v_knttp.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SHIFT v_vproz LEFT DELETING LEADING space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CONCATENATE lt_ekko-lv_record_identifier2&lt;/P&gt;&lt;P&gt;                    lt_ekko-lv_org_id1&lt;/P&gt;&lt;P&gt;                    v_vrtkz&lt;/P&gt;&lt;P&gt;                    lt_ekko-ebeln&lt;/P&gt;&lt;P&gt;                    lt_ekko-lifnr&lt;/P&gt;&lt;P&gt;                    lt_ekko-name1&lt;/P&gt;&lt;P&gt;                    v_total&lt;/P&gt;&lt;P&gt;                    lt_ekko-aedat&lt;/P&gt;&lt;P&gt;                    lt_ekko-zsrm_pcnum&lt;/P&gt;&lt;P&gt;                    lt_ekpo-afnam&lt;/P&gt;&lt;P&gt;                    lt_ekpo-txz01&lt;/P&gt;&lt;P&gt;                    v_netwr&lt;/P&gt;&lt;P&gt;                    v_vproz&lt;/P&gt;&lt;P&gt;                    v_menge&lt;/P&gt;&lt;P&gt;                    lt_eket-eindt&lt;/P&gt;&lt;P&gt;                    lt_ekko-bukrs&lt;/P&gt;&lt;P&gt;                    v_knttp&lt;/P&gt;&lt;P&gt;                    lt_ekkn-sakto&lt;/P&gt;&lt;P&gt;                    lt_ekpo-mwskz&lt;/P&gt;&lt;P&gt;                 INTO output_string6&lt;/P&gt;&lt;P&gt;             SEPARATED BY c_tab.&lt;/P&gt;&lt;P&gt;        &amp;lt;b&amp;gt;TRANSLATE output_string6 USING '% '.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;        WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; output_string6.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      &amp;lt;b&amp;gt;TRANSLATE output_string3 USING '% '.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;      WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; output_string3.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*concatenate for Organization Footer Record&lt;/P&gt;&lt;P&gt;CONCATENATE lv_record_identifier3&lt;/P&gt;&lt;P&gt;            lv_org_id2&lt;/P&gt;&lt;P&gt;            lv_org_name1&lt;/P&gt;&lt;P&gt;            lv_detail_record_count&lt;/P&gt;&lt;P&gt;            INTO output_string4&lt;/P&gt;&lt;P&gt;    SEPARATED BY c_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; output_string4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*concatenate for File Footer Record&lt;/P&gt;&lt;P&gt;CONCATENATE lv_record_identifier4&lt;/P&gt;&lt;P&gt;            lv_extract_record_count&lt;/P&gt;&lt;P&gt;            lv_file_record_count&lt;/P&gt;&lt;P&gt;            INTO output_string5&lt;/P&gt;&lt;P&gt;   SEPARATED BY c_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; output_string5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: vj bb&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2006 06:26:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/tab-space/m-p/1383115#M186786</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-29T06:26:33Z</dc:date>
    </item>
    <item>
      <title>Re: Tab space</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/tab-space/m-p/1383116#M186787</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First some minor remark: if you are in a newer release, use a class to define the 'tab':&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;  class cl_abap_char_utilities definition load.
  data: l_field_seperator.
  l_field_seperator = cl_abap_char_utilities=&amp;gt;horizontal_tab.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Then you have a char1 field with the tabulator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But looking at your code: why do you concatenate at all? You make an effort to assign % to empty fields, later you convert them back to space...&lt;/P&gt;&lt;P&gt;I would use a fixed structure. If you would like to have separators, I would include as every second field a sep01, sep02, sep03... which will be filled with '|', ' ', or the tabulator (just as you like).&lt;/P&gt;&lt;P&gt;Then you have a fixed field width - if you prefer to have shrinked display, just move this structure into a char255 field and use statement condense -&amp;gt; separatores like '|' will remain, but empty texts like ekpo-txz01 will be smaller.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In newer releases (700?) the concatenate has an option 'respecting blanks' -&amp;gt; you don't need the macros any longer, even if you stay with the concatenate version.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Christian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jun 2006 09:42:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/tab-space/m-p/1383116#M186787</guid>
      <dc:creator>christian_wohlfahrt</dc:creator>
      <dc:date>2006-06-29T09:42:40Z</dc:date>
    </item>
  </channel>
</rss>

