Sei sulla pagina 1di 2

FORM GET_FCAT_FOR_ITAB USING PT_TABLE TYPE TABLE

CHANGING PT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LIT_LVC_FCAT TYPE LVC_T_FCAT,


LO_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE,
LO_AGGREGATIONS TYPE REF TO CL_SALV_AGGREGATIONS,
LO_SALV_TABLE TYPE REF TO CL_SALV_TABLE,
LR_TABLE TYPE REF TO DATA,
LWA_LVC TYPE LVC_S_FCAT,
LWA_SLIS TYPE SLIS_FIELDCAT_ALV.

FIELD-SYMBOLS: <TABLE> TYPE STANDARD TABLE.

CLEAR PT_FCAT.

* create unprotected table from import table


CREATE DATA LR_TABLE LIKE PT_TABLE.
ASSIGN LR_TABLE->* TO <TABLE>.

* New SALV Instance


TRY.
CL_SALV_TABLE=>FACTORY(
EXPORTING
LIST_DISPLAY = ABAP_FALSE
IMPORTING
R_SALV_TABLE = LO_SALV_TABLE
CHANGING
T_TABLE = <TABLE> ).
CATCH CX_SALV_MSG. "#EC NO_HANDLER
ENDTRY.

* get columns object (basic field catalog data)


LO_COLUMNS = LO_SALV_TABLE->GET_COLUMNS( ).

* get aggregations object (Sorts&Sums)


LO_AGGREGATIONS = LO_SALV_TABLE->GET_AGGREGATIONS( ).

* use method to create field catalog from this information


LIT_LVC_FCAT = CL_SALV_CONTROLLER_METADATA=>GET_LVC_FIELDCATALOG(
R_COLUMNS = LO_COLUMNS
R_AGGREGATIONS = LO_AGGREGATIONS ).

LOOP AT LIT_LVC_FCAT INTO LWA_LVC.


MOVE-CORRESPONDING LWA_LVC TO LWA_SLIS.
IF LWA_SLIS-FIELDNAME EQ 'KWMENG' OR LWA_SLIS-FIELDNAME EQ 'CHECK'
OR LWA_SLIS-FIELDNAME EQ 'VKORG' OR LWA_SLIS-FIELDNAME EQ 'VTWEG'
OR LWA_SLIS-FIELDNAME EQ 'SPART' OR LWA_SLIS-FIELDNAME EQ 'VKGRP'
OR LWA_SLIS-FIELDNAME EQ 'VKBUR' OR LWA_SLIS-FIELDNAME EQ 'EKORG'
OR LWA_SLIS-FIELDNAME EQ 'EKGRP'.
LWA_SLIS-NO_OUT = 'X'.
ENDIF.

IF GV_PO_FLG EQ 'X'.
IF LWA_SLIS-FIELDNAME EQ 'VBELN' OR LWA_SLIS-FIELDNAME EQ 'POSNR'
OR LWA_SLIS-FIELDNAME EQ 'PO' OR LWA_SLIS-FIELDNAME EQ 'INV'
OR LWA_SLIS-FIELDNAME EQ 'KUNNR'.
LWA_SLIS-NO_OUT = 'X'.
ENDIF.
ELSE.
IF LWA_SLIS-FIELDNAME EQ 'EBELN' OR LWA_SLIS-FIELDNAME EQ 'EBELP'
OR LWA_SLIS-FIELDNAME EQ 'LIFNR'.
LWA_SLIS-NO_OUT = 'X'.
ENDIF.
ENDIF.

APPEND LWA_SLIS TO PT_FCAT.


CLEAR LWA_SLIS.
ENDLOOP.

Potrebbero piacerti anche