mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 11:06:15 +08:00
#216 ( BIND_TABLE // zcl_excel_common=>get_fieldcatalog for non-DDIC tables )
Ready to test git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@344 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
This commit is contained in:
parent
596b0cd041
commit
1d148d17d2
|
@ -195,7 +195,7 @@ CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test.
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless
|
CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless
|
||||||
. "#AU Duration Short
|
. "#AU Duration Short
|
||||||
*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
*?<asx:values>
|
*?<asx:values>
|
||||||
*?<TESTCLASS_OPTIONS>
|
*?<TESTCLASS_OPTIONS>
|
||||||
*?<TEST_CLASS>lcl_Excel_Common_Test
|
*?<TEST_CLASS>lcl_Excel_Common_Test
|
||||||
|
@ -1096,7 +1096,7 @@ endmethod.</source>
|
||||||
ep_column = lv_column_c. " Fix #164
|
ep_column = lv_column_c. " Fix #164
|
||||||
EXIT.
|
EXIT.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
CATCH cx_sy_conversion_no_number.
|
CATCH cx_sy_conversion_no_number."#EC NO_HANDLER
|
||||||
" Too bad - try the character-approach
|
" Too bad - try the character-approach
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
|
@ -1443,27 +1443,63 @@ endmethod.</source>
|
||||||
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Creates field catalog for BIND_TABLE based on internal table" EXPOSURE="2" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Creates field catalog for BIND_TABLE based on internal table" EXPOSURE="2" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="IP_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="IP_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="EP_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Table binding field catalog" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_T_FIELDCATALOG"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="EP_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Table binding field catalog" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_T_FIELDCATALOG"/>
|
||||||
<source>method GET_FIELDCATALOG.
|
<source>METHOD get_fieldcatalog.
|
||||||
|
DATA: lr_dref_tab TYPE REF TO data,
|
||||||
|
lo_salv_table TYPE REF TO cl_salv_table,
|
||||||
|
lo_salv_columns_table TYPE REF TO cl_salv_columns_table,
|
||||||
|
lt_salv_t_column_ref TYPE salv_t_column_ref,
|
||||||
|
ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref,
|
||||||
|
lo_salv_column_table TYPE REF TO cl_salv_column_table.
|
||||||
|
|
||||||
data: lr_data type ref to data,
|
FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE.
|
||||||
lo_structdescr type ref to cl_abap_structdescr,
|
FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog.
|
||||||
lt_dfies type ddfields,
|
|
||||||
ls_dfies type dfies,
|
|
||||||
ls_fieldcatalog type zexcel_s_fieldcatalog.
|
|
||||||
|
|
||||||
create data lr_data like line of ip_table.
|
* Get copy of IP_TABLE-structure <-- must be changeable to create salv
|
||||||
|
CREATE DATA lr_dref_tab LIKE ip_table.
|
||||||
|
ASSIGN lr_dref_tab->* TO <tab>.
|
||||||
|
* Create salv --> implicitly create fieldcat
|
||||||
|
TRY.
|
||||||
|
cl_salv_table=>factory( IMPORTING
|
||||||
|
r_salv_table = lo_salv_table
|
||||||
|
CHANGING
|
||||||
|
t_table = <tab> ).
|
||||||
|
lo_salv_columns_table = lo_salv_table->get_columns( ).
|
||||||
|
lt_salv_t_column_ref = lo_salv_columns_table->get( ).
|
||||||
|
CATCH cx_root.
|
||||||
|
* maybe some errorhandling here - just haven't made up my mind yet
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ).
|
* Loop through columns and set relevant fields ( fieldname, texts )
|
||||||
|
LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref.
|
||||||
|
|
||||||
lt_dfies = describe_structure( io_struct = lo_structdescr ).
|
lo_salv_column_table ?= ls_salv_t_column_ref-r_column.
|
||||||
|
APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>.
|
||||||
|
<fcat>-position = sy-tabix.
|
||||||
|
<fcat>-fieldname = ls_salv_t_column_ref-columnname.
|
||||||
|
<fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ).
|
||||||
|
<fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ).
|
||||||
|
<fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ).
|
||||||
|
|
||||||
loop at lt_dfies into ls_dfies.
|
<fcat>-dynpfld = 'X'. " What in the world would we exclude here?
|
||||||
clear ls_fieldcatalog.
|
IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is )
|
||||||
move-corresponding ls_dfies to ls_fieldcatalog.
|
IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'.
|
||||||
append ls_fieldcatalog to ep_fieldcatalog.
|
CLEAR <fcat>-dynpfld.
|
||||||
endloop.
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
endmethod.</source>
|
* For fields that don't a description ( i.e. defined by "field type i," )
|
||||||
|
* just use the fieldname as description - that is better than nothing
|
||||||
|
IF <fcat>-scrtext_s IS INITIAL
|
||||||
|
AND <fcat>-scrtext_m IS INITIAL
|
||||||
|
AND <fcat>-scrtext_l IS INITIAL.
|
||||||
|
CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space.
|
||||||
|
<fcat>-scrtext_m = <fcat>-scrtext_l.
|
||||||
|
<fcat>-scrtext_s = <fcat>-scrtext_l.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.</source>
|
||||||
</method>
|
</method>
|
||||||
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Converts number to string representation in Excel format" EXPOSURE="2" STATE="1" EDITORDER="13 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Converts number to string representation in Excel format" EXPOSURE="2" STATE="1" EDITORDER="13 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="NUMERIC"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="NUMERIC"/>
|
||||||
|
@ -1655,7 +1691,7 @@ endmethod.</source>
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SPLIT_FILE" SCONAME="EP_FILE" VERSION="1" LANGU="E" DESCRIPT="Dateiname ohne Extension" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="TEXT255"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SPLIT_FILE" SCONAME="EP_FILE" VERSION="1" LANGU="E" DESCRIPT="Dateiname ohne Extension" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="TEXT255"/>
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SPLIT_FILE" SCONAME="EP_EXTENSION" VERSION="1" LANGU="E" DESCRIPT="Dateiextension (ohne .)" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR10"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SPLIT_FILE" SCONAME="EP_EXTENSION" VERSION="1" LANGU="E" DESCRIPT="Dateiextension (ohne .)" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR10"/>
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SPLIT_FILE" SCONAME="EP_DOTEXTENSION" VERSION="1" LANGU="E" DESCRIPT="Dateiextension (mit .)" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR10"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SPLIT_FILE" SCONAME="EP_DOTEXTENSION" VERSION="1" LANGU="E" DESCRIPT="Dateiextension (mit .)" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR10"/>
|
||||||
<source>METHOD split_file.
|
<source>method SPLIT_FILE.
|
||||||
|
|
||||||
DATA: lt_hlp TYPE TABLE OF text255,
|
DATA: lt_hlp TYPE TABLE OF text255,
|
||||||
ls_hlp TYPE text255.
|
ls_hlp TYPE text255.
|
||||||
|
@ -1696,7 +1732,7 @@ endmethod.</source>
|
||||||
ep_file = ip_file(lf_len).
|
ep_file = ip_file(lf_len).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.</source>
|
endmethod.</source>
|
||||||
</method>
|
</method>
|
||||||
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="STRUCTURE_CASE" VERSION="1" LANGU="E" DESCRIPT="Case stement for recursive" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="STRUCTURE_CASE" VERSION="1" LANGU="E" DESCRIPT="Case stement for recursive" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
||||||
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="STRUCTURE_CASE" SCONAME="IS_COMPONENT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_COMPONENTDESCR"/>
|
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="STRUCTURE_CASE" SCONAME="IS_COMPONENT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_COMPONENTDESCR"/>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user