您的位置:首页 > 其它

SAP-ABAP之bdc技术call f-65

2016-01-10 17:23 603 查看
以下是一个经典的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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sap ABAP BDC FI