ALV Variant

니언·2021년 11월 15일
0

저장한 레이아웃을 파라미터에 입력해 ALV에 적용하기.

PARAMETERS:  P_VARI   TYPE DISVARIANT-VARIANT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
  PERFORM F4_VARIANT.
  
FORM F4_VARIANT .
  DATA: LS_VARIANT TYPE DISVARIANT,
        ES_VARIANT  TYPE DISVARIANT.

  LS_VARIANT-REPORT = SY-REPID.
  LS_VARIANT-HANDLE  = GC_GO_DOC_CON. "컨테이너 이름

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      IS_VARIANT    = LS_VARIANT
      I_SAVE        = GC_A
    IMPORTING
      ES_VARIANT    = ES_VARIANT
    EXCEPTIONS
      NOT_FOUND     = 2.

  IF SY-SUBRC = 2.
    MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
      P_VARI = ES_VARIANT-VARIANT.
  ENDIF.


ENDFORM.  

ALV SET_TABLE_FOR_FIRST_DISPLAY 부분

  LS_VARI-REPORT = SY-REPID.
  LS_VARI-HANDLE = GC_GO_DOC_CON.
  LS_VARI-VARIANT = P_VARI.

  CALL METHOD PO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      IS_LAYOUT                     = PS_LAYOUT
      I_SAVE                        = GC_A
      IS_VARIANT                    = LS_VARI
      IT_TOOLBAR_EXCLUDING          = PT_EXCLUDE
    CHANGING
      IT_OUTTAB                     = PT_TABLE[]
      IT_FIELDCATALOG               = PT_FCAT[]
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION = 1
      PROGRAM_ERROR                 = 2
      TOO_MANY_LINES                = 3
      OTHERS                        = 4.

ALV에서 레이아웃 저장, 관리 기능만 추가하고 싶다면

  1. Variant 변수를 선언하고,
DATA: GS_VARI TYPE DISVARIANT.
  1. ALV Display전에
  GS_VARI = VALUE DISVARIANT(
                  REPORT   = SY-REPID
                  USERNAME  = SY-UNAME
          ).
  1. ALV Display 할때
    IS_VARIANT, I_SAVE = 'A'
  GO_GRID->SET_TABLE_FOR_FIRST_DISPLAY(
    EXPORTING
      I_BYPASSING_BUFFER            = ABAP_TRUE
      IS_VARIANT                    = GS_VARI
      IS_LAYOUT                     = GS_LAYO
      IT_TOOLBAR_EXCLUDING          = GT_FUNCTIONS
      I_SAVE                        = GC_A
    CHANGING
      IT_OUTTAB                     = GT_LIST
      IT_FIELDCATALOG               = GT_FCAT
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION = 1                " Wrong Parameter
      PROGRAM_ERROR                 = 2                " Program Errors
      TOO_MANY_LINES                = 3                " Too many Rows in Ready for Input Grid
      OTHERS                        = 4
  ).

Layout option

X Global 레이아웃 세팅만 가능함
U 특정 사용자에 한해서 레이아웃 세팅만 가능함
A X와 U 둘 다 가능함
SPACE 저장/관리 불가능

profile
쭈니어 개발자

0개의 댓글