02-19-2009 7:28 AM
Hi All,
I have one internal table having name of Fields with following structure,
Sl No Field Name
1 CARRID
2 CONNID
3 FLDATE
4 PRICE
.....................
.....................
.....................
Here the entries in the 'Field Name' are all simple values. Nothing related to there SAP meaning.
I need to create a structure and internal table from these values. the type of each field in the resulting structure will be string.
Regards,
Anirban
02-19-2009 7:32 AM
02-19-2009 7:32 AM
02-19-2009 7:32 AM
Hi,
You can use field symbols to create a dynamic internal table structure
02-19-2009 7:34 AM
HI,
Check this code..
************************************************************************
TYPE-POOLS : abap.
************************************************************************
* tables
************************************************************************
TABLES:
objec,
t510, " Pay Scale Groups
z90pfunar, " Functional Area
z90pldrlv. " Leadership Level
************************************************************************
* infotypes
************************************************************************
INFOTYPES :
1000, " Object Name
1002, " Description
1005, " Planned Compensation
1050 . " Job Evaluation Results
************************************************************************
* types
************************************************************************
TYPES:
BEGIN OF t_output,
trfg1 TYPE p1005-trfg1, " Job Grade
objid TYPE p1000-objid, " Object Id
funar TYPE z90pfunar-unvdp, " Functional Area
ldrlo TYPE z90pldrlv-ldrlo, " Leadership Level
stext TYPE p1000-stext, " Job Title
tline TYPE pt1002-tline, " Job Descrition
END OF t_output,
BEGIN OF t_z90pldrlv,
ldrlo LIKE z90pldrlv-ldrlo, " Leadership Level
ldrhi LIKE z90pldrlv-ldrhi, " Leadership Level
ltext LIKE z90pldrlv_t-ltext, " Leadership Level text
END OF t_z90pldrlv.
************************************************************************
* internal tables
************************************************************************
DATA:
i_output TYPE STANDARD TABLE OF t_output,
i_z90pldrlv TYPE STANDARD TABLE OF t_z90pldrlv,
i_t1002 TYPE STANDARD TABLE OF pt1002,
i_fieldcat TYPE lvc_t_fcat,
i_vsort TYPE lvc_t_sort,
i_z90pfunar TYPE STANDARD TABLE OF z90pfunar,
i_fc TYPE lvc_t_fcat.
************************************************************************
* work areas
************************************************************************
DATA:
i_output_line LIKE LINE OF i_output,
i_z90pldrlv_line LIKE LINE OF i_z90pldrlv,
i_t1002_line LIKE LINE OF i_t1002,
i_vsort_line LIKE LINE OF i_vsort,
i_fieldcat_line LIKE LINE OF i_fieldcat,
i_fc_line TYPE lvc_s_fcat.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa>,
<dyn_field>.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data.
************************************************************************
* field symbols
************************************************************************
************************************************************************
* internal data fields
************************************************************************
DATA:
g_cus_container TYPE REF TO cl_gui_custom_container, " Custom Cont
g_alv_grid TYPE REF TO cl_gui_alv_grid, " ALV Declaration
g_count(5) TYPE c,
g_stext TYPE p1000-stext,
g_container TYPE scrfname VALUE 'G_CONTAINER',
g_layout TYPE lvc_s_layo,
g_ok_code TYPE sy-ucomm.
RANGES:
* r_ldrlv FOR z90pldrlv-ldrlo,
r_stext FOR p1000-stext.
************************************************************************
* Parameters and Selection Options
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
SELECT-OPTIONS:
s_objid FOR p1000-objid,
s_trfg1 FOR t510-trfgr,
s_funnr FOR z90pfunar-unvdp,
s_ldrlo FOR z90pldrlv-ldrlo.
PARAMETER:
p_table(30) TYPE c ,
p_stext TYPE p1000-stext,
p_rundt TYPE p1000-endda DEFAULT sy-datum,
p_otype TYPE p1000-otype DEFAULT 'C'.
SELECTION-SCREEN SKIP.
PARAMETER : p_bmark TYPE p1050-bmark AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b1.
*eject
************************************************************************
* Initialization
************************************************************************
INITIALIZATION.
* Security check
AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD 'ZH63'.
IF sy-subrc > 0.
MESSAGE e172(pg) WITH 'ZH63'.
ENDIF.
pchplvar = '01'. " Plan Version
pchostat = '1'.
*eject
************************************************************************
* at selection screen
************************************************************************
AT SELECTION-SCREEN.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_objid-low.
* PERFORM list_jobids_and_select USING s_objid-low.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_objid-high.
* PERFORM list_jobids_and_select USING s_objid-high.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ldrlo-low.
* PERFORM list_ldrlv_and_select TABLES s_ldrlo.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ldrlo-high.
* PERFORM list_ldrlv_and_select TABLES s_ldrlo.
*
*AT SELECTION-SCREEN ON HELP-REQUEST FOR p_stext.
* PERFORM list_help_for_stext.
*eject
************************************************************************
* Event top of page
************************************************************************
TOP-OF-PAGE.
*eject
************************************************************************
* event Start of Selection
************************************************************************
START-OF-SELECTION.
set PF-STATUS 'MENU'.
PERFORM build_table.
PERFORM build_structure.
PERFORM create_dynamic_itab.
* Move the selection screen data to LDB selection screen
pchobjid[] = s_objid[].
pchotype = p_otype.
pchbegda = p_rundt.
pchendda = p_rundt.
* If the selection screen date is intital set the system date
IF p_rundt IS INITIAL.
p_rundt = sy-datum.
ENDIF.
IF NOT p_stext IS INITIAL.
TRANSLATE p_stext TO UPPER CASE. "#EC SYNTCHAR
r_stext-sign = 'I'.
r_stext-option = 'EQ'.
r_stext-low = p_stext.
APPEND r_stext.
ENDIF.
GET objec.
* Check for the entry in 1000 infotype if doesn't exist continue with
* new object id
LOOP AT p1000 . ENDLOOP.
IF sy-subrc NE 0.
REJECT.
ENDIF.
* Filter Functional Area as entered in the selecetion screen
CHECK p1000-short(2) IN s_funnr.
* Filter Leadership Level as entered in the selecetion screen
CHECK p1000-short+2(4) IN s_ldrlo.
* Check for the entered s_text
g_stext = p1000-stext.
TRANSLATE g_stext TO UPPER CASE. "#EC SYNTCHAR
CHECK g_stext IN r_stext.
i_output_line-objid = p1000-objid.
i_output_line-funar = p1000-short(2).
i_output_line-ldrlo = p1000-short+2(4).
i_output_line-stext = p1000-stext.
* Filter for Job Grade from p1005
LOOP AT p1005 WHERE trfg1 IN s_trfg1. ENDLOOP.
IF sy-subrc EQ 0.
i_output_line-trfg1 = p1005-trfg1.
ELSE.
REJECT.
ENDIF.
* Check for the Bench mark Jobs if selected on the selection screen
IF p_bmark EQ 'X'.
LOOP AT p1050. ENDLOOP.
IF sy-subrc EQ 0.
CHECK p1050-bmark EQ p_bmark.
ENDIF.
ENDIF.
* Get the object general Description
PERFORM read_1002_desc TABLES i_t1002 USING p1000-plvar
p1000-otype p1000-objid sy-datum p_rundt '0120'.
IF NOT i_t1002[] IS INITIAL.
g_count = g_count + 1.
LOOP AT i_t1002 INTO i_t1002_line.
i_output_line-tline = i_t1002_line.
APPEND i_output_line TO i_output.
ENDLOOP.
ENDIF.
CLEAR i_output_line.
END-OF-SELECTION.
PERFORM fill_table.
*&---------------------------------------------------------------------*
*& Form BUILD_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_table .
SELECT *
FROM z90pfunar
INTO TABLE i_z90pfunar
WHERE unvdp IN s_funnr.
ENDFORM. " BUILD_TABLE
*&---------------------------------------------------------------------*
*& Form BUILD_STRUCTURE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_structure .
DATA l_z90pfunar TYPE z90pfunar.
DATA : idetails TYPE abap_compdescr_tab,
xdetails TYPE abap_compdescr.
i_fc_line-fieldname = 'TRFG1'.
i_fc_line-datatype = 'C'.
i_fc_line-inttype = 'C'.
i_fc_line-intlen = '1'.
i_fc_line-decimals = space.
APPEND i_fc_line TO i_fc.
LOOP AT i_z90pfunar INTO l_z90pfunar.
CLEAR i_fc_line.
CONCATENATE l_z90pfunar-unvdp 'BMARK' INTO i_fc_line-fieldname
SEPARATED BY '_'.
i_fc_line-datatype = 'C'.
i_fc_line-inttype = 'C'.
i_fc_line-intlen = '1'.
i_fc_line-decimals = space.
APPEND i_fc_line TO i_fc.
CONCATENATE l_z90pfunar-unvdp 'STEXT' INTO i_fc_line-fieldname
SEPARATED BY '_'.
i_fc_line-datatype = 'C'.
i_fc_line-inttype = 'C'.
i_fc_line-intlen = '40'.
i_fc_line-decimals = space.
APPEND i_fc_line TO i_fc.
CONCATENATE l_z90pfunar-unvdp 'LDRLO' INTO i_fc_line-fieldname
SEPARATED BY '_'.
i_fc_line-datatype = 'C'.
i_fc_line-inttype = 'C'.
i_fc_line-intlen = '40'.
i_fc_line-decimals = space.
APPEND i_fc_line TO i_fc.
ENDLOOP.
ENDFORM. " BUILD_STRUCTURE
*&---------------------------------------------------------------------*
*& Form read_1002_desc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_1002 text
* -->P_PLVAR text
* -->P_OTYPE text
* -->P_OBJID text
* -->P_BEGDA text
* -->P_ENDDA text
* -->P_SUBTY text
*----------------------------------------------------------------------*
FORM read_1002_desc TABLES p_1002 STRUCTURE pt1002
USING p_plvar TYPE p1002-plvar
p_otype TYPE p1002-otype
p_objid TYPE p1002-objid
p_begda TYPE p1002-begda "#EC NEEDED
p_endda TYPE p1002-endda
p_subty TYPE p1002-subty.
REFRESH p_1002. CLEAR p_1002.
CALL FUNCTION 'RH_OBJECT_DESCRIPTION_READ'
EXPORTING
plvar = p_plvar
otype = p_otype
objid = p_objid
sttag = p_endda
subty = p_subty
langu = sy-langu
TABLES
ptxt1002 = p_1002
EXCEPTIONS "#EC *
nothing_found = 1
infty_empty = 2
undefined = 3
OTHERS = 4.
IF sy-subrc EQ 0.
ENDIF.
ENDFORM. " read_1002_desc
*&---------------------------------------------------------------------*
*& Form create_dynamic_itab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM create_dynamic_itab.
* Create dynamic internal table and assign to FS
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = i_fc
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <dyn_table>.
* Create dynamic work area and assign to FS
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
ENDFORM. "create_dynamic_itab
*&---------------------------------------------------------------------*
*& Form FILL_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_table .
DATA g_dat TYPE char32.
DATA l_field TYPE REF TO object.
* CREATE DATA l_field LIKE g_dat.
FIELD-SYMBOLS <fs_field_temp> TYPE ANY.
FIELD-SYMBOLS <fs_field> TYPE ANY.
* DATA : l_field TYPE char15.
SORT i_output BY trfg1.
LOOP AT i_output INTO i_output_line.
CONCATENATE i_output_line-funar '_STEXT' INTO g_dat.
ASSIGN g_dat TO <fs_field_temp>.
ASSIGN COMPONENT <fs_field_temp>
OF STRUCTURE <dyn_wa> TO <fs_field>.
<fs_field> = i_output_line-stext.
APPEND <dyn_wa> TO <dyn_table>.
ENDLOOP.
LOOP AT <dyn_table> INTO <dyn_wa>.
DO.
ASSIGN COMPONENT sy-index
OF STRUCTURE <dyn_wa> TO <fs_field> .
IF sy-subrc NE 0.
EXIT.
ENDIF.
IF sy-index = 1.
WRITE:/ <fs_field>.
ELSE.
WRITE: <fs_field>.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM. " FILL_TABLE
02-19-2009 7:34 AM
Hi,
data :
begin of fs,
sno type i,
field type string,
end of fs.
data itab like standard table of fs.
02-19-2009 7:43 AM
Hi,
Use the class
CL_ABAP_TABLEDESCR
and the method create to create the internal table dynamically
Regards,
Siddarth
02-19-2009 9:18 AM
Hi,
Check the below Link
http://help.sap.com/saphelp_nw04/helpdata/en/9f/db999535c111d1829f0000e829fbfe/frameset.htm
Hope this helps you.
Regards,
Anki Reddy