zoukankan      html  css  js  c++  java
  • SAP BP字段增强--付款条件检查

    原文链接:https://blog.csdn.net/JYH1999/article/details/118597934

    导语:从SAP HANA版本,供应商和客户主数据的创建和修改都被整合到BP中,从ECC升级到S4的系统,大部分原来的增强都会失效,需要在BP中重新开发,SAP也为BP做了一套完整的配置型增强,下面以BP供应商数据采购信息中的付款条件检查为例。

    【增强记录清单…】

    需求说明:

    对FLVN00供应商公司代码中的付款条件和FLVN01供应商采购组织中的付款条件,做一致性检查。


    实现过程:
    首先需要找到这两个字段的位置,看一下他们所属的表/结构,这里以FLVN01供应商采购组织中的付款条件为例,FLVN00供应商公司代码中的付款条件做同样的操作就可以了。

    事务码:BUS2
    根据经验或者模糊查询,查找字段所在的字段组,或者通过表TBZ3R,进行查询。

    找到字段组,选中,点击【字段组-字段】,可以看到里面包含的表名和字段与前面查看的一样,就可以确定是这个字段组了,如果不一致需要继续查找,这里找到的字段组是2025

    事务码:BUS3
    找到字段组对应的视图,这里有一张表可以使用【TBZ3S】,直接可以找到字段组属于哪个视图。这里找到的视图是CVIV86。

    直接定位到视图,选中,点击【视图->字段组】,可以看见我们需要增强的字段组。

    继续选中字段组,点击【进一步检查】

    新增一条检查,函数名可以自己定义,如果需要启用这个检查,就勾选上总是调用。


    函数创建
    SE37创建一个函数,函数里边通过类获取内表的数据,本次的需求需要和FLVN00供应商公司代码中的付款条件做检查,找到公司代码中付款条件的位置,以及所属表/结构,一起用类读出来,并进行校验就可以了

    函数代码如下:

    FUNCTION Z_BP_CHECK_ZTERM.
    *"--------------------------------------------------------------------
    *"*"局部接口:
    *"--------------------------------------------------------------------
    
      DATA:lt_lfm1 TYPE TABLE OF lfm1.
      DATA:lt_lfb1 TYPE TABLE OF lfb1.
      DATA:ls_lfb1 TYPE lfb1.
      DATA:ls_lfm1 TYPE lfm1.
      DATA:lv_message TYPE char200.
      CHECK cvi_bdt_adapter=>is_direct_input_active( ) = abap_false.
    
      "根据需求从缓存中取出数据到内表中
      cvi_bdt_adapter=>get_current_bp_data(
        EXPORTING
          i_table_name = 'LFM1'
        IMPORTING
          e_data_table = lt_lfm1
          ).
          
      SORT lt_lfm1 BY lifnr ekorg.
      
      cvi_bdt_adapter=>get_current_bp_data(
      EXPORTING
        i_table_name = 'LFB1'
      IMPORTING
        e_data_table = lt_lfb1
    ).
    
      SORT lt_lfb1 BY lifnr bukrs.
      
      LOOP AT lt_lfm1 INTO ls_lfm1.
        READ TABLE lt_lfb1 INTO ls_lfb1 WITH KEY lifnr = ls_lfm1-lifnr bukrs = ls_lfm1-ekorg BINARY SEARCH.
        IF sy-subrc = 0.
          IF ls_lfm1-zterm <> ''  AND ls_lfb1-zterm <> '' AND ls_lfm1-zterm <> ls_lfb1-zterm.
            lv_message =  ls_lfm1-ekorg && '采购组织数据与' && ls_lfb1-bukrs && '公司代码数据中的付款条件不一致,请检查!' .
            CALL FUNCTION 'BUS_MESSAGE_STORE'
              EXPORTING
                arbgb = 'ZYH'
                msgty = 'E'
                txtnr = '000'
                msgv1 = lv_message.
          ENDIF.
        ENDIF.
      ENDLOOP.
      
    ENDFUNCTION.

    结果显示

  • 相关阅读:
    设计模式——适配器模式
    设计模式——模板方法模式
    03-Web开发(上)
    02-配置文件
    01-QuickStart
    34-多线程(下)
    33-IO(下)
    15-后端编译与优化(待补充)
    14-线程安全与锁优化
    13-JUC(下)
  • 原文地址:https://www.cnblogs.com/seven1314pp/p/15048151.html
Copyright © 2011-2022 走看看