SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

ABAP to genearte XML from a DDIC structure or IDoc type



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP Dictionary
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Mon Feb 16, 2009 1:00 pm    Post subject: ABAP to genearte XML from a DDIC structure or IDoc type Reply with quote

Source from: http: /www.sapfans.com/sapfans/forum/intface/messages/4062.html

The following is a simple ABAP that reads the data structure of a table or an IDoc type (-> WE30) and formats it as an XML document.

Code:
REPORT zaxx_xml_se11 .
************************************************************************
* Collections of routines to convert DDic or IDoc-Defs into XML       *
************************************************************************
TYPE-POOLS: ledid.
TABLES: dd02l, dokhl, dd02t, dd04t, edi_iapi00.
TABLES: edisegmhd.
SELECT-OPTIONS: langu   FOR dokhl-langu.
PARAMETERS: withdocu AS CHECKBOX DEFAULT 'X'.
PARAMETERS: wsfile   LIKE rlgrap-filename DEFAULT 'D:\XML\%.XML'.
PARAMETERS: radattr RADIOBUTTON GROUP def. "Attribute usage
PARAMETERS: radtree RADIOBUTTON GROUP def. "Treestyle
SELECTION-SCREEN ULINE.
PARAMETERS: radtab RADIOBUTTON GROUP sel.
SELECT-OPTIONS: tabname FOR dd02l-tabname DEFAULT 'TVKO'.
SELECTION-SCREEN ULINE.
PARAMETERS: radidoc RADIOBUTTON GROUP sel DEFAULT 'X'.
PARAMETERS: doctyp LIKE edi_iapi00-idoctyp DEFAULT 'ORDERS01'.
DATA: tdd01  LIKE dd01l  OCCURS 0 WITH HEADER LINE.
DATA: tdd02  LIKE dd02l  OCCURS 0 WITH HEADER LINE.
DATA: tdd04  LIKE dd04l  OCCURS 0 WITH HEADER LINE.
DATA: tdd03  LIKE dd03p  OCCURS 0 WITH HEADER LINE.
DATA: tdd03p_struc LIKE dd03p  OCCURS 0 WITH HEADER LINE.
DATA: tdd02l_struc LIKE dd03p  OCCURS 0 WITH HEADER LINE.
DATA: txml   LIKE tline  OCCURS 0 WITH HEADER LINE.
DATA: dcobjdef LIKE dcobjdef.
DATA: tsegstruc TYPE ledid_segment_struct OCCURS 0 WITH HEADER LINE.
DEFINE xml.
  move &1 &2 &3.
  append &3.
END-OF-DEFINITION.
DEFINE xmlstr.
  move &1 &2 &3.
  concatenate '"' &3 '"' into &3.
  append &3.
END-OF-DEFINITION.
DEFINE xmlattr.
  move &2 &3 &4.
  if radattr ne space.
    concatenate &1 '=' '"' &4 '"' into &4.
  else.
    concatenate '<' &1 '>' &4 '</' &1 '>' into &4.
  endif.
  append &4.
END-OF-DEFINITION.

START-OF-SELECTION.
  IF radtab NE space.
    PERFORM main.
  ELSEIF radidoc NE space.
    CHECK NOT doctyp IS INITIAL.
    REPLACE '%' WITH doctyp INTO wsfile.
    CONDENSE wsfile NO-GAPS.
    PERFORM main_idoc_doctyp USING doctyp wsfile.
  ENDIF.
*---------------------------------------------------------------------*
*       FORM MAIN                                                     *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM main_idoc_doctyp USING pdoctyp pfilename.
  PERFORM init.
  PERFORM xml_new.
  PERFORM xml_idoc_doctyp USING pdoctyp.
  PERFORM xml_download USING pfilename.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM MAIN                                                     *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM main.
  PERFORM init.
  PERFORM xml_new.
  SELECT * FROM dd02l INTO TABLE tdd02 WHERE tabname IN tabname.
  LOOP AT tdd02.
    PERFORM xml_tab USING tdd02-tabname.
  ENDLOOP.
  LOOP AT txml.
    WRITE: / txml.
  ENDLOOP.
  PERFORM xml_download USING 'D:\XML\TAB.XML'.
