FD32 客户信贷管理 BAPI: CREDITLIMIT_CHANGE 调用报错后问题处理

67 篇文章 43 订阅
38 篇文章 2 订阅

今天用户提了个需求写个自动程序来修改授信额度。因为之前没有用过,我先直接在SE37上运行这个BAPI来看看要填入哪些字段来进行修改。我贸贸然写了这三个字段的数字就点击运行了。

SE37上显示运行成功了,

 

但我在前台FD33查看修改效果时,傻眼了,系统直接崩溃了。什么也查询不了了!

 

 

 然后我后台查查询了一下数据表。KNKK表中除了 KUNNR、KKBER、KLIMK三个字段有值为其他所有字段都被清空了。我稍稍分析一下,那个信贷账号字段KNKLI应该是不能为空的。我后台把这个字段补回去后就FD32查看就没有报错了。

接下来在开发这个程序时,我就谨慎了,先把旧的 KNKK表行的数据复制到要修改的行,然后在修改要修改的字段。如下图所示:

 我这次完成的需求是把超过一年没有下单的客户信贷额度置为0.我把代码贴出来分享给大家。

REPORT zfi_fd32_update.
DATA i_days  TYPE tfmatage.
DATA wa_zknkk_log LIKE zknkk_log.
* 1从信贷管理表中找出所有信贷金额不为0的客户数据
* 2判断这些客户最后一次下单是否超过一年
* 3如果超过一年就把信贷改为0

SELECT *  INTO TABLE @DATA(it_knkk) FROM knkk WHERE klimk  <> ''.
IF it_knkk IS NOT INITIAL .

  LOOP AT it_knkk  INTO DATA(wa_knkk) .
    SELECT  *  INTO TABLE @DATA(it_vbak) FROM vbak WHERE kunnr = @wa_knkk-kunnr.
    IF  it_vbak  IS NOT INITIAL.
      SORT  it_vbak BY audat DESCENDING.
      READ TABLE  it_vbak INTO DATA(wa_vbak) INDEX 1.  "读取最新下单的一条数据

      CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
        EXPORTING
          i_date_from = wa_vbak-audat
*         I_KEY_DAY_FROM       =
          i_date_to   = sy-datum
*         I_KEY_DAY_TO         =
*         I_FLG_SEPARATE       = ' '
        IMPORTING
          e_days      = i_days
*         E_MONTHS    =
*         E_YEARS     =
        .
      IF  i_days > '365'.   "如过超过一年
        MOVE-CORRESPONDING  wa_knkk TO   wa_zknkk_log.
        wa_zknkk_log-audat = wa_vbak-audat.
        wa_zknkk_log-i_days = i_days.
        DATA:
          s_knka LIKE knka,
          s_knkk LIKE   knkk,
          yknka  LIKE  knka,
          yknkk  LIKE  knkk.
        " READ TABLE it_zknkk_tmp INTO DATA(wa_zknkk) INDEX 1.

        MOVE-CORRESPONDING wa_knkk TO s_knkk ."  把旧的KNKK行复制到新行
        "把要修改的字段重新赋值
        s_knkk-klimk = 0.  "  修改授信额度
        s_knkk-kraus  = ''.   " 修改信用信息号

        CALL FUNCTION 'CREDITLIMIT_CHANGE'
          EXPORTING
            i_knka   = s_knka
            i_knkk   = s_knkk
            upd_knka = ''
            upd_knkk = 'U'
*           XNEUA    = ' '
*           XREFL    = ' '
            yknka    = yknka
            yknkk    = yknkk.
        IF sy-subrc = '0'.
          wa_zknkk_log-emsg =  '更新成功'.
        ELSE.
          wa_zknkk_log-emsg =  '更新失败'.
        ENDIF.

        MODIFY   zknkk_log FROM wa_zknkk_log..  "先把数据保存一版记录在log表,方便回头查看
        COMMIT WORK.

      ENDIF.
    ENDIF.

  ENDLOOP.

ENDIF.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值