SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
* Note: The routines in this program are called from other programs.
*    Doing a 'WHERE-USED' search for a specific routine in this
*    program will probably retrieve no results. However, if you
*    do a 'WHERE-USED' search for this program, ZLIST_FIELDS_RTTI
*    itself, you will find the other programs which use these forms.

*     Such a search should always be done before any changes are
*     made to the routines in this program, in order to make sure
*     all existing calls to the routines remain valid.

REPORT zlist_fields_rtti.
*----------------------------------------------------------------------*
* Program: ZLIST_FIELDS_RTTI
* Author: Gordon Tobias
* Date:       Dec 2006
* Description: This program contains routines intended to be called
*           from other programs, to list the contents of structured
*           records, field by field. It uses RTTI (Run Time Typing
*           Info - from ABAP objects methods) to identify the name
*           and length of each field in the record.
*
* Initially, there are 4 routines that can be called:
*---------------------------
* FORM list_record_fields USING p_rec.

* FORM list_record_fields prints the field #, name, and length.
*---------------------------
* FORM list_fields_with_cols USING p_rec.

* FORM list_fields_with_cols prints the field #, name, length, and
* the starting and ending columns of the field.
*---------------------------
* FORM list_specific_fields TABLES so_fnum
*                            so_fname
*                       USING p_rec.

* FORM list_specific_fields print the same information as the
* list_fields_with_columns, but it accepts two additional parms:
* SELECT-OPTIONS table for a 3 digit numeric fields, and a 30 char
* alphabetic field. These two parms can restrict the fields listed
* on the report just just specific numbers (e.g. field 1-5) or names
* (i.e. list just the PERNR field, or exclude all FILLER* fields).
*---------------------------
* FORM convert_to_CSV USING pu_rec
*                         pu_hdr_flag
*                  CHANGING pc_csvrec
*
* FORM convert_to_CSV reads a structured record, pu_rec, and
* generates a text field formatted as a CSV record of the fields
* in the structured record. If the pu_hdr_flag = 'HDR', the CSV
* record will contain the field names instead of the field values,
* thus creating a header record for the CSV file.
*----------------------------------------------------------------------*

DATA: num3(3)       TYPE n.
DATA: field_name(30) TYPE c.

SELECTION-SCREEN COMMENT /1(72) text-001.
SELECTION-SCREEN COMMENT /1(72) text-002.
SELECTION-SCREEN SKIP 1.

SELECT-OPTIONS: s_fnum FOR num3,
       s_fname FOR field_name.


START-OF-SELECTION.

 MESSAGE e016(rp) WITH 'This is not an executable program'.
 EXIT.


*&---------------------------------------------------------------------*
*& Form list_record_fields
*&---------------------------------------------------------------------*
* List the relative field number in the record, and the name, length,
* and contents for every field in the record
*----------------------------------------------------------------------*
FORM list_record_fields USING p_rec. quot;any structured record

 FIELD-SYMBOLS <fs> TYPE ANY.
 DATA: w_index           TYPE i,
    w_len           TYPE i,
    first_line_flag(1) TYPE c.

 DATA: d_ref TYPE REF TO data.
 FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY.

 DATA: desc_ref TYPE REF TO cl_abap_structdescr,
   wa_comp TYPE abap_compdescr.         quot;component description

 ASSIGN p_rec TO <fs_wa>.

 first_line_flag = 'Y'.
 w_index = 0.
 desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ).
 LOOP AT desc_ref->components INTOwa_comp.
w_index = sy-tabix.
  ASSIGN COMPONENT w_index OF STRUCTURE p_rec TO <fs>.
  IF sy-subrc = 0.
   IF first_line_flag = 'Y'.
    SKIP 1.
    first_line_flag = 'N'.
   ENDIF.
   IF wa_comp-type_kind NE 'P'.
    w_len = strlen( <fs> ).
   ELSE.
    w_len = 0.
   ENDIF.
   IF w_len > 0.
    WRITE: / 'Field', (3) w_index NO-SIGN,
           wa_comp-name(17),
           '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP,
           ') = ''' NO-GAP,
           <fs>(w_len) NO-GAP, ''''.
   ELSEIF wa_comp-type_kind = 'P'.
    WRITE: / 'Field', (3) w_index NO-SIGN,
           wa_comp-name(17),
           '(P' NO-GAP, (2) wa_comp-length NO-SIGN NO-GAP,
           ') = ''' NO-GAP, <fs> NO-GAP, ''''.
   ELSE.
    WRITE: / 'Field', (3) w_index NO-SIGN, wa_comp-name(17),
           '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP,
           ') = '''''.
   ENDIF.
  ENDIF.
 ENDLOOP.

ENDFORM.                 quot; list_record_fields


