ALV 动态弹出框 自动根据字段匹配输入的字段类型

DATA lt_mass_sel_columns TYPE lvc_t_col.
  DATA lv_mark.
  DATA lv_change_ok.
  DATA lv_fieldname TYPE fieldname.
  DATA:   lt_sval  TYPE STANDARD TABLE OF sval.
  DATA:ls_sval TYPE  sval.
  DATA:lv_rsp .
  "CLEAR gv_error.
  DATA:lt_filter TYPE lvc_t_fidx.

获取  句柄以后获取字段的属性 只有可编辑的字段可以输入  。并且把过滤的字段取出 ,把输入的数据更新到需需要的字段
***选中行
  gr_valid->get_selected_columns(
  IMPORTING
    et_index_columns = lt_mass_sel_columns[]
    ).
***字段属性
  gr_valid->get_frontend_fieldcatalog(
    IMPORTING
      et_fieldcatalog = gt_fcat_mass[]
  ).

  CALL METHOD gr_valid->get_filtered_entries
    IMPORTING
      et_filtered_entries = lt_filter.

  IF lines( lt_mass_sel_columns ) > 1.
    MESSAGE TEXT-e15 TYPE 'I'.
    EXIT.
  ELSE.

    READ TABLE lt_mass_sel_columns INTO DATA(ls_sec_col) INDEX 1.
***动态弹出框
    IF sy-subrc EQ 0.

      READ TABLE gt_fcat_mass INTO DATA(ls_cat) WITH KEY fieldname = ls_sec_col-fieldname.
      IF sy-subrc EQ 0 AND ls_cat-edit = 'X'.

        ls_sval-tabname = 'ZMMT0018D'.
        ls_sval-fieldname = ls_sec_col-fieldname.
        APPEND ls_sval TO lt_sval.
      ELSE.

        MESSAGE TEXT-e16 TYPE 'I'.
        EXIT.


      ENDIF.
    ENDIF.

    CALL FUNCTION 'POPUP_GET_VALUES'
      EXPORTING
*       NO_VALUE_CHECK        = ' '
        popup_title = '' "'Set Vonder'
*       START_COLUMN          = '5'
*       START_ROW   = '5'
      IMPORTING
        returncode  = lv_rsp
      TABLES
        fields      = lt_sval
*       EXCEPTIONS
*       ERROR_IN_FIELDS       = 1
*       OTHERS      = 2
      .
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.
    IF lv_rsp IS INITIAL.
      READ TABLE lt_sval INTO ls_sval INDEX 1.
      IF sy-subrc EQ 0.
        LOOP AT gt_itab ASSIGNING FIELD-SYMBOL(<FS_ITAB>) WHERE chk = 'X'.

       READ TABLE lt_filter INTO DATA(ls_filter) with KEY table_line = sy-tabix..
       if sy-subrc ne 0."非过滤的数据
        ASSIGN COMPONENT ls_sec_col-fieldname OF STRUCTURE <FS_ITAB> TO FIELD-SYMBOL(<lv_value>).
        <lv_value> = ls_sval-value.

       endif.


        ENDLOOP.
      ENDIF.
    ENDIF.
  ENDIF.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值