Fiedcatalog & deep structures
Hello! Good day to you all!
I'm a begginer to the whole SAP R/3 system... and I have a question related to so-caled deep structures. Have I got an opportunity to describe a deep structure in fiedcatalog like I can do for a simple field?
Like...
ls_fieldcat-fieldname = 'O_TAB'.
where o_tab is an internal table...
P.S. Will be pleased with any suggested ideas and advices.. =)
Peace to everyone!
Hi,
Check this code...
REPORT ZTEST1234 MESSAGE-ID ZZ .
DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_VALID TYPE C,
V_FLAG,
V_DATA_CHANGE,
V_ROW TYPE LVC_S_ROW,
V_COLUMN TYPE LVC_S_COL,
V_ROW_NUM TYPE LVC_S_ROID.
* CLASS lcl_event_handler DEFINITION
CLASS LCL_EVENT_HANDLER DEFINITION .
PUBLIC SECTION .
METHODS:
**Hot spot Handler
HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
**Double Click Handler
HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO.
ENDCLASS. "lcl_event_handler DEFINITION
* CLASS lcl_event_handler IMPLEMENTATION
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
*Handle Hotspot Click
METHOD HANDLE_HOTSPOT_CLICK .
CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
V_ROW = E_ROW_ID.
V_COLUMN = E_COLUMN_ID.
V_ROW_NUM = ES_ROW_NO.
MESSAGE I000 WITH V_ROW 'clicked'.
ENDMETHOD. "lcl_event_handler
*Handle Double Click
METHOD HANDLE_DOUBLE_CLICK.
ENDMETHOD. "handle_double_click
ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION
*& Global Definitions
DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM,
G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
GS_LAYOUT TYPE LVC_S_LAYO.
*- Fieldcatalog for First and second Report
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
X_FIELDCAT TYPE LVC_S_FCAT,
LS_VARI TYPE DISVARIANT.
* START-OF_SELECTION
START-OF-SELECTION.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE LIKP-VBELN,
POSNR LIKE LIPS-POSNR,
CELLCOLOR TYPE LVC_T_SCOL, "required for color
DROP(10),
END OF ITAB.
SELECT VBELN
POSNR
FROM LIPS
UP TO 20 ROWS
INTO CORRESPONDING FIELDS OF TABLE ITAB.
END-OF-SELECTION.
IF NOT ITAB[] IS INITIAL.
CALL SCREEN 100.
ELSE.
MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
ENDIF.
*& Form CREATE_AND_INIT_ALV
* text
FORM CREATE_AND_INIT_ALV .
DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER1.
CREATE OBJECT G_GRID
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
* Set a titlebar for the grid control
CLEAR GS_LAYOUT.
GS_LAYOUT-GRID_TITLE = TEXT-003.
GS_LAYOUT-ZEBRA = SPACE.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-NO_ROWMARK = 'X'.
GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
CALL METHOD G_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
CREATE OBJECT G_HANDLER.
SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
DATA: L_INDEX TYPE SY-TABIX.
"Here i am changing the color of line 1,5,10...
"so you can change the color of font conditionally
LOOP AT ITAB.
L_INDEX = SY-TABIX.
IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
LS_CELLCOLOR-FNAME = 'VBELN'.
LS_CELLCOLOR-COLOR-COL = '6'.
LS_CELLCOLOR-COLOR-INT = '0'.
LS_CELLCOLOR-COLOR-INV = '1'.
APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
LS_CELLCOLOR-FNAME = 'POSNR'.
LS_CELLCOLOR-COLOR-COL = '6'.
LS_CELLCOLOR-COLOR-INT = '0'.
LS_CELLCOLOR-COLOR-INV = '1'.
APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
ENDIF.
ENDLOOP.
* setting focus for created grid control
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID.
* Build fieldcat and set editable for date and reason code
* edit enabled. Assign a handle for the dropdown listbox.
PERFORM BUILD_FIELDCAT.
PERFORM SET_DRDN_TABLE.
* Optionally restrict generic functions to 'change only'.
* (The user shall not be able to add new lines).
PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
**Vaiant to save the layout
LS_VARI-REPORT = SY-REPID.
LS_VARI-HANDLE = SPACE.
LS_VARI-LOG_GROUP = SPACE.
LS_VARI-USERNAME = SPACE.
LS_VARI-VARIANT = SPACE.
LS_VARI-TEXT = SPACE.
LS_VARI-DEPENDVARS = SPACE.
**Calling the Method for ALV output
CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
IS_VARIANT = LS_VARI
IS_LAYOUT = GS_LAYOUT
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT
IT_OUTTAB = ITAB[].
* Set editable cells to ready for input initially
CALL METHOD G_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
ENDFORM. "CREATE_AND_INIT_ALV
*& Form EXCLUDE_TB_FUNCTIONS
* text
* -->PT_EXCLUDE text
FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
* Only allow to change data not to create new entries (exclude
* generic functions).
DATA LS_EXCLUDE TYPE UI_FUNC.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
ENDFORM. " EXCLUDE_TB_FUNCTIONS
*& Form build_fieldcat
* Fieldcatalog
FORM BUILD_FIELDCAT .
DATA: L_POS TYPE I.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-NO_ZERO = 'X'.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-HOTSPOT = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Item'(025).
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Drop'(025).
X_FIELDCAT-FIELDNAME = 'DROP'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-DRDN_HNDL = '1'.
X_FIELDCAT-DRDN_ALIAS = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
ENDFORM. " build_fieldcat
*& Module STATUS_0100 OUTPUT
* text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF G_CUSTOM_CONTAINER IS INITIAL.
**Initializing the grid and calling the fm to Display the O/P
PERFORM CREATE_AND_INIT_ALV.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form SET_DRDN_TABLE
* text
FORM SET_DRDN_TABLE.
DATA:LT_DRAL TYPE LVC_T_DRAL,
LS_DRAL TYPE LVC_S_DRAL.
LOOP AT ITAB .
* First listbox (handle '1').
IF SY-INDEX = 1.
LS_DRAL-HANDLE = '1'.
LS_DRAL-VALUE = ' '.
LS_DRAL-INT_VALUE = ' '.
ELSE.
LS_DRAL-HANDLE = '1'.
LS_DRAL-VALUE = ITAB-POSNR.
LS_DRAL-INT_VALUE = ITAB-POSNR.
ENDIF.
APPEND LS_DRAL TO LT_DRAL.
ENDLOOP.
**Setting the Drop down table for Reason Code
CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
EXPORTING
IT_DROP_DOWN_ALIAS = LT_DRAL.
ENDFORM. " set_drdn_table
Regards
vijay
Similar Messages
-
How can i map a file with different structures to several deep structures?
Hey experts,
here is my situation. I have to build a file2file scenario. The file has a flat structure without any separators. Depending on the value of the keyfield, i have to determinate, which kind of structure in the current sequence there is. Like i wrote, there isn't any fieldseparator, but for every possible structure (overall 4 types) i know the type by the length of every field in the structure.
My task is:
1. Read the file into PI and transform to XML
2. Map the flat structure depending on the keyvalue to the deep structure
3. Transform several fields in the different structures like the requirement
4. Write back the file via FTP as the same flat structure as before
Do you have any approach to solve the item number 2 (the other steps are clear for me)?
Do i need several mapping-programs? If so, how can i determinate the right mapping-program, deping on the keyvalue?
Thanks in advance
TobiHere the inbound payload:
<?xml version="1.0" encoding="utf-8" ?>
- <ns:MT_MULTI_TYPES xmlns:ns="namespace">
- <VORSATZ>
<ZSATA>0</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZLIEF>T</ZLIEF>
<START>20080905</START>
<ZFILL />
<ZENDE>E</ZENDE>
</VORSATZ>
- <KOPFSATZ>
<ZSATA>1</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<BUDAT>20080904</BUDAT>
<BLDAT>20080904</BLDAT>
<XBLNR />
<WAERS />
<HWAE2>EUR</HWAE2>
<HWAE3 />
<KURS2>000000000</KURS2>
<KURS3>000000000</KURS3>
<BKTXT />
<ZFILK />
<ZENDE>E</ZENDE>
</KOPFSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>001</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>30611102</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000057576</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>009</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000021070</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AA</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000009796</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4027V63RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <NACHSATZ>
<ZSATA>9</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZZSOL>000000000359502</ZZSOL>
<ZZHAB>000000000359502</ZZHAB>
<ZZBEL>0000001</ZZBEL>
<ZZPOS>000000010</ZZPOS>
<ZFILN />
<ZENDE>E</ZENDE>
</NACHSATZ>
- <VORSATZ>
<ZSATA>0</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZLIEF>T</ZLIEF>
<START>20080905</START>
<ZFILL />
<ZENDE>E</ZENDE>
</VORSATZ>
- <KOPFSATZ>
<ZSATA>1</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<BUDAT>20080904</BUDAT>
<BLDAT>20080904</BLDAT>
<XBLNR />
<WAERS />
<HWAE2>EUR</HWAE2>
<HWAE3 />
<KURS2>000000000</KURS2>
<KURS3>000000000</KURS3>
<BKTXT />
<ZFILK />
<ZENDE>E</ZENDE>
</KOPFSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>001</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>30611102</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000057576</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>009</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000021070</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AA</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000009796</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4027V63RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <NACHSATZ>
<ZSATA>9</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZZSOL>000000000359502</ZZSOL>
<ZZHAB>000000000359502</ZZHAB>
<ZZBEL>0000001</ZZBEL>
<ZZPOS>000000010</ZZPOS>
<ZFILN />
<ZENDE>E</ZENDE>
</NACHSATZ>
</ns:MT_MULTI_TYPES>
And here the outbound payload:
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:MT_MULTI_TYPES xmlns:ns0="namespace">
- <VORSATZ>
<ZSATA>0</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZLIEF>T</ZLIEF>
<START>20080905</START>
<ZFILL />
<ZENDE>E</ZENDE>
</VORSATZ>
- <VORSATZ>
<ZSATA>0</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZLIEF>T</ZLIEF>
<START>20080905</START>
<ZFILL />
<ZENDE>E</ZENDE>
</VORSATZ>
- <KOPFSATZ>
<ZSATA>1</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<BUDAT>20080904</BUDAT>
<BLDAT>20080904</BLDAT>
<XBLNR />
<WAERS />
<HWAE2>EUR</HWAE2>
<HWAE3 />
<KURS2>000000000</KURS2>
<KURS3>000000000</KURS3>
<BKTXT />
<ZFILK />
<ZENDE>E</ZENDE>
</KOPFSATZ>
- <KOPFSATZ>
<ZSATA>1</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>000</BUZEI>
<BUDAT>20080904</BUDAT>
<BLDAT>20080904</BLDAT>
<XBLNR />
<WAERS />
<HWAE2>EUR</HWAE2>
<HWAE3 />
<KURS2>000000000</KURS2>
<KURS3>000000000</KURS3>
<BKTXT />
<ZFILK />
<ZENDE>E</ZENDE>
</KOPFSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>001</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>30611102</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000057576</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>009</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000021070</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AA</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000009796</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4027V63RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>001</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>30611102</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000057576</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>009</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AB</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000021070</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4025V64RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <POSITIONSSATZ>
<ZSATA>4</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<KOART>S</KOART>
<SHKZG>S</SHKZG>
<NEWKO>20519109</NEWKO>
<GSBER>17AA</GSBER>
<ZUBUK />
<VBUND />
<WRBTR>0000000000000</WRBTR>
<ZBTR1>0000000009796</ZBTR1>
<ZBTR2>0000000000000</ZBTR2>
<ZSTEU />
<VALUT>20080904</VALUT>
<KOSTL />
<AUFNR />
<ZUONR>X4027V63RE460XXXXX</ZUONR>
<SGTXT>REX</SGTXT>
<BEWAR />
<ZFPOS />
<ZENDE>E</ZENDE>
</POSITIONSSATZ>
- <NACHSATZ>
<ZSATA>9</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZZSOL>000000000359502</ZZSOL>
<ZZHAB>000000000359502</ZZHAB>
<ZZBEL>0000001</ZZBEL>
<ZZPOS>000000010</ZZPOS>
<ZFILN />
<ZENDE>E</ZENDE>
</NACHSATZ>
- <NACHSATZ>
<ZSATA>9</ZSATA>
<MANDT>001</MANDT>
<BUKRS>0560</BUKRS>
<BLART>8F</BLART>
<BELNR>1816008128</BELNR>
<BUZEI>010</BUZEI>
<ERDAT>20080905</ERDAT>
<UZEIT>000549</UZEIT>
<ZPROG>PGRR3010</ZPROG>
<ZZSOL>000000000359502</ZZSOL>
<ZZHAB>000000000359502</ZZHAB>
<ZZBEL>0000001</ZZBEL>
<ZZPOS>000000010</ZZPOS>
<ZFILN />
<ZENDE>E</ZENDE>
</NACHSATZ>
</ns0:MT_MULTI_TYPES> -
Create a deep structure for dynamic internal table
Hi All,
I am creating a dynamic table using method cl_alv_table_create=>create_dynamic_table.
The normal structure gets created. but now I want to creat a Deep structure for having information of colors also for each column. So I want to add a COLTAB type LVC_T_SCOL for colors information .
How should I create this using above method?
Rgds,
MadhuriI created a zcelltab structure as below. But while creating dynamic internal table, I received the error with
'Type "ZCELLTAB" is unknown 68 ZCELLTAB-CELLTAB
Here is the code.
DATA: BEGIN OF ZCELLTAB,
CELLTAB LIKE LVC_S_STYL,
END OF ZCELLTAB.
FIELD-SYMBOLS <T_CELLTAB> TYPE LVC_T_STYL.
DATA : LT_CELLTAB TYPE LVC_T_STYL.
DATA: WA_CELLTAB TYPE LINE OF LVC_T_STYL.
DATA: GT_FCAT1 TYPE LVC_T_FCAT,
GW_FCAT1 TYPE LVC_S_FCAT,
GT_FCAT2 TYPE LVC_T_FCAT,
GW_FCAT2 TYPE LVC_S_FCAT.
After filling the FCAT1, I added the field in FCAT2 like below
GT_FCAT2[ ] = GT_FCAT1[ ].
G_TABIX = G_TABIX + 1.
GW_FCAT2-INTTYPE = 'C'.
MOVE G_TABIX TO GW_FCAT2-COL_POS.
GW_FCAT2-OUTPUTLEN = '10'.
GW_FCAT2-FIELDNAME = 'T_CELLTAB'.
GW_FCAT2-TABNAME = 'ZCELLTAB'.
GW_FCAT2-REF_FIELD = 'CELLTAB'.
GW_FCAT2-REF_TABLE = 'ZCELLTAB'.
APPEND GW_FCAT2 TO GT_FCAT2
CLEAR GW_FCAT2.
While calling the below method, the error with
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = GT_FCAT2
IMPORTING
EP_TABLE = GT_REQ.
ASSIGN GT_REQ->* TO <F_TAB>.
CREATE DATA GWA_REQ LIKE LINE OF <F_TAB>.
ASSIGN GWA_REQ->* TO <F_WA>.
LOOP AT ITAB.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <F_WA> TO <F_VAL>
<F_VAL> = ITAB-MATNR.
IF ITAB-MATNR IS INITIAL.
ASSIGN COMPONENT 'T_CELLTAB' OF STRUCTURE <F_WA> TO <T_CELLTAB>
CLEAR WA_CELLTAB.
WA_CELLTAB-FIELDNAME = 'MATNR'.
WA_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
INSERT WA_CELLTAB INTO TABLE <T_CELLTAB>.
ENDIF.
APPEND <F_WA> TO <F_TAB>
ENDLOOP.
CALL METHOD GR_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_CONSISTENCY_CHECK = G_CONSISTENCY_CHECK
IT_TOOLBAR_EXCLUDING = G_EXCLUDE
I_SAVE = G_SAVE
I_DEFAULT = 'X'
IS_LAYOUT = G_LAYOUT
CHANGING
IT_OUTTAB = <F_TAB>
IT_FIELDCATALOG = F_CAT1.
Please let me know where I was wrong.
Should I remove the T_CELLTAB as the field name is not mentioned in the structure 'ZCELLTAB'.
Thanks,
Kumar.
Edited by: venn e on May 7, 2010 4:10 PM -
Regarding creation of dynamic deep structure
Hi all,
I have to construct the dynamic deep structure.
for example,
With the help of information about address and t_table, i have to create the deep structure on runtime.
In one case i need to create the deep strcuture with address alone and in another case i need to create the deep structure with address and t_table.
DATA : begin of address ,
address type string ,
end of address.
data : begin of t_tab ,
name(10) type c,
age type i,
address like address,
end of t_tab,
t_table like Table of t_tab.
data: BEGIN OF wa_vig,
details1 like address,
details2 like t_table,
END OF wa_vig.
data: BEGIN OF wa_vig,
details1 like address,
END OF wa_vig.
Please guide me, how should i acheive this with the help of dynamic declarion .
regards
VigneshHi All,
I will be happy if i can acheive this using RTTS concept.
Regards
Vignesh -
How can i point to a specific field in DEEP structure and populate it?
Hello,
I have declared a internal table as below,
DATA: BEGIN OF wa_data,
vkorg TYPE vkorg
vtweg TYPE vtweg
spartTYPE spart
field_name TYPE CHAR30
value TYPE CHAR50
END OF wa_data
DATA: ls_data TYPE wa_data,
lt_data TYPE STANDARD TABLE OF wa_data.
The lt_data is populated as below,
VKORG-------VTWEG-------SPART-------FIELD_NAME-------VALUE
1000-----------10-------------01------------KALKS---------------ZP00 "Pricing procedure
1000-----------10-------------01------------ZTERM---------------15 days "Payment terms
1000-----------10-------------01------------MAHNA---------------09 "Dunning
Fine.
Now, i have a DEEP DEEP DEEP structure as belowm
DATA: ls_deep TYPE cmds_ei_extern. "Pls. see this deep structure 'cmds_ei_extern' in SAP DDIC / SE11
This deep structure is part of Customer master creation. Now, i would like to POPULATE this deep structure from my lt_data itab DYNAMICALLy, i mean, with out mentioning the field names (like, ZTERM, KALKS, MAHNA etc etc), bcz its these i am pulling this lt_data from a custom table, so going further business may also ADD a new record / field like BUSAB (Accouting clerk) with a value of AL (Allen Christi), hence i want to hv dynamic and its less tediuos also bcz,
We can LOOP lt_data INTO ls_data (for example, the ls_data-field_name = KALKS)
Now, point the KALKS in the deep deep deep structure and populate it with a value of ls_data-value (= 15 days)
ENDLLOOP.
Pls. let me know How can i do this, i guess, we need to use field symbols, pls. let me know the code to achieve my requirement
Thank youHi,
Please refer below code.This will populate field kunnr of the deep structure. Once you select the data as per your requirement,you can write similar code to populate rest of the fields in the deep strucure.
TYPES : BEGIN OF ty_data,
kunnr TYPE kunnr,
END OF ty_data.
FIELD-SYMBOLS : <lfs_cmds_ei_header> TYPE cmds_ei_header,
<lfs_cmds_ei_instance> TYPE cmds_ei_instance,
<lfs_kunnr> TYPE kunnr.
DATA: lfs_cmds_ei_extern TYPE cmds_ei_extern,
lr_dytable TYPE REF TO data,
lr_dytable_wa TYPE REF TO data,
lt_data TYPE STANDARD TABLE of ty_data ,
wa_data TYPE ty_data.
SELECT kunnr
FROM yalb_kunde
UP TO 1 ROWS
INTO TABLE lt_data.
IF sy-subrc = 0.
LOOP AT lt_data INTO lwa_data.
ASSIGN COMPONENT 'HEADER' OF STRUCTURE lfs_cmds_ei_extern TO <lfs_cmds_ei_header>.
IF sy-subrc = 0.
ASSIGN COMPONENT 'OBJECT_INSTANCE' OF STRUCTURE <lfs_cmds_ei_header> TO <lfs_cmds_ei_instance>.
IF sy-subrc = 0.
ASSIGN COMPONENT 'KUNNR' OF STRUCTURE <lfs_cmds_ei_instance> TO <lfs_kunnr>.
IF sy-subrc = 0.
<lfs_kunnr> = lwa_data-kunnr.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
Thanks,
Priya -
Reciever file adapter configuration for Deep structure
Hi Experts,
I have a idoc to file scenario in which i used a data type for file in below format:
DT_Test
-->Recordset(0.unbounded)
>E21DPU1(0.unbounded)
>field1
>field2
>E21DPU5(0.unbounded)
>filed 3
>filed 4
>E21DP03(0.unbounded)
>filed 5
>filed 6
Here DT_test is datatype name,Recordset is a structure name which contain E21DPU1, E21DPU5,E21DPO3 stucture inside it.Now,E21DPU5 and E21DPO3 structures are under E21DPU1.
I am confused in creating content conversion parameters i.e what we have to mention in Recordset Stucture .
I used E21DPU1,,E21DPU5,,E21DP03,* .should it work for deep structure.
Thanks
DeepakHi,
file adapter does not handle 2 level deep structures
the easiest way to do it now is to go for abap or java mapping
and create a line for each of the output lines and handle this in the file adapter
so like <line> </line>
<line>E21DPU1(0.unbounded) with fields </line>
<line>E21DPU5(0.unbounded) with fields </line>
<line> etc. </line>
Regards,
Michal Krawczyk -
Problem with deep structure in Adobe Forms
Hi ,
I am converting smartform into adobe forms. While converting the program code in the code initialization of the smart forms also get transformed to adobe forms the problem is my internal table is of type deep structure while passing it through the tables parameter i am getting error in adobe forms .But while passing the internal table through import parameter its not giving error.The same code works fine with smartforms. I dont know why its not taking the structure of internal table in adobe forms properly .It happens only for deep strucure formal normal tables it works fine in table parameters .If any one has come across this scenario please share your ideas.
Best Regards,
SreeramIf I were you, I would never do this through any program. The only secure, reliable way is to rewrite everything by your own hands. Even if we could argue, your way works as well (and could be faster at the beginning), at the firt moment you will be asked to perform any tiny change in this "imported" thing, you will cry your eyes out (and understand why it is the only useful way to rewrite everything manually).
regards Otto -
XSLT and ABAP Transformation Deep Structure
Hello Everyone,
While I've read the forums and the links of a number of folks doing the same thing. I am stuck in that I cannot figure out how to populate a deep structure via XSLT. Not sure what is going wrong, but I suspect it is obvious. The simple problem is that my structure is not getting populated. It is blank. The transformation works in testing STRANS (and in Stylus Studio).
I cannot figure out what is wrong that makes the t_pexr2002 table blank. Thanks for any insight.
Greg
The simple program is:
TYPES: BEGIN OF ty_head,
sndprn TYPE string,
bgmref TYPE string,
moabetrh TYPE string,
create_date TYPE string,
settlement_date TYPE string,
no_lines TYPE string,
END OF ty_head.
TYPES: BEGIN OF ty_pricing,
moabetr TYPE string,
END OF ty_pricing.
TYPES: BEGIN OF ty_item,
docname TYPE string,
docnummr TYPE string,
pricing TYPE ty_pricing,
END OF ty_item.
TYPES: BEGIN OF ty_summary,
status_message TYPE string,
END OF ty_summary.
TYPES: BEGIN OF ty_mn,
header_data TYPE ty_head,
item_data TYPE ty_item,
summary_data TYPE ty_summary,
END OF ty_mn.
DATA: t_pexr2002 TYPE STANDARD TABLE OF ty_mn.
DATA: xml_doc TYPE REF TO cl_xml_document, xml TYPE string.
CREATE OBJECT xml_doc.
CALL METHOD xml_doc->import_from_file
EXPORTING
filename = 'C:\temp\2640273.xml'.
CALL METHOD xml_doc->render_2_string
EXPORTING
pretty_print = 'X'
IMPORTING
stream = xml.
CALL TRANSFORMATION zusl_pexr2002_v1
SOURCE XML xml
RESULT output = t_pexr2002.
Edited by: Thomas Zloch on Jun 9, 2010 6:05 PMHere is my XSLT:
Here is the transformation: Also pretty simple...
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ... >
<xsl:strip-space elements="*"/>
<xsl:template match="/PEXR2002/IDOC">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<OUTPUT>
<HEADER_DATA>
<SNDPRN>
<xsl:value-of select="EDI_DC40/SNDPRN"/>
</SNDPRN>
<BGMREF>
<xsl:value-of select="E1IDKU1/BGMREF"/>
</BGMREF>
<MOABETRH>
<xsl:value-of select="E1IDKU5/MOABETR"/>
</MOABETRH>
<CREATE_DATE>
<xsl:value-of select="EDI_DC40/CREDAT"/>
</CREATE_DATE>
<SETTLEMENT_DATE>
<xsl:value-of select="E1EDK03/DATUM"/>
</SETTLEMENT_DATE>
<NO_LINES>
<xsl:value-of select="count(E1IDPU1)"/>
</NO_LINES>
</HEADER_DATA>
<ITEM_DATA>
<xsl:for-each select="E1IDPU1">
<DOCNAME>
<xsl:value-of select="DOCNAME"/>
</DOCNAME>
<DOCNUMMR>
<xsl:value-of select="DOCNUMMR"/>
</DOCNUMMR>
<PRICING_DATA>
<xsl:for-each select="E1IDPU5[MOAQUAL = '006']">
<MOABETR>
<xsl:value-of select="MOABETR"/>
</MOABETR>
</xsl:for-each>
</PRICING_DATA>
</xsl:for-each>
</ITEM_DATA>
<SUMMARY_DATA>
<xsl:for-each select="EDI_DS40">
<STATUS_MESSAGE>
<xsl:value-of select="STAPA1"/>
</STATUS_MESSAGE>
</xsl:for-each>
</SUMMARY_DATA>
</OUTPUT>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
Edited by: Thomas Zloch on Jun 9, 2010 6:05 PM -
How to use STRANS to translate XML to ABAP with deep structure
every experts, I want to use Tcode: STRANS to translate XML to ABAP, But it does not work well,
here is XML code,I want to translate this XML into an an Inter table gt_orders with deep structure of oeb, and colum oeb is also and intertable,how can I do this.
<?xml version="1.0" encoding="gb2312" ?><axmt410><ObjectID>setSalesOrder</ObjectID><azp01>000000</azp01><oea00>1</oea00><ta_oeaecn>SO-140227-3041</ta_oeaecn><oea03>25325017</oea03><oea02>2014-02-27 17:44:44.0</oea02><ta_oea002>2763.0</ta_oea002><ta_oea001>0.0</ta_oea001><oea14></oea14><oea15>25325017</oea15><oea23>RMB</oea23><oeaconf>S3</oeaconf><oea10></oea10><oeaud01>null</oeaud01><ta_oea007></ta_oea007><oea25>101</oea25><ta_oea008>0</ta_oea008><ta_oea009>null</ta_oea009><oeauser>Hanjingya</oeauser><ta_oeanday>2014-02-27 17:44:44.991</ta_oeanday><ta_oeamday>2014-02-28 08:30:14.866</ta_oeamday><ta_oeacday>2014-02-28 08:30:14.866</ta_oeacday><oeaud02>0</oeaud02><ta_oea030>null</ta_oea030><oeb><oeb03>1</oeb03><oeb04>7400208249</oeb04><oeb05>PCS</oeb05><oeb17>921.0</oeb17><oeb13>921.0</oeb13><oeb15></oeb15><oeb12>5</oeb12><oeb09>990001</oeb09><ta_oeb001></ta_oeb001><ta_oeb002>Yunnan</ta_oeb002><ta_oeb003>address1</ta_oeb003><ta_oeb004>zhangdagui、zhanglan</ta_oeb004><ta_oeb005>15974749998、15987782008</ta_oeb005><ta_oeb006>address and street</ta_oeb006><oebud01></oebud01></oeb><oeb><oeb03>2</oeb03><oeb04>7400208250</oeb04><oeb05>PCS</oeb05><oeb17>921.0</oeb17><oeb13>921.0</oeb13><oeb15></oeb15><oeb12>5</oeb12><oeb09>990001</oeb09><ta_oeb001></ta_oeb001><ta_oeb002>Yunnan</ta_oeb002><ta_oeb003>address2</ta_oeb003><ta_oeb004>zhangdagui、chenlan</ta_oeb004><ta_oeb005>15974749998、15987782008</ta_oeb005><ta_oeb006>address and street</ta_oeb006><oebud01></oebud01></oeb></axmt410>
I write these codes in SAP XSLT editor
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<ORDERS>
<xsl:apply-templates select="//axmt410"/>
</ORDERS>
</asx:values>
</asx:abap>
</xsl:template>
<xsl:template match="axmt410">
<OBJECTID>
<xsl:value-of select="ObjectID"/>
</OBJECTID>
<AZP01>
<xsl:value-of select="azp01"/>
</AZP01>
<OEA00>
<xsl:value-of select="oea00"/>
</OEA00>
<TA_OEAECN>
<xsl:value-of select="ta_oeaecn"/>
</TA_OEAECN>
<OEA03>
<xsl:value-of select="oea03"/>
</OEA03>
<OEA05>
<xsl:value-of select="oea05"/>
</OEA05>
<OEA02>
<xsl:value-of select="oea02"/>
</OEA02>
<TA_OEA002>
<xsl:value-of select="ta_oea002"/>
</TA_OEA002>
<TA_OEA001>
<xsl:value-of select="ta_oea001"/>
</TA_OEA001>
<OEA14>
<xsl:value-of select="ora14"/>
</OEA14>
<OEA15>
<xsl:value-of select="ora15"/>
</OEA15>
<OEA23>
<xsl:value-of select="ora23"/>
</OEA23>
<OEACONF>
<xsl:value-of select="oeaconf"/>
</OEACONF>
<OEA10>
<xsl:value-of select="ora10"/>
</OEA10>
<OEAUD01>
<xsl:value-of select="oeaud01"/>
</OEAUD01>
<TA_OEA007>
<xsl:value-of select="ta_oea007"/>
</TA_OEA007>
<OEA25>
<xsl:value-of select="ora25"/>
</OEA25>
<TA_OEA008>
<xsl:value-of select="ta_oea008"/>
</TA_OEA008>
<TA_OEA009>
<xsl:value-of select="ta_oea009"/>
</TA_OEA009>
<TA_OEA013>
<xsl:value-of select="ta_oea013"/>
</TA_OEA013>
<TA_OEA014>
<xsl:value-of select="ta_oea014"/>
</TA_OEA014>
<TA_OEA015>
<xsl:value-of select="ta_oea015"/>
</TA_OEA015>
<TA_OEA016>
<xsl:value-of select="ta_oea016"/>
</TA_OEA016>
<TA_OEA017>
<xsl:value-of select="ta_oea017"/>
</TA_OEA017>
<TA_OEA018>
<xsl:value-of select="ta_oea018"/>
</TA_OEA018>
<TA_OEA019>
<xsl:value-of select="ta_oea019"/>
</TA_OEA019>
<TA_OEA020>
<xsl:value-of select="ta_oea020"/>
</TA_OEA020>
<TA_OEA021>
<xsl:value-of select="ta_oea021"/>
</TA_OEA021>
<TA_OEA022>
<xsl:value-of select="ta_oea022"/>
</TA_OEA022>
<TA_OEA028>
<xsl:value-of select="ta_oea028"/>
</TA_OEA028>
<OEAUSER>
<xsl:value-of select="oeauser"/>
</OEAUSER>
<TA_OEANDAY>
<xsl:value-of select="ta_oeanday"/>
</TA_OEANDAY>
<TA_OEAMDAY>
<xsl:value-of select="ta_oeamday"/>
</TA_OEAMDAY>
<TA_OEACDAY>
<xsl:value-of select="ta_oeacday"/>
</TA_OEACDAY>
<OEAUD02>
<xsl:value-of select="oeaud02"/>
</OEAUD02>
<TA_OEA030>
<xsl:value-of select="ta_oea030"/>
</TA_OEA030>
<OEB>
<xsl:for-each select="oeb">
<OEB03>
<xsl:value-of select="oeb03"/>
</OEB03>
<OEB04>
<xsl:value-of select="oeb04"/>
</OEB04>
<OEB05>
<xsl:value-of select="oeb05"/>
</OEB05>
<OEB17>
<xsl:value-of select="oeb17"/>
</OEB17>
<OEB13>
<xsl:value-of select="oeb13"/>
</OEB13>
<OEB15>
<xsl:value-of select="oeb15"/>
</OEB15>
<OEB12>
<xsl:value-of select="oeb12"/>
</OEB12>
<OEB09>
<xsl:value-of select="oeb09"/>
</OEB09>
<TA_OEB001>
<xsl:value-of select="ta_oeb001"/>
</TA_OEB001>
<TA_OEB002>
<xsl:value-of select="ta_oeb002"/>
</TA_OEB002>
<TA_OEB003>
<xsl:value-of select="ta_oeb003"/>
</TA_OEB003>
<TA_OEB004>
<xsl:value-of select="ta_oeb004"/>
</TA_OEB004>
<TA_OEB005>
<xsl:value-of select="ta_oeb005"/>
</TA_OEB005>
<TA_OEB006>
<xsl:value-of select="ta_oeb006"/>
</TA_OEB006>
<OEBUD01>
<xsl:value-of select="oebud01"/>
</OEBUD01>
</xsl:for-each>
</OEB>
</xsl:template>
</xsl:transform>
and I use below ABAP program for a test, but the items from XML can not translate into Interner table gt_orders-oeb[]
TYPE-POOLS abap.
CONSTANTS gs_file TYPE string VALUE 'C:\temp\order02.xml'.
* This is the structure for the data from the XML file
TYPES:
BEGIN OF typ_s_oeb,
oeb03 TYPE string, "
oeb04 TYPE string, "
oeb05 TYPE string, "
oeb17 TYPE string, "
oeb13 TYPE string,
oeb15 TYPE string,
oeb12 TYPE string, "
oeb09 TYPE string, "
ta_oeb001 TYPE string, "
ta_oeb002 TYPE string, "
ta_oeb003 TYPE string, "
ta_oeb004 TYPE string, "
ta_oeb005 TYPE string, "
ta_oeb006 TYPE string, "
ta_oeb013 TYPE string, "
ta_oeb014 TYPE string, "
ta_oeb015 TYPE string, "
ta_oeb016 TYPE string, "
ta_oeb017 TYPE string, "
ta_oeb018 TYPE string, "
ta_oeb019 TYPE string, "
ta_oeb020 TYPE string, "
ta_oeb021 TYPE string, "
ta_oeb022 TYPE string, "
oebud01 TYPE string, "
END OF typ_s_oeb.
TYPES: typ_t_oeb TYPE TABLE OF typ_s_oeb WITH KEY oeb03.
TYPES:
BEGIN OF typ_s_order,
objectid TYPE string, "
azp01 TYPE string, "
oea00 TYPE string, "
ta_oeaecn TYPE string, "
oea03 TYPE string, "
oea02 TYPE string, "
ta_oea002 TYPE string, "
ta_oea001 TYPE string, "
oea14 TYPE string, "
oea15 TYPE string,
oea23 TYPE string, "
oeaconf TYPE string, "
oea10 TYPE string, "
oeaud01 TYPE string, "
ta_oea007 TYPE string, "
oea25 TYPE string, "
ta_oea008 TYPE string, "
ta_oea009 TYPE string, "
oeauser TYPE string, "
ta_oeanday TYPE string, "
ta_oeamday TYPE string, "
ta_oeacday TYPE string, "
oeaud02 TYPE string, "
ta_oea030 TYPE string, "
ta_oea013 TYPE string,
ta_oea014 TYPE string,
ta_oea015 TYPE string,
ta_oea016 TYPE string,
ta_oea017 TYPE string,
ta_oea018 TYPE string,
ta_oea019 TYPE string,
ta_oea020 TYPE string,
ta_oea021 TYPE string,
ta_oea022 TYPE string,
ta_oea025 TYPE string,
oeb TYPE typ_t_oeb,
END OF typ_s_order.
* Table for the XML content
DATA: gt_itab TYPE STANDARD TABLE OF char2048,
gs_itab LIKE LINE OF gt_itab.
* Table and work ares for the data from the XML file
DATA: gt_orders TYPE STANDARD TABLE OF typ_s_order,
gs_orders TYPE typ_s_order.
* Result table that contains references
* of the internal tables to be filled
DATA: gt_result_xml TYPE abap_trans_resbind_tab,
gs_result_xml TYPE abap_trans_resbind.
* For error handling
DATA: gs_rif_ex TYPE REF TO cx_root,
gs_var_text TYPE string.
* Get the XML file from your client
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gs_file
CHANGING
data_tab = gt_itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "IPERSON".
GET REFERENCE OF gt_orders INTO gs_result_xml-value.
gs_result_xml-name = 'ORDERS'.
APPEND gs_result_xml TO gt_result_xml.
* Perform the XSLT styleshee
TRY.
CALL TRANSFORMATION zfx_so_xml_to_abap
SOURCE XML gt_itab
RESULT (gt_result_xml).
CATCH cx_root INTO gs_rif_ex.
gs_var_text = gs_rif_ex->get_text( ).
MESSAGE gs_var_text TYPE 'S'.
ENDTRY.
LOOP AT gt_orders INTO gs_orders.
ENDLOOP.The simplest way seems to me is to use a XSL file for that. The <xsl:output> attributes doctype-system and doctype-public generate the DTD declaration <!DOCTYPE YOUR_ROOT SYSTEM "yourDTDfile.dtd"> and <!DOCTYPE YOUR_ROOT PUBLIC "yourDTDfile.dtd">, respectively.
When calling transformerInstance.transform() the XSLT processor performs the identity transformation - it just copies elements, attributes, content, processing instructions and comments to the result stream.
If you're using an xsl file for your transformation already, simply add <xsl:output doctype-system="yourDTDfile.dtd"/> to your existing XSL file.
If you're only using the identity transformation you'd need to change the line of code where you obtain the transformer instance from the TransformerFactory to:
t_factory.newTransformer(new StreamSource("test.xsl"));
and use this as test.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="yourDTDfile.dtd"/>
<!-- this is the identity transformation -->
<xsl:template match="*|@*|comment()|processing-instruction()|text()">
<xsl:copy>
<xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>Good luck. -
XSLT transformation for deep structure .....
Hello,
I am trying to do an XSLT transformation for a deep structure HAP_S_PDF_DOCUMENT (see it in SE11), I have managed to achieve this. but not with perfection. i still get some redundant data and data have been experiencing Data duplication. I was hoping if you people point out the what is wrong in the transfromation. The data repeats for every once under node DATA and then under node of the refered structure name. Besides it also create a blank row even if the record is 0. I am mostly facing problem with nodes T_ELEMENTS. T_COL_CELL and T_FIELD. These are the nested structures, Can anybody help / guide me to achieve these transforamtion?
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:template match="HAP_DOCUMENT">
<xsl:element name="HAP_DOCUMENT" namespace="">
<xsl:apply-templates select="MAIN_HEADER"/>
<xsl:apply-templates select="T_ELEMENTS"/>
<xsl:apply-templates select="T_STAT_CHG_BUTTONS"/>
<xsl:apply-templates select="S_APPRAISAL_ID"/>
<xsl:apply-templates select="S_HEADER"/>
<xsl:apply-templates select="POSITIONS"/>
<xsl:element name="STAT_CHG_BUTTON">
<xsl:value-of select="../STAT_CHG_BUTTON"/>
</xsl:element>
<xsl:element name="OFFLINE_ID">
<xsl:value-of select="OFFLINE_ID"/>
</xsl:element>
<xsl:element name="BSP_FLAG">
<xsl:value-of select="BSP_FLAG"/>
</xsl:element>
<xsl:element name="ROLE">
<xsl:value-of select="ROLE"/>
</xsl:element>
<xsl:element name="APPRAISAL_YEAR">
<xsl:value-of select="APPRAISAL_YEAR"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="MAIN_HEADER">
<xsl:element name="MAIN_HEADER">
<xsl:for-each select="ZBGAPR_FORM_HEADER">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_ELEMENTS">
<xsl:element name="T_ELEMENTS">
<xsl:for-each select="ZHAP_S_PDF_ELEMENTS">
<xsl:element name="DATA">
<xsl:apply-templates select="T_COL_CELL"/>
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_COL_CELL">
<xsl:element name="T_COL_CELL">
<xsl:for-each select="ZHAP_S_PDF_COL_CELL">
<xsl:element name="DATA">
<xsl:apply-templates select="T_FIELD"/>
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_FIELD">
<xsl:element name="T_FIELD">
<xsl:for-each select="ZHAP_S_PDF_FIELD">
<xsl:element name="DATA">
<xsl:apply-templates select="T_VAL_VALUES"/>
<xsl:apply-templates select="T_VAL_RANGES"/>
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_VAL_VALUES">
<xsl:element name="T_VAL_VALUES">
<xsl:for-each select="HAP_S_BODY_CELL_VAL_VALUES">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_VAL_RANGES">
<xsl:element name="T_VAL_RANGES">
<xsl:for-each select="HAP_S_BODY_CELL_VAL_RANGES">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_STAT_CHG_BUTTONS">
<xsl:element name="T_STAT_CHG_BUTTONS">
<xsl:for-each select="HAP_S_BODY_CELL_VAL_RANGES">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="S_APPRAISAL_ID">
<xsl:element name="S_APPRAISAL_ID">
<xsl:copy-of select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="S_HEADER">
<xsl:element name="S_HEADER">
<xsl:apply-templates select="S_TEXTS"/>
<xsl:apply-templates select="T_APPRAISER"/>
<xsl:apply-templates select="T_APPRAISEE"/>
<xsl:apply-templates select="T_PART_APPRAISER"/>
<xsl:apply-templates select="T_OTHERS"/>
<xsl:apply-templates select="S_STATUS"/>
<xsl:apply-templates select="S_DATES"/>
<xsl:apply-templates select="S_DISPLAY"/>
</xsl:element>
</xsl:template>
<xsl:template match="POSITIONS">
<xsl:element name="POSITION">
<xsl:for-each select="ZBGHR_APR_POSITION_DET">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="S_TEXTS">
<xsl:element name="S_TEXTS">
<xsl:copy-of select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="T_APPRAISER">
<xsl:element name="T_APPRAISER">
<xsl:for-each select="HAP_S_PDF_APPRAISER">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_APPRAISEE">
<xsl:element name="T_APPRAISEE">
<xsl:for-each select="HAP_S_PDF_APPRAISEE">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_OTHERS">
<xsl:element name="T_OTHERS">
<xsl:for-each select="HAP_S_PDF_OTHERS">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_PART_APPRAISER">
<xsl:element name="T_PART_APPRAISER">
<xsl:for-each select="HAP_S_PDF_PART_APPRAISERS">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="T_PART_APPRAISER">
<xsl:element name="T_PART_APPRAISER">
<xsl:for-each select="HAP_S_PDF_PART_APPRAISERS">
<xsl:element name="DATA">
<xsl:copy-of select="child::node()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="S_STATUS">
<xsl:element name="S_STATUS">
<xsl:copy-of select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="S_DATES">
<xsl:element name="S_DATES">
<xsl:copy-of select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="S_DISPLAY">
<xsl:element name="S_DISPLAY">
<xsl:copy-of select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="STAT_CHG_BUTTON">
</xsl:template>
<xsl:template match="OFFLINE_ID">
</xsl:template>
<xsl:template match="BSP_FLAG">
</xsl:template>
<xsl:template match="ROLE">
</xsl:template>
<xsl:template match="APPRAISAL_YEAR">
</xsl:template>
</xsl:transform>
Regards,
Shishir.P"XSLT transformation for a deep structure"
which way abap to xml or xml to abap?
you may want to check this thread
Re: Problem converting XML back to structure using XSLT -
How to read xml with deep structure into intarnal table.
Hi,
Could you pls any body provide xslt code for deep structure convert into internal table.
sample xml file:
- <ns0:CREATIONOFCONTRACT xmlns:ns0="http://BPCreationXSD.CreationOfContract">
- <CREATIONOFCONTRACTDATA>
<RequestType>L0011</RequestType>
<ApplicationId>AN-12</ApplicationId>
<LoanId>QO-22</LoanId>
- <Borrowerguarantorinfo>
<Borrowerbpno>101020</Borrowerbpno>
<Co-borrower1BPNo>101021</Co-borrower1BPNo>
<Co-borrower2BPNo>101022</Co-borrower2BPNo>
<Guarantor1BPNo>101023</Guarantor1BPNo>
<Guarantor2BPNo>101024</Guarantor2BPNo>
<Branch>New Delhi</Branch>
</Borrowerguarantorinfo>
- <Loaninfo>
<Applicationtype>Fresh</Applicationtype>
<Purposeofloan>Home Purchase</Purposeofloan>
<Securedunsecuredflag>Secured</Securedunsecuredflag>
<Loantype>HL with MRTA</Loantype>
<Loancurrency>INR</Loancurrency>
<Loanproduct>MaxiHome Loan Package</Loanproduct>
<Loanscheme>MaxiHome ZEC</Loanscheme>
<Loanamount>1500000.00</Loanamount>
<Loantenure>60</Loantenure>
<Tiered>No</Tiered>
</Loaninfo>
<Periodfrom>01/07/2009</Periodfrom>
<Periodto>16/09/2019</Periodto>
<RateType>Fixed</RateType>
<Ratecode>10.25</Ratecode>
</CREATIONOFCONTRACTDATA>
</ns0:CREATIONOFCONTRACT>Hi Ramesh,
Thanks for the info,but I found lot of tables unfortunately I am not getting the value for radio buttons. Also I found a FM FIELD_SELECTION_CUSTOMIZE , IMPORT_DYNPRO etc which will call that screen based on profile but it will not store data any where. I found several tables like TCATS, TFAWC, TFAWF, TFAWT etc.But I am not getting the value for raduio buttons.
Thanks & Regards,
Nagaraj Kalbavi -
Move deep structure do regular structure
HI All ,
I need to move a proxy structure (deep ) to abap regular structure (not deep)
there is general method or program which i can use ?
if not any example will help .
Thanks
James
Edited by: James Herb on Feb 4, 2010 9:52 AM
Edited by: James Herb on Feb 4, 2010 10:56 AMHi James,
Iam not completely clear with the question, but are you asking how to access values from a deep structure?
If so, check if this link helps you:
BADI_SCD_SAVE how to code IF_EX_BADI_SCD_SAVE~CHECK_COMPLETE
In this link, NETWR is being accessed from the deep structure I_SCD-X-ITEM[1]-VFKP-NETWR
Regards,
Swarna Munukoti -
Creating an XML From a Deep Structure using XSL Transformation
Hi ABAPers,
I have a requirement to use XSL Transformations on an ABAP deep type structure.
Currently i have an API that fills in this deep structure and by using CALL TRANSFORMATION ID.... i will get the BIG XML having having 100s of nodes . But actualy form the deep structure i need only some NODES (say 50)... So i tried writing an XSLT
in the transaction STRANS.. but on using this TRANSFORMATION which i wrote i am getting an error messgae like INVALID XML...
Am i going in right track or is there a good solution...
My sample transformation is as below...
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:value-of select="DATA/NODE_ELEMENTS/UUID_KEY/UUID"/>
<xsl:value-of select="DATA/NODE_ELEMENTS/SEMANTICAL_NAME"/>
<xsl:value-of select="DATA/NODE_ELEMENTS/STRUCT_CAT"/>
<xsl:value-of select="DATA/NODE_ELEMENTS/USAGE_CAT"/>
<xsl:value-of select="DATA/NODE_ELEMENTS/RESTRICTED_IND"/>
<xsl:value-of select="VALUES/DATA/NODE_ID"/>.
</xsl:template>
</xsl:transform>
Please help me in solving this issue....
Thanks,
Linda.Hi Linda,
I am replying based on your sample code.
Try the below following suggestions.
here 'GRPHDR' is the node where I am selecting the data.
IGRPHDR is the name of the reference.
First calling the transformation in you program.
TYPES: BEGIN OF tl_hdr,
msgid(20) TYPE c,
END OF tl_hdr.
DATA : t_hdr TYPE STANDARD TABLE OF tl_hdr.
GET REFERENCE OF t_hdr INTO l_result_xml-value.
l_result_xml-name = 'IGRPHDR'.
APPEND l_result_xml TO t_result_xml.
TRY.
CALL TRANSFORMATION yfi_xml_read
SOURCE XML it_xml_data
RESULT (t_result_xml).
CATCH cx_root INTO l_rif_ex.
l_var_text = l_rif_ex->get_text( ).
l_bapiret-type = 'E'.
l_bapiret-message = l_var_text.
APPEND l_bapiret TO errormsgs.
EXIT.
ENDTRY.
in XSL transformation
First write a block of statement to specify from which node you are taking the data.
No matter it is a node or sub-node.
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<IGRPHDR> " reference name of internal table
<xsl:apply-templates select="//GrpHdr"/>
</IGRPHDR>
</asx:values>
</asx:abap>
</xsl:template>
Next select the data from the nodes under the nodes specified in the transformation.
here msgid is the field i am selecting for value.
<xsl:template match="GrpHdr">
<item>
<MSGID> " field in the internal table t_hdr where data has to go
<xsl:value-of select="MsgId"/>
</MSGID>
</item>
</xsl:template>
reply back if further clarification is needed.
Thanks and regards,
Kannan N -
File content conversion : Deep Structure
Hi,
I have to do a file conversion(receiver file adapter) of an xml file which has a structure
<root>
<header>
<recordtype>H</recordtype>
</header>
<company>
<recordtype>C</recordtype>
<companycode>001</companycode>
<detail>
<recordtype>D</recordtype>
<customer>c1</customer>
</detail>
<detail>
<recordtype>D</recordtype>
<customer>c2</customer>
</detail>
</company>
<company>
<recordtype>C</recordtype>
<companycode>002</companycode>
<detail>
<recordtype>D</recordtype>
<customer>c3</customer>
</detail>
<detail>
<recordtype>D</recordtype>
<customer>c4</customer>
</detail>
</company>
<trailer>
<recordtype>T</recordtype>
</trailer>
</root>
I would like to convert it into
H
C001
DC1
DC2
C002
DC3
DC4
T
This is what i put in the
content conversion parameters..
HEADER,COMPANY,DETAIL,TRAILER
HEADER.fieldFixedLengths 1
COMPANY.fieldFixedLengths 1,3
DETAIL.fieldFixedLengths 1,2
TRAILER.fieldFixedLengths 1
the file adapter failed during conversion.
I am just wondering if it is to do with the deep structures
ANY THOUGTHS....what do you mean by target structure.the mapped structure or the final file that is written to the FTP Folder.
the mapped structure is a treee
<root>
<header>
<recordtype>H</recordtype>
</header>
<company>
<recordtype>C</recordtype>
<companycode>001</companycode>
<detail>
<recordtype>D</recordtype>
<customer>c1</customer>
</detail>
<detail>
<recordtype>D</recordtype>
<customer>c2</customer>
</detail>
</company>
<company>
<recordtype>C</recordtype>
<companycode>002</companycode>
<detail>
<recordtype>D</recordtype>
<customer>c3</customer>
</detail>
<detail>
<recordtype>D</recordtype>
<customer>c4</customer>
</detail>
</company>
<trailer>
<recordtype>T</recordtype>
</trailer>
</root>
with the company 1 to unbounded
under which there can be multiple details... -
To create a deep structure for dynamic internal table.
Hello
My ALV has fields which are defined dynamically during execution.
so, i did it in the following way,
Declared Field symbolds, DREF and fieldcatalog as,
FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,
<fs_dyntable>.
DATA: dref_dyntab TYPE REF TO data,
dref_dynwa TYPE REF TO data.
DATA: ts_fieldcatalog TYPE lvc_t_fcat.
DATA: wa_fieldcatalog TYPE lvc_s_fcat.
Updated Fieldcatalog dynamically as,
*function module to read segment structure
CALL FUNCTION 'SEGMENT_READ'
EXPORTING
segmenttyp = v_segment_name
TABLES
segmentstructure = ts_seg_structure
EXCEPTIONS
no_authority = 1
segment_not_existing = 2
OTHERS = 3.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN '1'.
MESSAGE e024.
STOP.
WHEN '2'.
MESSAGE e025 WITH v_segment_name.
STOP.
WHEN OTHERS.
MESSAGE e023.
ENDCASE.
ENDIF.
*FETCH FIELDS FROM STRUCTURE OF SEGMENT AND CREATE FIELDCATALOG FOR
EACH FIELD OF SEGMENT (DYNAMIC FIELD CATALOG)
LOOP AT ts_seg_structure INTO wa_seg_structure.
ADD 1 TO v_counter.
wa_fieldcatalog-fieldname = wa_seg_structure-fieldname.
wa_fieldcatalog-col_pos = v_counter.
wa_fieldcatalog-ref_table = wa_seg_structure-segtyp.
APPEND wa_fieldcatalog TO ts_fieldcatalog.
CLEAR wa_fieldcatalog.
ENDLOOP.
and generated dynamic internal table using fieldcatalog as,
*--Method to get the structure of table using fieldcatalog.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ts_fieldcatalog
IMPORTING
*--Variable of type REF TO DATA.
ep_table = dref_dyntab.
IF sy-subrc <> 0.
MESSAGE e023.
ENDIF.
*--Dynamic internal tables required when show segments selected
IF p_selseg IS NOT INITIAL.
ASSIGN dref_dyntab->* TO <t_dyntable>.
*--Create dynamic work area and assign to FS
CREATE DATA dref_dynwa LIKE LINE OF <t_dyntable>.
ASSIGN dref_dynwa->* TO <fs_dyntable>.
And then i populated this <t_dyntable> which is being passed as data-table to method
CL_GUI_ALV_GRID => SET_TABLE_FOR_FIRST_DISPLAY
for ALV grid Display along with above used filedcatalog ts_fieldcatalog.
Things are fine till here, but now i have the requirement to edit selected rows of the ALV display..
As you might be aware, we need a field
TS_STYLEROW TYPE lvc_t_styl, (i.e, a field of type 'h' and we can say as an internal table inside an internal table or else as a deep structure)
in the output internal table <t_dyntable> to meet our requirement.
My issue is about declaring one such field of type 'h' in this dynamically created internal table ''<t_dyntable>".
I tried in the following way by adding one such field to fieldcatalog :
*Field for Styling
ADD 1 TO v_counter.
wa_fieldcatalog-fieldname = 'TS_STYLEROW'.
wa_fieldcatalog-tabname = 'TS_STYLE'.
wa_fieldcatalog-col_pos = v_counter.
wa_fieldcatalog-no_out = 'X'.
wa_fieldcatalog-inttype = 'h'. " I even mentioned this
APPEND wa_fieldcatalog TO ts_fieldcatalog.
CLEAR wa_fieldcatalog.
But this is creating a field of type 'C' in the table <t_dyntable> instead of what i was expecting
Guyz and respected,
Please advice me with the solution or ur ideas....
Note : The overall requirement is create a deep structure for dynamically generated internal table.
Your help is highly appreciated and unforgettable..!!!!!!!hi,
Dynamic append
Dynamic internal table
Dynamic internal table
dynamic columns in ALV
Variant for dynamic selection
thanks
Maybe you are looking for
-
Sorry i realise i post my previous post in the wrong forum section, hence im bringing it here. Mod please delete my previous thread. Hi this is my first time using mbp or even the whole mac system, im running on bootcamp and recently i've been buying
-
ITunes 9 does not work when opened.
I first installed iTunes at iTunes 8, but when I upgraded it to iTunes 9, it started having problems. At first, it was running smoothly, but now, whenever I open it, iTunes freezes, and if I try to close it, my computer always keeps saying it is not
-
Announcing New! Oracle Policy Automation Connector for Oracle CRM on Demand
Hi all, We are very pleased to announce the immediate availability of the new OPA connector for Oracle CRM on Demand. You can find more information and the link to download this connector on the OPA pages on OTN here: http://www-content.oracle.com/te
-
hi all i have a n95 with version 13. i took advice off this forum and set the backlight time and all the other settings to minimum and now it lasts two days . i dont seem to have the same issues as every one else , yes its a little slow to react but
-
Can i rename date1 field to confirm date
Can i rename heading Date1 feild in va01 transcation under fast data tab to confirmed date