SAP-ABAP之bdc技术call f-65

以下是一个经典的SAP例程序,通过bdc技术生成fi凭证。

REPORT  ZTEST_F65.

 

DATA: LSBL3(10) .                                      

data HS1 TYPE I.

 

TYPES: BEGIN OF tp_out.

TYPES: YGMC TYPE KNA1-NAME1.

TYPES: BM TYPE CSKT-KTEXT.  "部门

INCLUDE TYPE ZFIT_GZYSJ01.

TYPES: YFXJ TYPE ZFIT_GZYSJ01-SJ1.  "应发小计

TYPES: END OF tp_out.

DATA:

gt_out TYPE TABLE OF tp_out WITH HEADER LINE.

DATA gt_wa like line of gt_out.

DATA: gt_outHB TYPE TABLE OF tp_out WITH HEADER LINE.

data wb type char20.

 

**********定义一个BDC内表***********************

DATA g_itb_bdcdata TYPE TABLE OF bdcdata.

DATA g_wa_bdcdata LIKE LINE OF g_itb_bdcdata.

data p_BUKRS LIKE ZFIT_GZYSJ02-BUKRS  .

data p_GJAHR LIKE ZFIT_GZYSJ02-GJAHR .

data p_MONAT LIKE ZFIT_GZYSJ02-MONAT.

p_BUKRS = '1000'.

p_GJAHR = '2009'.

p_MONAT = '10'.

 

perFORM frm_post_fp.

 

 

*&---------------------------------------------------------------------*

*&      Form  frm_bdc_input

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P1         text

*      -->P2         text

*      -->P3         text

*----------------------------------------------------------------------*

FORM frm_bdc_input USING p1 p2 p3.

  CLEAR g_wa_bdcdata.

  IF p1 = 'X'.

    g_wa_bdcdata-program = p2.

    g_wa_bdcdata-dynpro = p3.

    g_wa_bdcdata-dynbegin = p1.

    APPEND g_wa_bdcdata TO g_itb_bdcdata.

  ELSE.

    g_wa_bdcdata-fnam = p2.

    g_wa_bdcdata-fval = p3.

    APPEND g_wa_bdcdata TO g_itb_bdcdata.

  ENDIF.

ENDFORM.                    "frm_bdc_input

 

 

 

 

*&---------------------------------------------------------------------*

*&      Form  frm_post_fp

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM frm_post_fp.

 

  DATA l_itb_message TYPE TABLE OF bdcmsgcoll.

  DATA l_wa_message LIKE LINE OF l_itb_message.

 

  DATA l_message TYPE char100.

 

  DATA l_date TYPE bkpf-budat.

  DATA l_wrbtr TYPE char16.

  DATA l_str   TYPE string.

 

  DATA l_mode TYPE c VALUE 'N'.

DATA l_mode TYPE c VALUE 'A'.

DATA l_mode TYPE c VALUE 'E'.

  DATA: l_datum TYPE datum.

  CONCATENATE '这是' p_MONAT '月的凭证' into wb.

  l_datum+0(4) = p_GJAHR.

  l_datum+4(2) = p_MONAT.

  l_datum+6(2) = '15'.

 

  IF GT_outhb[] IS INITIAL.

   CLEAR:g_wa_bdcdata,g_itb_bdcdata.

 

