hello
I send you a report code recently i developed all dynamic of uploading the condition records to vk11
Here is the code snippet
*&---------------------------------------------------------------------*
*& Include ZSD_FIYAT_AKTARIM_DINAMIK_CL4
*&---------------------------------------------------------------------*
**Exception class
CLASS LCX_APPLICATION_ERROR DEFINITION
INHERITING FROM CX_STATIC_CHECK.
ENDCLASS.
*CLASS LCL_HANDLE_EVENTS DEFINITION.
* PUBLIC SECTION.
* METHODS:
* ON_ADDED_FUNCTION FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS_TABLE
* IMPORTING E_SALV_FUNCTION.
*ENDCLASS. "lcl_handle_events DEFINITION
*
*DATA GO_EVENTSL TYPE REF TO LCL_HANDLE_EVENTS.
*
**---------------------------------------------------------------------*
** CLASS lcl_handle_events IMPLEMENTATION
**---------------------------------------------------------------------*
**
**---------------------------------------------------------------------*
*CLASS LCL_HANDLE_EVENTS IMPLEMENTATION.
*
* METHOD ON_ADDED_FUNCTION.
*
* ENDMETHOD. "on_added_function
*
*ENDCLASS. "lcl_handle_events IMPLEMENTATION
CLASS LCL_ALV DEFINITION CREATE PUBLIC.
PUBLIC SECTION.
CONSTANTS: C_GREEN TYPE ICON-ID VALUE '@08@',
C_YELLOW TYPE ICON-ID VALUE '@09@',
C_RED TYPE ICON-ID VALUE '@0A@'.
DATA: GR_TABLE TYPE REF TO CL_SALV_TABLE,
GR_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GO_EVENTS TYPE REF TO CL_SALV_EVENTS_TABLE,
GO_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS,
GO_GRDSETT TYPE REF TO CL_SALV_DISPLAY_SETTINGS,
GO_FUNCTIONAL_SETTINGS TYPE REF TO CL_SALV_FUNCTIONAL_SETTINGS,
GO_TOOLTIPS TYPE REF TO CL_SALV_TOOLTIPS,
GO_COLUMNS TYPE REF TO CL_SALV_COLUMNS
.
METHODS: CONSTRUCTOR.
CLASS-METHODS: FREE.
METHODS: GENERATE_ALV.
METHODS: REFRESH_ALV.
METHODS: CHECK_IF_NEED_REPROCESS.
METHODS: POP_UP_REPROCESS RETURNING VALUE(RV_REPROCESS_FLAG) TYPE FLAG.
METHODS: SET_SCREEN_POPUP CHANGING IT_TABLE TYPE ANY TABLE.
PRIVATE SECTION.
DATA: LO_MANAGER_OBJ TYPE REF TO LCL_MANAGER.
ENDCLASS.
CLASS LCL_ALV IMPLEMENTATION.
METHOD CONSTRUCTOR.
FIELD-SYMBOLS: <OUTPUT_TABLE> TYPE ANY TABLE.
**Create the object
LO_MANAGER_OBJ = LCL_MANAGER=>GET_INSTANCE( ).
ENDMETHOD.
METHOD FREE.
* free: gr_container, gr_table.
ENDMETHOD.
METHOD GENERATE_ALV.
DATA:LO_COLUMN TYPE REF TO CL_SALV_COLUMN_TABLE,
LV_VALUE TYPE LVC_VALUE.
FIELD-SYMBOLS: <OUTPUT_TABLE> TYPE ANY TABLE.
BREAK NILUFERA.
INCLUDE: <ICON>.
CHECK LO_MANAGER_OBJ IS BOUND.
**Get the output table
ASSIGN LO_MANAGER_OBJ->LT_DYNAMIC_DREF_TAB->* TO <OUTPUT_TABLE>.
IF GR_CONTAINER IS NOT BOUND.
* initial
IF CL_SALV_TABLE=>IS_OFFLINE( ) EQ IF_SALV_C_BOOL_SAP=>FALSE.
CREATE OBJECT GR_CONTAINER
EXPORTING
CONTAINER_NAME = 'CONTAINER'.
ENDIF.
TRY.
CL_SALV_TABLE=>FACTORY(
EXPORTING
R_CONTAINER = GR_CONTAINER
CONTAINER_NAME = 'CONTAINER'
IMPORTING
R_SALV_TABLE = GR_TABLE
CHANGING
T_TABLE = <OUTPUT_TABLE> ).
CATCH CX_SALV_MSG.
ENDTRY.
* Functions
GO_FUNCTIONS = GR_TABLE->GET_FUNCTIONS( ).
GO_FUNCTIONS->SET_ALL( ABAP_TRUE ).
*... set the columns
GO_COLUMNS = GR_TABLE->GET_COLUMNS( ).
"lo_columns->set_optimize( abap_true ).
TRY.
LO_COLUMN ?= GO_COLUMNS->GET_COLUMN( 'ICON_D' ).
LO_COLUMN->SET_ICON( IF_SALV_C_BOOL_SAP=>TRUE ).
LO_COLUMN->SET_LONG_TEXT( 'Statü' ).
LO_COLUMN->SET_ALIGNMENT( IF_SALV_C_ALIGNMENT=>CENTERED ).
LO_COLUMN->SET_OUTPUT_LENGTH( 20 ).
CATCH CX_SALV_NOT_FOUND. "#EC NO_HANDLER
ENDTRY.
*...Tooltips
GO_FUNCTIONAL_SETTINGS = GR_TABLE->GET_FUNCTIONAL_SETTINGS( ).
GO_TOOLTIPS = GO_FUNCTIONAL_SETTINGS->GET_TOOLTIPS( ).
TRY.
LV_VALUE = ICON_GREEN_LIGHT.
GO_TOOLTIPS->ADD_TOOLTIP(
TYPE = CL_SALV_TOOLTIP=>C_TYPE_ICON
VALUE = LV_VALUE
TOOLTIP = TEXT-001 ). "#EC NOTEXT
CATCH CX_SALV_EXISTING. "#EC NO_HANDLER
ENDTRY.
TRY.
LV_VALUE = ICON_YELLOW_LIGHT.
GO_TOOLTIPS->ADD_TOOLTIP(
TYPE = CL_SALV_TOOLTIP=>C_TYPE_ICON
VALUE = LV_VALUE
TOOLTIP = TEXT-002 ). "#EC NOTEXT
CATCH CX_SALV_EXISTING. "#EC NO_HANDLER
ENDTRY.
TRY.
LV_VALUE = ICON_RED_LIGHT.
GO_TOOLTIPS->ADD_TOOLTIP(
TYPE = CL_SALV_TOOLTIP=>C_TYPE_ICON
VALUE = LV_VALUE
TOOLTIP = TEXT-003 ). "#EC NOTEXT
CATCH CX_SALV_EXISTING. "#EC NO_HANDLER
ENDTRY.
* TRY.
* CALL METHOD GO_FUNCTIONS->ADD_FUNCTION
* EXPORTING
* NAME = 'REPROCESS'
* ICON = '@01@'
* TEXT = 'Yeniden İşle'
* TOOLTIP = 'Yeniden İşle'
* POSITION = IF_SALV_C_FUNCTION_POSITION=>RIGHT_OF_SALV_FUNCTIONS.
* CATCH CX_SALV_WRONG_CALL CX_SALV_EXISTING.
* ENDTRY.
*
*
** events
*
* GO_EVENTSG = GR_TABLE->GET_EVENT( ).
*
* CREATE OBJECT GO_EVENTSL.
*
* SET HANDLER GO_EVENTSL->ON_ADDED_FUNCTION FOR GO_EVENTSG.
* alv grid setting
GO_GRDSETT = GR_TABLE->GET_DISPLAY_SETTINGS( ).
**if there is any error
GO_GRDSETT->SET_LIST_HEADER( 'Fiyat Aktarma Logları!!' ).
GR_TABLE->DISPLAY( ).
ENDIF.
ENDMETHOD. "generate_alv
METHOD REFRESH_ALV.
CHECK GR_TABLE IS BOUND.
GR_TABLE->REFRESH( ).
ENDMETHOD.
METHOD SET_SCREEN_POPUP.
BREAK NILUFERA.
DATA: O_POPUP_ALV TYPE REF TO CL_SALV_TABLE.
DATA: LO_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS_LIST.
* ALV Object
TRY.
CL_SALV_TABLE=>FACTORY(
IMPORTING
R_SALV_TABLE = O_POPUP_ALV
CHANGING
T_TABLE = IT_TABLE ).
CATCH CX_SALV_MSG. "#EC NO_HANDLER
ENDTRY.
* Functions
LO_FUNCTIONS = O_POPUP_ALV->GET_FUNCTIONS( ).
LO_FUNCTIONS->SET_ALL( ABAP_TRUE ).
LO_FUNCTIONS->SET_DEFAULT( 'X' ).
*
* ALV as Popup
O_POPUP_ALV->SET_SCREEN_POPUP(
START_COLUMN = 80
END_COLUMN = 140
START_LINE = 3
END_LINE = 10 ).
* Display
O_POPUP_ALV->DISPLAY( ).
ENDMETHOD.
METHOD CHECK_IF_NEED_REPROCESS.
DATA: LT_NEW_DYNAMIC_DREF_TAB TYPE REF TO DATA,
LS_NEW_DYNAMIC_DREF_LINE TYPE REF TO DATA.
FIELD-SYMBOLS: <OUTPUT_TABLE> TYPE ANY TABLE,
<LFS_NEW_OUTPUT> TYPE ANY TABLE,
<LFS_NEW_LINE> TYPE ANY,
<LFS_LINE> TYPE ANY,
<LFS_ANY> TYPE ANY.
**Create the object
BREAK NILUFERA.
**Display to be rereprocessed
IF POP_UP_REPROCESS( ) EQ ABAP_TRUE.
CHECK LO_MANAGER_OBJ IS BOUND.
**Get the output table
ASSIGN LO_MANAGER_OBJ->LT_DYNAMIC_DREF_TAB->* TO <OUTPUT_TABLE>.
**New output and line!!
**Generate new components!!
CALL METHOD LO_MANAGER_OBJ->GENERATE_DYNAMIC_TABLE
IMPORTING
ET_DYNAMIC_DREF_TAB = LT_NEW_DYNAMIC_DREF_TAB
ES_DYNAMIC_DREF_LINE = LS_NEW_DYNAMIC_DREF_LINE.
ASSIGN LT_NEW_DYNAMIC_DREF_TAB->* TO <LFS_NEW_OUTPUT>.
LOOP AT <OUTPUT_TABLE> ASSIGNING <LFS_LINE>.
*is there any yello flag for overlap
ASSIGN COMPONENT 'ICON_D' OF STRUCTURE <LFS_LINE> TO <LFS_ANY>.
IF SY-SUBRC EQ 0 AND <LFS_ANY> NE C_GREEN.
ASSIGN COMPONENT 'BAPI_MSG' OF STRUCTURE <LFS_LINE> TO <LFS_ANY>.
IF SY-SUBRC EQ 0 AND <LFS_ANY> IS NOT INITIAL.
CLEAR <LFS_ANY>.
INSERT <LFS_LINE> INTO TABLE <LFS_NEW_OUTPUT>.
ENDIF.
ENDIF.
ENDLOOP.
***Update again
CALL METHOD LO_MANAGER_OBJ->UPDATE_CONDITIONS
EXPORTING
IT_COMPONENTS = LO_MANAGER_OBJ->LT_COMPONENTS
IS_T685 = LO_MANAGER_OBJ->LS_T685
IV_OVERRIDE_FLAG = 'X'
CHANGING
IT_DYNAMIC_TAB = <LFS_NEW_OUTPUT>.
**Assign here
<OUTPUT_TABLE> = <LFS_NEW_OUTPUT>.
****Log here
LO_MANAGER_OBJ->UPDATE_ZSD716_LOG_TABLE( ).
ENDIF.
*** Call refresh here!!
CALL METHOD REFRESH_ALV( ).
ENDMETHOD.
METHOD POP_UP_REPROCESS.
DATA: LV_ANSWER.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Örtüşen Kayıtlar var!!'
TEXT_QUESTION = 'Yeniden İşlensinmi?'
TEXT_BUTTON_1 = 'Yes'
TEXT_BUTTON_2 = 'No'
DEFAULT_BUTTON = '2'
DISPLAY_CANCEL_BUTTON = 'X'
START_COLUMN = 25
START_ROW = 6
IMPORTING
ANSWER = LV_ANSWER.
IF LV_ANSWER = '1'.
RV_REPROCESS_FLAG = 'X'.
ELSE.
RV_REPROCESS_FLAG = ''.
ENDIF.
ENDMETHOD.
ENDCLASS.