ENDFORM.                               " main.
*---------------------------------------------------------------------*
*       FORM XML_DOWNLOAD                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  PFILENAME                                                     *
*---------------------------------------------------------------------*
FORM xml_download USING pfilename.
  DATA: rlgrap LIKE rlgrap.
  rlgrap-filename = pfilename.
  IF rlgrap-filename IS INITIAL.
    LOOP AT txml.
      WRITE: / txml.
    ENDLOOP.
  ELSE.
    CALL FUNCTION 'WS_DOWNLOAD'
         EXPORTING
*         BIN_FILESIZE            = ' '
              codepage                = ' '
              filename                = rlgrap-filename
*         FILETYPE                = ' '
*         MODE                    = ' '
*         WK1_N_FORMAT            = ' '
*         WK1_N_SIZE              = ' '
*         WK1_T_FORMAT            = ' '
*         WK1_T_SIZE              = ' '
*         COL_SELECT              = ' '
*         COL_SELECTMASK          = ' '
*         NO_AUTH_CHECK           = ' '
*    IMPORTING
*         FILELENGTH              =
         TABLES
              data_tab                = txml
*         FIELDNAMES              =
         EXCEPTIONS
              file_open_error         = 1
              file_write_error        = 2
              invalid_filesize        = 3
              invalid_table_width     = 4
              invalid_type            = 5
              no_batch                = 6
              unknown_error           = 7
              gui_refuse_filetransfer = 8
              OTHERS                  = 9.
  ENDIF.
ENDFORM. " xml_download USING 'D:\XML\TAB.XML'.
*---------------------------------------------------------------------*
*       FORM INIT                                                     *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM init.
  dcobjdef-name = 'DD03P'.
  CALL FUNCTION 'DDIF_TABL_GET'
       EXPORTING
            name          = dcobjdef-name
       TABLES
            dd03p_tab     = tdd03p_struc
       EXCEPTIONS
            illegal_input = 1
            OTHERS        = 2.
  dcobjdef-name = 'DD02L'.
  CALL FUNCTION 'DDIF_TABL_GET'
       EXPORTING
            name          = dcobjdef-name
       TABLES
            dd03p_tab     = tdd02l_struc
       EXCEPTIONS
            illegal_input = 1
            OTHERS        = 2.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM XML_NEW                                                  *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM xml_new.
  REFRESH txml.
  xml '<?xml version="1.0" standalone="yes"?>' to txml.
ENDFORM.                               " xml_new.
*---------------------------------------------------------------------*
*       FORM XML_CREATE                                               *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  PTABNAME                                                      *
*---------------------------------------------------------------------*
FORM xml_tab USING ptabname.
  dcobjdef-name = ptabname.
  CALL FUNCTION 'DDIF_TABL_GET'
       EXPORTING
            name          = dcobjdef-name
       TABLES
            dd03p_tab     = tdd03
       EXCEPTIONS
            illegal_input = 1
            OTHERS        = 2.
  PERFORM xmlconvert_tab TABLES tdd03 txml.
ENDFORM.                               " xml_create USING ptabname.
*---------------------------------------------------------------------*
*       FORM XML_IDOC_DOCTYP                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  PDOCTYP                                                       *
*---------------------------------------------------------------------*
FORM xml_idoc_doctyp USING pdoctyp.
  DATA: pt_syntax LIKE edi_iapi02 OCCURS 0 WITH HEADER LINE.
  edi_iapi00-idoctyp = pdoctyp.
*
  xml '<IDOCTYPE ' to txml.
  xmlattr 'DOCTYPE' edi_iapi00-idoctyp to txml.
  xml '>' to txml.
*
  CALL FUNCTION 'IDOCTYPE_READ'
       EXPORTING
            pi_idoctyp         = edi_iapi00-idoctyp
*           PI_CHECK_AUTHORITY = 'X'
*           PI_READ_DEVC       = 'X'
*      IMPORTING
*           PE_ATTRIBUTES      =
       TABLES
            pt_syntax          = pt_syntax
*           PT_PRE_SYNTAX      =
*           PT_EXTENSIONS      =
       EXCEPTIONS
            object_not_found   = 1
            db_error           = 2
            no_authority       = 3
            OTHERS             = 4.
  LOOP AT pt_syntax.
    PERFORM xml_idoc_segtyp USING pt_syntax.
  ENDLOOP.
  xml '</IDOCTYPE>' to txml.
