Ansicht
Dokumentation

FTXW0001 - DART: Fill additional fields in SAP export structures

FTXW0001 - DART: Fill additional fields in SAP export structures

Vendor Master (General Section)   ROGBILLS - Synchronize billing plans  
This documentation is copyright by SAP AG.
SAP E-Book

Filling customer defined fields

Overview

If activated, this function exit is called for every record that is being exported to a data extract. The exit can be used to fill additional fields that are not part of the source table and to convert numeric fields to a character representation.

Adding fields

Every export structure is delivered with an empty customer include. For example, the FI document header structure TXW_FI_HD has customer include CI_FI_HD. To add fields, display the structure in the Data Dictionary and double-click the ".INCLUDE CI_FI_HD" entry. You are prompted to create table/structure CI_FI_HD. Click the "Structure" button and enter the desired fields. If you simply need additional fields from the corresponding BKPF source table, you must use the same field names as in BKPF. If the source field is numeric, the target field in the structure must have the same name, but must be of character type with a sufficient length. Activate the structure. You can ignore warnings that field names are not within the customer range.

If the fields you added are character fields and have the same name as in the source table, you are done. The added fields will be filled automatically, and no additional coding is required (technically, the export structure is filled with a MOVE-CORRESPONDING command).

You only need to create a function exit for fields that are not in the source table, and for numeric fields. Numeric fields need to be converted to a character representation. Numeric fields have one of the following data types:

Data type Description Example
CURR Currency value BSEG-DMBTR
QUAN Quantity value BSEG-ERFMG
DEC Decimal value BSEG-BLNPZ
FLTP Floating point value
INT1, INT2, INT4 Integer value

The data type is defined in the domain of a field (Data Dictionary). To convert numeric values to character representation, you can use subroutines that are delivered with the software; examples can be found in the SAP template for the function exit (see below).

Creating the function exit

Extension FTXW0001 consists of a function exit to fill fields of export structures. The extraction utility reads the source tables, moves each record to the corresponding export structure, calls the function exit, and then exports the record via the export structure to the data extract file.

Follow the instructions in the help documentation of this transaction (CMOD) to create the function exit and copy in a program template (SAP source code example).

Function exit interface

The function exit receives the name of the current export structure (parameter EXPORT_STRUCTURE) and the record that is to be exported (parameter EXPORT_RECORD).

The export record contains the field values from the source tables. The function exit can modify the record. The export record is passed by reference, so all changes made in the function exit are automatically known in the calling extraction utility.

Example: For the source table BSEG only those fields are filled that are also in the export structure TXW_FI_POS. You can access the BSEG work area directly in the function exit. The function exit must declare the required source tables with a TABLES statement.

The archive retrieval tables include the corresponding export structures by reference. This implies that customer added fields are automatically included in the archive retrieval tables. When the extraction utility reads from the archive retrieval tables, the resulting data records are moved to the work area of the corresponding source table. Example: Data records from the retrieval table TXW_S_BSEG are moved to the BSEG work area.

Example coding

The following example coding has been adapted from the SAP template. The following subroutines to convert numeric fields to character format are delivered with the software:

WRITE_CURRENCY convert currency values
WRITE_QUANTITY convert quantity values
WRITE_DECIMAL_VALUE convert decimal values

The conversion of currency and quantity values is based on the currency and quantity unit, respectively. The value plus the unit is passed to the conversion subroutine. The unit is often stored together with the value in the source table, but it can also be stored in master data. The coding below gives an example how a currency unit is read from master data in an efficient way (subroutine GET_CUNIT_ANEP_SAFAB; the coding for this subroutine must be in a separate include program ZXTXWZZZ).


*----------------------------------------------------------------------*
*   INCLUDE ZXTXWU01                                                   *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Example coding for function module EXIT_SAPLTXW2_001:                *
* Fill customer fields in SAP structures                               *
*----------------------------------------------------------------------*

** Function exit interface:
** import:   EXPORT_STRUCTURE - name of export structure
** changing: EXPORT_RECORD    - data record
**           in:  all standard fields are filled and those customer
**                fields that have the same name as a source table field
**           out: in addition, customer fields are filled


* Table declarations (only list tables where fields are needed below).
* - Note that table work areas are global; the source table work areas
*   are always filled from the calling program and can be used in
*   this exit function.
* (declare here or, better, in global data; see CMOD help)

TABLES: BKPF,                          "source table for TXW_FI_HD
        BSEG,                          "source table for TXW_HD_POS
        ANEP.                          "source table for TXW_AS_POS

* work areas
DATA: WA_TXW_FI_HD  LIKE TXW_FI_HD,    "FI document header
      WA_TXW_FI_POS LIKE TXW_FI_POS,   "FI document position
      WA_TXW_AS_POS LIKE TXW_AS_POS.   "AM Asset document position

