‎2010 Mar 15 2:13 AM
Hi folks,
I'm trying to develop a common use method to handle importing flat files for interface usage. The client does not want to use Idocs, and are insisting on flat files.
My question is, how do I identify the export parameter as a table when the structure of the export table is variable. The plan is to upload the data into an internal table type string, then to parse each record in the internal table to another internal table to be built dynamically based on a table structure passed in when the method is called. My question is, how do I define the export table parameter to pass the dynamic table values back to the calling program. Would definining the export paramater as a string table be sufficient, or result in calling program having to re-parse the returned record?
Any thoughts or confirmations of process would be greatly appreciated.
Cheers,
Steve
‎2010 Mar 15 5:34 AM
Define export parameter as TYPE REF TO DATA.
Cheers
Graham Robbo
‎2010 Mar 15 5:34 AM
Define export parameter as TYPE REF TO DATA.
Cheers
Graham Robbo
‎2010 Mar 16 1:07 AM
DATA: LO_LINE_TYPE TYPE REF TO CL_ABAP_STRUCTDESCR,
LO_TABLE_TYPE TYPE REF TO CL_ABAP_TABLEDESCR,
LT_COMP TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
LWA_COMP LIKE LINE OF LT_COMP,
L_REF_NNFP TYPE REF TO DATA,
L_REF_NNFP_TAB TYPE REF TO DATA.
LWA_COMP-NAME = 'EVDAT'.
* TRY.
CALL METHOD CL_ABAP_ELEMDESCR=>GET_D
RECEIVING
P_RESULT = LWA_COMP-TYPE.
* CATCH CX_PARAMETER_INVALID_RANGE .
* ENDTRY.
APPEND LWA_COMP TO LT_COMP.
CLEAR LWA_COMP.
LWA_COMP-NAME = 'BEGUZ'.
* TRY.
CALL METHOD CL_ABAP_ELEMDESCR=>GET_T
RECEIVING
P_RESULT = LWA_COMP-TYPE.
* CATCH CX_PARAMETER_INVALID_RANGE .
* ENDTRY.
APPEND LWA_COMP TO LT_COMP.
CLEAR LWA_COMP.
LWA_COMP-NAME = 'ENDUZ'.
* TRY.
CALL METHOD CL_ABAP_ELEMDESCR=>GET_T
RECEIVING
P_RESULT = LWA_COMP-TYPE.
* CATCH CX_PARAMETER_INVALID_RANGE .
* ENDTRY.
APPEND LWA_COMP TO LT_COMP.
CLEAR LWA_COMP.
LWA_COMP-NAME = 'ZSELECT'.
* TRY.
CALL METHOD CL_ABAP_ELEMDESCR=>GET_C
EXPORTING
P_LENGTH = 1
RECEIVING
P_RESULT = LWA_COMP-TYPE.
* CATCH CX_PARAMETER_INVALID_RANGE .
* ENDTRY.
APPEND LWA_COMP TO LT_COMP.
CLEAR LWA_COMP.
* Create Line Type
LO_LINE_TYPE = CL_ABAP_STRUCTDESCR=>CREATE( LT_COMP ).
* Create Table Type
*TRY.
CALL METHOD CL_ABAP_TABLEDESCR=>CREATE
EXPORTING
P_LINE_TYPE = LO_LINE_TYPE
P_TABLE_KIND = 'S'
* P_UNIQUE = ABAP_FALSE
* P_KEY =
P_KEY_KIND = 'D'
RECEIVING
P_RESULT = LO_TABLE_TYPE
.
* CATCH CX_SY_TABLE_CREATION .
*ENDTRY.
* Assign Line Type
CREATE DATA L_REF_NNFP TYPE HANDLE LO_LINE_TYPE.
ASSIGN L_REF_NNFP->* TO <GWA_NNFP_ALV>.
* Assign Table Type
CREATE DATA L_REF_NNFP_TAB TYPE HANDLE LO_TABLE_TYPE.
ASSIGN L_REF_NNFP_TAB->* TO <GT_NNFP_ALV>.
REFRESH GT_COMP.
APPEND LINES OF LT_COMP TO GT_COMP.
IF GV_INIT_7000 IS INITIAL.
REFRESH GT_COMP_BAK.
APPEND LINES OF LT_COMP TO GT_COMP_BAK.
CREATE DATA L_REF_NNFP_TAB TYPE HANDLE LO_TABLE_TYPE.
ASSIGN L_REF_NNFP_TAB->* TO <GT_NNFP_ALV_BAK>.
ENDIF.
‎2010 Mar 16 2:59 AM
Thank you for your excellent suggestions. This question is now resolved.