ABAP动态内表获取接口日志表

*&---------------------------------------------------------------------*

*& Report ZIF0013

*&---------------------------------------------------------------------*

*&

*&---------------------------------------------------------------------*

REPORT zif0013.

 

DATA:  gv_tabname  TYPE dd02l-tabname.

DATAgs_fieldcat TYPE lvc_s_fcat,

      gt_fieldcat TYPE lvc_t_fcat,

      gt_fcat_db  TYPE lvc_t_fcat,

      dy_table    TYPE REF TO data,

      dy_tab_db   TYPE REF TO data,

      dy_line     TYPE REF TO data,

      dy_line_db  TYPE REF TO data.

FIELD-SYMBOLS<dyn_table>  TYPE STANDARD TABLE,

               <dyn_tab_db> TYPE STANDARD TABLE,

               <dyn_wa>,

               <dyn_db>,

               <dyn_field>.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-001.

PARAMETERSp_type(30AS LISTBOX VISIBLE LENGTH 20 OBLIGATORY.

SELECTION-SCREEN END OF BLOCK block1.

 

 

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE TEXT-002.

SELECT-OPTIONSp_date FOR sy-datum.

SELECT-OPTIONSp_time FOR sy-uzeit.

SELECT-OPTIONSp_user FOR sy-uname.

SELECTION-SCREEN END OF BLOCK block2.

 

 

 

INITIALIZATION.

 

 

 

AT SELECTION-SCREEN OUTPUT.

 

  DATAlv_name  TYPE vrm_id,

        lt_list  TYPE vrm_values,

        ls_value LIKE LINE OF lt_list.

 

  lv_name 'P_TYPE'.

 

  CLEAR ls_value.

  ls_value-key  '1'.

  ls_value-text '员工信息'.

  APPEND ls_value TO lt_list.

  CLEAR ls_value.

  ls_value-key  '2'.

  ls_value-text '组织信息'.

  APPEND ls_value TO lt_list.

 

  CLEAR ls_value.

  ls_value-key  '3'.

  ls_value-text '组织间关系信息'.

  APPEND ls_value TO lt_list.

 

  CLEAR ls_value.

  ls_value-key  '4'.

  ls_value-text '组织岗位关系'.

  APPEND ls_value TO lt_list.

 

  CLEAR ls_value.

  ls_value-key  '5'.

  ls_value-text '岗位信息'.

  APPEND ls_value TO lt_list.

 

  CLEAR ls_value.

  ls_value-key  '6'.

  ls_value-text '产权信息'.

  APPEND ls_value TO lt_list.

  CLEAR ls_value.

  ls_value-key  '7'.

  ls_value-text '人岗关系'.

  APPEND ls_value TO lt_list.

  CLEAR ls_value.

  ls_value-key  '8'.

  ls_value-text '值域信息'.

  APPEND ls_value TO lt_list.

  "下拉列表函数

  CALL FUNCTION 'VRM_SET_VALUES'

    EXPORTING

      id     lv_name

      values lt_list.

 

 

 

START-OF-SELECTION.

 

  "根据勾选的表获取表结构

  PERFORM frm_get_tabfield.

  "创建动态内表

  PERFORM frm_create_dynamic_table.

 

  PERFORM frm_get_data.

 

*&---------------------------------------------------------------------*

*& Form FRM_GET_TABFIELD

*&---------------------------------------------------------------------*

*& text

*&---------------------------------------------------------------------*

*& -->  p1        text

*& <--  p2        text

*&---------------------------------------------------------------------*

FORM frm_get_tabfield .

 

 

  "根据选择的类型获取表fieldcat

  CLEAR gv_tabname.

  CASE p_type.

    WHEN '1'.   "员工信息

      gv_tabname 'ZEMPL_LOG_IN'.

    WHEN '2'.   "组织信息

      gv_tabname 'ZORG_LOG_IN'.

    WHEN '3'.

      gv_tabname 'ZORREALAT_LOG_IN'.

    WHEN '4'.

      gv_tabname 'ZPOSR_LOG_IN'.

    WHEN '5'.

      gv_tabname 'ZPOST_LOG_IN'.

    WHEN '6'.

      gv_tabname 'ZPROP_LOG_IN'.

    WHEN '7'.

      gv_tabname 'ZPSR_LOG_IN'.

    WHEN '8'.

      gv_tabname 'ZLOOKUP'.

 

    WHEN OTHERS.

  ENDCASE.

*

*  "根据表名读取数据库字段

*  SELECT tabname,

*         fieldname,

*         position,

*         datatype,

*         leng

*    FROM dd03l

*    INTO TABLE @DATA(lt_dd03l)

*    WHERE tabname = @gv_tabname.

*  IF sy-subrc EQ 0.

*    SORT lt_dd03l BY position.

*  ENDIF.

*

*  "更新FIELDCAT

*  CLEAR: gt_fieldcat[].

*  LOOP AT lt_dd03l INTO DATA(ls_dd03l).

*    CLEAR: gs_fieldcat.

*    gs_fieldcat-fieldname = ls_dd03l-fieldname.

*    gs_fieldcat-col_pos   = sy-tabix.

*    gs_fieldcat-inttype   = ls_dd03l-datatype.

*    gs_fieldcat-intlen    = ls_dd03l-leng.

*    IF gs_fieldcat-fieldname NE 'MANDT' AND gs_fieldcat-fieldname NE '.INCLUDE'.

*      APPEND gs_fieldcat TO gt_fieldcat.

*    ENDIF.

**    APPEND gs_fieldcat TO gt_fcat_db.

*  ENDLOOP.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

    EXPORTING

      i_structure_name gv_tabname

*      'ZPROP_LOG_IN'

    CHANGING

      ct_fieldcat      gt_fieldcat.

 

  LOOP AT gt_fieldcat INTO gs_fieldcat.

    IF gs_fieldcat-fieldname 'REQUESTTIME' .

      gs_fieldcat-scrtext_m    '请求时间'.

    ENDIF.

    IF gs_fieldcat-fieldname 'RESPONSETIME' .

      gs_fieldcat-scrtext_m    '响应时间'.

    ENDIF.

    IF gs_fieldcat-fieldname 'ATTR1' .

      gs_fieldcat-scrtext_m    '弹性字段1'.

    ENDIF.

    IF gs_fieldcat-fieldname 'ATTR2' .

      gs_fieldcat-scrtext_m    '弹性字段2'.

    ENDIF.

    IF gs_fieldcat-fieldname 'ATTR3' .

      gs_fieldcat-scrtext_m    '弹性字段3'.

    ENDIF.

    IF gs_fieldcat-fieldname 'ZVALID'.

      gs_fieldcat-scrtext_m    '是否有效'.

    ENDIF.

    MODIFY gt_fieldcat FROM gs_fieldcat.

  ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_CREATE_DYNAMIC_TABLE

*&---------------------------------------------------------------------*

*& text

*&---------------------------------------------------------------------*

*& -->  p1        text

*& <--  p2        text

*&---------------------------------------------------------------------*

FORM frm_create_dynamic_table .

*  clear: dy_table, <dyn_table>, <dyn_wa>, <dyn_field>.

  CALL METHOD cl_alv_table_create=>create_dynamic_table

    EXPORTING

      it_fieldcatalog gt_fieldcat

    IMPORTING

      ep_table        dy_table.

*  CALL METHOD cl_alv_table_create=>create_dynamic_table

*    EXPORTING

*      it_fieldcatalog = gt_fcat_db

*    IMPORTING

*      ep_table        = dy_tab_db.

 

  ASSIGN dy_table->TO <dyn_table>用表类型指针 <dyn_table> 指向 数据对象的内容.

  CREATE DATA dy_line LIKE LINE OF <dyn_table>.

  ASSIGN dy_line->TO <dyn_wa>.

*  ASSIGN dy_tab_db->* TO <dyn_tab_db>.

*  CREATE DATA dy_line_db LIKE LINE OF <dyn_tab_db>.

*  ASSIGN dy_line_db->* TO <dyn_db>.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_GET_DATA

*&---------------------------------------------------------------------*

*& text

*&---------------------------------------------------------------------*

*& -->  p1        text

*& <--  p2        text

*&---------------------------------------------------------------------*

FORM frm_get_data .

  DATAgs_layout   TYPE lvc_s_layo.

 

  TRANSLATE p_user TO UPPER CASE.

  IF  p_type '8'.

    SELECT INTO CORRESPONDING FIELDS OF TABLE  <dyn_table>

     FROM (gv_tabname)

     WHERE zcreat_date IN p_date

      AND  zcreat_time IN p_time

     AND zcreat_user  IN p_user .

 

  ELSE.

 

    SELECT INTO CORRESPONDING FIELDS OF TABLE  <dyn_table>

     FROM (gv_tabname)

     WHERE datum IN p_date

      AND  uzeit IN p_time

     AND zuname  IN p_user .

 

  ENDIF.

 

  gs_layout-cwidth_opt  =  'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

    EXPORTING

      i_callback_program sy-repid

*     i_callback_pf_status_set = 'STATUS_PF'

*     i_callback_user_command  = 'USER_COMMAND'

*     i_grid_settings    = gs_grid

      is_layout_lvc      gs_layout

      it_fieldcat_lvc    gt_fieldcat

      i_save             'A'

    TABLES

      t_outtab           <dyn_table>.

ENDFORM.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值