ENDFORM.                               " xml_idoc_doctyp USING pdoctyp.
*---------------------------------------------------------------------*
*       FORM XML_IDOC_SEGTYP                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  PT_SYNTAX                                                     *
*---------------------------------------------------------------------*
FORM xml_idoc_segtyp USING pt_syntax STRUCTURE edi_iapi02.
  DATA: tsegment TYPE ledid_t_segment OCCURS 0.
  DATA: $str LIKE tline.
  edisegmhd-segtyp = pt_syntax-segtyp.
  xml '<SEGMENT ' to txml.
  xmlattr 'SEGMENTNO' pt_syntax-nr to txml.
  xmlattr 'SEGMENTTYP' pt_syntax-segtyp to txml.
  xmlattr 'PARTNERSEGMENT' pt_syntax-segtyp to txml.
  xmlattr 'PARENT' pt_syntax-parpno to txml.
  xmlattr 'BEGINOFGROUP' pt_syntax-parflg to txml.
  xmlattr 'SEGMENTMANDATORY' pt_syntax-mustfl to txml.
  xmlattr 'OCCURANCEMIN' pt_syntax-occmin to txml.
  xmlattr 'OCCURANCEMAX' pt_syntax-occmax to txml.
  xml '>' to txml.
*
  SELECT * FROM dd02t WHERE tabname EQ pt_syntax-segtyp.
    xml '<DESCRIPTION ' to txml.
    xmlattr 'LANGUAGE' dd02t-ddlanguage to txml.
    xml '>' to txml.
    PERFORM cleanup USING dd02t-ddtext CHANGING $str.
    xml $str to txml.
    xml '</DESCRIPTION>' to txml.
  ENDSELECT.
*
  CALL FUNCTION 'IDOC_SEGMENT_STRUCTURE_READ'
       EXPORTING
*           RELEASE                   = SY-SAPRL
            segtyp                    = edisegmhd-segtyp
*           VERSION                   = '3'
       TABLES
            segment_struct            = tsegstruc
       EXCEPTIONS
            segment_unknown           = 1
            segment_structure_unknown = 2
            segment_not_in_release    = 3
            OTHERS                    = 4.
  PERFORM xmlconvert_seg TABLES tsegstruc txml.
  xml '</SEGMENT>' to txml.
ENDFORM.                               " xml_create USING ptabname.
*---------------------------------------------------------------------*
*       FORM XMLCONVERT_SEG                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  SEGSTRUC                                                      *
*  -->  XML                                                           *
*---------------------------------------------------------------------*
FORM xmlconvert_seg TABLES segstruc STRUCTURE tsegstruc
                                xml STRUCTURE txml.
  DATA: $str LIKE tline.
  LOOP AT segstruc.
    PERFORM infoline
       USING segstruc-segment_type segstruc-fieldname space.
    xml '<FIELD ' to xml.
    xmlattr 'FIELDNAME' segstruc-fieldname to xml.
    xmlattr 'POSITION'  segstruc-field_attrib-position  to xml.
    xmlattr 'OFFSET'    segstruc-field_attrib-offset    to xml.
    xmlattr 'INTLEN'    segstruc-field_attrib-intlen    to xml.
    xmlattr 'DECIMALS'  segstruc-field_attrib-decimals  to xml.
    xmlattr 'SIGNFLAG'  segstruc-field_attrib-signflag  to xml.
    xmlattr 'EXTLEN'    segstruc-field_attrib-extlen    to xml.
    xmlattr 'ROLLNAME'  segstruc-field_attrib-rollname  to xml.
    xmlattr 'DOMNAME'   segstruc-field_attrib-domname   to xml.
    xmlattr 'DATATYPE'  segstruc-field_attrib-datatype  to xml.
    xmlattr 'ISOCODE'   segstruc-field_attrib-isocode   to xml.
    xml '>' to xml.
    SELECT * FROM dd04t
         WHERE rollname EQ segstruc-field_attrib-rollname.
      xml '<FIELDDOCU' to xml.
      xmlattr 'FIELDNAME' segstruc-fieldname to xml.
      xmlattr 'LANGUAGE' dd04t-ddlanguage to xml.
      PERFORM cleanup USING dd04t-ddtext CHANGING $str.
      xml '>' to xml.
      xml  $str to xml.
      xml '</FIELDDOCU>' to xml.
    ENDSELECT.
    PERFORM write_docu
     TABLES xml USING segstruc-field_attrib-rollname withdocu.
    xml '</FIELD>' to xml.
  ENDLOOP.
