Transformations conversion to ABAP OO

Hi Gurus,
I am trying to convert one of the HR Personnel Administration (PA) update rule to Transformation. How to convert the below code to ABAP OO.
I know perform and form sub routines doesn't work in ABAP OO.
DATA: ULTIMO LIKE SY-DATUM.
  IF G_RECORD_NO <> RECORD_NO.
    G_RECORD_NO = RECORD_NO.
    CLEAR: EMPLOYEE_MD, PERSON_MD.
    CLEAR: EMPLOYEE_WA, PERSON_WA.
  ENDIF.
  PERFORM CALCULATE_ULTIMO
          using COMM_STRUCTURE-calmonth
                 RECORD_NO
                 RECORD_ALL
                 SOURCE_SYSTEM
          CHANGING ULTIMO
                   RETURNCODE.
  PERFORM READ_MD_PERSON
          using    COMM_STRUCTURE-employee
                   COMM_STRUCTURE-calmonth
                   RECORD_NO
                   RECORD_ALL
                   SOURCE_SYSTEM
          CHANGING EMPLOYEE_WA
                   PERSON_WA
                   RETURNCODE.
  EMPLOYEE_MD = EMPLOYEE_WA.
  PERSON_MD   = PERSON_WA.
  IF NOT PERSON_MD-DATEBIRTH IS INITIAL.
    RESULT = ULTIMO0(4) - PERSON_MD-DATEBIRTH0(4).
    IF ULTIMO4(4) LT PERSON_MD-DATEBIRTH4(4).
      RESULT = RESULT - 1.
    ENDIF.
  ENDIF.
  RETURNCODE = 0.
Best Regards,
Reddy.

Hi Reddy,
The migration tool is more clean and robust in SAPKW70011 than in SAPKW70010.
If you are not on 11 would recommend that. This is what your transformed rule looks like. The sections in <b>Bold</b> says how it handles the transformation. Sorry to copy the entire code.......just thought it would give you a better idea.
Regards, Uday
Assign points for helpful answers and get one point for yourself.
=======================================================================
PROGRAM trans_routine.
================================================================
      CLASS routine DEFINITION
CLASS lcl_transform DEFINITION.
  PUBLIC SECTION.
Attributs
    DATA:
      p_check_master_data_exist
            TYPE RSODSOCHECKONLY READ-ONLY,
*-    Instance for getting request runtime attributs;
    Available information: Refer to methods of
    interface 'if_rsbk_request_admintab_view'
      p_r_request
            TYPE REF TO if_rsbk_request_admintab_view READ-ONLY.
  PRIVATE SECTION.
    TYPE-POOLS: rsd, rstr.
  Rule specific types
    TYPES:
      BEGIN OF tys_SC_1,
     InfoObject: 0CALMONTH Calendar Year/Month.
        CALMONTH           TYPE /BI0/OICALMONTH,
     InfoObject: 0EMPLOYEE Employee.
        EMPLOYEE           TYPE /BI0/OIEMPLOYEE,
      END   OF tys_SC_1.
    TYPES:
      BEGIN OF tys_TG_1,
     InfoObject: 0AGE Age in Years.
        AGE           TYPE /BI0/OIAGE,
      END   OF tys_TG_1.
$$ begin of global - insert your declaration only below this line  -
$$ end of global - insert your declaration only before this line   -
<b>
    METHODS
      compute_0AGE</b>
        IMPORTING
          request                  type rsrequest
          datapackid               type rsdatapid
          SOURCE_FIELDS              type tys_SC_1
        EXPORTING
          RESULT                   type tys_TG_1-AGE
          monitor                  type rstr_ty_t_monitor
        RAISING
          cx_rsrout_abort
          cx_rsrout_skip_record
          cx_rsrout_skip_val.
METHODS
      invert_0AGE
        IMPORTING
          i_th_fields_outbound         TYPE rstran_t_field_inv
          i_r_selset_outbound          TYPE REF TO cl_rsmds_set
          i_is_main_selection          TYPE rs_bool
          i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set
          i_r_universe_inbound         TYPE REF TO cl_rsmds_universe
        CHANGING
          c_th_fields_inbound          TYPE rstran_t_field_inv
          c_r_selset_inbound           TYPE REF TO cl_rsmds_set
          c_exact                      TYPE rs_bool.
ENDCLASS.                    "routine DEFINITIONTYPES:
============================================================
<b>  BEGIN OF tys_sc_1__rule_38,
     InfoObject: 0CALMONTH Calendar Year/Month.
    calmonth           TYPE /bi0/oicalmonth,
     InfoObject: 0EMPLOYEE Employee.
    employee           TYPE /bi0/oiemployee,
     Field: RECORD Data record number.
    record           TYPE rsarecord,
  END   OF tys_sc_1__rule_38.</b>
==========================================================
Additional declaration for update rule interface
DATA:
  MONITOR       TYPE STANDARD TABLE OF rsmonitor  WITH HEADER LINE,
  MONITOR_RECNO TYPE STANDARD TABLE OF rsmonitors WITH HEADER LINE,
  RECORD_NO     LIKE sy-tabix,
  RECORD_ALL    LIKE sy-tabix,
  SOURCE_SYSTEM LIKE rsupdsimulh-logsys.
global definitions from update rules
DATA:   employee_md LIKE /bi0/memployee,
        employee_wa LIKE /bi0/memployee,
        person_md   LIKE /bi0/mperson,
        person_wa   LIKE /bi0/mperson.
DATA:   g_record_no LIKE sy-tabix.
<b>INCLUDE rs_bct_hr_update_rules_general.
INCLUDE rs_bct_hr_papa_update_rules.
</b>
===========================================================
*&      Form  routine_0005
      text
     -->COMM_STRUCTURE          text
     -->RESULT                  text
     -->RETURNCODE              text
     -->ABORT                   text
     -->RAISING                 text
     -->CX_SY_ARITHMETIC_ERROR  text
     -->CX_SY_CONVERSION_ERROR  text
<b>FORM routine_0005</b>
  USING
    COMM_STRUCTURE TYPE tys_sc_1__rule_38
  CHANGING
    RESULT         TYPE tys_tg_1_full-age
    RETURNCODE     LIKE sy-subrc
    ABORT          LIKE sy-subrc
  RAISING
    cx_sy_arithmetic_error
    cx_sy_conversion_error.
init variables
  RECORD_NO = COMM_STRUCTURE-record.
fill the internal table "MONITOR", to make monitor entries
result value of the routine
  DATA: ultimo LIKE sy-datum.
  IF g_record_no <> RECORD_NO.
    g_record_no = RECORD_NO.
    CLEAR: employee_md, person_md.
    CLEAR: employee_wa, person_wa.
  ENDIF.
  PERFORM calculate_ultimo
          USING COMM_STRUCTURE-calmonth
                 RECORD_NO
                 RECORD_ALL
                 SOURCE_SYSTEM
          CHANGING ultimo
                   RETURNCODE.
  PERFORM read_md_person
          USING    COMM_STRUCTURE-employee
                   COMM_STRUCTURE-calmonth
                   RECORD_NO
                   RECORD_ALL
                   SOURCE_SYSTEM
          CHANGING employee_wa
                   person_wa
                   RETURNCODE.
  employee_md = employee_wa.
  person_md   = person_wa.
  IF NOT person_md-datebirth IS INITIAL.
    RESULT = ultimo0(4) - person_md-datebirth0(4).
    IF ultimo4(4) LT person_md-datebirth4(4).
      RESULT = RESULT - 1.
    ENDIF.
  ENDIF.
