20170523 BSEG替代付款条件-ZTERM 天数-ZBD1T
增强方式:替代,【替代基本用在FICO模块】
BTE增强方式应用更广,需要学习总结。
程序:ZRGGBS*
步骤 1,SE16N:GB01 将 ZBD1T排除标记置为空,【注意,此更改跨client,dev700 修改,test710 也被修改】
通 ZTERM
                                排除
9	S	BSEG	ZBD1T	X
9	S	BSEG	ZTERM
2.替代程序RGUGBR00 重新运行;
应用领域                          *
调用点                            *
使用标准变式:SAP&OIBSEGBKPF	
运行结果:成功完成存储和生成
消息号 GB000
3.程序zrggbs000 代码增强
*---------------------------------------------------------------------*
*       FORM Z002                                                     *
*---------------------------------------------------------------------*
*替代付款方式:BSEG-ZTERM
*1.系统根据BSEG-BUKRS(公司代码)=(CV50,CV51,CV52),
*  BSEG-KOART(科目类型)=K,
* 根据BSEG-LIFNR(供应商账号)到LFB1-LIFNR=BSEG-LIFNR,
* LFB1-BUKRS=BESG-BUKRS(公司代码),找到LFB1-ZTERM赋值给BSEG-ZTERM
*
*---------------------------------------------------------------------*
FORM z002.
*&--->add on 16.05.2017 10:30:38  by cx.
  DATA:l_zterm  TYPE lfb1-zterm.
  DATA:l_nzterm TYPE lfb1-zterm.
  DATA:l_nzfbdt TYPE bseg-zfbdt.
  DATA:l_ozterm TYPE lfb1-zterm.
  DATA:l_nsklin TYPE sklin,
       l_osklin TYPE sklin.
  DATA:l_ozfbdt TYPE bseg-zfbdt.
  DATA:e_sklin TYPE sklin,
       e_zfbdt TYPE bseg-zfbdt.
*break c_xiangc.
  CLEAR:l_zterm.
  SELECT SINGLE zterm
    INTO l_zterm
    FROM lfb1
   WHERE lifnr = bseg-lifnr
     AND bukrs = bseg-bukrs.
  IF l_zterm NE space.
    CONDENSE l_zterm NO-GAPS.
**用付款条件,找付款基准日期,天数/百分比,
    IF l_zterm IS NOT INITIAL AND l_zterm NE bseg-zterm .
      CLEAR:e_sklin,e_zfbdt.
      CALL FUNCTION 'FI_FIND_PAYMENT_CONDITIONS'
        EXPORTING
          i_zterm                  = l_zterm
          i_bldat                  = bkpf-bldat
          i_budat                  = bkpf-budat
          i_cpudt                  = bkpf-cpudt
          i_zfbdt                  = bseg-zfbdt
* I_FUNCL                  = ' '
* I_REINDAT                =
* I_PPA_EX_IND             =
* I_LIFNR                  =
* I_BUKRS                  =
  IMPORTING
* E_T052                   =
           e_zfbdt                  = e_zfbdt
           e_sklin                  = e_sklin
* E_XSPLT                  =
  EXCEPTIONS
   terms_incorrect          = 1
   terms_not_found          = 2
   no_date_entered          = 3
   no_day_limit_found       = 4
   OTHERS                   = 5
                .
*IF sy-subrc <> 0.
*MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*ELSE.
*MESSAGE s001(00) WITH '替代成功!'.
*ENDIF.
*&--->替代基准日期
      IF e_zfbdt NE space.
        bseg-zfbdt = e_zfbdt.
      ENDIF.
**天数
      bseg-zbd1t = e_sklin-ztag1.
      bseg-zbd1p = e_sklin-zprz1.
      bseg-zbd2t = e_sklin-ztag2.
      bseg-zbd2p = e_sklin-zprz2.
      bseg-zbd3t = e_sklin-ztag3.
**付款条件
      bseg-zterm = l_zterm.
ENDIF.
ENDIF.
*&--->end add.
ENDFORM. "Z001
*&------------------------------------------------------------------------
FORM z002.
*BREAK-POINT.
*&--->add on 16.05.2017 10:30:38  by cx.
  DATA:l_zterm TYPE lfb1-zterm.
DATA:l_nzterm TYPE lfb1-zterm.
  DATA:l_nzfbdt TYPE bseg-zfbdt.
  DATA:l_ozterm TYPE lfb1-zterm.
  DATA:l_nsklin TYPE sklin,
       l_osklin TYPE sklin.
  DATA:l_ozfbdt TYPE bseg-zfbdt.
DATA:e_sklin TYPE sklin.
  BREAK-POINT.