ENDFORM.

*---------------------------------------------------------------------*
*       FORM XML_DTELS                                                *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TDD04                                                         *
*---------------------------------------------------------------------*
FORM xml_dtels TABLES tdd04 STRUCTURE tdd04.
  SELECT * FROM dd04l INTO TABLE tdd04
     FOR ALL ENTRIES IN tdd04
    WHERE rollname EQ tdd04-rollname.
*  PERFORM xmlconvert TABLES tdd04 txml
*    USING 'DATAELEMENT' space 'ELEMENT' space 'TDD03'.
*  PERFORM xmlconvert_dtel TABLES tdd03 txml.
ENDFORM.                               " xml_create USING ptabname.
*---------------------------------------------------------------------*
*       FORM XMLCONVERT                                               *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TDD03P                                                        *
*  -->  XML                                                           *
*---------------------------------------------------------------------*
FORM xmlconvert TABLES tdd03p STRUCTURE dd03p xml STRUCTURE txml
                USING root head items entity children.
  DATA: $str LIKE tline.
  CONCATENATE '<' root '>' INTO $str.
  xml $str to xml.
  LOOP AT tdd03p.
    AT FIRST.
      IF NOT entity IS INITIAL.
        READ TABLE tdd03p INDEX sy-tabix.
        PERFORM write_tag TABLES tdd03p_struc xml USING entity head.
      ENDIF.
    ENDAT.
    PERFORM write_tag TABLES tdd03p_struc xml USING children items.
*   CONCATENATE '<' items INTO $str.
*    xml '<FIELD' to xml.
*   xml $str to xml.
*   PERFORM write_attr TABLES tdd03p_struc xml USING children.
*   xml '>' to xml.
    PERFORM write_docu TABLES xml USING tdd03p-rollname withdocu.
*    xml '</FIELD>' to xml.
    PERFORM save_dtel USING tdd03p-rollname tdd03p-domname.
  ENDLOOP.
  CONCATENATE '</' root '>' INTO $str.
  xml $str to xml.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM XMLCONVERT_TAB                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TDD03P                                                        *
*  -->  XML                                                           *
*---------------------------------------------------------------------*
FORM xmlconvert_tab TABLES tdd03p STRUCTURE dd03p xml STRUCTURE txml.
  PERFORM xmlconvert TABLES tdd03p xml
    USING 'TABLE' 'STRUCTURE' 'FIELD' 'TDD02' 'TDD03'.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM XMLCONVERT_DTEL                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TDD03P                                                        *
*  -->  XML                                                           *
*---------------------------------------------------------------------*
FORM xmlconvert_dtel TABLES tdd03p STRUCTURE dd03p xml STRUCTURE txml.
  PERFORM xmlconvert TABLES tdd03p xml
    USING 'TABLE' 'STRUCTURE' 'FIELD' 'TDD02' 'TDD03'.
ENDFORM.

*---------------------------------------------------------------------*
*       FORM SAVE_DTEL                                                *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  PROLLNAME                                                     *
*  -->  PDOMNAME                                                      *
*---------------------------------------------------------------------*
FORM save_dtel USING prollname pdomname.
  CLEAR tdd04.
  MOVE prollname TO tdd04-rollname.
  APPEND tdd04.
  CLEAR tdd01.
  MOVE pdomname TO tdd01-domname.
  APPEND tdd01.
ENDFORM. " save_dtel USING tdd03p-rollname tdd03p-domname.
*---------------------------------------------------------------------*
*       FORM WRITE_ATTR                                               *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TSTRUC                                                        *
*  -->  XML                                                           *
*  -->  TABNAME                                                       *
*---------------------------------------------------------------------*
FORM write_attr TABLES tstruc STRUCTURE dd03p
                          xml STRUCTURE txml
                 USING tabname.
  FIELD-SYMBOLS: <fld>.
  DATA: fname(80).
  LOOP AT tstruc.
    CONCATENATE tabname '-' tstruc-fieldname INTO fname.
    CONDENSE fname NO-GAPS.
    ASSIGN (fname) TO <fld>.
    xmlattr tstruc-fieldname <fld> to xml.
  ENDLOOP.
