SAP-总账科目创建

METHOD zfi_i003_ii_si_sap_zzkm_in~si_sap_zzkm_in.
DATA: output_hd TYPE zmmi005_dt_mesg_hd,
output_body TYPE zsd_dt_hxm_res_msgbd_tab,
output_line TYPE zsd_dt_hxm_res_msgbd.
DATA: r_obj TYPE REF TO zco_si_unhxm_out.
DATA: out TYPE zsd_mt_hxm_res.
DATA: lv_field TYPE c LENGTH 100,
lv_flag TYPE c.

DATA: ls_account_coa         TYPE glaccount_coa,
      ls_account_coa_keyy    TYPE glaccount_coa_key,
      ls_account_coa_data    TYPE glaccount_coa_data,
      ls_account_coa_info    TYPE glaccount_coa_info,
      lt_account_names       TYPE glaccount_name_table,
      ls_account_names       TYPE glaccount_name,
      ls_account_names_keyy  TYPE glaccount_name_key,
      ls_account_names_data  TYPE glaccount_name_data,
      lt_account_ccodes      TYPE glaccount_ccode_table,
      ls_account_ccodes      TYPE glaccount_ccode,
      ls_account_ccodes_keyy TYPE glaccount_ccode_key,
      ls_account_ccodes_data TYPE glaccount_ccode_data,
      ls_account_ccodes_info TYPE glaccount_ccode_info,
      "ls_account_carea       TYPE glaccount_carea,
      "ls_account_carea_keyy  TYPE glaccount_carea_key,
      " ls_account_carea_data  TYPE glaccount_carea_data,
      " ls_account_carea_info  TYPE glaccount_carea_info,
      "lt_account_carea       TYPE glaccount_carea_table,
      lt_return              TYPE TABLE OF bapiret2,
      ls_return              TYPE bapiret2,
      lv_action              TYPE char1,
      lv_message             TYPE char255
      "ls_fromto              TYPE glaccount_carea_fromto
      .

LOOP AT input-mt_sap_zzkm-msgbd INTO DATA(ls_line).

  CASE ls_line-ifopt. "此处为OA 传来的标识符 C 表示创建 M 表示修改
    WHEN 'C'.
      lv_action = 'I'.
      lv_message = '会计科目创建成功'.
    WHEN 'M'.
      lv_action = 'U'.
      lv_message = '会计科目修改成功'.
    WHEN OTHERS.
  ENDCASE.

--------------------------------------------------------------------
ls_account_coa_keyy-ktopl = ls_line-ktopl."帐目表
ls_account_coa_keyy-saknr = ls_line-saknr."总账科目

  ls_account_coa_data-ktoks = ls_line-ktoks."总帐科目组

" ls_account_coa_data-glaccount_type = ls_line-glaccount_type. "总账科目类型
ls_account_coa_data-xbilk = LS_LINE-XBILK. "标志: 此科目是资产负债表科目吗?
ls_account_coa_data-gvtyp = LS_LINE-XPLACCT. "损益报表科目类型
ls_account_coa_info-erdat = sy-datum. "记录创建日期
ls_account_coa_info-ernam = sy-uname. "创建对象的人员名称
ls_account_coa_info-sakan = ls_line-saknr. "总账科目

  ls_account_coa-action = lv_action.           "数据记录活动:I/插入;U/修改;D/删除
  ls_account_coa-keyy = ls_account_coa_keyy.
  ls_account_coa-data = ls_account_coa_data.
  ls_account_coa-info = ls_account_coa_info.

--------------------------------------------------------------------
ls_account_names_keyy-ktopl = ls_line-ktopl. "帐目表
ls_account_names_keyy-saknr = ls_line-saknr. "总账科目
ls_account_names_keyy-spras = sy-langu. "语言代码

  ls_account_names_data-txt20 = ls_line-txt20_ML.   "总帐科目名称
  ls_account_names_data-txt50 = ls_line-txt50_ML.   "总账科目长文本

  ls_account_names-action = lv_action.            "数据记录活动:I/插入;U/修改;D/删除
  ls_account_names-keyy = ls_account_names_keyy.
  ls_account_names-data = ls_account_names_data.
  APPEND ls_account_names TO lt_account_names.