CLEAR:l_zterm.
  SELECT SINGLE zterm
    INTO l_zterm
    FROM lfb1
   WHERE lifnr = bseg-lifnr
     AND bukrs = bseg-bukrs.
  IF l_zterm NE space.
    CONDENSE l_zterm NO-GAPS.
    bseg-zbd1t = 111.
**替代天数
    IF l_zterm NE bseg-zterm .
      CLEAR:e_sklin.
      CALL FUNCTION 'FI_CHANGE_PAYMENT_CONDITIONS'
        EXPORTING
*           I_BLDAT                   = SY-DATLO
*           I_BUDAT                   = SY-DATLO
*           I_CPUDT                   =
          i_newzterm                = l_zterm
          i_newzfbdt                = bseg-zfbdt
            i_newsklin                = l_nsklin
          i_oldzterm                = bseg-zterm
          i_oldzfbdt                = bseg-zfbdt
            i_oldsklin                = l_osklin
*           I_ZLSCH                   =
*           I_ZSCHF                   =
*           I_OLDZLSCH                =
*           I_OLDZSCHF                =
*           I_ZBDREQ                  = ' '
*           I_ZFBDTREQ                = ' '
*           I_ZLSCHREQ                = ' '
*           I_ZSCHFREQ                = ' '
*           I_SPLITMODE               = ' '
*           I_LIFNR                   =
*           I_BUKRS                   =
*           I_XDERIVE                 =
       IMPORTING
*           E_ZTERM                   =
*           E_ZFBDT                   =
         e_sklin                   = e_sklin
*           E_STATUS                  =
*           E_ZLSCH                   =
*           E_ZSCHF                   =
*         CHANGING
*           C_T052                    =
*           C_REINDAT                 =
       EXCEPTIONS
         terms_incorrect           = 1
         terms_not_found           = 2
         wrong_zfbdt               = 3
         day_limit_not_found       = 4
         OTHERS                    = 5
                .
      IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      bseg-zbd1t = e_sklin-ztag1.
      bseg-zterm = l_zterm.
ENDIF.
ENDIF.
*&--->end add.
ENDFORM.                                                    "Z001
*&------------------------------------------------------------------------
付款条件增强:
BSEG-ZTERM -> BSEG-ZBD1T
使用函数:FI_FIND_PAYMENT_CONDITIONS.
*输入:
 I_ZTERM                         Z020
 I_BLDAT                         2017.05.22
 I_BUDAT                         2017.05.22
 I_CPUDT                         2017.05.22
 I_ZFBDT                         20170523
*输出:
*基准日期,
E_ZFBDT   2017.05.22
返回 E_T052
付款条件数据表
E_SKLIN
*
ZTAG1                          020
ZPRZ1                          0.000
ZTAG2                          000
ZPRZ2                          0.000
ZTAG3                          000
付款条件   -> 天数
Z060
*&--->替代基准日期
      IF e_zfbdt NE space.
        bseg-zfbdt = e_zfbdt.
      ENDIF.
      bseg-zbd1t = e_sklin-ztag1.**天数
      bseg-zbd1p = e_sklin-zprz1.*现金折扣百分率
      bseg-zbd2t = e_sklin-ztag2.*现金折扣天数2 
      bseg-zbd2p = e_sklin-zprz2.*现金折扣百分比2
      bseg-zbd3t = e_sklin-ztag3.*净支付条件期段
**付款条件
      bseg-zterm = l_zterm.
/ GBTQ8FIB
/ SUB_SMCV IF COND = B_TRUE . PERFORM Z002(ZRGGBS000) IF FOUND . PERFORM Z002(ZRGGBS000) IF FOUND . PERFORM Z002(ZRGGBS000) IF FOUND . PERFORM Z002(ZRGGBS000) IF FOUND . PERFORM Z002(ZRGGBS000) IF FOUND . PERFORM Z002(ZRGGBS000) IF FOUND . PERFORM Z002(ZRGGBS000) IF FOUND . G_SUBST_PERFORMED = B_TRUE.
ENDIF. CLEAR:e_sklin.
CALL FUNCTION 'FI_CHANGE_PAYMENT_CONDITIONS'
EXPORTING
i_bldat = bkpf-bldat
i_budat = bkpf-budat
* I_CPUDT =
i_newzterm = l_zterm
i_newzfbdt = bseg-zfbdt
i_newsklin = l_nsklin
i_oldzterm = bseg-zterm
i_oldzfbdt = bseg-zfbdt
i_oldsklin = l_osklin
* I_ZLSCH =
* I_ZSCHF =
* I_OLDZLSCH =
* I_OLDZSCHF =
* I_ZBDREQ = ' '
* I_ZFBDTREQ = ' '
* I_ZLSCHREQ = ' '
* I_ZSCHFREQ = ' '
* I_SPLITMODE = ' '
* I_LIFNR =
* I_BUKRS =WW
* I_XDERIVE =
IMPORTING
* E_ZTERM =
* E_ZFBDT =
e_sklin = e_sklin
* E_STATUS =
* E_ZLSCH =
* E_ZSCHF =
* CHANGING
* C_T052 =
* C_REINDAT =
EXCEPTIONS
terms_incorrect =
terms_not_found =
wrong_zfbdt =
day_limit_not_found =
OTHERS =
.
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
MESSAGE s001() WITH '替代成功!'.
ENDIF.
20170523 BSEG替代付款条件-ZTERM 天数-ZBD1T的更多相关文章
- 关于付款条件ZTERM 的函数
		函数:PR_WF_PAYMENT_BLOCK_CHECKCALL FUNCTION 'FI_F4_ZTERM' F061 支付的过程条件FI_CHANGE_PAYMENT_CONDITIONS New ... 
