SUBMIT으로 ALV 데이터 조회
CL_SALV_BS_RUNTIME_INFO
ABAP내에서 다른 리포트 프로그램의 데이터를 가져오고자 할 경우,
CL_SALV_BS_RUNTIME_INFO 클래스를 이용하여 데이터를 가져올 프로그램을 SUBMIT으로 호출하여 ALV 데이터를 읽어올 수 있습니다.
이 방식은 소스 프로그램의 수정 없이 데이터를 읽어올 수 있어서 표준 리포트의 데이터를 읽어올때 아주 유용합니다.
단, 스크린에 표시될 ALV의 데이터를 읽어오는 방식이다 보니 여러 제약사항이 있습니다.
CBO 프로그램간의 데이터 조회는 ABAP MEMORY를 이용하여 EXPORT/IMPORT가 가장 확실한 방법인듯 합니다.
# 사용예시
CL_SALV_BS_RUNTIME_INFO=>SET( DISPLAY  = ABAP_FALSE   "SUBMIT 프로그램의 화면 표시 여부
                              METADATA = ABAP_TRUE    "ALV METADATA 반환 여부(LAYOUT, FIELDCAT 등)
                              DATA     = ABAP_TRUE ).
"ALV 데이터를 읽을 소스 프로그램 호출
SUBMIT YSAND_BOX
WITH P_BUKRS = '1000'
AND RETURN.
TRY.
  "METADATA
  DATA(LT_METADATA) = CL_SALV_BS_RUNTIME_INFO=>GET_METADATA( ).
  "ALV 내용을 DATA로 반환
  CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF( IMPORTING R_DATA = DATA(LD_DATA) ).
  ASSIGN LD_DATA->* TO FIELD-SYMBOL(<LFT_DATA>).
CATCH CX_SALV_BS_SC_RUNTIME_INFO.
  "ERROR
  "SUBMIT 프로그램이 ALV를 출력하지 않을 경우 오류 발생
  "SUBMIT 프로그램이 SPLITTER_CONTAINER를 사용하는 경우 Background에서 컨테이너 생성 오류 발생
ENDTRY.
"CLEAR
CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).
"반환 받은 DATA 사용
IF <LFT_DATA> IS ASSIGNED.
  CL_SALV_TABLE=>FACTORY(
    importing
      R_SALV_TABLE   = DATA(LO_SALV)
    changing
      T_TABLE        = <LFT_DATA>
  ).
  CL_SALV_CONTROLLER_METADATA=>SET_LVC_FIELDCATALOG(
    exporting
      T_FIELDCATALOG = LT_METADATA-T_FCAT
      R_COLUMNS      = LO_SALV->GET_COLUMNS( )
      R_AGGREGATIONS = LO_SALV->GET_AGGREGATIONS( )
  ).
  CL_SALV_CONTROLLER_METADATA=>SET_LVC_LAYOUT(
    exporting
      R_FUNCTIONAL_SETTINGS = LO_SALV->GET_FUNCTIONAL_SETTINGS( )
      R_DISPLAY_SETTINGS    = LO_SALV->GET_DISPLAY_SETTINGS( )
      R_COLUMNS             = LO_SALV->GET_COLUMNS( )
      R_AGGREGATIONS        = LO_SALV->GET_AGGREGATIONS( )
      R_SELECTIONS          = LO_SALV->GET_SELECTIONS( )
      S_LAYOUT              = LT_METADATA-S_LAYOUT
  ).
  LO_SALV->DISPLAY( ).
ELSE.
  WRITE:/ 'NOT ASSIGNED'.
ENDIF.
'ABAP > Function|Class' 카테고리의 다른 글
| [Function] POPUP_GET_VALUES_DB_CHECKED - 필드값 입력 팝업 (0) | 2023.12.18 | 
|---|---|
| [Function] POPUP_GET_VALUES - 필드값 입력 팝업 (0) | 2023.12.18 | 
| [Class] CL_SEC_SXML_WRITER - AES256 암호화/복호화 (0) | 2023.11.30 | 
| [Class] BASE64 ENCODE/DECODE (0) | 2023.11.30 | 
| [Function] BASE64 ENCODE/DECODE (0) | 2023.11.30 | 
 
										
									 
										
									 
										
									
댓글