> (ABAP) ALV Popup Sample <
사용중인 소스 붙여넣은것이라서 정리안되었으니 알아서 참고해야 함
*----------------------------------------------------------------------*
* POPUP
*----------------------------------------------------------------------*
CLASS my_cl_salv_pop_up DEFINITION .
PUBLIC SECTION .
CLASS-DATA: BEGIN OF st_double_click .
CLASS-DATA: row TYPE salv_de_row,
column TYPE salv_de_column.
CLASS-DATA: END OF st_double_click .
CLASS-METHODS: popup
IMPORTING
start_line TYPE i DEFAULT 5
end_line TYPE i DEFAULT 10
start_column TYPE i DEFAULT 5
end_column TYPE i DEFAULT 100
popup TYPE boolean DEFAULT ' '
VALUE(t_col) TYPE slis_t_fieldcat_alv
VALUE(t_table) TYPE table .
CLASS-METHODS: double_click FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS. "my_cl_salv_pop_up DEFINITION
*----------------------------------------------------------------------*
CLASS my_cl_salv_pop_up IMPLEMENTATION .
METHOD popup .
DATA: ob_salv_table TYPE REF TO cl_salv_table,
ob_salv_columns TYPE REF TO cl_salv_columns,
columns TYPE REF TO cl_salv_columns_table,
column TYPE REF TO cl_salv_column,
ob_salv_events TYPE REF TO cl_salv_events_table.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = ob_salv_table
CHANGING
t_table = t_table ).
CATCH cx_salv_msg.
ENDTRY.
CHECK ob_salv_table IS BOUND.
ob_salv_table->set_screen_popup(
start_column = start_column
end_column = end_column
start_line = start_line
end_line = end_line ).
"- 컬럼세팅.
columns = ob_salv_table->get_columns( ).
columns->set_optimize( abap_true ).
LOOP AT t_col INTO DATA(ls_col).
column = columns->get_column( ls_col-fieldname ).
column->set_short_text( CONV scrtext_s( ls_col-seltext_s ) ).
column->set_medium_text( CONV scrtext_m( ls_col-seltext_s ) ).
column->set_long_text( CONV scrtext_l( ls_col-seltext_s ) ).
IF ls_col-cfieldname IS NOT INITIAL.
column->set_currency_column( ls_col-cfieldname ).
ENDIF.
ENDLOOP.
"- Event Setting.
ob_salv_events = ob_salv_table->get_event( ).
SET HANDLER double_click FOR ob_salv_events .
"- Display Popup.
ob_salv_table->display( ) .
ENDMETHOD . "popup
*----------------------------------------------------------------------*
METHOD double_click .
CHECK row IS NOT INITIAL.
CHECK lines( gt_doclist ) >= row.
CHECK column = 'BELNR'.
READ TABLE gt_doclist INTO gs_doclist INDEX row.
CHECK sy-subrc = 0.
CHECK gs_doclist-belnr IS NOT INITIAL.
SET PARAMETER ID: 'BLN' FIELD gs_doclist-belnr,
'BUK' FIELD gs_doclist-bukrs,
'GJR' FIELD gs_doclist-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDMETHOD . "raise_double_click
*----------------------------------------------------------------------*
ENDCLASS. "my_cl_salv_pop_up IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form popup_doclist_for_taxnum
*&---------------------------------------------------------------------*
FORM popup_doclist_for_taxnum .
DATA: lt_fcat TYPE slis_t_fieldcat_alv.
CLEAR: gs_doclist, gt_doclist[].
SELECT *
INTO CORRESPONDING FIELDS OF TABLE @gt_doclist
FROM zfit0130
WHERE bukrs EQ @pa_bukrs
AND taxnum EQ @gs_disp-taxnum.
IF gt_doclist[] IS NOT INITIAL.
lt_fcat = VALUE #( ( fieldname = 'BUKRS' seltext_s = '회사코드' )
( fieldname = 'BELNR' seltext_s = '전표번호' )
( fieldname = 'GJAHR' seltext_s = '회계연도' )
( fieldname = 'WAERS' seltext_s = '통화' )
( fieldname = 'HWBAS' seltext_s = '공급가액' cfieldname = 'WAERS' )
( fieldname = 'HWSTE' seltext_s = '세액' cfieldname = 'WAERS' )
( fieldname = 'DMBTR' seltext_s = '합계금액' cfieldname = 'WAERS' ) ).
my_cl_salv_pop_up=>popup( EXPORTING t_col = lt_fcat t_table = gt_doclist ).
ENDIF.
ENDFORM.
끝.

