2015 Feb 17 6:42 AM
Hi Friends,
I need to generate case sensitive xml tags from dynamic internal table. The xml tag should show fieldnames stored in lowercase. The fieldname is stored in mapping table. If i keep the fieldname in uppercase, the xml output is coming perfectly fine. but if i change the fieldname to lowercase in the mapping table, a dump is being generated. The field SAPCODE if kept in capital letters, is working perfectly fine , but if kept in lowercase letters is throwing dump. Please go through the attachments. how to solve this issue. any help would be greatly appreciated.
Regards,
Saurav Lahiry
2015 Feb 17 8:08 AM
Moderator Message: If you're going to post code - even as an attachment - please do the courtesy of removing commented out sections. Part of the art of asking questions is to make it easy for the people you want help from.
Second, if you mention a dump, you really do have to specify the nature of the dump.
2015 Feb 17 11:48 AM
Hi Saurav,
The dump triggers in field symbol. Please do the change at where and all you have used assign component.
"Before
ASSIGN COMPONENT IT_ZXML_CXC_MATERIAL-CXCTECHFIELD OF STRUCTURE <GFS_LINE> TO <FS1>.
"After
Use Structure field Name inside quotes as shown below
ASSIGN COMPONENT 'CXCTECHFIELD' OF STRUCTURE <GFS_LINE> TO <FS1>.
"Before
<FS1> = IT_FINAL_XML-MATKL.
"After
Before using the variable, Kindly check whether the variable is assigned or not as shown below.
IF <FS1> IS ASSIGNED.
<FS1> = IT_FINAL_XML-MATKL.
ENDIF.
Regards
Rajkumar Narasimman
2024 May 14 9:17 PM - edited 2024 May 14 9:18 PM
hi expert please kindly help me , This is my abap code my requirement is to get the output in XML format where as the XML format should be case Sensitive or camel case this is my code but my output in XML is not case sensitive or camel case kindly help me to sove the issue
DATA: BEGIN OF IT_EKKO OCCURS 0,
Ebeln TYPE Ekko-Ebeln,
Bukrs TYPE Ekko-Bukrs,
END OF IT_EKKO.
DATA: BEGIN OF IT_EKPO OCCURS 0,
Ebeln TYPE Ekpo-Ebeln,
Ebelp TYPE Ekpo-Ebelp,
Matnr TYPE Ekpo-Matnr,
END OF IT_EKPO.
DATA: BEGIN OF IT_FINAL OCCURS 0,
Ebeln TYPE Ekko-Ebeln,
Bukrs TYPE Ekko-Bukrs,
Ebelp TYPE Ekpo-Ebelp,
Matnr TYPE Ekpo-Matnr,
END OF IT_FINAL.
TYPES: BEGIN OF TTAB,
RECORD(5000) TYPE C,
END OF TTAB.
DATA: XMLTABLE TYPE TABLE OF TTAB,
XML_OUT TYPE STRING,
XML_OUT1 TYPE STRING,
LENGTH TYPE SY-TABIX.
SELECT-OPTIONS: SO_Ebeln FOR Ekko-Ebeln DEFAULT '4500000000' TO '4500000999'.
START-OF-SELECTION.
SELECT A~Ebeln
A~Bukrs
B~Ebelp
B~Matnr
INTO TABLE IT_FINAL FROM Ekko AS A INNER JOIN Ekpo AS B ON B~Ebeln = A~Ebeln
WHERE A~Ebeln IN SO_Ebeln.
* IF IT_EKKO IS NOT INITIAL.
* SELECT
* MATNR FROM EKPO INTO TABLE IT_EKPO WHERE EBELN = IT_EKKO-EBELN.
* ENDIF.
CALL TRANSFORMATION ID
SOURCE OUTPUT = IT_FINAL[]
RESULT XML XML_OUT.
APPEND XML_OUT TO XMLTABLE .
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = LENGTH
FILENAME = 'C:\Users\ABH23U007\Downloads\demo.xml'
FILETYPE = 'BIN'
APPEND = ' '
*write_field_separator = ';'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
IMPORTING
FILELENGTH = LENGTH
TABLES
DATA_TAB = XMLTABLE
*FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM convert_to_camel_case USING p_xml TYPE string
CHANGING p_camel_case_xml TYPE string.
DATA: lv_pos TYPE i,
lv_end_pos TYPE i,
lv_tag_open TYPE string,
lv_tag_close TYPE string,
lv_tag TYPE string,
lv_tag_camel TYPE string,
lv_inside_tag TYPE abap_bool.
p_camel_case_xml = p_xml.
lv_inside_tag = abap_false.
" Convert opening tags to camelCase
lv_pos = 0.
WHILE lv_pos < strlen( p_camel_case_xml ).
FIND FIRST OCCURRENCE OF '<' IN SECTION OFFSET lv_pos OF p_camel_case_xml MATCH OFFSET lv_pos.
IF sy-subrc <> 0.
EXIT.
ENDIF.
FIND FIRST OCCURRENCE OF '>' IN SECTION OFFSET lv_pos OF p_camel_case_xml MATCH OFFSET lv_end_pos.
IF sy-subrc <> 0.
EXIT.
ENDIF.
lv_tag_open = substring( val = p_camel_case_xml off = lv_pos len = lv_end_pos - lv_pos + 1 ).
" Convert tag to camelCase
lv_tag = substring( val = p_camel_case_xml off = lv_pos + 1 len = lv_end_pos - lv_pos - 1 ).
IF lv_inside_tag = abap_false.
TRANSLATE lv_tag TO LOWER CASE.
ENDIF.
REPLACE ALL OCCURRENCES OF '-' IN lv_tag WITH ''.
IF lv_inside_tag = abap_false.
lv_inside_tag = abap_true.
TRANSLATE lv_tag TO lower CASE.
ELSE.
lv_inside_tag = abap_false.
ENDIF.
CONCATENATE '<' lv_tag '>' INTO lv_tag_open.
" Replace original tag with camelCase tag
REPLACE SECTION OFFSET lv_pos LENGTH ( lv_end_pos - lv_pos + 1 ) OF p_camel_case_xml WITH lv_tag_open.
lv_pos = lv_end_pos + 1.
ENDWHILE.
" Convert closing tags to camelCase
lv_pos = 0.
WHILE lv_pos < strlen( p_camel_case_xml ).
FIND FIRST OCCURRENCE OF '</' IN SECTION OFFSET lv_pos OF p_camel_case_xml MATCH OFFSET lv_pos.
IF sy-subrc <> 0.
EXIT.
ENDIF.
FIND FIRST OCCURRENCE OF '>' IN SECTION OFFSET lv_pos OF p_camel_case_xml MATCH OFFSET lv_end_pos.
IF sy-subrc <> 0.
EXIT.
ENDIF.
lv_tag_close = substring( val = p_camel_case_xml off = lv_pos len = lv_end_pos - lv_pos + 1 ).
" Convert tag to camelCase
lv_tag = substring( val = p_camel_case_xml off = lv_pos + 2 len = lv_end_pos - lv_pos - 2 ).
IF lv_inside_tag = abap_false.
TRANSLATE lv_tag TO LOWER CASE.
ENDIF.
REPLACE ALL OCCURRENCES OF '-' IN lv_tag WITH ' '.
IF lv_inside_tag = abap_false.
lv_inside_tag = abap_true.
TRANSLATE lv_tag TO lower CASE.
ELSE.
lv_inside_tag = abap_false.
ENDIF.
CONCATENATE '</' lv_tag '>' INTO lv_tag_close.
" Replace original tag with camelCase tag
REPLACE SECTION OFFSET lv_pos LENGTH ( lv_end_pos - lv_pos + 1 ) OF p_camel_case_xml WITH lv_tag_close.
lv_pos = lv_end_pos + 1.
ENDWHILE.
ENDFORM. This i