楼主: plusdouble

BDC如何一次新增多筆紀錄?

[复制链接]
论坛徽章:
121
紫蛋头
日期:2013-07-02 19:27:392014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:112014年世界杯参赛球队: 波黑
日期:2014-06-07 00:05:53喜羊羊
日期:2015-03-04 14:49:392015年新春福章
日期:2015-03-06 11:57:31
11#
发表于 2011-7-26 12:30 | 只看该作者
原帖由 plusdouble 于 2011-7-26 09:14 发表
MSEG-ERFMG(01)中的01不用改为02,也可以過第2筆資料。
我想要的是輸入10筆資料後,顯示1次過帳成功!!
而不是輸入10筆資料後,顯示10次過帳成功~
不過,謝謝您的意見。

(01)输入第一条记录
(02)输入第二第记录
...
(10)输入第十条记录
然后保存过帐。
这种方法要考虑屏幕大小,因为屏幕大小会影响可输入行数。

另外一种方法是,每输入一条记录后,执行“new item“,然后新的一行就会出现在(01)的位置,继续输入数据就可以了。输入10行后保存。这种方法更简单更可靠。

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2011-7-26 13:07 | 只看该作者

回复 #11 rosefish 的帖子

請問如何保存过帐?
执行“new item“,是寫在程式碼裡嗎?

使用道具 举报

回复
论坛徽章:
1
祖国60周年纪念徽章
日期:2009-10-09 08:28:00
13#
发表于 2011-7-26 16:27 | 只看该作者
前段刚做过一个类似的BDC,是把要循环的那段加一个LOOP AT RECORD的循环,还要条件分割下文本,不然内循环会整列循环下来,把保存的那段BDC放在这段LOOP的外面,在原来的那个LOOP里面。

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2011-7-26 16:50 | 只看该作者

回复 #13 tomato_plp 的帖子

請問,那就是要做兩個LOOP AT RECORD的意思嗎?
條件分割下文是因為有兩個畫面的關係嗎?
請問條件也是用LOOP嗎?

[ 本帖最后由 plusdouble 于 2011-7-26 16:53 编辑 ]

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2011-7-26 16:54 | 只看该作者

回复 #10 houbao408 的帖子

請問,這有設定幾筆才產生一份文件嗎?

使用道具 举报

回复
求职 : SAP实施
论坛徽章:
261
土豪章
日期:2018-07-10 16:19:05ITPUB18周年纪念章
日期:2018-09-17 10:09:49ITPUB18周年纪念章
日期:2018-09-17 10:12:57妮可·罗宾
日期:2018-10-28 13:07:10ITPUB18周年纪念章
日期:2018-11-13 15:31:24ITPUB18周年纪念章
日期:2018-11-13 15:40:4519周年集字徽章-庆
日期:2019-09-06 18:30:1219周年集字徽章-19
日期:2021-02-03 16:43:4820周年集字徽章-年	
日期:2023-07-21 18:25:26
16#
发表于 2011-7-26 17:05 | 只看该作者

回复 #15 plusdouble 的帖子

比如说你一个销售单有5个行项目需要更改,那么就是在5个行项目都修改完成后才会保存,即一个销售单只会保存一次,不是修改一次就保存一次!!!

使用道具 举报

回复
论坛徽章:
1
祖国60周年纪念徽章
日期:2009-10-09 08:28:00
17#
发表于 2011-7-26 17:36 | 只看该作者

回复 #14 plusdouble 的帖子

是的,这是一段代码,请参考下
  LOOP AT  RECORD.
  TVBELN = RECORD-VBELN_01_002.
*do.

*read dataset dataset into record.
*if sy-subrc <> 0. exit. endif.
    IF RECORD-FKDAT_001 <> 0.
      PERFORM BDC_DYNPRO      USING 'SAPMV60A' '0102'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'KOMFK-VBELN(02)'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'RV60A-FKDAT'
                                    RECORD-FKDAT_001.

      PERFORM BDC_DYNPRO      USING 'SAPMV60A' '0102'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'KOMFK-VBELN(02)'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'KOMFK-VBELN(01)'
                                    RECORD-VBELN_01_002.
      PERFORM BDC_DYNPRO      USING 'SAPMV60A' '0104'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'VBRK-FKART'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=MKAL'.

      LOOP AT RECORD WHERE VBELN_01_002 = TVBELN.
        PERFORM BDC_DYNPRO      USING 'SAPMV60A' '0104'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'VBRK-FKART'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=PFKO'.
        PERFORM BDC_DYNPRO      USING 'SAPMV60A' '6002'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KPEIN(02)'.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)'
                                      RECORD-KBETR_02_004.
        PERFORM BDC_FIELD       USING 'KOMV-KPEIN(02)'
                                      RECORD-KPEIN_02_005.
        PERFORM BDC_DYNPRO      USING 'SAPMV60A' '6002'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=UEBP'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(01)'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KPEIN(02)'.
ENDLOOP.
      PERFORM BDC_DYNPRO      USING 'SAPMV60A' '0104'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'VBRK-FKART'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=SICH'.
      PERFORM BDC_TRANSACTION USING 'VF01'.
    ENDIF.
  ENDLOOP.

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2011-7-27 14:50 | 只看该作者

回复 #17 tomato_plp 的帖子

不好意思,我是新手。
想請問一下你LOOP的條件是什麼??
可否幫我解釋一下??
因為我試我的程式搭不起來。
謝謝。

使用道具 举报

回复
论坛徽章:
1
祖国60周年纪念徽章
日期:2009-10-09 08:28:00
19#
发表于 2011-7-27 15:09 | 只看该作者

回复 #18 plusdouble 的帖子

TVBELN = RECORD-VBELN_01_002.这个是把凭证号赋给一个变量,LOOP AT RECORD WHERE VBELN_01_002 = TVBELN.就是对凭证号相同的行循环。

使用道具 举报

回复
论坛徽章:
0
20#
 楼主| 发表于 2011-7-27 15:48 | 只看该作者

回复 #19 tomato_plp 的帖子

您好,我想要的結果是每10筆紀錄產生一筆過帳文件。
這樣也有辦法寫成loop嗎??謝謝。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表