设为首页 收藏本站
查看: 1913|回复: 0

[经验分享] SAP 会计凭证打印smartforms设计

[复制链接]

尚未签到

发表于 2015-9-18 12:55:45 | 显示全部楼层 |阅读模式
DSC0000.jpg
DSC0001.jpg
  目录基本如上:
  1.全局设置->表格接口->导入  添加参数: PTR_HEADER、PTR_ITEM TYPE C.
  2.全局设置->全局定义->全局数据 添加变量:ALL_HEADS TYPE TYP_HEADS、ALL_ITEMS TYPE TYP_ITEMS、HEAD_ROW TYPE TYP_HEAD 、ITEM_ROW TYPE TYP_ITEM、BLANK_ITEMS TYPE TYP_ITEMS 、BLANK_ROW TYPE  TYP_ITEM  、G_COUNT 、G_PAGESIZE、G_CURRLINE、G_CURRPAGE、G_TOTALPAGE、G_CUPAGE、G_TOTALLINE、G_TOTALCOUNT TYPE I 默认值除了 G_PAGESIZE 你自己输入 后面的都可以为0、C_HDMBTR 、C_SDMBTR、C_DETAILS、C_DATE、C_DATES、C_CUPAGE、C_TOTALPAGE、G_HDMBTR、G_SDMBTR TYPE STRING 。
  3.全局设置->全局定义->类型 添加类型:
  TYPES:BEGIN OF TYP_HEAD,
  BUKRS LIKE BKPF-BUKRS,"公司代码
  BUTXT LIKE T001-BUTXT,"公司名称
  BELNR LIKE BKPF-BELNR,"会计凭证号
  GJAHR LIKE BKPF-GJAHR,"会计年度
  BLDAT LIKE BKPF-BLDAT,"日期
  HDMBTR LIKE BSEG-DMBTR,"贷方总金额
  SDMBTR LIKE BSEG-DMBTR,"借方总金额
  USNAM LIKE BKPF-USNAM,"用户名
  SMONEY TYPE STRING,"大写钱
END OF TYP_HEAD.
TYPES:BEGIN OF TYP_ITEM,
  BUZEI LIKE BSEG-BUZEI,"行号
  BUKRS LIKE BSEG-BUKRS,"公司代码
  BELNR LIKE BSEG-BELNR,"会计凭证号
  GJAHR LIKE BSEG-GJAHR,"年度
  BSCHL LIKE BSEG-BSCHL,"记帐代码
  KOART LIKE BSEG-KOART,"科目类型
  HKONT LIKE BSEG-HKONT,"科目
  TXT20 LIKE SKAT-TXT20,"科目描述
  SHKZG LIKE BSEG-SHKZG,"借方 贷方
  HDMBTR LIKE BSEG-DMBTR,"贷方金额
  SDMBTR LIKE BSEG-DMBTR,"借方金额
  PSWSL LIKE BSEG-PSWSL,"货币
  DMBTR LIKE BSEG-DMBTR,"金额
  SGTXT LIKE BSEG-SGTXT,"项目文本
  PRCTR LIKE BSEG-PRCTR,"利润中心
  LIFNR LIKE BSEG-LIFNR,"供应商
  NAME1 LIKE LFA1-NAME1,"供应商描述
END OF TYP_ITEM.
TYPES:TYP_HEADS TYPE TYP_HEAD OCCURS 0.
TYPES:TYP_ITEMS TYPE TYP_ITEM OCCURS 0.
  4.全局设置->全局定义->初始化 输入参数:PTR_HEADER 、PTR_ITEM、ALL_HEADS、ALL_ITEMS、G_TOTALCOUNT, perform restore_buffer using  ptr_header changing all_heads.perform restore_buffer using  ptr_item changing all_items.
describe table all_items lines g_totalcount.
5.全局设置->全局定义->格式化程序
form Restore_buffer using typeid type c changing t type table.
  import t from database indx(hk) id typeid.
endform.
FORM SPLIST_THREE USING VALUE(_STRALL) TYPE STRING VALUE(_STRCOLS) TYPE I
      CHANGING _STR1 TYPE STRING _STR2 TYPE STRING _STR3 TYPE STRING.
  CLEAR:_STR1,_STR2,_STR3.
  DATA:_STRLEN TYPE I.
  DATA:_POSI TYPE I VALUE '0'.
  DATA:_POSILEN TYPE I VALUE '0'.
  CONDENSE _STRALL NO-GAPS.
  _STRLEN = STRLEN( _STRALL ).
  IF _STRCOLS >= _STRLEN.
    _STR1 = _STRALL.
  ELSE.
    _STR1 = _STRALL+0(_STRCOLS).
  ENDIF.
  IF _STRLEN > _STRCOLS.
  _POSILEN = _STRLEN - _STRCOLS.
  IF _POSILEN >= _STRCOLS.
    _POSILEN = _STRCOLS.
  ENDIF.
  _STR2 = _STRALL+_STRCOLS(_POSILEN).
  IF _POSILEN >= _STRCOLS.
    _POSI = _STRCOLS * 2.
    _POSILEN = _STRLEN - _POSI.
    IF _POSILEN > 0.
    _STR3 = _STRALL+_POSI(_POSILEN).
    ENDIF.
  ENDIF.