*先设置科目编码

    LSBL3 = '6601050000'."记住科目编码的状态变式非常重要

    l_wrbtr = '100.00'.

    PERFORM frm_bdc_input USING: 'X'   'SAPLF040'     '0100',

                                 ''    'BDC_OKCODE'   '/00',

                                 ''    'BKPF-BLDAT'   l_datum,

                                 ''    'BKPF-BLART'   'SA',

                                 ''    'BKPF-BUKRS'   p_BUKRS,   "输入公司代码

                                ''     'BKPF-BUDAT'   l_datum,    "日期

                                 ''    'BKPF-WAERS'   'RMB',

                                  ''  'BKPF-BKTXT'  wb  ,       "文本抬头

                                 ''    'VBKPF-XBWAE'  'X',

                                 ''    'FS006-DOCID'  '*'.

    PERFORM frm_bdc_input USING: ''    'RF05V-NEWBS'  '40'.

    PERFORM frm_bdc_input USING: ''    'RF05V-NEWKO'  LSBL3.    "科目编码

    PERFORM frm_bdc_input USING: 'X'   'SAPLF040'     '0300',

                                 ''    'BDC_OKCODE'   '=ZK',

                                 ''    'BSEG-WRBTR'   l_wrbtr,    "金额为文本格式

                                 'X'   'SAPLKACB'     '0002',

                                 ''           'BDC_OKCODE'   '/EESC',

                                 ''           'BDC_CURSOR'   'COBL-KOSTL',

                                 'X'   'SAPLF040'     '0330',

                                 ''           'BDC_CURSOR'   'BSEG-VBUND',

                                 ''           'BDC_OKCODE'   '=ZK',

                                 'X'   'SAPLF040'     '0300',

                                 ''    'BDC_OKCODE'   '=ZK',

                                 'X'   'SAPLKACB'     '0002',

                                 ''       'BDC_OKCODE'   '=ENTE',

                                 ''   'COBL-KOSTL'   '1000002' , "成本中心

                                 'X'      'SAPLF040'     '0330',

                                 ''       'BDC_OKCODE'   '=S+',

*按员工核算则BSEG-XREF2不为空

*                               ''       'BSEG-XREF2'   gt_wa_out-kunnr.

                                 ''       'BSEG-XREF2'   ''.

 

    PERFORM frm_bdc_input USING: ''    'RF05V-NEWBS'  '50',

                                 ''    'RF05V-NEWKO'  '2211030101',

                                 'X'   'SAPLF040'     '0300',

 

                                 ''    'BDC_OKCODE'   '=AB',

                                 ''    'BSEG-WRBTR'   '*',

                                 'X'   'SAPLKACB'     '0002',

 

                                 ''    'BDC_OKCODE'   '=ENTE',

                                 'X'   'SAPLF040'     '0700',

                                 ''    'BDC_CURSOR'   'BKPF-XBLNR',

                                 ''    'BDC_OKCODE'   '=PBBP'.

 

    "break-point.

    CALL TRANSACTION 'F-65' USING g_itb_bdcdata MODE l_mode MESSAGES INTO l_itb_message.

 

    READ TABLE l_itb_message INTO l_wa_message WITH KEY  msgtyp = 'S' msgid = 'FP' msgnr = '001'.

 

    DATA: l_msg TYPE string.

    IF sy-subrc = 0.

      CALL FUNCTION 'FORMAT_MESSAGE'

        EXPORTING

          id        = l_wa_message-msgid

          lang      = '1'

          no        = l_wa_message-msgnr

          v1        = l_wa_message-msgv1

          v2        = l_wa_message-msgv2

          v3        = l_wa_message-msgv3

          v4        = l_wa_message-msgv4

        IMPORTING

          msg       = l_msg

        EXCEPTIONS

          not_found = 1

          OTHERS    = 2.

 

      WRITE:/ l_msg.

    ELSE.

      LOOP AT l_itb_message INTO l_wa_message WHERE  msgtyp = 'E' OR  msgtyp = 'A'.

        CALL FUNCTION 'FORMAT_MESSAGE'

          EXPORTING

            id        = l_wa_message-msgid

            lang      = '1'

            no        = l_wa_message-msgnr

            v1        = l_wa_message-msgv1

            v2        = l_wa_message-msgv2

            v3        = l_wa_message-msgv3

            v4        = l_wa_message-msgv4

          IMPORTING

            msg       = l_msg

          EXCEPTIONS

            not_found = 1

            OTHERS    = 2.

 

        WRITE:/ l_msg.

      ENDLOOP.

    ENDIF.

  ELSE.

    WRITE:/ '没有需要结转的数据'.

  ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT技术与企业应用结合的爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值