if the returncode is not equal zero, the result will not be updated
  RETURNCODE = 0.
if abort is not equal zero, the update process will be canceled
  ABORT = 0.
<b>
ENDFORM.                    "routine_0005</b>
===========================================================================
<b>CLASS lcl_transform IMPLEMENTATION.
  METHOD compute_0AGE.</b>
  IMPORTING
    request     type rsrequest
    datapackid  type rsdatapid
    SOURCE_FIELDS-CALMONTH TYPE /BI0/OICALMONTH
    SOURCE_FIELDS-EMPLOYEE TYPE /BI0/OIEMPLOYEE
   EXPORTING
     RESULT type tys_TG_1-AGE
    DATA:
      MONITOR_REC    TYPE rsmonitor.
$$ begin of routine - insert your code only below this line        -
  Data:
<b>    COMM_STRUCTURE   type tys_SC_1__RULE_38,</b>
    l_subrc          type sy-tabix,
    l_abort          type sy-tabix,
    ls_monitor       TYPE rsmonitor,
    ls_monitor_recno TYPE rsmonitors.
  REFRESH:
    MONITOR.
<b>* Runtime attributs
    SOURCE_SYSTEM  = p_r_request->get_logsys( ).
    MOVE-CORRESPONDING SOURCE_FIELDS to COMM_STRUCTURE.</b>
<b>*  Migrated update rule call
  Perform routine_0005
  USING
    COMM_STRUCTURE
  CHANGING
    RESULT
    l_subrc
    l_abort.</b>
*-- Convert Messages in Transformation format
    LOOP AT MONITOR INTO ls_monitor.
      move-CORRESPONDING ls_monitor to MONITOR_REC.
      append monitor_rec to MONITOR.
    ENDLOOP.
    IF l_subrc <> 0.
      RAISE EXCEPTION TYPE CX_RSROUT_SKIP_RECORD.
    ENDIF.
    IF l_abort <> 0.
      RAISE EXCEPTION TYPE CX_RSROUT_ABORT.
    ENDIF.
  ENDMETHOD.