*&---------------------------------------------------------------------*
*& Form list_fields_with_cols
*&---------------------------------------------------------------------*
* List the field info (name, position # in record, length) as well as
* the starting and ending columns in t e record.
                                             h
*----------------------------------------------------------------------*
FORM list_fields_with_cols USING p_rec. quot;any structured record

 FIELD-SYMBOLS <fs> TYPE ANY.
 DATA: w_index           TYPE i,
    w_len           TYPE i,
    w_field_start     TYPE i,
    w_field_end        TYPE i,
    first_line_flag(1) TYPE c.
DATA: d_ref TYPE REF TO data.
FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY.

DATA: desc_ref TYPE REF TO cl_abap_structdescr,
  wa_comp TYPE abap_compdescr.

ASSIGN p_rec TO <fs_wa>.

first_line_flag = 'Y'.
w_index = 0.
w_field_start = 1.
desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ).
LOOP AT desc_ref->components INTOwa_comp.
  w_index = sy-tabix.
  ASSIGN COMPONENT w_index OF STRUCTURE p_rec TO <fs>.
  IF sy-subrc = 0.
   IF first_line_flag = 'Y'.
     SKIP 1.
     first_line_flag = 'N'.
   ENDIF.
   IF wa_comp-type_kind NE 'P'.
     w_len = strlen( <fs> ).
   ELSE.
     w_len = 0.
   ENDIF.
   w_field_end = w_field_start + wa_comp-length - 1.
   IF w_len > 0.
     WRITE: / 'Field', (3) w_index NO-SIGN,
            (4) w_field_start NO-SIGN NO-GAP,
            '-' NO-GAP,
            (4) w_field_end NO-SIGN,
            wa_comp-name(15),
            '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP,
            ') = ''' NO-GAP,
            <fs>(w_len) NO-GAP, ''''.
   ELSEIF wa_comp-type_kind = 'P'.
     WRITE: / 'Field', (3) w_index NO-SIGN,
            (4) w_field_start NO-SIGN NO-GAP,
            '-' NO-GAP,
            (4) w_field_end NO-SIGN,
            wa_comp-name(15),
            '(P' NO-GAP, (2) wa_comp-length NO-SIGN NO-GAP,
            ') = ''' NO-GAP, <fs> NO-GAP, ''''.
   ELSE.
     WRITE: / 'Field', (3) w_index NO-SIGN,
            (4) w_field_start NO-SIGN NO-GAP,
            '-' NO-GAP,
(4) w_field_end NO-SIGN,
          wa_comp-name(15),
          '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP,
          ') = '''''.
   ENDIF.
   w_field_start = w_field_end + 1.
  ENDIF.
 ENDLOOP.

ENDFORM.              quot; list_fields_with_cols


*&---------------------------------------------------------------------*
*& Form list_specific_fields
*&---------------------------------------------------------------------*
* List the field info (name, position # in record, length) as well as
* the starting and ending columns in t e record. This routine accepts
                                             h
* 2 select-options tables, to indicate the specific fields to li t.    s
* e.g. print field numbers 1 to 5, and 9. Or print all *NAME* fields.
*----------------------------------------------------------------------*
FORM list_specific_fields TABLES so_fnum quot;SELECT-OPTIONS for NUM3
                        so_fname quot;SELECT-OPTIONS for fld name
                   USING p_rec. quot;any structured record

 FIELD-SYMBOLS <fs> TYPE ANY.
 DATA: w_index           TYPE i,
    w_len           TYPE i,
    w_field_start     TYPE i,
    w_field_end        TYPE i,
    first_line_flag(1) TYPE c.

 DATA: d_ref TYPE REF TO data.
 FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY.

 DATA: desc_ref TYPE REF TO cl_abap_structdescr,
   wa_comp TYPE abap_compdescr.

 ASSIGN p_rec TO <fs_wa>.

 first_line_flag = 'Y'.
 w_index = 0.
 w_field_start = 1.
 desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ).
 LOOP AT desc_ref->components INTOwa_comp.
   w_index = sy-tabix.
*- Do field number & field name match the fields to be listed?
   ASSIGN COMPONENT w_index OF STRUCTURE p_rec TO <fs>.
   IF sy-subrc = 0.
