๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘‍๐Ÿ’ผ SAP/ABAP

[SAP ABAP] ALV ํ•„ํ„ฐ์ฐฝ ์ž…๋ ฅ ์นธ ๊ธ€์ž์ˆ˜๊ฐ€ ๋งž์ง€ ์•Š์„ ๋•Œ

by Jay Din 2025. 5. 8.
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์ƒํ™ฉ

ALV์—์„œ PO๋ฒˆํ˜ธ๋ฅผ ํ•„ํ„ฐ ์กฐ๊ฑด์œผ๋กœ ์„ค์ •ํ•˜๋ ค ํ–ˆ์œผ๋‚˜,

PO๋ฒˆํ˜ธ๋Š” `10์ž๋ฆฌ ํ•„๋“œ`์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‚ฌ์šฉ์ž๋Š” ์ตœ๋Œ€ 2์ž๋ฆฌ๋ฐ–์— ์ž…๋ ฅํ•  ์ˆ˜ ์—†์–ด ์‹ค์‚ฌ์šฉ์ด ์–ด๋ ค์šด ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ALV ํ•„ํ„ฐ์ฐฝ

 

์›์ธ ๋ถ„์„

์ด ๋ฌธ์ œ๋Š” ํ•„๋“œ์นดํƒˆ๋กœ๊ทธ(FIELDCAT) ์ •์˜ ์‹œ ์ถœ๋ ฅ ๊ธธ์ด (OUTPUTLEN)๊ฐ€ ์ž๋™ ์„ค์ •๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

*----------------------------------------------------------------------*
* INTERNAL TABLE DEFINE
*----------------------------------------------------------------------*
data: begin of gt_data occurs 0,
     .
     .
     .
data: end   of gt_data.
*----------------------------------------------------------------------*
* TEXT : ํ•„๋“œ์นดํƒ€๋กœ๊ทธ ํ˜ธ์ถœ
*----------------------------------------------------------------------*
perform  fieldcatalog_call using 'GT_DATA'.
*----------------------------------------------------------------------*
* FORM  FIELDCATALOG_CALL
*----------------------------------------------------------------------*
* TEXT : ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ์นดํƒ€๋กœ๊ทธ ๊ฐ€์ ธ์˜ค๊ธฐ
*----------------------------------------------------------------------*
form  fieldcatalog_call using p_table.

  clear : g_fieldcat_h[], g_fieldcat_h.

  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
      i_program_name         = sy-repid
      i_internal_tabname     = p_table
      i_inclname             = sy-repid
    changing
      ct_fieldcat            = g_fieldcat_h[]
    exceptions
      inconsistent_interface = 1
      program_error          = 2.

endform.
  • `gt_data`๋Š” `DATA: BEGIN OF ... END OF` ๋ฌธ๋ฒ•์œผ๋กœ ๋งŒ๋“  ๊ตฌ์กฐ์ฒด ๊ธฐ๋ฐ˜์˜ ์›Œํฌ ์—์–ด๋ฆฌ์–ด์ž…๋‹ˆ๋‹ค.
  • `REUSE_ALV_FIELDCATALOG_MERGE` ํ•จ์ˆ˜๋Š” `DDIC (SAP Dictionary)` ๊ธฐ๋ฐ˜ ํ…Œ์ด๋ธ”/๊ตฌ์กฐ๋งŒ ํ•„๋“œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ, ๋กœ์ปฌ ๊ตฌ์กฐ๋งŒ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— SAP๊ฐ€ ์ด ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.
  • ๊ทธ ๊ฒฐ๊ณผ, `g_fieldcat_h[]`๊ฐ€ ๋น„์–ด ์žˆ๊ณ , ํ•„๋“œ ์†์„ฑ(`outputlen`, `ref_table`, `ref_field` ๋“ฑ)์ด ์ฑ„์›Œ์ง€์ง€ ์•Š์•„์„œ `PO๋ฒˆํ˜ธ` ํ•„ํ„ฐ์ฐฝ๋„ ์ข๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒ๋‹ˆ๋‹ค. 

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐฉ๋ฒ• 1: ๊ตฌ์กฐ๋ฅผ DDIC์— ๋“ฑ๋ก

์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ํ•„๋“œ์˜ ๊ธธ์ด, ๋ผ๋ฒจ, ํ˜•์‹์ด ์ž๋™์œผ๋กœ ์„ธํŒ…๋˜๋ฏ€๋กœ ๊ฐ€์žฅ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

 

1) `SE11` → ๊ตฌ์กฐ ์ƒ์„ฑ (`ZSDS_MYALV` ๋“ฑ)

2) ALV์— ์‚ฌ์šฉ๋  ํ•„๋“œ๋“ค์„ ๊ตฌ์กฐ(ZSDS_MYALV )์— ๊ทธ๋Œ€๋กœ ์ •์˜

3) ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ตฌ์กฐ ์‚ฌ์šฉ

DATA: gt_data TYPE STANDARD TABLE OF zsds_myalv.

 

4) ํ•„๋“œ์นดํƒˆ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ๊ตฌ์กฐ ์ด๋ฆ„ ์‚ฌ์šฉ

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name   = 'ZSDS_MYALV'
    i_internal_tabname = 'GT_DATA'
    i_program_name     = sy-repid
  CHANGING
    ct_fieldcat        = g_fieldcat_h[].

 

๋ฐฉ๋ฒ• 2: ํ•„๋“œ์นดํƒˆ๋กœ๊ทธ ์ˆ˜๋™ ์ง€์ •

๊ตฌ์กฐ ๋“ฑ๋ก์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ, ํ•„๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ•„๋“œ์นดํƒˆ๋กœ๊ทธ์— ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'BELNR'.
gs_fieldcat-ref_table = 'BKPF'.
gs_fieldcat-ref_field = 'BELNR'.
gs_fieldcat-seltext_m = 'ํšŒ๊ณ„์ „ํ‘œ๋ฒˆํ˜ธ'.
gs_fieldcat-outputlen = 10. " ๋ช…์‹œ์ ์œผ๋กœ ๊ธธ์ด ์ง€์ •
APPEND gs_fieldcat TO fieldcat.

 

๋ฐฉ๋ฒ• 2: REF_FIELD / REF_TABLE ์ •ํ™•ํžˆ ์„ค์ •

 

์•„๋ž˜ ์ฒ˜๋Ÿผ `field_setting_call` ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ํ•„๋“œ์นดํƒˆ๋กœ๊ทธ๋ฅผ ํ•ธ๋“œ๋ฆด ํ•œ๋‹ค๋ฉด `REF_FIELD`์™€ `REF_TABLE`์— ํ•„๋“œ์™€ ํ…Œ์ด๋ธ”์„ ๋ช…ํ™•ํžˆ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ˆ˜์ • ๊ฒฐ๊ณผ

 

 

 

728x90
๋ฐ˜์‘ํ˜•