(ABAP) ALV Popup Sample

SAP/ABAP 2026. 1. 9. 13:34
728x90

 

> (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.

 

끝.

 

 

Posted by Gomtui
,