IF wa_comp-type_kind NE 'P'. quot;Packed fields don't have STRLEN
   w_len = strlen( <fs> ).
  ELSE.
   w_len = 0.
  ENDIF.
  w_field_end = w_field_start + wa_comp-length - 1.
  IF w_index IN so_fnum AND wa_comp-name IN so_fname.
   IF first_line_flag = 'Y'.
    SKIP 1.
    first_line_flag = 'N'.
   ENDIF.
   IF w_len > 0.
    WRITE: / 'Field', (3) w_index NO-SIGN,
             (4) w_field_start NO-SIGN NO-GAP,
             '-' NO-GAP,
             (4) w_field_end NO-SIGN,
             wa_comp-name(15),
             '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP,
             ') = ''' NO-GAP,
             <fs>(w_len) NO-GAP, ''''.
   ELSEIF wa_comp-type_kind = 'P'.
    WRITE: / 'Field', (3) w_index NO-SIGN,
             (4) w_field_start NO-SIGN NO-GAP,
             '-' NO-GAP,
             (4) w_field_end NO-SIGN,
             wa_comp-name(15),
             '(P' NO-GAP, (2) wa_comp-length NO-SIGN NO-GAP,
             ') = ''' NO-GAP, <fs> NO-GAP, ''''.
   ELSE. quot;field length is ZERO --> empty of data
    WRITE: / 'Field', (3) w_index NO-SIGN,
             (4) w_field_start NO-SIGN NO-GAP,
             '-' NO-GAP,
             (4) w_field_end NO-SIGN,
             wa_comp-name(15),
             '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP,
             ') = '''''.
   ENDIF.
  ENDIF. quot;if w_index in so_fnum and wa_comp-name in so-fname
  w_field_start = w_field_end + 1.
 ELSE.
  WRITE: / 'Error assigning field #', w_index,
        '(', wa_comp-name, ') to <Field String>'.
 ENDIF. quot;IF sy-subrc = 0 on ASSIGN COMPONENT command
ENDLOOP.

ENDFORM.             quot; list_specific_fields
*&---------------------------------------------------------------------*
*& Form convert_to_CSV
*&---------------------------------------------------------------------*
* Instead of printing the record contents to spool, convert the
* structured record to a single string formatted as a CSV file line:
* Quotes around each field, and commas between fields.
*----------------------------------------------------------------------*
FORM convert_to_csv USING pu_rec
                     pu_hdr_flag
              CHANGING pc_csvrec.

 FIELD-SYMBOLS <fs> TYPE ANY.
 DATA: w_index           TYPE i,
    w_len           TYPE i,
    first_line_flag(1) TYPE c,
    w_string(60)       TYPE c,
    w_csvrec1(2000) TYPE c,
    w_csvrec2(2100) TYPE c.

 CONSTANTS: c_quote(1) TYPE c VALUE 'quot;',
     c_comma(1) TYPE c VALUE ','.

 DATA: d_ref TYPE REF TO data.
 FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY.

 DATA: desc_ref TYPE REF TO cl_abap_structdescr,
   wa_comp TYPE abap_compdescr.         quot;component description

 ASSIGN pu_rec TO <fs_wa>.

 CLEAR: pc_csvrec, w_csvrec1, w_csvrec2.

 first_line_flag = 'Y'.
 w_index = 0.
 desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ).
 LOOP AT desc_ref->components INTOwa_comp.
   w_index = sy-tabix.
   ASSIGN COMPONENT w_index OF STRUCTURE pu_rec TO <fs>.
   IF sy-subrc = 0.
    IF pu_hdr_flag = 'HDR'.
      WRITE wa_comp-name TO w_string.
    ELSE.
      WRITE <fs> TO w_string.
    ENDIF.
    SHIFT w_string LEFT DELETING LEADING space.
    CONCATENATE c_quote w_string c_quote INTO w_string.
    IF first_line_flag = 'Y'.
      w_csvrec2 = w_string.
first_line_flag = 'N'.
  ELSE.
   CONCATENATE w_csvrec1 c_comma w_string INTO w_csvrec2.
  ENDIF.
  CONDENSE w_csvrec2.
  w_csvrec1 = w_csvrec2.
 ENDIF.
ENDLOOP.

pc_csvrec = w_csvrec1.

ENDFORM.             quot; convert_to_CSV

Weitere ähnliche Inhalte

Was ist angesagt?

Oracle naveen Sql
Oracle naveen   SqlOracle naveen   Sql
Oracle naveen Sqlnaveen
 
Oracle tips and tricks
Oracle tips and tricksOracle tips and tricks
Oracle tips and tricksYanli Liu
 
[APJ] Common Table Expressions (CTEs) in SQL
[APJ] Common Table Expressions (CTEs) in SQL[APJ] Common Table Expressions (CTEs) in SQL
[APJ] Common Table Expressions (CTEs) in SQLEDB
 
HOT Understanding this important update optimization
HOT Understanding this important update optimizationHOT Understanding this important update optimization
HOT Understanding this important update optimizationGrant McAlister
 
Open SQL & Internal Table
Open SQL & Internal TableOpen SQL & Internal Table
Open SQL & Internal Tablesapdocs. info
 
Alv interactive ABAPreport
Alv interactive ABAPreportAlv interactive ABAPreport
Alv interactive ABAPreportRavi Kanudawala
 
005 foxpro
005 foxpro005 foxpro
005 foxproSMS2007
 
Fast formula queries for functions, contexts, db is and packages
Fast formula queries for functions, contexts, db is and packagesFast formula queries for functions, contexts, db is and packages
Fast formula queries for functions, contexts, db is and packagesFeras Ahmad
 
Mca ii-dbms-u-iv-structured query language
Mca ii-dbms-u-iv-structured query languageMca ii-dbms-u-iv-structured query language
Mca ii-dbms-u-iv-structured query languageRai University
 