ENDFORM. " write_attr TABLES tdd03p_struc structure dd02p.
*---------------------------------------------------------------------*
*       FORM WRITE_TAG                                                *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TDD03P_STRUC                                                  *
*  -->  XML                                                           *
*  -->  ENTITY                                                        *
*  -->  TAGNAME                                                       *
*---------------------------------------------------------------------*
FORM write_tag TABLES tstruc STRUCTURE dd03p
                          xml STRUCTURE txml
                 USING entity tagname.
  DATA: $str(132).
  IF radattr NE space.
    CONCATENATE '<' tagname INTO $str.
    xml $str to xml.
    PERFORM write_attr TABLES tdd02l_struc xml USING entity.
    xml '/>' to xml.
  ELSE.
    CONCATENATE '<' tagname '>' INTO $str.
    xml $str to xml.
    PERFORM write_attr TABLES tdd02l_struc xml USING entity.
    CONCATENATE '</' tagname '>' INTO $str.
    xml $str to xml.
  ENDIF.
ENDFORM. "write_attr TABLES tdd03p_struc xml USING entity tagname.
*&---------------------------------------------------------------------*
*&      Form  WRITE_DOCU
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_TDD02L_STRUC  text                                         *
*      -->P_XML  text                                                  *
*      -->P_ENTITY  text                                               *
*----------------------------------------------------------------------*
FORM write_docu TABLES xml STRUCTURE txml
                 USING delem withdocu.
  DATA: xdokhl  LIKE dokhl OCCURS 0 WITH HEADER LINE.
  DATA: xline   LIKE tline OCCURS 0 WITH HEADER LINE.
  DATA: xdocu   LIKE tline OCCURS 0 WITH HEADER LINE.
  DATA: otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE.
  DATA: pdfdata LIKE tline OCCURS 0 WITH HEADER LINE.
  DATA: header LIKE thead.
*
  CHECK withdocu NE space.
*
  CLEAR header.
  REFRESH xline.
  CLEAR xdokhl.
*
  SELECT * FROM dokhl INTO TABLE xdokhl
   WHERE id EQ 'DE' AND object EQ delem
     AND langu IN langu.
  SORT xdokhl.
  DELETE ADJACENT DUPLICATES FROM xdokhl
                  COMPARING id langu object.
  LOOP AT xdokhl.
    CALL FUNCTION 'DOCU_GET'
         EXPORTING
*            EXTEND_EXCEPT          = ' '
              id                     = xdokhl-id
              langu                  = xdokhl-langu
              object                 = xdokhl-object
              typ                    = xdokhl-typ
              version_active_or_last = 'L'
         TABLES
              line                   = xdocu
         EXCEPTIONS
              no_docu_on_screen      = 1
              no_docu_self_def       = 2
              no_docu_temp           = 3
              ret_code               = 4
              OTHERS                 = 5.
    xline[] = xdocu[].
    PERFORM text_format TABLES xline otfdata.
    IF 1 = 0.
      CALL FUNCTION 'CONVERT_OTF'
           EXPORTING
                format                = 'PDF'
                max_linewidth         = 132
           TABLES
                otf                   = otfdata
                lines                 = pdfdata
           EXCEPTIONS
                err_max_linewidth     = 1
                err_format            = 2
                err_conv_not_possible = 3
                OTHERS                = 4.
    ENDIF.
    MOVE '<DOCU FIELDNAME="&F">' TO xml.
    MOVE '<DOCU#FIELDNAME="&F"#LANGUAGE="&L">' TO xml.
    REPLACE '&F' WITH xdokhl-object INTO xml.
    REPLACE '&L' WITH xdokhl-langu  INTO xml.
    CONDENSE xml NO-GAPS. TRANSLATE xml USING '# '.
    APPEND xml.
    LOOP AT xline.
*     xline-tdline = xline.
      PERFORM cleanup USING xline-tdline CHANGING xline-tdline.
      CONCATENATE '
' XLINE '</p>' INTO XML.
      APPEND xml.
    ENDLOOP.
    xml '</DOCU>' to xml.
  ENDLOOP.
ENDFORM.                               " WRITE_DOCU
*---------------------------------------------------------------------*
*       FORM TEXT_FORMAT                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  LINES                                                         *
*  -->  OTFDATA                                                       *
*---------------------------------------------------------------------*
FORM text_format TABLES lines STRUCTURE tline
                        otfdata STRUCTURE itcoo.
  DATA: options LIKE  itcpo.
  DATA: header  LIKE  thead.
  options-tdgetotf = 'X'.
  IF header-tdform IS INITIAL.
    header-tdform    = 'SAPSCRIPT_ITF'.
  ENDIF.
  CALL FUNCTION 'PRINT_TEXT'
       EXPORTING
            device                   = 'ABAP'