Similar Messages

  • Patching ST_PI, open conversions in ABAP dictionary

    Hello
    during a patching of ST-21 2008 the tool stops at CHECK_REQUIREMENTS phase with the screen:
    open conversions in ABAP dictionary
    Some open conversion requests still exist in the ABAP Dictionary for the
    following ABAP Dictionary objects. To avoid inconsistencies and loss of 
    data, you must process these conversions first.                                                                               
    Proceed as follows:                                                                               
    - Open a new session.                                                   
    - Start the Database Utility (transaction SE14).                        
    - Correct the inconsistencies for the specified objects.                
    - Repeat the import phase. If no more inconsistencies are found, the    
      import continues.                                                     
    INDEX GLPCA-Z01
    Now , no index exists in dictionary and database but in the past probably it existed and was cancelled . Anyway the table GLPCA is consistent  in database and like runtime object.
    I've activated it again but the problem is always the same
    any idea?
    thanks
    Nicola

    - start transaction SE14
    - use the menue to "DB Requests - Created with import"
    Check if there are any outstanding conversions.
    Markus

  • Conversions in abap

    Hi
    I want to know what are the conversions and what are the different types of conversions in abap
    Regards
    Pavan

    Hi
    A conversion means data that is converted from one format to another format and from one system to another. So when you first implement SAP, you are actually replacing some of your legacy systems, but you are not completely trashing the data. You still need some of that data from the systems that are being replaced. So you pull the data out of your legacy systems and put them on some files. You then want to load that data into your new SAP system. That is when you write some programs which will read that data and load it into SAP. Imagine you had a home grown purchasing system. You are now replacing all that with SAP. But until SAP goes live, you want to keep using your home grown purchasing system. So during go live, you want to transfer the POs from your legacy system to SAP. Now a PO in your legacy system may not have the same fields as a PO in SAP. So you convert the data.
    from sap help....
    Conversion Rules for Elementary Data Types
    There are ten predefined ABAP data types. There are 100 possible type combinations between these elementary data types. ABAP supports automatic type conversion and length adjustment for all of them except type D (date) and type T (time) fields which cannot be converted into each other.
    The following conversion tables define the rules for converting elementary data types for all possible combinations of source and target fields.
    C D F I N P STRING T X XSTRING
    Source Type Character
    Conversion table for source type C
    Target
    Conversion
    C
    The target field is filled from left to right. If it is too long, it is filled with blanks from the right. If it is too short, the contents are truncated from the right.
    D
    The character field must contain an 8-character date in the format YYYYMMDD .
    F
    The contents of the source field must be a valid representation of a type F field as described in Literals.
    N
    Only the digits in the source field are copied. The field is right-justified and filled with trailing zeros.
    I, P
    The source field must contain the representation of a decimal number, that is, a sequence of digits with an optional sign and no more than one decimal point. The source field can contain blanks. If the target field is too short, an overflow may occur. This may cause the system to terminate the program.
    STRING
    The occupied length of the source field is copied. All trailing spaces are truncated.
    T
    The character field must contain a six-character time in HHMMSS format.
    X
    Since the character field must contain a hexadecimal string, the only valid characters are 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. This string is packed as a hexadecimal number, transported left-justified, and filled with zeros or truncated on the right.
    XSTRING
    As for fields of type X, except that the target field is not filled with zeros.
    Source Type Date
    Conversion table for source type D
    Target
    Conversion
    C
    The date is transported left-justified without conversion.
    D
    Transport without conversion.
    F
    The date is converted into a packed number. The packed number is then converted into a floating point number (see corresponding table).
    N
    The date is transported left-justified without conversion and, if necessary, filled with zeros on the right.
    I, P
    The date is converted to the number of days since 01.01.0001.
    STRING
    The date is converted to a character field, which is then converted to a character string.
    T
    Not supported. Results in an error message during the syntax check or in a runtime error.
    X
    The date is converted to the number of days since 01.01.0001 in hexadecimal format.
    XSTRING
    As for fields of type X, except that only significant bytes are copied.
    Source Type Floating Point Number
    Conversion table for source type F
    Target
    Conversion
    C
    The floating point number is converted to the <mantissa>E<exponent> format and transported to the character field. The value of the mantissa lies between 1 and 10 unless the number is zero. The exponent is always signed. If the target field is too short, the mantissa is rounded. The length of the character field must be at least 6 bytes.
    D
    The source field is converted into a packed number. The packed number is then converted into a date field (see corresponding table).
    F
    Transport without conversion.
    N
    The source field is converted into a packed number. The packed number is then converted into a numeric text field (see corresponding table).
    I, P
    The floating point number is converted to an integer or fixed point value and, if necessary, rounded.
    STRING
    As for fields of type C, except that the maximum number of places is used for the mantissa (maximum precision). Despite this, different signs or exponents can lead to different string lengths.
    T
    The source field is converted into a packed number. The packed number is then converted into a time field (see corresponding table).
    X
    The source field is converted into a packed number. The packed number is then converted into a hexadecimal number (see corresponding table).
    XSTRING
    As for fields of type X, except that leading zeros are not copied.
    Source Type Integer
    Type I is always treated in the same way as type P without decimal places. Wherever type P is mentioned, the same applies to type I fields.
    Source Type Numeric Text
    Conversion table for source type N
    Target
    Conversion
    C
    The numeric field is treated like a character field. Leading zeros are retained.
    D
    The numeric field is converted into a character field. The character field is then converted into a date field (see corresponding table).
    F
    The numeric field is converted into a packed number. The packed number is then converted into a floating point number (see corresponding table).
    N
    The numeric field is transported right-justified and filled with zeros or truncated on the left.
    I, P
    The numeric field is interpreted as a number, and transferred to the target field, where it is right-justified, and adopts a plus sign. If the target field is too short, the program may be terminated.
    STRING
    As for fields of type C. The length of the character string matches the length of the numeric text.
    T
    The numeric field is converted into a character field. The character field is then converted into a time field (see corresponding table).
    X
    The numeric field is converted into a packed number. The packed number is then converted into a hexadecimal number (see corresponding table).
    XSTRING
    As for fields of type X, except that leading zeros are not copied.
    Source Type Packed Number
    If the program attribute Fixed point arithmetic is set, the system rounds type P fields according to the number of decimal places or fills them out with zeros.
    Conversion table for source type P
    Target
    Conversion
    C
    The packed field is transported right-justified to the character field, if required with a decimal point. The last position is reserved for the sign. Leading zeros appear as blanks. If the target field is too short, the sign is omitted for positive numbers. If this is still not sufficient, the field is truncated on the left. ABAP indicates the truncation with an asterisk (*). If you want the leading zeros to appear in the character field, use UNPACK instead of MOVE.
    D
    The packed field value represents the number of days since 01.01.0001 and is converted to a date in YYYYMMDD format.
    F
    The packed field is accepted and transported as a floating point number.
    N
    The packed field is rounded if necessary, unpacked, and then transported right-justified. The sign is omitted. If required, the target field is filled with zeros on the left.
    I, P
    A packed field is converted to type I. The resulting four bytes are placed into the target field right-justified. If the target field is too short, an overflow occurs. If the target field is longer, it is filled with zeros on the left.
    STRING
    As for fields of type C, except that leading zeros are not generated.
    T
    The packed field value represents the number of seconds since midnight and is converted to a time in HHMMSS format.
    X
    A packed field is converted to type I. The resulting four bytes are placed into the target field right-justified and in big-endian format. If the target field is too short, it is truncated from the left. If the target field is longer than 4, it is filled with zeros on the left. Negative numbers are represented by the two's complement (= bit complement +1).
    XSTRING
    As for fields of type X, except that leading zeros are not generated.
    Source Type String
    Conversion table for source type STRING
    Target
    Conversion
    C
    The target field is filled from left to right. If it is longer than the string, it is filled with trailing spaces. If it is too short, the contents are truncated from the right.
    D
    The string must contain an 8-character date in the format YYYYMMDD .
    F
    The contents of the string must be a valid representation of a type F field as described in Literals.
    N
    Only digits in the string are copied. The field is right-justified and filled with trailing zeros. If the target field is too short, it is truncated from the left.
    I, P
    The string must contain the representation of a decimal number, that is, a sequence of digits with an optional sign and no more than one decimal point. The source field can contain blanks. If the target field is too short, an overflow may occur. This may cause the system to terminate the program.
    STRING
    The source string is copied to the target string unconverted.
    T
    The string must contain a six-character time in HHMMSS format.
    X
    Since the character field must contain a hexadecimal-character string, the only valid characters are 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. This character string is packed as a hexadecimal number, transported left-justified, and filled with zeros or truncated on the right.
    XSTRING
    As for target fields of type X, except that the field is not filled with zeros.
    Source Type Time
    Conversion table for source type T
    Target
    Conversion
    C
    The source field is transported left-justified without conversion.
    D
    Not supported. Results in an error message during the syntax check or in a runtime error.
    F
    The source field is converted into a packed number. The packed number is then converted into a floating point number (see corresponding table).
    N
    The date is converted into a character field. The character field is then converted into a numeric text field (see corresponding table).
    I, P
    The date is converted to the number of seconds since midnight.
    STRING
    The time is converted to a character field, which is then converted to a character string.
    T
    The date is transported left-justified without conversion and, if necessary, filled with zeros on the right.
    X
    The date is converted to the number of seconds since midnight in hexadecimal format.
    XSTRING
    As for fields of type X, except that only significant bytes are copied.
    Source Type Hexadecimal Field
    Conversion table for source type X
    Target
    Conversion
    C
    The value in the hexadecimal field is converted to a hexadecimal character string, transported left-justified to the target field, and filled with zeros.
    D
    The source field value represents the number of days since 01.01.0001 and is converted to a date in YYYYMMDD format.
    F
    The source field is converted into a packed number. The packed number is then converted into a floating point number (see corresponding table).
    N
    The source field is converted into a packed number. The packed number is then converted into a numeric text field (see corresponding table).
    I, P
    The value of the source field is interpreted as a hexadecimal number. It is converted to a packed decimal number and transported right-justified to the target field. If the hexadecimal field is longer than 4 bytes, only the last four bytes are converted. If it is too short, a runtime error may occur.
    STRING
    As for target fields of type C, except that the field is not filled with zeros. The length of the string is twice the length of the hexadecimal field.
    T
    The source field value represents the number of seconds since midnight and is converted to a time in HHMMSS format.
    X
    The value is transported left-justified and filled with X'00' on the right, if necessary.
    XSTRING
    The hexadecimal field is copied completely – that is, trailing zeros are not truncated.
    Source Type Byte Sequence
    Conversion table for source type XSTRING
    Target
    Conversion
    C
    The value in the byte sequence is converted to a hexadecimal character string, transported left-justified to the target field, and filled with zeros.
    D
    The byte sequence value represents the number of days since 01.01.0001 and is converted to a date in YYYYMMDD format.
    F
    The content of the byte sequence is converted into a packed number. The packed number is then converted into a floating point number (see corresponding table).
    N
    The content of the byte sequence is converted into a packed number. The packed number is then converted into a numeric text field (see corresponding table).
    I, P
    The content of the byte sequence is interpreted as a hexadecimal number. It is converted to a packed decimal number and transported right-justified to the target field. If the byte sequence is longer than 4 bytes, only the last four bytes are converted. If it is too short, a runtime error may occur.
    STRING
    As for target fields of type C, except that the field is not filled with zeros. The length of the string is twice the length of the byte sequence.
    T
    The byte sequence value represents the number of seconds since midnight and is converted to a time in HHMMSS format.
    X
    The byte sequence is transported left-justified and filled with X'00' on the right, if necessary.
    XSTRING
    The source byte sequence is copied to the target byte sequence unconverted.
    Conversion Rules for Internal Tables
    Internal tables can only be converted into other internal tables. You cannot convert them into structures or elementary fields.
    Internal tables are convertible if their line types are convertible. The convertibility of internal tables does not depend on the number of lines.
    Conversion rules for internal tables:
    Internal tables which have internal tables as their line type are convertible if the internal tables which define the line types are convertible.
    Internal tables which have line types that are structures with internal tables as components are convertible according to the conversion rules for structures if the structures are compatible.
    Conversion Rules for Structures
    ABAP has one rule for converting structures that do not contain internal tables as components. There are no conversion rules for structures that contain internal tables. You can only make assignments between structures that are compatible.
    You can combine convertible structures in the following combinations:
    Converting a structure into a non-compatible structure
    Converting elementary fields into structures
    Converting structures into elementary fields
    In each case, the system first converts all the structures concerned to type C fields and then performs the conversion between the two resulting elementary fields. The length of the type C fields is the sum of the lengths of the structure components. This rule applies to all operations using structures that do not contain internal tables.
    If a structure is aligned, the filler fields are also added to the length of the type C field.
    A non-aligned structure without filler fields:
    If you convert a structure into a shorter structure, the original structure is truncated. If you convert a structure into a longer one, the parts at the end are not initialized according to their type, but filled with blanks.
    It can make sense to assign a structure to another, incompatible, structure if, for example, the target structure is shorter than the source, and both structures have the same construction over the length of the shorter structure. However, numeric components of structures that are filled in incompatible assignments may contain nonsensical or invalid values that may cause runtime errors.
    DATA: BEGIN OF FS1,
    INT TYPE I VALUE 5,
    PACK TYPE P DECIMALS 2 VALUE ‘2.26’,
    TEXT(10) TYPE C VALUE ‘Fine text’,
    FLOAT TYPE F VALUE ‘1.234e+05’,
    DATA TYPE D VALUE ‘19950916’,
    END OF FS1.
    DATA: BEGIN OF FS2,
    INT TYPE I VALUE 3,
    PACK TYPE P DECIMALS 2 VALUE ‘72.34’,
    TEXT(5) TYPE C VALUE ‘Hello’,
    END OF FS2.
    WRITE: / FS1-INT, FS1-PACK; FS1-TEXT, FS1-FLOAT, FS1-DATE.
    WRITE: / FS2-INT, FS2-PACK, FS2-TEXT.
    MOVE FS1 TO FS2.
    WRITE: / FS2-INT, FS2-PACK, FS2-TEXT.
    Don't forget to reward if useful...

  • Example of using VALUE/AMOUNT in transformation conversion?

    Does anyone have a good example of using the AMOUNT keyword in a transformation conversion section and the corresponding VALUE keyword in the conversion file formula column? 
    I have a situation where I am running the LoadInfoProvider package and I want to avoid loading records where the Signeddata value is less than zero. 
    Thanks.
    -Amy

    Sorry  Amy,
      I thght you  were using the direct transactional loading from the infocube...as in  here..
    Is there a way to enable delta for BPC transaction loads ?
    -vishal.

  • Simple Transformation XML to ABAP   - error CX_ST_MATCH_ELEMENT

    Hi all,
    I have a problem with a transformation from xml to abap. My XML file (taken from a pdf file) is
    <?xml version="1.0" encoding="iso-8859-1" ?>
    - <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    - <asx:values>
      <NETWORK>E60000000000</NETWORK>
      <OPERAZIONE>0010</OPERAZIONE>
    - <TABELLA>
    - <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">
      <MANDT>300</MANDT>
      <NETWORK>E60000000000</NETWORK>
      <OPERAZIONE>0010</OPERAZIONE>
      <ID_ACT>1</ID_ACT>
      <DESC_ACT>ATTIVITÀ1</DESC_ACT>
      <LONG_TXT></LONG_TXT>
      <MAKE_BUY></MAKE_BUY>
      <WP></WP>
      <EVENTO_TECH></EVENTO_TECH>
      <TIPO_LEGAME></TIPO_LEGAME>
      <CONSEGNA></CONSEGNA>
      </ROW>
    - <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">
      <MANDT>300</MANDT>
      <NETWORK>E60000000000</NETWORK>
      <OPERAZIONE>0010</OPERAZIONE>
      <ID_ACT>2</ID_ACT>
      <DESC_ACT>ATTIVITÀ2</DESC_ACT>
      <LONG_TXT>ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2</LONG_TXT>
      <MAKE_BUY>M</MAKE_BUY>
      <WP></WP>
      <EVENTO_TECH></EVENTO_TECH>
      <TIPO_LEGAME></TIPO_LEGAME>
      <CONSEGNA></CONSEGNA>
      </ROW>
      </TABELLA>
      </asx:values>
      </asx:abap>
    my transformation is
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="ROOT"></tt:root>
      <tt:root name="NETWORK"></tt:root>
      <tt:root name="OPERAZIONE"></tt:root>
      <tt:template>
      <abap>
        <values>
           <network>
               <tt:value ref="NETWORK"></tt:value>
           </network>
           <operazione>
               <tt:value ref="OPERAZIONE"></tt:value>
           </operazione>
           <tabella>
              <tt:loop ref=".ROOT" name="line">
                <mandt>
                  <tt:value ref="$line.mandt"></tt:value>
                </mandt>
                <network>
                  <tt:value ref="$line.network"></tt:value>
                </network>
                <OPERAZIONE>
                  <tt:value ref="$line.OPERAZIONE"></tt:value>
                </OPERAZIONE>
                <ID_ACT>
                  <tt:value ref="$line.ID_ACT"></tt:value>
                </ID_ACT>
                <DESC_ACT>
                  <tt:value ref="$line.DESC_ACT"></tt:value>
                </DESC_ACT>
                <LONG_TXT>
                  <tt:value ref="$line.LONG_TXT"></tt:value>
                </LONG_TXT>
                <MAKE_BUY>
                  <tt:value ref="$line.MAKE_BUY"></tt:value>
                </MAKE_BUY>
                <WP>
                  <tt:value ref="$line.WP"></tt:value>
                </WP>
                <EVENTO_TECH>
                  <tt:value ref="$line.EVENTO_TECH"></tt:value>
                </EVENTO_TECH>
                <TIPO_LEGAME>
                  <tt:value ref="$line.TIPO_LEGAME"></tt:value>
                </TIPO_LEGAME>
                <CONSEGNA>
                  <tt:value ref="$line.CONSEGNA"></tt:value>
                </CONSEGNA>
             </tt:loop>
            </tabella>
          </values>
        </abap>
      </tt:template>
    </tt:transform>
    when I execute my code
    the system dump with this error
    ST_MATCH_FAIL
    excep.  CX_ST_MATCH_ELEMENT
      TRY.
                CALL TRANSFORMATION ('ZT_NETWORK')
                SOURCE XML lv_xml_data_string
                RESULT  network = l_network
                        operazione = l_operazione
                        root = it_data_tmp.
              CATCH cx_sy_conversion_data_loss .
              CATCH cx_xslt_exception INTO xslt_error.
                xslt_message = xslt_error->get_text( ).
                WRITE:/ xslt_message .
            ENDTRY.
    Any help?
    thanks
    enzo

    Enzo Porcasi wrote:
    > I have a problem with a transformation from xml to abap. My XML file (taken from a pdf file) is
    >
    <?xml version="1.0" encoding="iso-8859-1" ?>
    >  <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    >  <asx:values>
    Your XML is strange, it looks like a mix of pdf form content (xfa) and identity transformation (asx).
    Could you explain more ?
    Anyway, I tried to find out the errors (not only cx_st_match_element, that was just a catch missing), it works with the following program. Here are the main issues I have found :
    - always catch exception class cx_st_error when you use simple transformations (it contains cx_st_match_element and all other simple transformation exceptions)
    - xml "asx:abap" and "asx:values" in your input XML are useless, they are only used by identity transformation ("ID"); you may keep them if you want, but I advise you to see why they are in the xml !
    - Use same case in your tags (if xml contains  in the transformation so that it corresponds to the input XML
    - I renamed all abap names with prefix ABAP_ so that to clearly differentiate xml tags and abap field names (so that it is more easy to understand, for every sdn reader; I hope it will help as I didn't find many threads in the forum).
    Simple transformation :
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="ABAP_NETWORK"></tt:root>
      <tt:root name="ABAP_OPERAZIONE"></tt:root>
      <tt:root name="ABAP_TABELLA"></tt:root>
      <tt:template>
        <ROOT>
          <NETWORK>
            <tt:value ref=".ABAP_NETWORK"></tt:value>
          </NETWORK>
          <OPERAZIONE>
            <tt:value ref=".ABAP_OPERAZIONE"></tt:value>
          </OPERAZIONE>
          <TABELLA>
            <tt:loop ref=".ABAP_TABELLA" name="line">
              <ROW>
                <MANDT>
                  <tt:value ref="$line.ABAP_MANDT"></tt:value>
                </MANDT>
                <NETWORK>
                  <tt:value ref="$line.ABAP_NETWORK"></tt:value>
                </NETWORK>
                <OPERAZIONE>
                  <tt:value ref="$line.ABAP_OPERAZIONE"></tt:value>
                </OPERAZIONE>
                <ID_ACT>
                  <tt:value ref="$line.ABAP_ID_ACT"></tt:value>
                </ID_ACT>
                <DESC_ACT>
                  <tt:value ref="$line.ABAP_DESC_ACT"></tt:value>
                </DESC_ACT>
                <LONG_TXT>
                  <tt:value ref="$line.ABAP_LONG_TXT"></tt:value>
                </LONG_TXT>
                <MAKE_BUY>
                  <tt:value ref="$line.ABAP_MAKE_BUY"></tt:value>
                </MAKE_BUY>
                <WP>
                  <tt:value ref="$line.ABAP_WP"></tt:value>
                </WP>
                <EVENTO_TECH>
                  <tt:value ref="$line.ABAP_EVENTO_TECH"></tt:value>
                </EVENTO_TECH>
                <TIPO_LEGAME>
                  <tt:value ref="$line.ABAP_TIPO_LEGAME"></tt:value>
                </TIPO_LEGAME>
                <CONSEGNA>
                  <tt:value ref="$line.ABAP_CONSEGNA"></tt:value>
                </CONSEGNA>
              </ROW>
            </tt:loop>
          </TABELLA>
        </ROOT>
      </tt:template>
    </tt:transform>
    Program and XML included :
    REPORT  zsro2.
    DATA l_network TYPE string.
    DATA l_operazione TYPE string.
    DATA : BEGIN OF lt_data_tmp OCCURS 0,
             abap_mandt      TYPE string,
             abap_network    TYPE string,
             abap_operazione TYPE string,
             abap_id_act     TYPE string,
             abap_desc_act   TYPE string,
             abap_long_txt   TYPE string,
             abap_make_buy   TYPE string,
             abap_wp         TYPE string,
             abap_evento_tech TYPE string,
             abap_tipo_legame TYPE string,
             abap_consegna   TYPE string,
           END OF lt_data_tmp.
    DATA xslt_error TYPE REF TO cx_xslt_exception.
    DATA lo_st_error TYPE REF TO cx_st_error.
    DATA lv_xml_data_string TYPE string.
    DATA xslt_message TYPE string.
    DEFINE conc.
      concatenate lv_xml_data_string &1 into lv_xml_data_string.
    END-OF-DEFINITION.
    *conc '<?xml version="1.0" encoding="iso-8859-1" ?>'.
    *conc '<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">'.
    *conc '  <asx:values>'.
    conc ' <ROOT>'.
    conc '    <NETWORK>E60000000000</NETWORK> '.
    conc '    <OPERAZIONE>0010</OPERAZIONE> '.
    conc '    <TABELLA>'.
    conc '      <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">'.
    conc '        <MANDT>300</MANDT> '.
    conc '        <NETWORK>E60000000000</NETWORK> '.
    conc '        <OPERAZIONE>0010</OPERAZIONE> '.
    conc '        <ID_ACT>1</ID_ACT> '.
    conc '        <DESC_ACT>ATTIVITÀ1</DESC_ACT> '.
    conc '        <LONG_TXT></LONG_TXT> '.
    conc '        <MAKE_BUY></MAKE_BUY> '.
    conc '        <WP></WP> '.
    conc '        <EVENTO_TECH></EVENTO_TECH> '.
    conc '        <TIPO_LEGAME></TIPO_LEGAME> '.
    conc '        <CONSEGNA></CONSEGNA> '.
    conc '      </ROW>'.
    conc '      <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">'.
    conc '        <MANDT>300</MANDT> '.
    conc '        <NETWORK>E60000000000</NETWORK> '.
    conc '        <OPERAZIONE>0010</OPERAZIONE> '.
    conc '        <ID_ACT>2</ID_ACT> '.
    conc '        <DESC_ACT>ATTIVITÀ2</DESC_ACT> '.
    conc '        <LONG_TXT>ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2</LONG_TXT> '.
    conc '        <MAKE_BUY>M</MAKE_BUY> '.
    conc '        <WP></WP> '.
    conc '        <EVENTO_TECH></EVENTO_TECH> '.
    conc '        <TIPO_LEGAME></TIPO_LEGAME> '.
    conc '        <CONSEGNA></CONSEGNA> '.
    conc '      </ROW>'.
    conc '    </TABELLA>'.
    conc ' </ROOT>'.
    *conc '  </asx:values>'.
    *conc '</asx:abap>'.
    DATA lv_xml_data_string_2 TYPE string.
    TRY.
        CALL TRANSFORMATION zsro
              SOURCE
                XML lv_xml_data_string
              RESULT
                abap_network    = l_network
                abap_operazione = l_operazione
                abap_tabella    = lt_data_tmp[].
      CATCH cx_sy_conversion_data_loss .
      CATCH cx_st_error INTO lo_st_error.
        xslt_message = lo_st_error->get_text( ).
        WRITE:/ xslt_message .
      CATCH cx_xslt_exception INTO xslt_error.
        xslt_message = xslt_error->get_text( ).
        WRITE:/ xslt_message .
    ENDTRY.
    BREAK-POINT.

  • Simple Transformation XML to ABAP Content of tag with subtrees to string field

    Hi,
    I have an  requirement in which I have to do a transformation from an XML file to an structure.
    I need get the value of a tag that have subtrees and move that to a field in my structure.
    Example:
    <TAG1>value1</TAG1>
    <TAG2>value2</TAG2>
    <TAG3>
         <TAG4>value4</TAG4>
         <TAG5>value5</TAG5>
    </TAG3>
    Result expected in ABAP Structure:
    field1 -> tag1
    field2 -> tag2
    field3 -> <TAG4>value4</TAG4><TAG5>value5</TAG5>
    The contents of the tag TAG3 is variable, so I want to store it as a string.
    Can I make this with Simple Transformation?
    In my tests I can move only the value of each child tag for the given field structure.
    This syntax dont work:
    <TAG3 tt:value-ref="STRUCTURE.FIELD3"/>
    Thanks and Regards,
    Miguel Motta

    Hi Miguel
    Have a look at below snippets. Here I have tried to escape the text inside TAG3 so that it gets treated as single node during transformation.
    ABAP code
    DATA: BEGIN OF result,
            col1 TYPE string,
            col2 TYPE string,
            col3 TYPE string,
          END OF result.
    DATA: xml_string TYPE string VALUE
    '<ROOT> <TAG1>value1</TAG1> <TAG2>value2</TAG2> <TAG3> <TAG4>value4</TAG4> <TAG5>value5</TAG5> </TAG3> </ROOT>',
          part1 TYPE string,
          part2 TYPE string,
          part3 TYPE string.
    *   Escape the text inside TAG3 tag
    FIND REGEX '(.*<TAG3>)(.*)(</TAG3>.*)' IN xml_string SUBMATCHES part1 part2 part3.
    IF sy-subrc EQ 0.
      part2 = escape( val = part2 format = cl_abap_format=>e_xml_text ).
    *      REPLACE ALL OCCURRENCES OF '<' IN part2 WITH '&lt;'.
    *      REPLACE ALL OCCURRENCES OF '>' IN part2 WITH '&gt;'.
      xml_string = part1 && part2 && part3.
    ENDIF.
    TRY.
    * Display xml
        cl_abap_browser=>show_xml( EXPORTING xml_string = xml_string ).
    * Deserialization
        CALL TRANSFORMATION zmtest
          SOURCE XML xml_string
          RESULT para = result.
    * Check result
        WRITE:/ 'COL1=', result-col1,
              / 'COL2=', result-col2,
              / 'COL3=', result-col3.
      CATCH cx_st_error.
    * Error handling
        MESSAGE 'Error in Simple Transformation'
                TYPE 'I' DISPLAY LIKE 'E'.
    ENDTRY.
    Transformation code
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates" template="temp" version="0.1">
       <tt:root name="PARA"/>
       <tt:template name="temp">
         <ROOT>
           <TAG1>
             <tt:value ref="PARA.COL1"/>
           </TAG1>
           <TAG2>
             <tt:value ref="PARA.COL2"/>
           </TAG2>
           <TAG3>
             <tt:value ref="PARA.COL3"/>
           </TAG3>
         </ROOT>
       </tt:template>
    </tt:transform>

  • Simple transformation XML to ABAP, runtime error: CX_ST_REF_ACCESS

    Hi, all experts,
    I got a runtime error CX_ST_REF_ACCESS, while I tried to use Simple Transformation to transfer XML-String to ABAP internal table.
    Can anybody help me to fix the problem? Thanks very much. It's urgent.
    The code of transformation like this:
    <tt:root name="DATA"/>
      <tt:template>
        <node>
          <tt:deserialize>
            <tt:loop ref=".DATA" name="mdr_data">
              <tt:attribute name="type">
                <tt:value ref="$mdr_data.lf_type"/>
              </tt:attribute>
              <tt:attribute name="objid">
                <tt:value ref="$mdr_data.lf_objid"/>
              </tt:attribute>
              <tt:attribute name="name" value-ref="$mdr_data.lf_name"/>
              <tt:attribute name="short" value-ref="$mdr_data.lf_short"/>
            </tt:loop>
          </tt:deserialize>
        </node>
      </tt:template>
    The Data-structure in my Report:
    DATA: BEGIN OF ls_mdr_data,
            lf_type TYPE /ehr/ct_dt_bo_type,
            lf_objid TYPE realo,
            lf_name TYPE stext,
            lf_short TYPE short_d,
          END OF ls_mdr_data,
         lt_result_data like TABLE OF ls_mdr_data.
    If I call the transformation use the XML-String like:
    <node type="MDRFOLDER" objid="50016122" name="MDR Root Folder" short="MDR Root"/>
    I got the  error  CX_ST_REF_ACCESS:
    Error analysis
        An exception occurred that is explained in detail below.
        The exception, which is assigned to class 'CX_ST_REF_ACCESS', was not  caught and
        therefore caused a runtime error.
        The reason for the exception is:
        The goal was to access variable "LF_TYPE". However, this access was not
        possible.

    Hi, all experts,
    I got a runtime error CX_ST_REF_ACCESS, while I tried to use Simple Transformation to transfer XML-String to ABAP internal table.
    Can anybody help me to fix the problem? Thanks very much. It's urgent.
    The code of transformation like this:
    <tt:root name="DATA"/>
      <tt:template>
        <node>
          <tt:deserialize>
            <tt:loop ref=".DATA" name="mdr_data">
              <tt:attribute name="type">
                <tt:value ref="$mdr_data.lf_type"/>
              </tt:attribute>
              <tt:attribute name="objid">
                <tt:value ref="$mdr_data.lf_objid"/>
              </tt:attribute>
              <tt:attribute name="name" value-ref="$mdr_data.lf_name"/>
              <tt:attribute name="short" value-ref="$mdr_data.lf_short"/>
            </tt:loop>
          </tt:deserialize>
        </node>
      </tt:template>
    The Data-structure in my Report:
    DATA: BEGIN OF ls_mdr_data,
            lf_type TYPE /ehr/ct_dt_bo_type,
            lf_objid TYPE realo,
            lf_name TYPE stext,
            lf_short TYPE short_d,
          END OF ls_mdr_data,
         lt_result_data like TABLE OF ls_mdr_data.
    If I call the transformation use the XML-String like:
    <node type="MDRFOLDER" objid="50016122" name="MDR Root Folder" short="MDR Root"/>
    I got the  error  CX_ST_REF_ACCESS:
    Error analysis
        An exception occurred that is explained in detail below.
        The exception, which is assigned to class 'CX_ST_REF_ACCESS', was not  caught and
        therefore caused a runtime error.
        The reason for the exception is:
        The goal was to access variable "LF_TYPE". However, this access was not
        possible.

  • SQL Command conversion in abap code

    Hi,
    I want to implement the UNION, INTERSECT and MINUS SQL commands in abap code. Please give me the appropriate solutions asap.
    For Example:
    select field1, field2, . field_n
    from tables
    <b>UNION</b>
    select field1, field2, . field_n
    from tables;
    select field1, field2, . field_n
    from tables
    <b>MINUS</b>
    select field1, field2, . field_n
    from tables;
    select field1, field2, . field_n
    from tables
    <b>INTERSECT</b>
    select field1, field2, . field_n
    from tables;
    Thanks,
    Ravi

    Hi Ravi
    Check out this procedure...
    DATA: FRANKFURT(4) TYPE X,
          FRISCO(4)    TYPE X,
          INTERSECT(4) TYPE X,
          UNION(4)     TYPE X,
          BIT          TYPE I.
    DATA: CARRID TYPE SPFLI-CARRID,
          CARRIER LIKE SORTED TABLE OF CARRID
                              WITH UNIQUE KEY TABLE LINE.
    DATA WA TYPE SPFLI.
    SELECT CARRID FROM SCARR INTO TABLE CARRIER.
    SELECT CARRID CITYFROM FROM SPFLI
                           INTO CORRESPONDING FIELDS OF WA.
      WRITE: / WA-CARRID, WA-CITYFROM.
      READ TABLE CARRIER FROM WA-CARRID TRANSPORTING NO FIELDS.
      CASE WA-CITYFROM.
        WHEN 'FRANKFURT'.
          SET BIT SY-TABIX OF FRANKFURT.
        WHEN 'SAN FRANCISCO'.
          SET BIT SY-TABIX OF FRISCO.
      ENDCASE.
    ENDSELECT.
    INTERSECT = FRANKFURT BIT-AND FRISCO.
    UNION     = FRANKFURT BIT-OR  FRISCO.
    SKIP.
    WRITE 'Airlines flying from Frankfurt and San Francisco:'.
    DO 32 TIMES.
      GET BIT SY-INDEX OF INTERSECT INTO BIT.
        IF BIT = 1.
          READ TABLE CARRIER INDEX SY-INDEX INTO CARRID.
          WRITE CARRID.
        ENDIF.
    ENDDO.
    SKIP.
    WRITE 'Airlines flying from Frankfurt or San Francisco:'.
    DO 32 TIMES.
      GET BIT SY-INDEX OF UNION INTO BIT.
        IF BIT = 1.
          READ TABLE CARRIER INDEX SY-INDEX INTO CARRID.
          WRITE CARRID.
        ENDIF.
    ENDDO.
    This produces the following output list:
    The program uses four hexadecimal fields with length 4 - FRANKFURT, FRISCO, INTERSECT, and UNION. Each of these fields can represent a set of up to 32 elements. The basic set is the set of all airlines from database table SCARR. Each bit of the corresponding bit sequences representes one airline. To provide an index, the external index table CARRIER is created and filled with the airline codes from table SCARR. It is then possible to identify an airline using the internal index of table CARRIER.
    In the SELECT loop for database table SPFLI, the corresponding bit for the airline is set either in the FRANKFURT field or the FRISCO field, depending on the departure city. The line number SY-TABIX is determined using a READ statement in which no fields are transported.
    The intersection and union of FRANKFURT and FRISCO are constructed using the bit operations BIT-AND and BIT-OR.
    The bits in INTERSECT and UNION are read one by one and evaluated in two DO loops. For each position in the fields with the value 1, a READ statement retrieves the airline code from the table CARRIER.
    Comparing Bit Sequences
    Use the following three operators to compare the bit sequence of the first operand with that of the second:
    <operator>
    Meaning
    O
    bits are one
    Z
    bits are zero
    M
    bits are mixed
    The second operand must have type X. The comparison takes place over the length of the second operand. The first operand is not converted to type X.
    The function of the operators is as follows:
    O (bits are one)
    The logical expression
    <f> O <hex>
    is true if the bit positions that are 1 in <hex>, are also 1 in <f>. In terms of set operations with bit sequences, this comparison is the same as finding out whether the set represented by <hex> is a subset of that represented by <f>.
    Z (bits are zero)
    The logical expression
    <f> Z <hex>
    is true if the bit positions that are 1 in <hex>, are 0 in <f>.
    M (bits are mixed)
    The logical expression
    <f> M <hex>
    is true if from the bit positions that are 1 in <hex>, at least one is 1 and one is 0 in <f>.
    Caution: The following programs are no longer supported in Unicode systems:
    REPORT demo_log_expr_bits .
    DATA: text(1) TYPE c VALUE 'C',
          hex(1) TYPE x,
          i TYPE i.
    hex = 0.
    DO 256 TIMES.
      i = hex.
      IF text O hex.
        WRITE: / hex, i.
      ENDIF.
      hex = hex + 1.
    ENDDO.
    The output is as follows:
    00          0
    01          1
    02          2
    03          3
    40         64
    41         65
    42         66
    43         67
    Here, the bit structure of the character 'C' is compared to all hexadecimal numbers HEX between '00' and 'FF' (255 in the decimal system), using the operator O. The decimal value of HEX is determined by using the automatic type conversion during the assignment of HEX to I. If the comparison is true, the hexadecimal number and its decimal value are displayed on the screen. The following table shows the bit sequences of the numbers:
    Thanks
    Ashok

  • XSL Transformation - cut asx:abap and asx:values

    Hey all,
    I'm using a XSL Transformation to create a XML-File from an internal table.
    My problem is, that the transformation automatically puts the two tags "<asx:abap xmlns:asx="http://www.sap.com/abapxml">" and "<asx:values>" at the beginning of my file (or string):
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <asx:abap xmlns:asx="http://www.sap.com/abapxml">
    <asx:values>
    <ROOT>
    </ROOT>
    </asx:values>
    </asx:abap>
    Does anyone have any idea how I can easily suppress these lines?
    The best course would be of course an XSL statement.
    Thanks and regards,
    Martin.

    Will using a Simple Transformation help your case ?

  • XML to internal table conversion within ABAP mapping class

    I am doing a ABAP mapping for file to Idoc. My requirement is to convert XML file into ABAP internal table (within ABAP mapping class). Is there any standard FM, method, transformation etc, which can be used here.
    Thanks, Dehra

    Dehra,
    Have you seen this weblogs which talks about this:
    /people/r.eijpe/blog/2005/11/10/xml-dom-processing-in-abap-part-i--convert-an-abap-table-into-xml-file-using-sap-dom-approach
    /people/r.eijpe/blog/2005/11/21/xml-dom-processing-in-abap-part-ii--convert-an-xml-file-into-an-abap-table-using-sap-dom-approach
    /people/r.eijpe/blog/2006/02/19/xml-dom-processing-in-abap-part-iiia150-xml-dom-within-sap-xi-abap-mapping
    /people/r.eijpe/blog/2006/02/20/xml-dom-processing-in-abap-part-iiib150-xml-dom-within-sap-xi-abap-mapping
    Hope this helps you....
    ---Satish

  • Regarding Conversion Of ABAP program from non unicode to uni code

    Hi Can you please let me know the procedure for converssion of non unicode to unicode?
    Thanks in advance,
    zubera

    Hi
    The Link will be helpful to you.
    Re: Upgrade 4.6 to ECC - What are the responsibilites
    regarding Unicode influence in Standard programs
    Very good document:
    http://www.doag.org/pub/docs/sig/sap/2004-03/Buhlinger_Maxi_Version.pdf
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d37d1ad9-0b01-0010-ed9f-bc3222312dd8
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/589d18d9-0b01-0010-ac8a-8a22852061a2
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f8e316d9-0b01-0010-8e95-829a58c1511a
    You need to use the transaction UCCHECK.
    The report documentation is here
    ABAP Unicode Scan Tool UCCHECK
    You can use transaction UCCHECK to examine a Unicode program set for syntax errors without having to set the program attribute "Unicode checks active" for every individual program. From the list of Unicode syntax errors, you can go directly to the affected programs and remove the errors. It is also possible to automatically create transport requests and set the Unicode program attribute for a program set.
    Some application-specific checks, which draw your attention to program points that are not Unicode-compatible, are also integrated.
    Selection of Objects:
    The program objects can be selected according to object name, object type, author (TADIR), package, and original system. For the Unicode syntax check, only object types for which an independent syntax check can be carried out are appropriate. The following object types are possibilities:
    PROG Report
    CLAS Class
    FUGR Function groups
    FUGX Function group (with customer include, customer area)
    FUGS Function group (with customer include, SAP area)
    LDBA Logical Database
    CNTX Context
    TYPE Type pool
    INTF Interface
    Only Examine Programs with Non-Activated Unicode Flag
    By default, the system only displays program objects that have not yet set the Unicode attribute. If you want to use UCCHECK to process program objects that have already set the attribute, you can deactivate this option.
    Only Objects with TADIR Entry
    By default, the system only displays program objects with a TADIR entry. If you want to examine programs that don't have a TADIR entry, for example locally generated programs without a package, you can deactivate this option.
    Exclude Packages $*
    By default, the system does not display program objects that are in a local, non-transportable package. If you want to examine programs that are in such a package, you can deactivate this option.
    Display Modified SAP Programs Also
    By default, SAP programs are not checked in customer systems. If you also want to check SAP programs that were modified in a customer system (see transaction SE95), you can activate this option.
    Maximum Number of Programs:
    To avoid timeouts or unexpectedly long waiting times, the maximum number of program objects is preset to 50. If you want to examine more objects, you must increase the maximum number or run a SAMT scan (general program set processing). The latter also has the advantage that the data is stored persistently. Proceed as follows:
    - Call transaction SAMT
    - Create task with program RSUNISCAN_FINAL, subroutine SAMT_SEARCH
    For further information refer to documentation for transaction SAMT.
    Displaying Points that Cannot Be Analyzed Statically
    If you choose this option, you get an overview of the program points, where a static check for Unicode syntax errors is not possible. This can be the case if, for example, parameters or field symbols are not typed or you are accessing a field or structure with variable length/offset. At these points the system only tests at runtime whether the code is sufficient for the stricter Unicode tests. If possible, you should assign types to the variables used, otherwise you must check runtime behavior after the Unicode attribute has been set.
    To be able to differentiate between your own and foreign code (for example when using standard includes or generated includes), there is a selection option for the includes to be displayed. By default, the system excludes the standard includes of the view maintenance LSVIM* from the display, because they cause a large number of messages that are not relevant for the Unicode conversion. It is recommended that you also exclude the generated function group-specific includes of the view maintenance (usually L<function group name>F00 and L<function group name>I00) from the display.
    Similarly to the process in the extended syntax check, you can hide the warning using the pseudo comment ("#EC *).
    Applikation-Specific Checks
    These checks indicate program points that represent a public interface but are not Unicode-compatible. Under Unicode, the corresponding interfaces change according to the referenced documentation and must be adapted appropriately.
    View Maintenance
    Parts of the view maintenance generated in older releases are not Unicode-compatible. The relevant parts can be regenerated with a service report.
    UPLOAD/DOWNLOAD
    The function modules UPLOAD, DOWNLOAD or WS_UPLOAD and WS_DOWNLOAD are obsolete and cannot run under Unicode. Refer to the documentation for these modules to find out which routines serve as replacements.
    Regards
    Anji

  • Hi What are topics involved in Interfaces,Conversions in ABAP?

    Please Explain me.
    Thank u in advance

    Actually I am asking What are Interfaces?
    What are Conversions in the sense of ABAP?
    mean WE r using BDC for transferring from legacy to SAP, Does this a conversion technique?
    Edited by: Srinivasa RAo on Oct 8, 2009 10:15 PM

  • Conversion of ABAP struct to XML and XML back to ABAP structure in ECC

    We would like to convert many ABAP structure and internal tables into an XML string and later on convert these XML strings back to ABAP structures and internal tables. Can someone let us know if there are any function modules in ECC which can import the structures or internal tables and export the XML. Also if there are any function modules which can do the reverse i.e. import the XML string and convert it back to Structure or internal table.
    We found the some method called "Call transformation" but it gives an error such as version not active. CRM has FMs which do these functionalities.
    Any guidance would be appreciated.
    Thanks.

    If you look into the FM's BANK_API_PP_UT_DATA_TO_XML and BANK_API_PP_UT_XML_TO_DATA they again use CALL TRANSFORMATION, so probably u might have to figure how to eliminate the errors ur getting using CALL TRANSFORMATION.

  • Conversion of ABAP procedural ABAP OO in TRs, URs

    Hello:
    We are planning on migrating from NW04 to NW04s n Q3.
    We have a quite bit of ABAP routines in TRs, URs and User Exits.
    We have plans on using 04s Datasource features
    I have following questions:
    1. When Datasource is migrated to 04s, are we forced to migrate existing routines to ABAP OO ?
    2.Is there a tool that converts the existing routines to ABAP OO?
    3.If we are forced to migrate to ABAP OO, What happens to custom ABAP code used to extend extractors in the source system?
    Appreciate your responses
    Vijay

    Hi Vijay,
    from my limited experience with 04s and my not so limited experience with user exits I recommend the following way to handle the upgrade:
    1. Do the upgrade.
    2. Check out the new features and check where you need them. Normally you have a handful of Info-/DataSources where you want to use the new features and dozens of master data sources where you don't need to change the process.
    3. For those DataSources you want to change you should check out if you still want to keep the InfoSources. A transformation can directly connect the DataSource and the InfoProvider but if you load data into multiple InfoProviders you may want to keep the InfoSource.
    4. I wasn't able to check the tool to do the transformation but from my understanding it switches either a transfer rule or an update rule to a transformation and doesn't condense both rules and the InfoSource into a single transformation. (Andreas, is this true?) So you should use this on these UR/TR where you keep the InfoSource.
    5. If you want to skip the InfoSource create a new transformation for your new DS. Here you need to copy and adjust your coding to ABAP OO. But don't worry, it didn't change a lot and you don't need to think about classes and inheritance to do the implementation.
    Best regards
       Dirk

  • Exponential to Numeric Conversion in ABAP

    Hi,
    This is regrardng the conversion of Exponential to Numeric values in ABAP.I have an exponential Value 4.8E+47 .I want to convert to numerical .If i use the Exponential Function ,It is agian yielding another Exponent value.
    If the Power is more than 47,then there could be multiple steps and In all the case ,it is giving exponent values only.
    But I need the numeric value which later should rounded off to 3 decimals.
    Please guide me if there is any Function module or a way to resolve this issue.
    Regards,
    Kranti Yamparala.

    Hey Vikas,
    did you ever try the given FM there? First of all there is no FM called "QSS0_FLTP_TO_CHAR_CONVERSION" in every system, as you maybe take notice of the prefix. There are just these FMs called " CHAR_FLTP_CONVERSION" or "FLTP_CHAR_CONVERSION". Maybe you mean them. But, nevertheless these are not easy to use FM. Maybe you should try and read the other postings in advance.
    As I said in my post - and this is the fastest way - you just have to move. That's all. No FM, no Method no nothing ...
    Just:
    e_output = l_float = i_input.
    Yavuz

Maybe you are looking for

  • Deploying war to weblogic

    Hi, i am trying to deploy war file from jdeveloper to weblogic and i get this error: UCM = the name of the connection that i add to my project. Servlet: "wcmInitServlet" failed to preload on startup in Web application: "UCMTEST.war". oracle.stellent.

  • Photos on ipod nano not synching correctly

    I just received an ipod nano 8g for christmas..i finally learned how to put the music on but am having trouble with the photos..i have a windows vista and have created a folder for the photos i want for my ipod..then i synch them just like they tell

  • Problem in entering gl account in VKOA

    Entry CAIN(chart of account) 0058150000(GL Account no) does not exist in SKA1 - check your entry   in transaction code VKOA

  • Hi, I need help extracting a video in the best HD, got this not so great test:

    Hi everyone, I've recently purchesed the Premiere Elements 9, I use the Panasonic HDC HS700 which is a great camera... I tried like a million times to export a video with different HD settings but I can't find the ultimate to show the real quality of

  • Is it possible to bypass Sun ONE's memory requirement?

    Dose anyone know how to bypass the memory requirement of Sun ONE Application Server at installation time? We have to install Sun ONE on to some of the laptops (for mobility) but some of these laptops have a maximum memory configuration of 192MB, in w