ENDIF.
ENDFORM.
FORM CURCUTSTR USING VALUE(_DMBTR) TYPE P  CHANGING _RTN TYPE STRING.
  _DMBTR = ABS( _DMBTR ).
  DATA:_STR1 TYPE STRING,
       _STR2 TYPE STRING,
       _STR TYPE STRING,
       _LEN TYPE I,
       _BIT TYPE I VALUE '3',
       _MOD TYPE I,
       _TIMES TYPE I,
       _POINT TYPE I.
  MOVE _DMBTR TO _STR.
  SPLIT _STR AT '.' INTO:_STR1 _STR2.
  _LEN = STRLEN( _STR1 ).
  IF _LEN > 0.
    IF _LEN > _BIT.
      _MOD = _LEN MOD _BIT.
      CLEAR:_POINT.
      IF _MOD > 0.
        _TIMES = _LEN DIV _BIT + 1.
        DO _TIMES TIMES.
          IF SY-INDEX = 1.
            CONCATENATE _RTN _STR1+0(_MOD) ',' INTO _RTN.
            _POINT = _POINT + _MOD.
          ELSEIF SY-INDEX = _TIMES.
            CONCATENATE _RTN _STR1+_POINT(_BIT) INTO _RTN.
            _POINT = _POINT + _BIT.
          ELSE.
            CONCATENATE _RTN _STR1+_POINT(_BIT) ',' INTO _RTN.
            _POINT = _POINT + _BIT.
          ENDIF.
        ENDDO.
      ELSE.
        _TIMES = _lEN DIV _BIT.
        DO _TIMES TIMES.
          IF SY-INDEX = _TIMES.
            CONCATENATE _RTN _STR1+_POINT(_BIT) INTO _RTN.
            _POINT = _POINT + _BIT.
          ELSE.
            CONCATENATE _RTN _STR1+_POINT(_BIT) ',' INTO _RTN.
            _POINT = _POINT + _BIT.
          ENDIF.
        ENDDO.
      ENDIF.
    ELSE.
      _RTN = _STR1.
*      表示不要进行分隔
    ENDIF.
  ELSE.
    _RTN = _STR1.
  ENDIF.
  CONCATENATE _RTN '.' _STR2 INTO _RTN.
ENDFORM.
   6.MAIN主窗口->循环采购凭证 数据 :ALL_HEADS 转至HEAD_ROW条件:BELNR=HEAD_ROW-BELNR
  AND BUKRS=HEAD_ROW-BUKRS AND GJAHR=HEAD_ROW-GJAHR。
   7.MAIN主窗口->初始化 G_COUNT = 0.G_CURRLINE = 0.G_CUPAGE = 0.
   8.MAIN主窗口->SUBLOOP1 新循环 2 数据ALL_ITEMS 转至ITEM_ROW  条件:BELNR=HEAD_ROW-BELNR
  AND BUKRS=HEAD_ROW-BUKRS AND GJAHR=HEAD_ROW-GJAHR。
   9.MAIN主窗口->SUBLOOP1 新循环 2->CODE2 计算行 一般属性: G_COUNT = G_COUNT + 1.
   10.MAIN主窗口->循环采购凭证->CODE3 计算页数: G_TOTALPAGE = 0.DATA:_COUNT TYPE I._COUNT = G_COUNT MOD G_PAGESIZE.IF _COUNT = 0. G_TOTALPAGE = G_COUNT DIV G_PAGESIZE.
ELSE.G_TOTALPAGE = G_COUNT DIV G_PAGESIZE + 1.ENDIF.G_COUNT = 0."总页数清0.
  11.CODE4 新程序行 3 : G_COUNT = G_COUNT  + 1.  G_CURRLINE = G_CURRLINE + 1.
  12.CODE5 数据转换 :输入参数 ITEM_ROW、C_HDMBTR、C_SDMBTR、C_DETAILS、G_TOTALLINE、C_KEMU、C_KEMUDESC、C_GTXT1、C_GTXT2、C_GTXT3。
    DATA:_STRALL TYPE STRING,
     _STRALLTXT TYPE STRING.
DATA:_STRCOLS TYPE I VALUE 20,
     _STRCOLS2 TYPE I VALUE 25,

     _DMBTR TYPE P DECIMALS 2.
CLEAR:C_HDMBTR,C_SDMBTR,C_DETAILS,C_KEMU,C_KEMUDESC,_STRALL,_STRALLTXT.

IF ITEM_ROW-HDMBTR > 0.
*  MOVE ITEM_ROW-HDMBTR TO C_HDMBTR.
  MOVE ITEM_ROW-HDMBTR TO _DMBTR.
  perform CURCUTSTR using _DMBTR CHANGING C_HDMBTR.
ENDIF.
IF ITEM_ROW-SDMBTR > 0.
*  MOVE ITEM_ROW-SDMBTR TO C_SDMBTR.
  MOVE ITEM_ROW-SDMBTR TO _DMBTR.
  perform CURCUTSTR using _DMBTR CHANGING C_SDMBTR.
ENDIF.
IF ITEM_ROW-LIFNR IS NOT INITIAL AND ITEM_ROW-LIFNR <> ''.
  ITEM_ROW-LIFNR = ITEM_ROW-LIFNR+5(5).
  CONCATENATE '/' ITEM_ROW-LIFNR '-' ITEM_ROW-NAME1 INTO C_DETAILS .
ENDIF.
CONCATENATE ITEM_ROW-HKONT '/' ITEM_ROW-TXT20  C_DETAILS INTO _STRALL.
MOVE ITEM_ROW-SGTXT TO _STRALLTXT.
CLEAR:C_DETAILS.
PERFORM SPLIST_THREE USING _STRALL _STRCOLS CHANGING C_KEMU C_KEMUDESC C_DETAILS.
PERFORM SPLIST_THREE USING _STRALLTXT _STRCOLS2 CHANGING C_GTXT1 C_GTXT2 C_GTXT3.
G_TOTALLINE = G_TOTALLINE + 1.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115418-1-1.html 上篇帖子: SAP应用界面开发:2)PARAMETERS对象 下篇帖子: SAP屏幕设计器专题:编写控件代码(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表