ABAP

[SAP_ABAP] REUSE_ALV_GRID_DISPLAY에서 GET_SELECTED_ROWS 처럼 다중 선택한 열 정보 얻는 방법!

universe8 2023. 6. 19. 21:00

평소에 ALV 를 그리던 방식과는 다르게 'REUSE_ALV_GRID_DISPLAY'로 ALV를 그리게 되었다.

 

ALV로 데이터를 띄운다음 여러개의 데이터를 선택해서 BDC를 돌려야 하는 상황인데

오브젝트변수를 만들어준게 없어서 GET_SELECTED_ROWS를 사용할수 없는 상황..

 

REUSE_ALV_GRID_DISPLAY 에서 다중선택한 행 정보들을 얻는것은 훨씬 간단하다는것을 알게 되었다.

 

FM 'REUSE_ALV_GRID_DISPLAY'에서  'IS_LAYOUT' 파라미터에 해당하는 ALV레이아웃 추가하기.

- ALV레이아웃에 기능이 담겨있다.

- 레이아웃의 BOX_FIELDNAME 에 CHAR1자리 필드를 만들어 그 필드이름을 넣어준다.

- 그러면 선택된 여러라인의 필드값에 'X'가 들어간다.

 

 

1.선언부

GT_OUTTAB에 CHAR 1자리 필드를 하나 추가로 만든다. 여기선 그 필드이름을 'MARK'라고 만들었다 치자!

TYPE-POOLS: slis.
DATA : gs_layout    TYPE slis_layout_alv.

**추가로 ALV에 띄워줄 데이터를 담은 GT_OUTTAB에 CHAR 1자리 필드를 하나 추가로 만든다!

 

2. 레이아웃 변수의 BOX_FIELDNAME 속성에 필드이름을 넣어준다.

gs_layout-box_fieldname     = 'MARK'.

 

3. ALV함수 호출 시 파라미터 IS_LAYOUT을 추가한다.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = gs_repid
      i_callback_pf_status_set = gs_status
      i_callback_user_command  = gs_user_command
      i_default                = gs_default
      is_layout                = gs_layout	"<<<<<<<<<<<<<<<<<<<----이 라인을 추가!!!!"
      it_fieldcat              = gs_fieldcat_t[]
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_outtab
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

 

4. 디버깅을 통해 확인해보면,

이렇게 총 3개의 데이터중 2,3라인의 데이터를 선택하고 실행했을 때

이렇게 선택한 2번ROW와 3번ROW에만 'X'값이 들어가있는것을 확인할 수 있다!

 

레이아웃 기능만 하나 추가하면 되니 훨씬 편리한듯!!

반응형