BILLING REPORT

本文介绍了一种使用ABAP开发的发票报表系统,该系统能够从多个表中抽取数据,并通过ALV网格进行展示。此外,还实现了Excel导出、PDF生成等功能。文章详细展示了如何通过SQL联接查询获取发票、销售订单等信息,并通过ALV控件实现数据展示。

report zrsd_pce_0165 no standard page heading message-id zs001.

include zrsd_pce_0165_top.
include zrsd_pce_0165_fm.

at selection-screen on value-request for filename.
  perform. choose_input_file .


*---------------------------------------------------------------------*
*                     START-OF-SELECTION                              *
*---------------------------------------------------------------------*
start-of-selection.
  repid = sy-repid.
  perform. extract_document_data.
  describe table out_tab_list_1 lines listline .
  if listline > 0.
    perform  build_field.
    perform  display_data.
  else.
    message s003 with 'NO DATA FOUND!'. "No data found.
  endif.

*----------------------------------------------------------------------*
*   INCLUDE ZRSD_PCE_0165_FM                                           *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  extract_document_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
form. extract_document_data .

  select vbrk~vbeln vbrp~aubel as vbelna vbrp~vgbel as vbelnl
  vbrk~fkart vbrk~kunag vbrk~vkorg vbrk~vtweg vbrk~spart vbrk~erdat
  vbak~bstnk
  into corresponding fields of table out_tab_list
  from vbrk inner join vbrp
  on vbrk~vbeln = vbrp~vbeln
  inner join vbak
  on vbak~vbeln = vbrp~aubel
  where vbrk~vbeln in vbeln
    and vbrp~aubel in vbelna
    and vbrp~vgbel in vbelnl
    and vbak~bstnk in bstnk
    and vbrk~kunag in kunnr
    and vbrk~vkorg in vkorg
    and vbrk~vtweg in vtweg
    and vbrk~spart in spart
    and vbrk~fkart in fkart
    and vbrk~erdat in erdat
    and vbrk~vbeln not like '28%'.
**" 28 is cancel billing

  sort out_tab_list by  vbeln bstnk.
  loop at out_tab_list.
    clear:out_tab_list_1.
    move-corresponding out_tab_list to out_tab_list_1.
***get cancell billing number
    select single vbeln into out_tab_list_1-sfakn
    from vbrk where sfakn = out_tab_list-vbeln.
***check DN if exist.
    select single * from likp where vbeln = out_tab_list-vbelnl.
    if sy-subrc <> 0.
      if  ( out_tab_list-fkart = 'ZPLA')
         or ( out_tab_list-fkart = 'ZPLB')
         or ( out_tab_list-fkart = 'ZPLC')
         or ( out_tab_list-fkart = 'ZPLD')
         or ( out_tab_list-fkart = 'ZPLE').
        continue.
      endif.
    endif.

    append out_tab_list_1.
  endloop.
  delete adjacent duplicates from out_tab_list_1 comparing all fields.

endform.                    " extract_document_data
*&---------------------------------------------------------------------*
*&      Form  build_field
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
form. build_field.
  perform. append_alv using:
    'SELID' 'Selid'  'X' 'X',
    'VBELN' 'Billing Document' '' '',
    'BSTNK' 'Customer PO' '' '',
    'VBELNA' 'Sales Order' '' '',
    'VBELNL' 'Delivery Notes' '' '',
    'SFAKN'  'Cancel Billing Number' '' '',
    'FKART' 'Billing type' '' '',
    'KUNAG' 'Sold to party' '' '',
    'VKORG' 'Sales Org'  '' '',
    'VTWEG' 'Sales Channel'  '' '',
    'SPART' 'Divison'  '' '',
    'ERDAT' 'Billing Create Date' '' ''.
endform.                    " build_field
*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
form. display_data.
  wa_layout-zebra = 'X'.
  wa_layout-colwidth_optimize = 'X'.
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program       = repid
            i_callback_pf_status_set = 'ZSD_165_1000'
            i_callback_user_command  = 'USER_COMMAND'
            i_grid_title             = 'EMC invoice For EPDIII'
            is_layout                = wa_layout
            it_fieldcat              = fieldcat[]
       tables
            t_outtab                 = out_tab_list_1[].

endform.                    " display_data
*&---------------------------------------------------------------------*
*&      Form  append_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&gtP_1805   text
*      --&gtP_1806   text
*      --&gtP_1807   text
*      --&gtP_1808   text
*----------------------------------------------------------------------*
form. append_alv using   fieldname fieldtext checkbox edit.
  move:
      fieldname to fieldcat-fieldname,
      fieldtext to fieldcat-seltext_l,
      checkbox  to fieldcat-checkbox,
      edit      to fieldcat-edit.
  append fieldcat to fieldcat.
  clear fieldcat.