--------------------------------------------------------------------
ls_account_ccodes_keyy-bukrs = ls_line-bukrs. "公司代码
ls_account_ccodes_keyy-saknr = ls_line-saknr. "总账科目

  ls_account_ccodes_data-waers = ls_line-waers. "货币
  ls_account_ccodes_data-xsalh = ls_line-xsalh. "是否仅限以本币记的余额
  ls_account_ccodes_data-xmwno = ls_line-xmwno. "允许含/不含税过账
  ls_account_ccodes_data-mwskz = ls_line-mwskz. "税务类型
  ls_account_ccodes_data-mitkz = ls_line-mitkz. "统驭科目的科目类型
  ls_account_ccodes_data-xopvw = ls_line-xopvw. "未清项目管理
  ls_account_ccodes_data-zuawa = ls_line-zuawa. "排序码
  ls_account_ccodes_data-fstag = ls_line-fstag. "字段状态组
  ls_account_ccodes_data-xintb = ls_line-xintb. "只能自动过账
  ls_account_ccodes_data-xmitk = ls_line-xmitk. "统驭科目是否准备就绪可以输入
  "ls_account_ccodes_data-kokrs = LS_LINE-kokrs. "成本控制范围
  ls_account_ccodes_data-XKRES = ls_line-XKRES. "可以进行行项目显示

  ls_account_ccodes_info-erdat = sy-datum."记录创建日期
  ls_account_ccodes_info-ernam = sy-uname."创建对象的人员名称

  ls_account_ccodes-action = lv_action.   "数据记录活动:I/插入;U/修改;D/删除
  ls_account_ccodes-keyy = ls_account_ccodes_keyy.
  ls_account_ccodes-data = ls_account_ccodes_data.
  ls_account_ccodes-info = ls_account_ccodes_info.
  APPEND ls_account_ccodes TO lt_account_ccodes.

--------------------------------------------------------------------

  "ls_account_carea_keyy-kokrs = ls_line-kokrs. "控制范围
  "ls_account_carea_keyy-saknr = ls_line-saknr. "总账科目
  •  ls_account_carea_data-katyp = ls_line-katyp.
    
    "ls_account_carea_info-ersda = sy-datum."创建日期
    "ls_account_carea_info-usnam = sy-uname."创建人
    
  •  ls_account_carea-action = lv_action."数据记录活动:I/插入;U/修改;D/删除
    
  •  ls_account_carea-keyy = ls_account_carea_keyy.
    
  •  ls_account_carea-data = ls_account_carea_data.
    
  •  ls_account_carea-info = ls_account_carea_info.
    
  •  CLEAR ls_fromto.
    "添加开始和截止日期
    
  •  ls_fromto-datab = '19000101'.
    
  •  ls_fromto-datbi = '99991231'.
    
  •  ls_account_carea-fromto = ls_fromto.
    
  •  APPEND ls_account_carea TO lt_account_carea.
    
    CALL FUNCTION 'GL_ACCT_MASTER_SAVE'
      EXPORTING
    
  •     testmode           = ''
    
  •     NO_SAVE_AT_WARNING =
        no_authority_check = ''
        store_data_only    = ''
      TABLES
        account_names      = lt_account_names
    
  •     account_keywords   = gt_glkeywords
        account_ccodes     = lt_account_ccodes
    
  •      account_careas     = lt_account_carea
        return             = lt_return
      CHANGING
        account_coa        = ls_account_coa.
    
    CLEAR lv_field.
    LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = ls_return-id
          msgnr               = ls_return-number
          msgv1               = ls_return-message_v1
          msgv2               = ls_return-message_v2
          msgv3               = ls_return-message_v3
          msgv4               = ls_return-message_v4
        IMPORTING
          message_text_output = lv_field.
      lv_flag = 'X'.
    ENDLOOP.
    IF lv_flag IS INITIAL.
      "output_line-orderunm1  = ls_line-itemid.
      output_line-orderunm2  = ls_line-saknr.
      output_line-msgcode = 'E'.
      output_line-msg = |科目创建失败:{ lv_field }|.
      APPEND output_line TO output_body.
      CLEAR output_line.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      "output_line-orderunm1  = ls_line-itemid.
      output_line-orderunm2  = ls_line-saknr.
      output_line-msgcode = 'S'.
      output_line-msg = |科目创建成功|.
      APPEND output_line TO output_body.
      CLEAR output_line.
    ENDIF.
    

    ENDLOOP.

"反馈头信息
out-mt_hxm_res-msghd-msgid = input-MT_SAP_ZZKM-msghd-msgid.
out-mt_hxm_res-msghd-tlgid = input-MT_SAP_ZZKM-msghd-tlgid.
out-mt_hxm_res-msghd-tlgname = input-MT_SAP_ZZKM-msghd-tlgname.
out-mt_hxm_res-msghd-dtsend = sy-datum && sy-uzeit.
out-mt_hxm_res-msghd-sender = ‘ERP’.
out-mt_hxm_res-msghd-receiver = input-MT_SAP_ZZKM-msghd-sender.
"反馈行信息
out-mt_hxm_res-msgbd = output_body.
TRY .
CREATE OBJECT r_obj.
CALL METHOD r_obj->si_unhxm_out
EXPORTING
output = out.
COMMIT WORK AND WAIT.
CALL FUNCTION ‘ZFUN_PO_LOG’
EXPORTING

  •       OUTPUT1 =
          output2 = out.
    CATCH cx_ai_system_fault.
    

    ENDTRY.

    ENDMETHOD.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值