ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 转:动态alv示例-动态显示sap里面的表内容

转:动态alv示例-动态显示sap里面的表内容

原创 Linux操作系统 作者:gaohangzzu 时间:2010-06-08 13:20:54 0 删除 编辑
第一部分:程序框架
REPORT  ZALV_20090304_EVENT.

INCLUDE ZALV_DATA_INTI.
INCLUDE ZALV_EVENT_F01.

START-OF-SELECTION.

PERFORM. SUB_ALV_DATA_GET.
第二部分:INCLUDE ZALV_DATA_INTI.
  TYPE-POOLS:ABAP.
PARAMETERS P_NAME TYPE OBJNAME.
DATA LT_TABLE TYPE TABLE OF DFIES.
DATA LS_TABLE TYPE DFIES.

CALL FUNCTION 'DDIF_NAMETAB_GET'
  EXPORTING
    TABNAME           = P_NAME
 TABLES
*   X031L_TAB         =
   DFIES_TAB         = LT_TABLE
 EXCEPTIONS
   NOT_FOUND         = 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.

DATA LR_STRUC TYPE REF TO CL_ABAP_STRUCTDESCR.
DATA LR_TABLE TYPE REF TO CL_ABAP_TABLEDESCR.
DATA LR_TYPE TYPE REF TO CL_ABAP_TYPEDESCR.
DATA LR_DATA  TYPE REF TO CL_ABAP_DATADESCR.
DATA L_STRING TYPE STRING.
DATA LT_COMP TYPE  ABAP_COMPONENT_TAB.
DATA LS_COMP LIKE LINE OF  LT_COMP.
DATA E_WA TYPE REF TO DATA.
DATA E_TABLE TYPE REF TO DATA.


FIELD-SYMBOLS TYPE STANDARD TABLE.
FIELD-SYMBOLS TYPE ANY.

LOOP AT LT_TABLE INTO LS_TABLE.
  CONCATENATE LS_TABLE-TABNAME '-' LS_TABLE-FIELDNAME INTO L_STRING.
*  L_STRING = LS_COMP-NAME.
  LS_COMP-NAME = LS_TABLE-FIELDNAME.
  CALL METHOD CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME
    EXPORTING
      P_NAME         = L_STRING
    RECEIVING
      P_DESCR_REF    = LR_TYPE
    EXCEPTIONS
      TYPE_NOT_FOUND = 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.


  LS_COMP-TYPE ?= LR_TYPE.
  APPEND LS_COMP TO LT_COMP.
  CLEAR LS_COMP.
ENDLOOP.

CALL METHOD CL_ABAP_STRUCTDESCR=>CREATE
  EXPORTING
    P_COMPONENTS = LT_COMP
  RECEIVING
    P_RESULT     = LR_STRUC
    .

CALL METHOD CL_ABAP_TABLEDESCR=>CREATE
  EXPORTING
    P_LINE_TYPE  = LR_STRUC
  RECEIVING
    P_RESULT     = LR_TABLE
    .

CREATE DATA E_WA    TYPE HANDLE LR_STRUC.
CREATE DATA E_TABLE TYPE HANDLE LR_TABLE.


ASSIGN E_WA->* TO .
ASSIGN E_TABLE->* TO .
第三部分:INCLUDE ZALV_EVENT_F01.
  FORM. SUB_ALV_DATA_GET .

SELECT * INTO CORRESPONDING FIELDS OF TABLE FROM (P_NAME).
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_STRUCTURE_NAME                  = P_NAME
       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.
ENDFORM.                    " SUB_ALV_DATA_GET

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10350860/viewspace-664679/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 常用表
请登录后发表评论 登录
全部评论

注册时间:2010-05-20

  • 博文量
    43
  • 访问量
    91198