RV_CONDITION_COPY用于更新比例

2020-08-25 08:53发布

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

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


您好,

我正在尝试使用RV_CONDITION_COPY更新现有的比例,但是它没有更新。

您能帮我吗,我能够重新创建它。

方法upd_cond_record_wo_service。
 *-数据
     数据:komv的lt_cr类型标准表,
           ls_cr TYPE komv,
           lt_komg komg类型标准表,
           ls_komg TYPE komg,
           ls_komk TYPE komk,
           ls_komp TYPE komp,
           lt_copy_staffel condscale的类型标准表,
           ls_copy_staffel TYPE condscale,
           lt_knumh knumh_comp的标准类型表,
           ls_knumh TYPE knumh_comp,
           lt_komv_idoc komv_idoc的类型标准表,
           ls_komv_idoc TYPE komv_idoc。


     选择单个*从ekko到@DATA(ls_ekko)在哪里
                      ebeln = @iv_ebeln。
     如果sy-subrc = 0。
       选择单个*从ekpo到@DATA(ls_ekpo)的ebeln = @ ls_ekko-ebeln且
                                                            ebelp = @iv_ebelp。
       如果sy-subrc = 0。
         通话功能'ME_FILL_KOMG_PO'
           出口
             i_ekko = ls_ekko
             i_ekpo = ls_ekpo
           输入
             e_komg = ls_komg。


 *-填充KOMK
         将ls_komg移动到ls_komk。
         ls_komk-mandt = sy-mandt。


 *-填充KOMP
         将ls_komg移动到ls_komp。
         ls_komp-kposn = 1。


 *-填写KOMV_IDOC
         ls_komv_idoc-kznep ='X'。
         附录ls_komv_idoc到lt_komv_idoc。


         从a016中选择SELECT datbi,datab,knumh
                           其中kappl ='M'并且
                                 kschl ='PB00'并且
                                 evrtn = @iv_ebeln AND
                                 evrtp = @iv_ebelp AND
                                 datbi = @iv_datbi AND
                                 datab = @iv_datab
                                 INTO @DATA(ls_a016)。
         如果sy-subrc = 0。
 ****读取PB00记录
           从konp中选择单个knumh到@DATA(lv_knumh)WHERE knumh = @ ls_a016-knumh AND
                                           kschl ='PB00'。
           如果sy-subrc <> 0。
             清除lv_knumh。
           万一。
         万一。


 ****填充附加记录
         循环到it_konp ASSIGNING FIELD-SYMBOL()。
           将对应移动到ls_cr。
           如果lv_knumh不是INITIAL。
             ls_cr-knumh = lv_knumh。
           其他。
             ls_cr-knumh ='$ 000000001'。
           万一。
           ls_cr-loevm_ko =  -loevm_ko。
           如果 -loevm_ko = abap_true。
             ls_cr-updkz = abap_true。
           万一。
           ls_cr-mandt = sy-mandt。
           如果 -konwa不初始且 -konwa <>'%'。
             ls_cr-waers =  -konwa。
           ELSEIF  -konwa ='%'。
             ls_cr-kbetr = ls_cr-kbetr * 10。
           万一。
 ***贝娄是KOMV秤的重要领域。


           使用键ebeln = iv_ebeln读取表it_​​scales
                                         ebelp = iv_ebelp
                                         kschl =  -kschl
                                         增量=  -loevm_ko
                                          无领域运输。
           如果sy-subrc = 0。
 *如果 -kstbm不是初始的。
             ls_cr-kopos = 1。
             ls_cr-kzbzg ='C'。
             ls_cr-konms = -表示。
             ls_cr-stfkz ='A'。
             DATA(lv_counter)= 0。
             在it_scales处环分配ASSIGNING FIELD-SYMBOL()在其中ebeln = iv_ebeln AND
                                                                          ebelp = iv_ebelp AND
                                                                          kschl =  -kschl和
                                                                          delt =  -loevm_ko。
               在lt_copy_staffel ASSIGNING FIELD-SYMBOL()后面添加初始行。
               如果sy-subrc = 0。
                 lv_counter = lv_counter + 1。
                 如果lv_knumh不是INITIAL。
                    -knumh = lv_knumh。
                 其他。
                    -knumh ='$ 000000001'。
                 万一。
                  -klfn1 = lv_counter。
                  -kopos ='01'。
                  -kstbm =  -kstbm。
                  -kbetr =  -kstbw。  "标价
                  -kzbzg ='C'。
 *如果lv_knumh不是INITIAL。
 *  -updkz ='X'
 *                万一。
 *  -klfka ='X'
                  -rv13akonwa =  -konwa。
                  -konpkmein =  -meins。
                  -konpkonms =  -meins。
               万一。
             结局。
             清除:lv_counter。
           万一。
           附加ls_cr至lt_cr。
           清除:ls_cr。
         结局。


 ****更新数据库
         如果lv_knumh不是INITIAL。
       
           通话功能" RV_CONDITION_COPY"
             出口
               应用='M'
               condition_table ='016'
               condition_type ='PB00'
               date_from = iv_datab
               date_to = iv_datbi
               入队='X'
               i_komk = ls_komk
               i_komp = ls_komp
               key_fields = ls_komg
               maintenance_mode ='B'
               no_authority_check ='X'
               selection_date = iv_datab
 * keep_old_records ='X'
               overlay_confirmed ='X'
               no_db_update = iv_testrun
             桌子
               copy_records = lt_cr
               copy_staffel = lt_copy_staffel
               copy_recs_idoc = lt_komv_idoc
             例外情况
               enqueue_on_record = 01
               invalid_application = 02
               invalid_condition_number = 03
               invalid_condition_type = 04
               no_authority_ekorg = 05
               no_authority_kschl = 06
               no_authority_vkorg = 07
               no_selection = 08
               table_not_valid = 09。
           如果sy-subrc <> 0。
             将初始行追加到et_return ASSIGNING FIELD-SYMBOL()。
              -type = sy-msgty。
              -id = sy-msgid。
              -number = sy-msgno。
              -message = sy-modno。
              -message_v1 = sy-msgv1。
              -message_v2 = sy-msgv2。
              -message_v3 = sy-msgv3。
              -message_v4 = sy-msgv4。
           万一。
         其他。
           通话功能" RV_CONDITION_COPY"
             出口
               应用='M'
               condition_table ='016'
               condition_type ='PB00'
               date_from = iv_datab
               date_to = iv_datbi
               入队='X'
               i_komk = ls_komk
               i_komp = ls_komp
               key_fields = ls_komg
               maintenance_mode ='A'
               no_authority_check ='X'
               overlay_confirmed ='X'
               no_db_update = iv_testrun
             桌子
               copy_records = lt_cr
               copy_staffel = lt_copy_staffel
               copy_recs_idoc = lt_komv_idoc
             例外情况
               enqueue_on_record = 01
               invalid_application = 02
               invalid_condition_number = 03
               invalid_condition_type = 04
               no_authority_ekorg = 05
               no_authority_kschl = 06
               no_authority_vkorg = 07
               no_selection = 08
               table_not_valid = 09。
           如果sy-subrc <> 0。
             将初始行追加到et_return ASSIGNING  -type = sy-msgty。
              -id = sy-msgid。
              -number = sy-msgno。
              -message = sy-modno。
              -message_v1 = sy-msgv1。
              -message_v2 = sy-msgv2。
              -message_v3 = sy-msgv3。
              -message_v4 = sy-msgv4。
           万一。


         万一。
         如果iv_testrun = abap_false。
           通话功能" RV_CONDITION_SAVE"。


           调用功能" RV_CONDITION_RESET"。


           提交工作并等待。
           如果sy-subrc <> 0。
             将初始行追加到et_return ASSIGNING  -type = sy-msgty。
              -id = sy-msgid。
              -number = sy-msgno。
              -message = sy-modno。
              -message_v1 = sy-msgv1。
              -message_v2 = sy-msgv2。
              -message_v3 = sy-msgv3。
              -message_v4 = sy-msgv4。
           万一。
         万一。
       万一。
     万一。


   终结法。

 

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

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