Assignement code
Assignement codeAssignement code
Assignement codeSyed Umair
 
List Processing in ABAP
List Processing in ABAPList Processing in ABAP
List Processing in ABAPsapdocs. info
 
Modularization & Catch Statement
Modularization & Catch StatementModularization & Catch Statement
Modularization & Catch Statementsapdocs. info
 

Was ist angesagt? (20)

Oracle naveen Sql
Oracle naveen   SqlOracle naveen   Sql
Oracle naveen Sql
 
Oracle tips and tricks
Oracle tips and tricksOracle tips and tricks
Oracle tips and tricks
 
[APJ] Common Table Expressions (CTEs) in SQL
[APJ] Common Table Expressions (CTEs) in SQL[APJ] Common Table Expressions (CTEs) in SQL
[APJ] Common Table Expressions (CTEs) in SQL
 
HOT Understanding this important update optimization
HOT Understanding this important update optimizationHOT Understanding this important update optimization
HOT Understanding this important update optimization
 
Select To Order By
Select  To  Order BySelect  To  Order By
Select To Order By
 
Open SQL & Internal Table
Open SQL & Internal TableOpen SQL & Internal Table
Open SQL & Internal Table
 
Alv interactive ABAPreport
Alv interactive ABAPreportAlv interactive ABAPreport
Alv interactive ABAPreport
 
005 foxpro
005 foxpro005 foxpro
005 foxpro
 
Fast formula queries for functions, contexts, db is and packages
Fast formula queries for functions, contexts, db is and packagesFast formula queries for functions, contexts, db is and packages
Fast formula queries for functions, contexts, db is and packages
 
Trig
TrigTrig
Trig
 
Mca ii-dbms-u-iv-structured query language
Mca ii-dbms-u-iv-structured query languageMca ii-dbms-u-iv-structured query language
Mca ii-dbms-u-iv-structured query language
 
Basic programming
Basic programmingBasic programming
Basic programming
 
Les03
Les03Les03
Les03
 
ABAP Advanced List
ABAP Advanced ListABAP Advanced List
ABAP Advanced List
 
Assignement code
Assignement codeAssignement code
Assignement code
 
List Processing in ABAP
List Processing in ABAPList Processing in ABAP
List Processing in ABAP
 
Les01
Les01Les01
Les01
 
ORACLE NOTES
ORACLE NOTESORACLE NOTES
ORACLE NOTES
 
Modularization & Catch Statement
Modularization & Catch StatementModularization & Catch Statement
Modularization & Catch Statement
 
Les09 Manipulating Data
Les09 Manipulating DataLes09 Manipulating Data
Les09 Manipulating Data
 

Andere mochten auch

Andere mochten auch (8)

Test
TestTest
Test
 
Datafolha/IBOPE
Datafolha/IBOPEDatafolha/IBOPE
Datafolha/IBOPE
 
3006b 0809 P1 Choy
3006b 0809 P1 Choy3006b 0809 P1 Choy
3006b 0809 P1 Choy
 
Presentation
PresentationPresentation
Presentation
 
Tarefa 4º Encontro
Tarefa  4º EncontroTarefa  4º Encontro
Tarefa 4º Encontro
 
Testando
TestandoTestando
Testando
 
Publicaffairs Interview&Numbers Sept242008
Publicaffairs Interview&Numbers Sept242008Publicaffairs Interview&Numbers Sept242008
Publicaffairs Interview&Numbers Sept242008
 
Ebook List Of Ebook Sites
Ebook   List Of Ebook SitesEbook   List Of Ebook Sites
Ebook List Of Ebook Sites
 

Ähnlich wie Program For Parsing2

Example syntax alv grid list
Example syntax alv grid listExample syntax alv grid list
Example syntax alv grid listNur Khoiri
 
There are a number of errors in the following program- All errors are.docx
There are a number of errors in the following program- All errors are.docxThere are a number of errors in the following program- All errors are.docx
There are a number of errors in the following program- All errors are.docxclarkjanyce
 
ABAP EVENTS EXAMPLE
ABAP EVENTS EXAMPLEABAP EVENTS EXAMPLE
ABAP EVENTS EXAMPLEvr1sap
 
Lab11.cppLab11.cpp.docx
Lab11.cppLab11.cpp.docxLab11.cppLab11.cpp.docx
Lab11.cppLab11.cpp.docxDIPESH30
 
Program In C You are required to write an interactive C program that.pdf
Program In C You are required to write an interactive C program that.pdfProgram In C You are required to write an interactive C program that.pdf
Program In C You are required to write an interactive C program that.pdfamitbagga0808
 
Alvedit programs
Alvedit programsAlvedit programs
Alvedit programsmcclintick
 
modularization-160202092213 (1).pdf
modularization-160202092213 (1).pdfmodularization-160202092213 (1).pdf
modularization-160202092213 (1).pdfSreeramBaddila
 
