๋ฌธ์ ์ํฉ
ALV์์ PO๋ฒํธ๋ฅผ ํํฐ ์กฐ๊ฑด์ผ๋ก ์ค์ ํ๋ ค ํ์ผ๋,
PO๋ฒํธ๋ `10์๋ฆฌ ํ๋`์์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ฉ์๋ ์ต๋ 2์๋ฆฌ๋ฐ์ ์ ๋ ฅํ ์ ์์ด ์ค์ฌ์ฉ์ด ์ด๋ ค์ด ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.

์์ธ ๋ถ์
์ด ๋ฌธ์ ๋ ํ๋์นดํ๋ก๊ทธ(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`์ ํ๋์ ํ ์ด๋ธ์ ๋ช ํํ ์ค์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.

์์ ๊ฒฐ๊ณผ