- Payment Terms    收付款条件和分期付款设置
		SAP Payment Terms 中文翻译为收付款条件,他的用途是应收和应付的财务凭证中账期的管理,顾名思义即手动录入和自动生成的财务文档多少天内冲销处理则为正常,否则为超期应收应付文档,它包含的内 ... 
- FICO-Payment Terms 收付款条件和分期付款设置
		转载:https://www.cnblogs.com/weichuo/p/3524278.html Payment Terms 收付款条件和分期付款设置 SAP Payment Terms 中文翻译为 ... 
- php中cal_days_in_month不可用时的替代方法(计算一个月的天数)
		在计算某个月中的天数时,由于PHP编译时没有加上--enable-calendar选项,会导致cal_days_in_month方法不可用. 这时,如果不能更改服务器的编译设置,可以通过以下方法实现该 ... 
- ZRGGBS00 GGB1替代问题
		ZRGGBS00ZRGGBS00ZRGGBS00 和Validation不同的是,Validation只做检测,一般不做相应数据的修改,Substitution弥补了这反面的缺陷,它和user exi ... 
- Effective Java 第三版——34. 使用枚举类型替代整型常量
		Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ... 
- mysql 日期操作 增减天数、时间转换、时间戳(转)
		转自http://www.cnblogs.com/wenzichiqingwa/archive/2013/03/05/2944485.html http://hi.baidu.com/juntao_l ... 
- mysql 日期操作 增减天数、时间转换、时间戳(转换)
		http://hi.baidu.com/juntao_li/item/094d78c6ce1aa060f6c95d0b MySQL datediff(date1,date2):两个日期相减 date1 ... 
- 【ABAP系列】SAP ABAP 的替代和校验
		公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 的替代和校验 ... 
随机推荐
- webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc (();  或者 Unexpected token: operator (>)
			webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc ((); 或者 Unexpected token: operator (>) 解决方案 ... 
- VS2017 - Winform 简单托盘小程序
			界面比较简单,主要两个button 一个NotifyIcon 和 右键菜单 控件, NotifyIcon 属性,如下: 并为NotifyIcon指定了DoubleClick事件: 主窗体增加两个事件: ... 
- 批量分发SSH秘钥
			#!/usr/bin/expect # filename: distribute_key.expif [ $argc != 2 ]{ send_user "usage: expect exp ... 
- bwlabel
			bwlabel是用来标记二维的二值图像中的连通组的,简言之,就是黑背景下面有多少白的块,也就是从黑背景甄别白块块的. L = bwlabel(BW, n) returns a matrix L, of ... 
- Tomcat启动报错:SERVER: Error ListenerStart 排查过程记录
			报错的Tomcat截图: 要排查此问题,首先需要调整tomcat的日志级别,调整成通过log4j来记录日志的方式,具体的调整方式: http://tomcat.apache.org/tomcat- ... 
- OSX: bash的更新
			本文尽量详述眼下来说的bash补丁的进展,从以下4个方面解释: 最全最新的更新安装包,:Oct 5为止的 測试已知的bash漏洞的脚本:更新后能够用来检測已知bash漏洞的情况 脚本编译更新版本号:也 ... 
- Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)
			我们知道,如果想要在Yarn上运行MapReduce作业,仅需实现一个ApplicationMaster组件即可,而MRAppMaster正是MapReduce在Yarn上ApplicationMas ... 
- ORA-00349: failure obtaining block size for '+fra_grp01_d
			有一次恢复库以后,open时报错ORA-00349,例如以下.最后通过删除这个log group解决. SQL> alter database open resetlogs; alter d ... 
- Vim使用技巧(4) -- 命令行模式 【持续更新】
			基本保存,退出,帮助 :help //帮助 :w //保存 :q //退出 :wq //保存后退出 :q! //强制不保存退出 %s/a/b/g //将当前文件的a全部替换成b /abc //正向查找 ... 
- Ubuntu17 root ssh
			Ubuntu provides OpenSSH (OpenBSD Secure Shell) in its universe repositories, which is a suite of sec ... 
