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.

 

posted @   我肉山  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示