*           DIALOG                   = 'X'
            header                   = header
            options                  = options
       TABLES
            lines                    = lines
            otfdata                  = otfdata
       EXCEPTIONS
            OTHERS                   = 11.
  REFRESH lines.
  LOOP AT otfdata.
    CASE otfdata-tdprintcom .
      WHEN 'ST'.
        lines-tdformat = '* '.
        lines-tdline   = otfdata-tdprintpar+7.
        APPEND lines.
    ENDCASE.
  ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM CLEANUP                                                  *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  INSTR                                                         *
*  -->  XMLSTR                                                        *
*---------------------------------------------------------------------*
FORM cleanup USING instr CHANGING xmlstr.
  DATA: str LIKE char8000.
  str = instr.
  PERFORM cleanupone USING '&' '#amp;' CHANGING str.
  PERFORM cleanupone USING '#amp;' '&amp;' CHANGING str.
  PERFORM cleanupone USING '"' '"' CHANGING str.
  PERFORM cleanupone USING '''' '&apos;' CHANGING str.

  PERFORM cleanupone USING 'а' 'à' CHANGING str.
  PERFORM cleanupone USING 'б' 'á' CHANGING str.
  PERFORM cleanupone USING 'в' 'â' CHANGING str.
  PERFORM cleanupone USING 'д' 'ä' CHANGING str.
  PERFORM cleanupone USING 'т' 'è' CHANGING str.
  PERFORM cleanupone USING 'у' 'é' CHANGING str.
  PERFORM cleanupone USING 'ф' 'ê' CHANGING str.
  PERFORM cleanupone USING 'ц' 'ö' CHANGING str.
  PERFORM cleanupone USING 'щ' 'ù' CHANGING str.
  PERFORM cleanupone USING 'ъ' 'ú' CHANGING str.
  PERFORM cleanupone USING 'ы' 'û' CHANGING str.
  PERFORM cleanupone USING 'ь' 'ü' CHANGING str.
  PERFORM cleanupone USING 'А' 'À' CHANGING str.
  PERFORM cleanupone USING 'Б' 'Á' CHANGING str.
  PERFORM cleanupone USING 'В' 'Â' CHANGING str.
  PERFORM cleanupone USING 'Д' 'Ä' CHANGING str.
  PERFORM cleanupone USING 'Т' 'Ò' CHANGING str.
  PERFORM cleanupone USING 'У' 'Ó' CHANGING str.
  PERFORM cleanupone USING 'Ф' 'Ô' CHANGING str.
  PERFORM cleanupone USING 'Ц' 'Ö' CHANGING str.
  PERFORM cleanupone USING 'Щ' 'Ù' CHANGING str.
  PERFORM cleanupone USING 'Ъ' 'Ú' CHANGING str.
  PERFORM cleanupone USING 'Ы' 'Û' CHANGING str.
  PERFORM cleanupone USING 'Ь' 'Ü' CHANGING str.

  PERFORM cleanupone USING 'Я' 'ß' CHANGING str.
* PERFORM cleanupone USING '<' '<' CHANGING str.
* PERFORM cleanupone USING '>' '>' CHANGING str.
  TRANSLATE str TO CODE PAGE '1101'.
  xmlstr = str.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM CLEANUPONE                                               *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  OLD                                                           *
*  -->  NEW                                                           *
*  -->  XMLSTR                                                        *
*---------------------------------------------------------------------*
FORM cleanupone USING old new CHANGING xmlstr.
  DO.
    REPLACE old WITH new INTO xmlstr.
    IF sy-subrc NE 0. EXIT. ENDIF.
  ENDDO.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM INFOLINE                                                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  TXT01                                                         *
*  -->  TXT02                                                         *
*  -->  TXT03                                                         *
*---------------------------------------------------------------------*
FORM infoline USING txt01 txt02 txt03.
  DATA: $str LIKE sy-lisel.
  CONCATENATE txt01 txt02 txt03 INTO $str.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
       EXPORTING
*           PERCENTAGE = 0
            text       = $str
       EXCEPTIONS
            OTHERS     = 1.
ENDFORM.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP Dictionary All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.