endform.                    " append_alv


*&---------------------------------------------------------------------*
*&      Form  Z165_1000
*&---------------------------------------------------------------------*
form. zsd_165_1000 using rt_extab type slis_t_extab.
  set pf-status '1000'.
endform.
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
form. user_command using r_ucomm type sy-ucomm
                         rs_selfield type slis_selfield.

  call function 'GET_GLOBALS_FROM_SLVC_FULLSCR'
       importing
            e_grid = gv_grid.
  call method gv_grid->check_changed_data.
  call method gv_grid->refresh_table_display.

  case r_ucomm.
    when 'BACK'.
      leave to  screen 0.
    when 'EXIT'.
      leave program.
    when 'OUTPUT' .
      perform. list_document .
    when 'EXCEL'.
      perform. excel_document .
    when 'SELALL'.
      perform  mark_all using 'X' .
    when 'DESELALL'.
      perform. mark_all using 'N' .
  endcase.
endform.
*&---------------------------------------------------------------------*
*&      Form  list_document
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
form. list_document.
  describe table out_tab_list_1 lines listline.
  do listline times.
    out_tab_list_1-selid = space.
    clear:  out_tab_list_1 .
    read line sy-index field
         value  out_tab_list_1-selid  out_tab_list_1-vbeln.
    check sy-subrc eq 0.
    if out_tab_list_1-selid ='X'.
      modify out_tab_list_1 transporting selid
            where vbeln = out_tab_list_1-vbeln.
    elseif out_tab_list_1-selid eq ''.
      modify out_tab_list_1 transporting selid
            where vbeln = out_tab_list_1-vbeln.
    endif.

    read table out_tab_list_1 with key selid  = 'X'.
    if  out_tab_list_1-selid ='X'.
      modify  out_tab_list_1 transporting selid
            where vbeln =  out_tab_list_1-vbeln.
    elseif  out_tab_list_1-selid eq ''.
      modify  out_tab_list_1 transporting selid
            where vbeln = out_tab_list_1-vbeln.
    endif.
  enddo.
  read table  out_tab_list_1  with key selid  = 'X'.
  if sy-subrc ne 0.
    message i000 with 'Please First Choose ItemNO.'.
    exit.
  else.
    perform. output_pdf.
    perform. call_smartforms.
  endif.

endform.                    " list_document

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666220/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14397246/viewspace-666220/

引用\[1\]:在这个引用中,是一段ABAP代码,用于在SAP系统中生成发票计划。代码中使用了一个名为lt_rspar的内部表,通过向其中添加不同的选择条件,来筛选需要生成发票计划的数据。具体的选择条件包括POSNR、VBELN、BEDAT和ENDAT等字段。最后,通过调用submit语句,将选择条件传递给sdfpla02事务码,并执行生成发票计划的操作。 引用\[2\]:这个引用提到了一个名为mtl_system_items_b的基本表,它是ERP系统中的一个项目基本表。该表包含了许多列,但是作者并不清楚每一列的用途,特别是像'%_flag'这样的列。作者认为,一般异常的原因可能是因为'%_flag'列的值为'Y'或'N'。因此,作者记录了列与接口之间的对应关系,相信这对于在生成异常时会有所帮助。 引用\[3\]:这个引用是一个SQL查询语句,用于查询销货成本账户。查询语句中使用了两个表,分别是GL_CODE_COMBINATIONS和mtl_system_items_b。通过在mtl_system_items_b表中根据segment1字段的值为'jamtest'来获取cost_of_sales_account字段的值,然后将该值作为条件在GL_CODE_COMBINATIONS表中进行查询。 问题: BILLING_SCHEDULE_GENERATE是什么意思? 回答: BILLING_SCHEDULE_GENERATE是一个功能或者操作的名称,根据提供的引用内容,无法确定它的具体含义。根据上下文推测,它可能是一个用于生成发票计划的功能或者操作。在SAP系统中,通过使用ABAP代码和相应的选择条件,可以调用相应的事务码或者功能模块来执行生成发票计划的操作。 #### 引用[.reference_title] - *1* [SAP SD Sales Order - Maintain billing plan & Billing Dates](https://blog.youkuaiyun.com/adamyam/article/details/40505913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [EBS 物料属性 前后台对应关系 MTL_SYSTEM_ITEMS_B](https://blog.youkuaiyun.com/weixin_33858249/article/details/92520282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [mtl_system_items_b表中的栏位与界面栏位对应](https://blog.youkuaiyun.com/huangwenkangz/article/details/50378637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值