Do.

[COPY] SALV Sample - Popup 본문

SAP/New Syntax - 카피용

[COPY] SALV Sample - Popup

성공보다는 가치를.. 2022. 11. 29. 15:06
728x90
"//-- 선언부
DATA:
  GR_TABLE  TYPE REF TO CL_SALV_TABLE.
  
  
"-- POPUP
DATA: BEGIN OF GS_POPUP,
        ICON   LIKE ICON-ID,
        WERKS  TYPE WERKS_D,    "-- 플랜트
        MATNR  TYPE MATNR,      "-- 자재코드
        LGORT  TYPE LGORT_D,    "-- 저장위치
        CHARG  TYPE CHARG_D,    "-- 배치
        SLABST TYPE LABST,      "-- ERP 재고량
        REMARK TYPE CHAR100,    "-- 메세지
      END OF GS_POPUP.

DATA: GT_POPUP   LIKE TABLE OF GS_POPUP.

*--- Events.


*---------------------------------------------------------------------*
*       CLASS lcl_handle_events DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_user_command FOR EVENT added_function OF cl_salv_events
        IMPORTING e_salv_function.
ENDCLASS.                    "lcl_handle_events DEFINITION
*---------------------------------------------------------------------*
*       CLASS lcl_handle_events IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    CASE e_salv_function.
      WHEN 'OKAY'.
        gr_table->close_screen( ).
    ENDCASE.
  ENDMETHOD.                    "on_user_command
ENDCLASS.                    "lcl_handle_events IMPLEMENTATION

DATA: gr_events TYPE REF TO lcl_handle_events.

 

*--- Implementation

  DATA:
    lv_title TYPE text70.

*-- Create SALV
  TRY.
      cl_salv_table=>factory(
        IMPORTING
          r_salv_table = gr_table
        CHANGING
          t_table      = gt_popup ).
    CATCH cx_salv_msg.
  ENDTRY.

*-- Get Functions
  DATA(lr_functions) = gr_table->get_functions( ).
  lr_functions->set_all( abap_true ).

*-- Set Column Settings
  DATA:
    lr_columns TYPE REF TO cl_salv_columns.

  lr_columns = gr_table->get_columns( ).
  lr_columns->set_optimize( abap_true ).

  PERFORM set_columns_technical USING lr_columns.

*-- Set Popup
  gr_table->set_screen_popup(
    start_column = 1
    end_column   = 100
    start_line   = 1
    end_line     = 20 ).

*-- Set Status
  gr_table->set_screen_status(
    pfstatus      =  'PF_0200'
    report        =  sy-repid
    set_functions = gr_table->c_functions_all ).

*-- Set Events
  DATA(lr_events) = gr_table->get_event( ).

*-- Set Title
  DATA(lr_display) = gr_table->get_display_settings( ).
  "-- 업로드 건수[&건]
  MESSAGE s059 INTO lv_title WITH |{ lines( gt_popup ) }| .
  lr_display->set_list_header( value = lv_title ).

  CREATE OBJECT gr_events.
  SET HANDLER gr_events->on_user_command FOR lr_events.

*-- Display ALV
  gr_table->display( ).

*--- Form Routine 

FORM set_columns_technical USING ir_columns TYPE REF TO cl_salv_columns.

  DEFINE $_set_align.
    TRY.
        lr_column = ir_columns->get_column( &1 ).
        IF &3 IS NOT INITIAL.
          lr_column->set_alignment( value = if_salv_c_alignment=>centered ).
        ENDIF.

      lr_column->set_short_text( value = &2 ).
      lr_column->set_medium_text( value = &2 ).
      lr_column->set_long_text( value = &2 ).
      CATCH cx_salv_not_found.
    ENDTRY.
  END-OF-DEFINITION.

  DATA:
    lr_column TYPE REF TO cl_salv_column.

  $_set_align: 'ICON'   TEXT-f08 abap_true,  "-- 상태
               'WERKS'  TEXT-f01 abap_true,  "-- 플랜트
               'LGORT'  TEXT-f03 abap_true,  "-- 저장위치
               'CHARG'  TEXT-f04 abap_true,  "-- 배치
               'SLABST' TEXT-f05 abap_true,  "-- 재고량
               'REMARK' TEXT-f09 abap_false. "-- 메세지
ENDFORM.

 

728x90

'SAP > New Syntax - 카피용' 카테고리의 다른 글

[COPY] Open SQL에서 * -1 처리  (0) 2023.11.06
[COPY] COLLECT문  (0) 2023.07.06
[COPY] VALUE 문 정리(테이블 이동)  (0) 2023.05.11
[COPY] REDUCE NESTED LOOP  (0) 2023.05.11