DATA: CURRENCY_UNIT LIKE TCURC-WAERS.


CASE EXPORT_STRUCTURE.

* add WHEN block for each structure where customer specific fields
* need to filled  (to use FORM routines, see CMOD help)

  WHEN 'TXW_FI_HD'.                    "FI document header
    WA_TXW_FI_HD = EXPORT_RECORD.      "copy record to local structure
*   convert a decimal value to string:
    BKPF-KURSF = WA_TXW_FI_HD-KURSF.
    PERFORM WRITE_DECIMAL_VALUE
            USING BKPF-KURSF           "decimal value
                  WA_TXW_FI_HD-KURSF.  "value converted to character
    EXPORT_RECORD = WA_TXW_FI_HD.      "copy structure back to record

  WHEN 'TXW_FI_POS'.                   "FI document positon
    WA_TXW_FI_POS = EXPORT_RECORD.     "copy record to local structure
*   convert quantity value to string:
    BSEG-ERFMG = WA_TXW_FI_POS-ERFMG.
    PERFORM WRITE_QUANTITY
            USING BSEG-ERFMG           "quantity amount
                  BSEG-ERFME           "quantity unit
                  WA_TXW_FI_POS-ERFMG. "value converted to character
    EXPORT_RECORD = WA_TXW_FI_POS.     "copy structure back to record

  WHEN 'TXW_AS_POS'.                   "AM Asset document position
    WA_TXW_AS_POS = EXPORT_RECORD.
*   get currency unit from master data
    PERFORM GET_CUNIT_ANEP_SAFAB
            USING    WA_TXW_AS_POS-BUKRS
                     WA_TXW_AS_POS-AFABE
            CHANGING CURRENCY_UNIT.
*   convert currency value to string:
    ANEP-SAFAB = WA_TXW_AS_POS-SAFAB.
    PERFORM WRITE_CURRENCY
            USING ANEP-SAFAB           "currency value
                  CURRENCY_UNIT        "currency unit
                  WA_TXW_AS_POS-SAFAB. "value converted to character
    EXPORT_RECORD = WA_TXW_AS_POS.     "copy structure back to record


ENDCASE.

....

*----------------------------------------------------------------------*
*   INCLUDE ZXTXWZZZ                                                   *
*----------------------------------------------------------------------*

* DART: form routines for user exits
*&---------------------------------------------------------------------*
*&      Form  GET_CUNIT_ANEP_SAFAB
*&---------------------------------------------------------------------*
*       get currency unit for ANEP-SAFAB                               *
*----------------------------------------------------------------------*
*  -->  P_BUKRS        company code
*  -->  P_AFABE        depreciation area
*  <--  P_CUNIT        currency unit
*----------------------------------------------------------------------*
FORM GET_CUNIT_ANEP_SAFAB
     USING    P_BUKRS LIKE TXW_AS_POS-BUKRS
              P_AFABE LIKE TXW_AS_POS-AFABE
     CHANGING P_CUNIT LIKE TCURC-WAERS.

  TABLES: T093B.

* buffer table
  STATICS: BEGIN OF BUF_T093B OCCURS 0,
           BUKRS LIKE T093B-BUKRS,
           AFABE LIKE T093B-AFABE,
           WAERS LIKE T093B-WAERS,
           END   OF BUF_T093B.

* first check if information is in global table work area
  IF T093B-BUKRS = P_BUKRS AND
     T093B-AFABE = P_AFABE.
    P_CUNIT = T093B-WAERS.
  ELSE.
*   read information from buffer
    READ TABLE BUF_T093B BINARY SEARCH
         WITH KEY BUKRS = P_BUKRS
                  AFABE = P_AFABE.
    IF SY-SUBRC &lt;&gt; 0.                  "not found in buffer table
*     insert to buffer table (sorted)
      BUF_T093B-BUKRS = P_BUKRS.
      BUF_T093B-AFABE = P_AFABE.
      SELECT SINGLE WAERS FROM T093B INTO BUF_T093B-WAERS
             WHERE BUKRS = P_BUKRS
               AND AFABE = P_AFABE.
      INSERT BUF_T093B INDEX SY-TABIX.
    ENDIF.
    P_CUNIT = BUF_T093B-WAERS.
  ENDIF.

ENDFORM.                    " GET_CUNIT_ANEP_SAFAB






CL_GUI_FRONTEND_SERVICES - Frontend Services   Vendor Master (General Section)  
This documentation is copyright by SAP AG.

Length: 16341 Date: 20240425 Time: 071522     sap01-206 ( 147 ms )