• FEBAN 增强


    需求背景:

       银行回传流水文件后,通过自开发程序调用标准程序FF_5上传银行流水,上传后用户通过FEBAN事务码过账银行流水,过账凭证抬头参考和文本字段使用的是系统的默认值,需要按用户需求修改账凭证抬头参考和文本字段。

     如下,在银行对账单报表页面点击保存按钮时,将文本框中输入的值按需带入到过账凭证抬头参考和文本字段

    增强BADI:FEB_BADI

    注:这个BADI不支持添加多个实施,标准的已有一个实施IBS_PS,如需激活自定义实施,则需先取消激活IBS_PS(IBS 行政部门的修改)

    如下创建实施后在CHANGE_POSTING_DATA方法添加修改凭证抬头字段

    其中 参数

    T_FTCLEAR:清账数据参数

    T_FTPOST:要过账的数据即过账抬头&行项目参数,参数如下

    STYPECOUNTFNAMFVAL

    用于内部过帐接口的记录类型

    K:凭证抬头

    P:凭证行项目

    用于关联抬头和行项目字段名字段值
    1. METHOD if_ex_feb_badi~change_posting_data.
    2. DATA lv_bktxt TYPE char30.
    3. DATA lt_ftpost TYPE TABLE OF ftpost.
    4. DATA lv_count TYPE count_pi.
    5. DATA lv_bktx_flag TYPE c.
    6. DATA lv_xblnr_flag TYPE c.
    7. FIELD-SYMBOLS <fs_wa> TYPE ftpost.
    8. IF i_febko-bukrs = 'XXXX'.
    9. SELECT kukey,CAST( esnum AS INT4 ) AS esnum,CAST( rsnum AS INT4 ) AS rsnum,vwezw
    10. FROM febre WHERE kukey = @i_febep-kukey AND esnum = @i_febep-esnum
    11. INTO TABLE @DATA(lt_febre).
    12. IF sy-subrc EQ 0.
    13. SORT lt_febre BY esnum ASCENDING.
    14. DATA(lv_cnt) = lines( lt_febre ).
    15. DATA(lv_xblnr) = VALUE #( lt_febre[ lv_cnt ]-vwezw OPTIONAL ).
    16. IF lv_xblnr CS '/OCMT'.
    17. lv_xblnr = VALUE #( lt_febre[ lv_cnt - 1 ]-vwezw OPTIONAL ).
    18. lv_xblnr = shift_left( val = lv_xblnr ).
    19. ENDIF.
    20. LOOP AT lt_febre INTO DATA(ls_febre) WHERE vwezw CS 'PY'.
    21. lv_bktxt = shift_left( val = ls_febre-vwezw ).
    22. lv_bktxt = shift_left( val = ls_febre-vwezw sub = '/PY/' ).
    23. EXIT.
    24. ENDLOOP.
    25. IF sy-subrc NE 0.
    26. lv_bktxt = VALUE #( lt_febre[ 1 ]-vwezw OPTIONAL ).
    27. ENDIF.
    28. LOOP AT t_ftpost ASSIGNING <fs_wa> .
    29. IF <fs_wa>-fnam NE 'BKPF-BKTXT' AND <fs_wa>-fnam NE 'BKPF-XBLNR'.
    30. CONTINUE.
    31. ENDIF.
    32. lv_bktx_flag = COND #( WHEN lv_bktx_flag IS INITIAL AND <fs_wa>-fnam NE 'BKPF-BKTXT' THEN 'X' ELSE lv_bktx_flag ).
    33. lv_xblnr_flag = COND #( WHEN lv_xblnr_flag IS INITIAL AND <fs_wa>-fnam NE 'BKPF-XBLNR' THEN 'X' ELSE lv_xblnr_flag ).
    34. <fs_wa>-fval = COND #( WHEN <fs_wa>-fnam = 'BKPF-BKTXT' THEN lv_bktxt+0(25) ELSE lv_xblnr ).
    35. IF lv_bktx_flag EQ 'X' AND lv_xblnr_flag EQ 'X'.
    36. EXIT.
    37. ENDIF.
    38. ENDLOOP.
    39. IF lv_xblnr_flag IS INITIAL.
    40. lt_ftpost = VALUE #( ( stype = 'K' count = 1 fnam = 'BKPF-XBLNR' fval = lv_xblnr ) ).
    41. ENDIF.
    42. IF lv_bktx_flag IS INITIAL .
    43. lt_ftpost = VALUE #( BASE lt_ftpost ( stype = 'K' count = 1 fnam = 'BKPF-BKTXT' fval = lv_bktxt+0(25) ) ).
    44. ENDIF.
    45. IF lt_ftpost IS NOT INITIAL.
    46. MOVE-CORRESPONDING lt_ftpost TO t_ftpost KEEPING TARGET LINES.
    47. ENDIF.
    48. ENDIF.
    49. ENDIF.
    50. ENDMETHOD.

     另外还有一个BADI:FIEB_CHANGE_BS_DATA(在说明算法之前改变银行数据的储存)可以修改部分字段增强的,及出口项目FEB00001C:EXIT_RFEBBU10_001 这两个增强基本相差不大EXIT_RFEBBU10_001 可以多修改T_FEBRE,因为这两个地方实现不了修改凭证抬头修改,所以这里是通过上述FEB_BADI来实现的。

  • 相关阅读:
    JavaSE学习----(八)常用类之String类
    Mongo聚合分析命令浅析
    Jupyter Notebook的使用
    【Vue】如何搭建SPA项目--详细教程
    mysql 与 Oracle 的区别,oracle 与 mysql分页查询的区别
    再谈函数的栈帧
    ATL新能源科技薪资待遇及Verify测评语言理解数字推理题型简介
    从金蝶云星空到赛意SMOM通过接口配置打通数据
    2022年国庆黄金周即将来临,景区销售分账如何提升效率?
    算法打卡 Day19(二叉树)-平衡二叉树 + 二叉树的所有路径 + 左叶子之和 + 完全二叉树的节点个数
  • 原文地址:https://blog.csdn.net/zjj960908/article/details/140458829