So if you are using ACL DirectLink to do a full table extraction out of SAP, it will create an ACL Table whose fieldnames are prefixed with
%TABLENAME%_
, so for example BUKRS from BSAK ends up as BSAK_BUKRS. When you are using DirectLink as an ETL shim to export a flatfile extraction, you sometimes want the native field names instead, without prefixes (Careful: if you have specified a server side join in DirectLink, it will use the tablename prefix to distinguish between the same fieldname in two different tables from the resulting join, for example: BKPF_BUKRS, BSAK_BUKRS. Of course, server side joins are to be avoided when doing this type of dump anyway).
From the ACL project, extract the table definition:
BSAK_MANDT UNICODE 1 6 AS "Accounting: Secondary Index for Vendors (Cleared Items);Client"
BSAK_BUKRS UNICODE 7 8 AS "Accounting: Secondary Index for Vendors (Cleared Items);Company Code"
BSAK_LIFNR UNICODE 15 20 AS "Accounting: Secondary Index for Vendors (Cleared Items);Account Number of Vendor or Creditor"
BSAK_UMSKS UNICODE 35 2 AS "Accounting: Secondary Index for Vendors (Cleared Items);Special G/L Transaction Type"
BSAK_UMSKZ UNICODE 37 2 AS "Accounting: Secondary Index for Vendors (Cleared Items);Special G/L Indicator"
BSAK_AUGDT DATETIME 39 16 PICTURE "YYYYMMDD" AS "Accounting: Secondary Index for Vendors (Cleared Items);Clearing Date"
BSAK_AUGBL UNICODE 55 20 AS "Accounting: Secondary Index for Vendors (Cleared Items);Document Number of the Clearing Document"
...
etc
$ awk '{print $1}' bsak_all.txt | while read line; do echo "DELETE FIELD " $(echo $line | sed 's/[^_]*_\(.*\)/\1/') " OK" && echo "DEFINE FIELD " $(echo $line | sed 's/[^_]*_\(.*\)/\1/') " COMPUTED " $line && echo; done