BDC使用OK_CODE'= P +'向下滚动

2020-08-25 01:43发布

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

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


大家好,

我正面临BDC scoll down的问题。 我已经用序列号为MB1C编写了BDC。 我有100个数量的100个序列号。 运行BDC时,我无法填充超过19行(该windaw允许的最大行数)。 因此,我在执行此操作时使用了'= P 'OK_CODE .....,我遇到了错误......" P 未定义函数"。

有人可以帮我吗?.....以下是我的BDC代码,用于循环输入序列号。

将1移动到v_indx。
 * DO V_CNT TIMES。
 在IT_EXCEL1处环聊= IT_EXCEL-WERKS
                   AND LGORT = IT_EXCEL-LGORT
                   AND MATNR = IT_EXCEL-MATNR
                   AND CHARG = IT_EXCEL-CHARG。

 使用'SAPLIPW1''0200'执行bdc_dynpro。

 将'RIPW0-SERNR('v_indx')'连接到V_FNAM中。

 使用'BDC_CURSOR'执行bdc_field
                               V_FNAM。
 使用V_FNAM执行bdc_field
                                IT_EXCEL1-SERNR。

 使用'BDC_OKCODE'执行bdc_field
                               '= P +'。
 v_indx = v_indx + 1。
 结局。
 

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

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


大家好,

我正面临BDC scoll down的问题。 我已经用序列号为MB1C编写了BDC。 我有100个数量的100个序列号。 运行BDC时,我无法填充超过19行(该windaw允许的最大行数)。 因此,我在执行此操作时使用了'= P 'OK_CODE .....,我遇到了错误......" P 未定义函数"。

有人可以帮我吗?.....以下是我的BDC代码,用于循环输入序列号。

将1移动到v_indx。
 * DO V_CNT TIMES。
 在IT_EXCEL1处环聊= IT_EXCEL-WERKS
                   AND LGORT = IT_EXCEL-LGORT
                   AND MATNR = IT_EXCEL-MATNR
                   AND CHARG = IT_EXCEL-CHARG。

 使用'SAPLIPW1''0200'执行bdc_dynpro。

 将'RIPW0-SERNR('v_indx')'连接到V_FNAM中。

 使用'BDC_CURSOR'执行bdc_field
                               V_FNAM。
 使用V_FNAM执行bdc_field
                                IT_EXCEL1-SERNR。

 使用'BDC_OKCODE'执行bdc_field
                               '= P +'。
 v_indx = v_indx + 1。
 结局。
 
付费偷看设置
发送
13条回答
SAP小菜
1楼-- · 2020-08-25 02:08

嗨,

在下面的代码段中尝试一下。


   IF v_indx GE 20。
             使用'SAPLIPW1''0200'执行bdc_dynpro。
             使用'BDC_OKCODE'执行bdc_field
                               '= P +'。
             v_indx = 2。

           万一。

 

此致

Nagaraj

半个程序猿
2楼-- · 2020-08-25 01:59

嗨,

尝试一下。这对我有用。

  • 向下翻页

在v_position GT 19上。

使用'SAPMF02K''0320'执行bdc_dynpro。

使用" BDC_OKCODE"执行bdc_field

'= P +'。

v_position = v_position-13。

结束。

v_position存储行号的地方

并用您的程序名称和dynpro编号替换'SAPMF02K''0320'

致谢

Sucharita

大简至美
3楼-- · 2020-08-25 01:53

是否有BAPI? 如果这样的话,使用BAPI总是比BDC和调用事务更可取。 就是说,在这类列表中,我只需输入一个条目,输入按键,使用新行条目或P +重新定位屏幕,然后在下标2或3上输入下一个条目,就会获得更好的结果。 直到处理完每一行。 您不能依靠屏幕上的行数...不同的用户可能具有不同的分辨率/大小...因此您一次只能寻址一行。

但是,请考虑是否可以使用BAPI ...它们使用起来非常容易,并且它们采用" SAP方式",并且已经针对性能进行了优化,等等。

# p #
小灯塔
4楼-- · 2020-08-25 01:53

嗨,

P +(BDC中的P +)不是通用功能代码,而仅是ABAP列表中定义的代码。 因此,在99%的时间内,它不适用于所有其他情况(例如您的情况)。

滚动表控件并非易事。 当您在SHDB中的表控件上记录下一页时,可能会得到一个/00,它对应于Enter。 播放录音时,它不会滚动。 问题是"分页"分为2个部分处理,它更改了表格控件的"顶行",并执行Enter。 但是不可能记录/播放"顶线"信息。

解决方案是该程序通常实现一个功能代码:

  • "添加新行"

  • 或"在线位置"

有时,功能代码是隐藏的,因此您必须在程序内部查看(或搜索SAP注释,例如:[SAP注释187946(在路由中的PRT概述上没有位置)] | https://service.sap.com/sap/support/notes/187946 ])

有时,根本没有功能代码,然后您就陷入了困境! (或使用SAP GUI脚本,但仅在对话框中可用)。

您还可以尝试使用Max/DaveL命题(BAPI代替BDC)。

桑德拉

槿木_熙
5楼-- · 2020-08-25 01:55

请参见以下示例

  将1移至idx1。
       按代码排序idata。
        在idata WHERE代码= itab1代码处循环播放。

         使用'BDC_CURSOR'v_mat执行bdc_field。
         使用'BDC_OKCODE''= OK4'执行bdc_field。
         将idx1移到idx。
         压缩IDX。

         将'MARA-MATNR('idx')'连接到v_mat中。
         将'QTY('idx')'连接到v_qty中。

         使用v_mat idata-matcode执行bdc_field。
         使用v_qty idata-qty执行bdc_field。
         使用'BDC_OKCODE''= P ++'执行bdc_field。

      idx1 = idx1 + 1。

    

       结局。
 
落灬小鱼
6楼-- · 2020-08-25 02:07

而不是使用'= p +'尝试在您的项目表中插入OK代码,它会起作用的。

这是VA01项目表循环条件..

在it_va01a处循环进入wa_va01a,其中index = wa_header-index。

如果sy-tabix = 1。

将'RV45A-MABNR('idx')'连接到fnam中。

使用fnam执行bdc_field

wa_va01a-mabnr。

将'RV45A-KWMENG('idx')'连接到fnam中。

使用fnam执行bdc_field

wa_va01a-kwmeng。

endif。

如果sy-tabix> = 2。

idx = 2。

使用'SAPMV45A''4001'执行bdc_dynpro。

使用" BDC_OKCODE"执行bdc_field

'= POAN'。

将'RV45A-MABNR('idx')'连接到fnam中。

使用fnam执行bdc_field

wa_va01a-mabnr。

将'RV45A-KWMENG('idx')'连接到fnam中。

使用fnam执行bdc_field

wa_va01a-kwmeng。

endif。

endloop。

希望这可以解决您的问题。

此致

艾伦·巴布

一周热门 更多>