0
点赞
收藏
分享

微信扫一扫

动态内表的俩栗子_SAP刘梦_新浪博客

ITWYY 2022-08-16 阅读 70


货铺QQ群号:834508274

群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合 

不修改昵称会被不定期踢除,谢谢配合

昨天提到创建动态内表,今天举两个栗子


动态内表的俩栗子_SAP刘梦_新浪博客_overlay

*&---------------------------------------------------------------------*
*& Report ZLM_DY01
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZLM_DY01.

PARAMETERS P_NAME TYPE RSRD1-TBMA_VAL.

DATA: LR_STRUC TYPE REF TO CL_ABAP_STRUCTDESCR,
LR_DATA TYPE REF TO CL_ABAP_DATADESCR,
LR_TABLE TYPE REF TO CL_ABAP_TABLEDESCR,
DYN_TABLE TYPE REF TO DATA,
DYN_WA TYPE REF TO DATA.
DATA:L_TABNAME TYPE TABNAME.
FIELD-SYMBOLS: TYPE STANDARD TABLE,
TYPE ANY.

L_TABNAME = P_NAME.
LR_STRUC ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( L_TABNAME ).

LR_TABLE ?= CL_ABAP_TABLEDESCR=>CREATE( P_LINE_TYPE = LR_STRUC ).

CREATE DATA DYN_WA TYPE HANDLE LR_STRUC.
CREATE DATA DYN_TABLE TYPE HANDLE LR_TABLE.
ASSIGN DYN_WA->* TO .
ASSIGN DYN_TABLE->* TO .

SELECT * INTO CORRESPONDING FIELDS OF TABLE
UP TO 100 ROWS
FROM (L_TABNAME).

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = L_TABNAME
TABLES
T_OUTTAB =
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*&---------------------------------------------------------------------*
*& Report ZLM_DY02
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZLM_DY02.

DATA: GT_FIELDCAT TYPE LVC_T_FCAT.
DATA: GT_FILEDS TYPE STANDARD TABLE OF DFIES.
DATA: GS_FILEDS TYPE DFIES.
DATA: GS_FIELDCAT TYPE LVC_S_FCAT.
FIELD-SYMBOLS: TYPE STANDARD TABLE. " 内表指针
DATA: DY_TABLE TYPE REF TO DATA.

PARAMETERS P_NAME TYPE DDOBJNAME.

CALL FUNCTION 'DDIF_FIELDINFO_GET' "利用结构名取结构
EXPORTING
TABNAME = P_NAME
TABLES
DFIES_TAB = GT_FILEDS
EXCEPTIONS
NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.

LOOP AT GT_FILEDS INTO GS_FILEDS."动态结构filecat
CLEAR:GS_FIELDCAT.
MOVE-CORRESPONDING GS_FILEDS TO GS_FIELDCAT.
GS_FIELDCAT-REF_TABLE = P_NAME.
GS_FIELDCAT-REF_FIELD = GS_FILEDS-FIELDNAME.
GS_FIELDCAT-FIELDNAME = GS_FILEDS-FIELDNAME.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
ENDLOOP.

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE "动态内表结构填充
EXPORTING
IT_FIELDCATALOG = GT_FIELDCAT
IMPORTING
EP_TABLE = DY_TABLE
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
OTHERS = 2.


ASSIGN DY_TABLE->* TO .

SELECT * INTO CORRESPONDING FIELDS OF TABLE
UP TO

举报

相关推荐

0 条评论