您好,

我正在尝试使用RV_CONDITION_COPY更新现有的比例,但是它没有更新。

您能帮我吗,我能够重新创建它。

方法upd_cond_record_wo_service。
 *-数据
     数据:komv的lt_cr类型标准表,
           ls_cr TYPE komv,
           lt_komg komg类型标准表,
           ls_komg TYPE komg,
           ls_komk TYPE komk,
           ls_komp TYPE komp,
           lt_copy_staffel condscale的类型标准表,
           ls_copy_staffel TYPE condscale,
           lt_knumh knumh_comp的标准类型表,
           ls_knumh TYPE knumh_comp,
           lt_komv_idoc komv_idoc的类型标准表,
           ls_komv_idoc TYPE komv_idoc。


     选择单个*从ekko到@DATA(ls_ekko)在哪里
                      ebeln = @iv_ebeln。
     如果sy-subrc = 0。
       选择单个*从ekpo到@DATA(ls_ekpo)的ebeln = @ ls_ekko-ebeln且
                                                            ebelp = @iv_ebelp。
       如果sy-subrc = 0。
         通话功能'ME_FILL_KOMG_PO'
           出口
             i_ekko = ls_ekko
             i_ekpo = ls_ekpo
           输入
             e_komg = ls_komg。


 *-填充KOMK
         将ls_komg移动到ls_komk。
         ls_komk-mandt = sy-mandt。


 *-填充KOMP
         将ls_komg移动到ls_komp。
         ls_komp-kposn = 1。


 *-填写KOMV_IDOC
         ls_komv_idoc-kznep ='X'。
         附录ls_komv_idoc到lt_komv_idoc。


         从a016中选择SELECT datbi,datab,knumh
                           其中kappl ='M'并且
                                 kschl ='PB00'并且
                                 evrtn = @iv_ebeln AND
                                 evrtp = @iv_ebelp AND
                                 datbi = @iv_datbi AND
                                 datab = @iv_datab
                                 INTO @DATA(ls_a016)。
         如果sy-subrc = 0。
 ****读取PB00记录
           从konp中选择单个knumh到@DATA(lv_knumh)WHERE knumh = @ ls_a016-knumh AND
                                           kschl ='PB00'。
           如果sy-subrc <> 0。
             清除lv_knumh。
           万一。
         万一。


 ****填充附加记录
         循环到it_konp ASSIGNING FIELD-SYMBOL()。
           将对应移动到ls_cr。
           如果lv_knumh不是INITIAL。
             ls_cr-knumh = lv_knumh。
           其他。
             ls_cr-knumh ='$ 000000001'。
           万一。
           ls_cr-loevm_ko =  -loevm_ko。
           如果 -loevm_ko = abap_true。
             ls_cr-updkz = abap_true。
           万一。
           ls_cr-mandt = sy-mandt。
           如果 -konwa不初始且 -konwa <>'%'。
             ls_cr-waers =  -konwa。
           ELSEIF  -konwa ='%'。
             ls_cr-kbetr = ls_cr-kbetr * 10。
           万一。
 ***贝娄是KOMV秤的重要领域。


           使用键ebeln = iv_ebeln读取表it_​​scales
                                         ebelp = iv_ebelp
                                         kschl =  -kschl
                                         增量=  -loevm_ko
                                          无领域运输。
           如果sy-subrc = 0。
 *如果 -kstbm不是初始的。
             ls_cr-kopos = 1。
             ls_cr-kzbzg ='C'。
             ls_cr-konms = -表示。
             ls_cr-stfkz ='A'。
             DATA(lv_counter)= 0。
             在it_scales处环分配ASSIGNING FIELD-SYMBOL()在其中ebeln = iv_ebeln AND
                                                                          ebelp = iv_ebelp AND
                                                                          kschl =  -kschl和
                                                                          delt =  -loevm_ko。
               在lt_copy_staffel ASSIGNING FIELD-SYMBOL()后面添加初始行。
               如果sy-subrc = 0。
                 lv_counter = lv_counter + 1。
                 如果lv_knumh不是INITIAL。
                    -knumh = lv_knumh。
                 其他。
                    -knumh ='$ 000000001'。
                 万一。
                  -klfn1 = lv_counter。
                  -kopos ='01'。
                  -kstbm =  -kstbm。
                  -kbetr =  -kstbw。  "标价
                  -kzbzg ='C'。
 *如果lv_knumh不是INITIAL。
 *  -updkz ='X'
 *                万一。
 *  -klfka ='X'
                  -rv13akonwa =  -konwa。
                  -konpkmein =  -meins。
                  -konpkonms =  -meins。
               万一。
             结局。
             清除:lv_counter。
           万一。
           附加ls_cr至lt_cr。
           清除:ls_cr。
         结局。


 ****更新数据库
         如果lv_knumh不是INITIAL。
       
           通话功能" RV_CONDITION_COPY"
             出口
               应用='M'
               condition_table ='016'
               condition_type ='PB00'
               date_from = iv_datab
               date_to = iv_datbi
               入队='X'
               i_komk = ls_komk
               i_komp = ls_komp
               key_fields = ls_komg
               maintenance_mode ='B'
               no_authority_check ='X'
               selection_date = iv_datab
 * keep_old_records ='X'
               overlay_confirmed ='X'
               no_db_update = iv_testrun
             桌子
               copy_records = lt_cr
               copy_staffel = lt_copy_staffel
               copy_recs_idoc = lt_komv_idoc
             例外情况
               enqueue_on_record = 01
               invalid_application = 02
               invalid_condition_number = 03
               invalid_condition_type = 04
               no_authority_ekorg = 05
               no_authority_kschl = 06
               no_authority_vkorg = 07
               no_selection = 08
               table_not_valid = 09。
           如果sy-subrc <> 0。
             将初始行追加到et_return ASSIGNING FIELD-SYMBOL()。
              -type = sy-msgty。
              -id = sy-msgid。
              -number = sy-msgno。
              -message = sy-modno。
              -message_v1 = sy-msgv1。
              -message_v2 = sy-msgv2。
              -message_v3 = sy-msgv3。
              -message_v4 = sy-msgv4。
           万一。
         其他。
           通话功能" RV_CONDITION_COPY"
             出口
               应用='M'
               condition_table ='016'
               condition_type ='PB00'
               date_from = iv_datab
               date_to = iv_datbi
               入队='X'
               i_komk = ls_komk
               i_komp = ls_komp
               key_fields = ls_komg
               maintenance_mode ='A'
               no_authority_check ='X'
               overlay_confirmed ='X'
               no_db_update = iv_testrun
             桌子
               copy_records = lt_cr
               copy_staffel = lt_copy_staffel
               copy_recs_idoc = lt_komv_idoc
             例外情况
               enqueue_on_record = 01
               invalid_application = 02
               invalid_condition_number = 03
               invalid_condition_type = 04
               no_authority_ekorg = 05
               no_authority_kschl = 06
               no_authority_vkorg = 07
               no_selection = 08
               table_not_valid = 09。
           如果sy-subrc <> 0。
             将初始行追加到et_return ASSIGNING  -type = sy-msgty。
              -id = sy-msgid。
              -number = sy-msgno。
              -message = sy-modno。
              -message_v1 = sy-msgv1。
              -message_v2 = sy-msgv2。
              -message_v3 = sy-msgv3。
              -message_v4 = sy-msgv4。
           万一。


         万一。
         如果iv_testrun = abap_false。
           通话功能" RV_CONDITION_SAVE"。


           调用功能" RV_CONDITION_RESET"。


           提交工作并等待。
           如果sy-subrc <> 0。
             将初始行追加到et_return ASSIGNING  -type = sy-msgty。
              -id = sy-msgid。
              -number = sy-msgno。
              -message = sy-modno。
              -message_v1 = sy-msgv1。
              -message_v2 = sy-msgv2。
              -message_v3 = sy-msgv3。
              -message_v4 = sy-msgv4。
           万一。
         万一。
       万一。
     万一。


   终结法。

 
付费偷看设置
发送
3条回答
宇峰Kouji
1楼-- · 2020-08-25 09:10

也许您可以按照注释1149781-API进行研究:系统不支持更新秤,您可以实现。 如注释所示,不支持更新和删除。 在您的发行版中签入您有可用的功能组COND_MNT_INTF。

我希望它对您有帮助

问候

Eduardo

SC_Yao
2楼-- · 2020-08-25 09:31

我建议不要使用功能模块-RV_CONDITION_ *,这些FM不会发布。 我们遇到了相同的问题,但是对于所有A *表并创建了动态BDC和报表。

SAP小黑
3楼-- · 2020-08-25 09:20

我做了隐式增强以使其工作...

谢谢..

一周热门 更多>