在表格控件中停用单行

2020-08-23 14:03发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我创建了一个表控件,其中所有字段都是可编辑的。 我创建了一个复选框,以便可以仅选择要编辑或删除的那些记录。 现在,我的要求是,当我选择一个记录并单击取消激活按钮(我已经创建了用于删​​除,编辑和取消激活的按钮)时,应取消激活整个记录或以显示模式显示整个记录,以便不能再选择同一记录来 编辑或删除。

我尝试在论坛中搜索,但无法解决相同的问题。

预先感谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我创建了一个表控件,其中所有字段都是可编辑的。 我创建了一个复选框,以便可以仅选择要编辑或删除的那些记录。 现在,我的要求是,当我选择一个记录并单击取消激活按钮(我已经创建了用于删​​除,编辑和取消激活的按钮)时,应取消激活整个记录或以显示模式显示整个记录,以便不能再选择同一记录来 编辑或删除。

我尝试在论坛中搜索,但无法解决相同的问题。

预先感谢

付费偷看设置
发送
6条回答
clever101
1楼-- · 2020-08-23 14:41

您好,

您正在将内部表中的记录填充到表控件中,在屏幕的PBO中。

在,您需要在此处编写逻辑以考虑复选框的值。

您需要像下面的代码一样修改屏幕:

     环视屏幕。
      "检查条件以停用
         屏幕输入='0'。
     结局。
 

您也可以在此搜索sdn。

希望这对您有所帮助。

樱桃小丸子0093
2楼-- · 2020-08-23 14:37

处理流程为:

屏幕的PBO,由于未单击复选框,因此此时不会停用任何东西。

然后是PAI,您需要在内部表中保存复选框的值。

现在再次执行PBO,现在此复选框值将决定是否激活记录。

您错过了将复选框值保存在PAI的内部表中的功能。

希望这个帮助您。

四川大学会员
3楼-- · 2020-08-23 14:44

我希望此链接能为您提供帮助

[停用表控件中的单行;

http://wiki.sdn.sap.com/wiki/display/ABAP/Module Pool basics

"停用"时

点击

按钮,将表行索引读入tabcon-cols。

使用索引读取该行并使其不可见。

示例代码隐藏到第3行。

隐藏列

要隐藏列,我们将使用结构CXTABA_CONTROL的INVISIBLE字段并将其值设置为" X"。

例如 隐藏第3列。

类似于tab-con-COLS的数据行。

读取表tab_con-COLS INTO col WHERE索引=3。" tab_con是名称

"的表格控件。

col-INVISIBLE = 3。

从col索引3修改tab-con-COLS。

禁用输入

要禁用/启用列的字段,我们将使用

的字段SCREEN-INPUT

结构CXTAB_COLUMN并将其值设置为0或1。

例如 禁用表控件第3列的输入。

数据行类似于tab_con-COLS。

读取表tab_con-COLS INTO col索引3。

col-SCREEN-INPUT = 0。

从col索引3修改tab_con-COLS。

致谢

sarath

95年老男孩
4楼-- · 2020-08-23 14:46

Hi Priti,

使用Table Control获得所需的输出有点困难,可以使用OO ALV来实现。 如果可能的话,请使用OOALV代替TC。

请注意,

Kumar M

shere_lin
5楼-- · 2020-08-23 14:34

嗨,

在PBO中
 
 用控制tc在itab上循环。
 模块Modify_screen。  "如果将循环放在此模块的屏幕上,则该行将可编辑/更改为禁用模式
 尽头。
 
 在程序中。
 模块Modify_screen。
  好的
     当" MOD"。  "您的修改确定代码
 
         环视屏幕。
       如果jtab-mark ='X'。
           如果屏幕名称='JTAB-MATNR'。  "您可以将屏幕组用于要编辑的字段
 "为所有关键字段分配一个GRP1,为其他字段分配GRP2
 "如果screen-group2 ='GRP2'。"属于GRP2的所有屏幕将在此处修改
             屏幕输入= 0。
             修改屏幕。
           万一。
 其他。
 如果SCREEN-NAME ='JTAB-MATNR'。
 屏幕输入= 1。
 修改屏幕。
 万一。
         结局。
 清除jtab-mark。
 修改jtab索引sy-tabix。  "这将清除表控件的行选择器
 "如果您不想删除它。
   结束。
 终端模块。
 
 在PAI中
 
 在itab循环播放。
 模块Modify_tab。
 "在顶部包括
 数据:jtab的开头出现0,
 标记类型c,
  matnr类型matnr,
 maktx类型maktx,
 jtab的结尾。
 
 "不要忘记在W/SelColumn控件的screenpainter中输入JTAB-MARK
 在节目中
 
 模块modify_tab。
   描述表jtab行tc行。
   修改jtab索引tc-current_line。  "这会将选定的行传送回程序的内部表
 ENDMODULE。
 结束循环。
 " 祝你们所有人新年快乐
 "这是一个经过测试的程序,可以在我的系统中正常工作

Cheerz

Ram

SAP小菜
6楼-- · 2020-08-23 14:50

您可以使用语句LOOP AT spfli_tab INTO spfli WITH CONTROL flight_tab来做到这一点。

示例:

在输出之前进行处理。
模块化prepare_tab。
将spfli_tab放到带有控制flight_tab的spfli中。

模块disable_row。 "您可以在屏幕上的语句循环和screen-input = 0的情况下,在模块disable_row中编写逻辑。

ENDLOOP。
输入后处理。
在spfli_tab上循环。
MODULE Modify_tab。
ENDLOOP。

一周热门 更多>