SAP Modularization techniques
SAP Modularization techniquesSAP Modularization techniques
SAP Modularization techniquesJugul Crasta
 
Problem Implement a FIFO program in which a client sends the server.pdf
Problem Implement a FIFO program in which a client sends the server.pdfProblem Implement a FIFO program in which a client sends the server.pdf
Problem Implement a FIFO program in which a client sends the server.pdffeelinggift
 
Merge Sort implementation in C++ The implementation for Mergesort gi.pdf
Merge Sort implementation in C++ The implementation for Mergesort gi.pdfMerge Sort implementation in C++ The implementation for Mergesort gi.pdf
Merge Sort implementation in C++ The implementation for Mergesort gi.pdfmdameer02
 
03 abap3-090715081232-phpapp01
03 abap3-090715081232-phpapp0103 abap3-090715081232-phpapp01
03 abap3-090715081232-phpapp01wingsrai
 
03 abap3-090715081232-phpapp01-100511101016-phpapp02
03 abap3-090715081232-phpapp01-100511101016-phpapp0203 abap3-090715081232-phpapp01-100511101016-phpapp02
03 abap3-090715081232-phpapp01-100511101016-phpapp02tabish
 
Write the definition of the linkedListKeepLast function- (Please write.docx
Write the definition of the linkedListKeepLast function- (Please write.docxWrite the definition of the linkedListKeepLast function- (Please write.docx
Write the definition of the linkedListKeepLast function- (Please write.docxdelicecogupdyke
 

Ähnlich wie Program For Parsing2 (20)

Example syntax alv grid list
Example syntax alv grid listExample syntax alv grid list
Example syntax alv grid list
 
Alv Grids
Alv GridsAlv Grids
Alv Grids
 
There are a number of errors in the following program- All errors are.docx
There are a number of errors in the following program- All errors are.docxThere are a number of errors in the following program- All errors are.docx
There are a number of errors in the following program- All errors are.docx
 
ABAP EVENTS EXAMPLE
ABAP EVENTS EXAMPLEABAP EVENTS EXAMPLE
ABAP EVENTS EXAMPLE
 
Report zalv
Report  zalvReport  zalv
Report zalv
 
Lab11.cppLab11.cpp.docx
Lab11.cppLab11.cpp.docxLab11.cppLab11.cpp.docx
Lab11.cppLab11.cpp.docx
 
ZFINDALLZPROGAM
ZFINDALLZPROGAMZFINDALLZPROGAM
ZFINDALLZPROGAM
 
Program In C You are required to write an interactive C program that.pdf
Program In C You are required to write an interactive C program that.pdfProgram In C You are required to write an interactive C program that.pdf
Program In C You are required to write an interactive C program that.pdf
 
Alvedit programs
Alvedit programsAlvedit programs
Alvedit programs
 
modularization-160202092213 (1).pdf
modularization-160202092213 (1).pdfmodularization-160202092213 (1).pdf
modularization-160202092213 (1).pdf
 
SAP Modularization techniques
SAP Modularization techniquesSAP Modularization techniques
SAP Modularization techniques
 
Alv Block
Alv BlockAlv Block
Alv Block
 
Abap basics 01
Abap basics 01Abap basics 01
Abap basics 01
 
Zmd Constant
Zmd ConstantZmd Constant
Zmd Constant
 
Problem Implement a FIFO program in which a client sends the server.pdf
Problem Implement a FIFO program in which a client sends the server.pdfProblem Implement a FIFO program in which a client sends the server.pdf
Problem Implement a FIFO program in which a client sends the server.pdf
 
unit-3-L1.ppt
unit-3-L1.pptunit-3-L1.ppt
unit-3-L1.ppt
 
Merge Sort implementation in C++ The implementation for Mergesort gi.pdf
Merge Sort implementation in C++ The implementation for Mergesort gi.pdfMerge Sort implementation in C++ The implementation for Mergesort gi.pdf
Merge Sort implementation in C++ The implementation for Mergesort gi.pdf
 
03 abap3-090715081232-phpapp01
03 abap3-090715081232-phpapp0103 abap3-090715081232-phpapp01
03 abap3-090715081232-phpapp01
 
03 abap3-090715081232-phpapp01-100511101016-phpapp02
03 abap3-090715081232-phpapp01-100511101016-phpapp0203 abap3-090715081232-phpapp01-100511101016-phpapp02
03 abap3-090715081232-phpapp01-100511101016-phpapp02
 
Write the definition of the linkedListKeepLast function- (Please write.docx
Write the definition of the linkedListKeepLast function- (Please write.docxWrite the definition of the linkedListKeepLast function- (Please write.docx
Write the definition of the linkedListKeepLast function- (Please write.docx
 

Mehr von Michelle Crapo

Learning & using new technology
Learning & using new technologyLearning & using new technology
Learning & using new technologyMichelle Crapo
 
Learning & using new technology
Learning & using new technologyLearning & using new technology
Learning & using new technologyMichelle Crapo
 
Https _sapmats-de.sap-ag.de_download_download
Https  _sapmats-de.sap-ag.de_download_downloadHttps  _sapmats-de.sap-ag.de_download_download
Https _sapmats-de.sap-ag.de_download_downloadMichelle Crapo
 
2011 sap inside_track_eim_overview
2011 sap inside_track_eim_overview2011 sap inside_track_eim_overview
2011 sap inside_track_eim_overviewMichelle Crapo
 
SAP Technology QUICK overview
SAP Technology QUICK overviewSAP Technology QUICK overview
SAP Technology QUICK overviewMichelle Crapo
 
General Discussion Abap Tips
General Discussion   Abap  TipsGeneral Discussion   Abap  Tips
General Discussion Abap TipsMichelle Crapo
 

Mehr von Michelle Crapo (13)

Abap objects
Abap objectsAbap objects
Abap objects
 
Abap objects
Abap objectsAbap objects
Abap objects
 
Learning & using new technology
Learning & using new technologyLearning & using new technology
Learning & using new technology
 
Learning & using new technology
Learning & using new technologyLearning & using new technology
Learning & using new technology
 
Dirty upgrade bala
Dirty upgrade balaDirty upgrade bala
Dirty upgrade bala
 
Big data mgmt bala
Big data mgmt balaBig data mgmt bala
Big data mgmt bala
 
Https _sapmats-de.sap-ag.de_download_download
Https  _sapmats-de.sap-ag.de_download_downloadHttps  _sapmats-de.sap-ag.de_download_download
Https _sapmats-de.sap-ag.de_download_download
 
2011 sap inside_track_eim_overview
2011 sap inside_track_eim_overview2011 sap inside_track_eim_overview
2011 sap inside_track_eim_overview
 
SAP OSS note search
SAP OSS note searchSAP OSS note search
SAP OSS note search
 
2007 SAPTech Ed
2007 SAPTech Ed2007 SAPTech Ed
2007 SAPTech Ed
 
SAP Technology QUICK overview
SAP Technology QUICK overviewSAP Technology QUICK overview
SAP Technology QUICK overview
 
General Discussion Abap Tips
General Discussion   Abap  TipsGeneral Discussion   Abap  Tips
General Discussion Abap Tips
 
Change Documents2
Change Documents2Change Documents2
Change Documents2
 

Kürzlich hochgeladen

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 

Kürzlich hochgeladen (20)

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 

Program For Parsing2

  • 1. * Note: The routines in this program are called from other programs. * Doing a 'WHERE-USED' search for a specific routine in this * program will probably retrieve no results. However, if you * do a 'WHERE-USED' search for this program, ZLIST_FIELDS_RTTI * itself, you will find the other programs which use these forms. * Such a search should always be done before any changes are * made to the routines in this program, in order to make sure * all existing calls to the routines remain valid. REPORT zlist_fields_rtti. *----------------------------------------------------------------------* * Program: ZLIST_FIELDS_RTTI * Author: Gordon Tobias * Date: Dec 2006 * Description: This program contains routines intended to be called * from other programs, to list the contents of structured * records, field by field. It uses RTTI (Run Time Typing * Info - from ABAP objects methods) to identify the name * and length of each field in the record. * * Initially, there are 4 routines that can be called: *--------------------------- * FORM list_record_fields USING p_rec. * FORM list_record_fields prints the field #, name, and length. *--------------------------- * FORM list_fields_with_cols USING p_rec. * FORM list_fields_with_cols prints the field #, name, length, and * the starting and ending columns of the field. *--------------------------- * FORM list_specific_fields TABLES so_fnum * so_fname * USING p_rec. * FORM list_specific_fields print the same information as the * list_fields_with_columns, but it accepts two additional parms: * SELECT-OPTIONS table for a 3 digit numeric fields, and a 30 char * alphabetic field. These two parms can restrict the fields listed * on the report just just specific numbers (e.g. field 1-5) or names * (i.e. list just the PERNR field, or exclude all FILLER* fields). *--------------------------- * FORM convert_to_CSV USING pu_rec * pu_hdr_flag * CHANGING pc_csvrec * * FORM convert_to_CSV reads a structured record, pu_rec, and
  • 2. * generates a text field formatted as a CSV record of the fields * in the structured record. If the pu_hdr_flag = 'HDR', the CSV * record will contain the field names instead of the field values, * thus creating a header record for the CSV file. *----------------------------------------------------------------------* DATA: num3(3) TYPE n. DATA: field_name(30) TYPE c. SELECTION-SCREEN COMMENT /1(72) text-001. SELECTION-SCREEN COMMENT /1(72) text-002. SELECTION-SCREEN SKIP 1. SELECT-OPTIONS: s_fnum FOR num3, s_fname FOR field_name. START-OF-SELECTION. MESSAGE e016(rp) WITH 'This is not an executable program'. EXIT. *&---------------------------------------------------------------------* *& Form list_record_fields *&---------------------------------------------------------------------* * List the relative field number in the record, and the name, length, * and contents for every field in the record *----------------------------------------------------------------------* FORM list_record_fields USING p_rec. quot;any structured record FIELD-SYMBOLS <fs> TYPE ANY. DATA: w_index TYPE i, w_len TYPE i, first_line_flag(1) TYPE c. DATA: d_ref TYPE REF TO data. FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY. DATA: desc_ref TYPE REF TO cl_abap_structdescr, wa_comp TYPE abap_compdescr. quot;component description ASSIGN p_rec TO <fs_wa>. first_line_flag = 'Y'. w_index = 0. desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ). LOOP AT desc_ref->components INTOwa_comp.
  • 3. w_index = sy-tabix. ASSIGN COMPONENT w_index OF STRUCTURE p_rec TO <fs>. IF sy-subrc = 0. IF first_line_flag = 'Y'. SKIP 1. first_line_flag = 'N'. ENDIF. IF wa_comp-type_kind NE 'P'. w_len = strlen( <fs> ). ELSE. w_len = 0. ENDIF. IF w_len > 0. WRITE: / 'Field', (3) w_index NO-SIGN, wa_comp-name(17), '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP, ') = ''' NO-GAP, <fs>(w_len) NO-GAP, ''''. ELSEIF wa_comp-type_kind = 'P'. WRITE: / 'Field', (3) w_index NO-SIGN, wa_comp-name(17), '(P' NO-GAP, (2) wa_comp-length NO-SIGN NO-GAP, ') = ''' NO-GAP, <fs> NO-GAP, ''''. ELSE. WRITE: / 'Field', (3) w_index NO-SIGN, wa_comp-name(17), '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP, ') = '''''. ENDIF. ENDIF. ENDLOOP. ENDFORM. quot; list_record_fields *&---------------------------------------------------------------------* *& Form list_fields_with_cols *&---------------------------------------------------------------------* * List the field info (name, position # in record, length) as well as * the starting and ending columns in t e record. h *----------------------------------------------------------------------* FORM list_fields_with_cols USING p_rec. quot;any structured record FIELD-SYMBOLS <fs> TYPE ANY. DATA: w_index TYPE i, w_len TYPE i, w_field_start TYPE i, w_field_end TYPE i, first_line_flag(1) TYPE c.
  • 4. DATA: d_ref TYPE REF TO data. FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY. DATA: desc_ref TYPE REF TO cl_abap_structdescr, wa_comp TYPE abap_compdescr. ASSIGN p_rec TO <fs_wa>. first_line_flag = 'Y'. w_index = 0. w_field_start = 1. desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ). LOOP AT desc_ref->components INTOwa_comp. w_index = sy-tabix. ASSIGN COMPONENT w_index OF STRUCTURE p_rec TO <fs>. IF sy-subrc = 0. IF first_line_flag = 'Y'. SKIP 1. first_line_flag = 'N'. ENDIF. IF wa_comp-type_kind NE 'P'. w_len = strlen( <fs> ). ELSE. w_len = 0. ENDIF. w_field_end = w_field_start + wa_comp-length - 1. IF w_len > 0. WRITE: / 'Field', (3) w_index NO-SIGN, (4) w_field_start NO-SIGN NO-GAP, '-' NO-GAP, (4) w_field_end NO-SIGN, wa_comp-name(15), '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP, ') = ''' NO-GAP, <fs>(w_len) NO-GAP, ''''. ELSEIF wa_comp-type_kind = 'P'. WRITE: / 'Field', (3) w_index NO-SIGN, (4) w_field_start NO-SIGN NO-GAP, '-' NO-GAP, (4) w_field_end NO-SIGN, wa_comp-name(15), '(P' NO-GAP, (2) wa_comp-length NO-SIGN NO-GAP, ') = ''' NO-GAP, <fs> NO-GAP, ''''. ELSE. WRITE: / 'Field', (3) w_index NO-SIGN, (4) w_field_start NO-SIGN NO-GAP, '-' NO-GAP,
  • 5. (4) w_field_end NO-SIGN, wa_comp-name(15), '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP, ') = '''''. ENDIF. w_field_start = w_field_end + 1. ENDIF. ENDLOOP. ENDFORM. quot; list_fields_with_cols *&---------------------------------------------------------------------* *& Form list_specific_fields *&---------------------------------------------------------------------* * List the field info (name, position # in record, length) as well as * the starting and ending columns in t e record. This routine accepts h * 2 select-options tables, to indicate the specific fields to li t. s * e.g. print field numbers 1 to 5, and 9. Or print all *NAME* fields. *----------------------------------------------------------------------* FORM list_specific_fields TABLES so_fnum quot;SELECT-OPTIONS for NUM3 so_fname quot;SELECT-OPTIONS for fld name USING p_rec. quot;any structured record FIELD-SYMBOLS <fs> TYPE ANY. DATA: w_index TYPE i, w_len TYPE i, w_field_start TYPE i, w_field_end TYPE i, first_line_flag(1) TYPE c. DATA: d_ref TYPE REF TO data. FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY. DATA: desc_ref TYPE REF TO cl_abap_structdescr, wa_comp TYPE abap_compdescr. ASSIGN p_rec TO <fs_wa>. first_line_flag = 'Y'. w_index = 0. w_field_start = 1. desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ). LOOP AT desc_ref->components INTOwa_comp. w_index = sy-tabix. *- Do field number & field name match the fields to be listed? ASSIGN COMPONENT w_index OF STRUCTURE p_rec TO <fs>. IF sy-subrc = 0.
  • 6. IF wa_comp-type_kind NE 'P'. quot;Packed fields don't have STRLEN w_len = strlen( <fs> ). ELSE. w_len = 0. ENDIF. w_field_end = w_field_start + wa_comp-length - 1. IF w_index IN so_fnum AND wa_comp-name IN so_fname. IF first_line_flag = 'Y'. SKIP 1. first_line_flag = 'N'. ENDIF. IF w_len > 0. WRITE: / 'Field', (3) w_index NO-SIGN, (4) w_field_start NO-SIGN NO-GAP, '-' NO-GAP, (4) w_field_end NO-SIGN, wa_comp-name(15), '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP, ') = ''' NO-GAP, <fs>(w_len) NO-GAP, ''''. ELSEIF wa_comp-type_kind = 'P'. WRITE: / 'Field', (3) w_index NO-SIGN, (4) w_field_start NO-SIGN NO-GAP, '-' NO-GAP, (4) w_field_end NO-SIGN, wa_comp-name(15), '(P' NO-GAP, (2) wa_comp-length NO-SIGN NO-GAP, ') = ''' NO-GAP, <fs> NO-GAP, ''''. ELSE. quot;field length is ZERO --> empty of data WRITE: / 'Field', (3) w_index NO-SIGN, (4) w_field_start NO-SIGN NO-GAP, '-' NO-GAP, (4) w_field_end NO-SIGN, wa_comp-name(15), '(' NO-GAP, (3) wa_comp-length NO-SIGN NO-GAP, ') = '''''. ENDIF. ENDIF. quot;if w_index in so_fnum and wa_comp-name in so-fname w_field_start = w_field_end + 1. ELSE. WRITE: / 'Error assigning field #', w_index, '(', wa_comp-name, ') to <Field String>'. ENDIF. quot;IF sy-subrc = 0 on ASSIGN COMPONENT command ENDLOOP. ENDFORM. quot; list_specific_fields
  • 7. *&---------------------------------------------------------------------* *& Form convert_to_CSV *&---------------------------------------------------------------------* * Instead of printing the record contents to spool, convert the * structured record to a single string formatted as a CSV file line: * Quotes around each field, and commas between fields. *----------------------------------------------------------------------* FORM convert_to_csv USING pu_rec pu_hdr_flag CHANGING pc_csvrec. FIELD-SYMBOLS <fs> TYPE ANY. DATA: w_index TYPE i, w_len TYPE i, first_line_flag(1) TYPE c, w_string(60) TYPE c, w_csvrec1(2000) TYPE c, w_csvrec2(2100) TYPE c. CONSTANTS: c_quote(1) TYPE c VALUE 'quot;', c_comma(1) TYPE c VALUE ','. DATA: d_ref TYPE REF TO data. FIELD-SYMBOLS: <fs_wa> TYPE ANY, <fs_comp> TYPE ANY. DATA: desc_ref TYPE REF TO cl_abap_structdescr, wa_comp TYPE abap_compdescr. quot;component description ASSIGN pu_rec TO <fs_wa>. CLEAR: pc_csvrec, w_csvrec1, w_csvrec2. first_line_flag = 'Y'. w_index = 0. desc_ref ?= cl_abap_typedescr=>describe_by_data( <fs_wa> ). LOOP AT desc_ref->components INTOwa_comp. w_index = sy-tabix. ASSIGN COMPONENT w_index OF STRUCTURE pu_rec TO <fs>. IF sy-subrc = 0. IF pu_hdr_flag = 'HDR'. WRITE wa_comp-name TO w_string. ELSE. WRITE <fs> TO w_string. ENDIF. SHIFT w_string LEFT DELETING LEADING space. CONCATENATE c_quote w_string c_quote INTO w_string. IF first_line_flag = 'Y'. w_csvrec2 = w_string.
  • 8. first_line_flag = 'N'. ELSE. CONCATENATE w_csvrec1 c_comma w_string INTO w_csvrec2. ENDIF. CONDENSE w_csvrec2. w_csvrec1 = w_csvrec2. ENDIF. ENDLOOP. pc_csvrec = w_csvrec1. ENDFORM. quot; convert_to_CSV