根据供应商取暂估:

 

第一:FUNCTION

1)FUNCTION中输入输出参数截图,详细代码见图下:

根据供应商快速获取暂估(比MB5S速度还要快)


根据供应商快速获取暂估(比MB5S速度还要快)根据供应商快速获取暂估(比MB5S速度还要快)

2)FUNCTION中的详细代码:

FUNCTION z_sdl_grir.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      IT_LIFNR STRUCTURE  ZLIFNRGRIR OPTIONAL
*"      IT_ZGRIR STRUCTURE  ZGRIR OPTIONAL
*"----------------------------------------------------------------------

  DATA: zes(15) TYPE p DECIMALS 3,
        zqs(15) TYPE p DECIMALS 3,
        zeh(15) TYPE p DECIMALS 3,
        zqh(15) TYPE p DECIMALS 3.
  DATA: BEGIN OF it_ekbe OCCURS 0,
        bewtp LIKE ekbe-bewtp,"PO历史记录分类
        bwart LIKE ekbe-bwart,"移动类型
        dmbtr LIKE ekbe-dmbtr,"金额
        arewr LIKE ekbe-arewr,"冲销发票的金额
        shkzg LIKE ekbe-shkzg,"借贷标志
        belnr LIKE ekbe-belnr,"物料凭证
        ebeln LIKE ekbe-ebeln,"采购订单
        ebelp LIKE ekbe-ebelp,"项目
        gjahr LIKE ekbe-gjahr,"会计年度
        buzei LIKE ekbe-buzei,"项目
        zekkn LIKE ekbe-zekkn,"顺序No.帐户分配
        vgabe LIKE ekbe-vgabe,"业务/事件类型
        lifnr LIKE ekko-lifnr,"供应商编码
  END OF it_ekbe.

  SELECT
    a~bewtp
    a~bwart
    a~dmbtr
    a~arewr
    a~shkzg
    a~belnr
    a~ebeln
    a~ebelp
    a~gjahr
    a~buzei
    a~zekkn
    a~vgabe
    b~lifnr
  INTO CORRESPONDING FIELDS OF TABLE it_ekbe
  FROM ekbe AS a
  INNER JOIN ekko AS b ON b~ebeln = a~ebeln
  FOR ALL ENTRIES IN it_lifnr
  WHERE b~lifnr = it_lifnr-lifnr.

  LOOP AT it_ekbe.
    CLEAR :zes,zqs,zeh,zqh.
    IF it_ekbe-bewtp = 'E' AND it_ekbe-bwart IS NOT INITIAL AND it_ekbe-shkzg = 'S' .
      zes = it_ekbe-dmbtr.
    ELSEIF it_ekbe-bewtp = 'Q' AND it_ekbe-bwart IS INITIAL  AND it_ekbe-shkzg = 'S' .
      zqs = it_ekbe-arewr.
    ELSEIF it_ekbe-bewtp = 'E' AND it_ekbe-bwart IS NOT INITIAL  AND it_ekbe-shkzg = 'H' .
      zeh = it_ekbe-dmbtr.
    ELSEIF it_ekbe-bewtp = 'Q' AND it_ekbe-bwart IS INITIAL AND it_ekbe-shkzg = 'H' .
      zqh = it_ekbe-arewr.
    ENDIF.
    it_zgrir-dmbtr =   zes - zqs  -  zeh + zqh.
    it_zgrir-lifnr = it_ekbe-lifnr.
    COLLECT it_zgrir .
  ENDLOOP.
ENDFUNCTION.

第二:调用FUNCTION输出暂估报表详细代码:

REPORT  zgrir.
TABLES: ekko.

"定义需要使用的类型池
TYPE-POOLS:slis,truxs.

"定义内表
DATA:it_lifnr LIKE TABLE OF zlifnrgrir WITH HEADER LINE.
DATA:it_zgrir LIKE TABLE OF zgrir WITH HEADER LINE.

"引入Alv常用的变量、
DATA: gwa_field TYPE slis_fieldcat_alv." 相当于工作区
DATA: git_field LIKE TABLE OF gwa_field.

DATA: gwa_layout TYPE slis_layout_alv.
DATA: gd_repid TYPE sy-repid.
DATA: lit_sort TYPE slis_t_sortinfo_alv.
DATA: lwa_sort TYPE slis_sortinfo_alv,
      gc_grid_title(50) TYPE c .

"开始时候屏幕上显示的 查询条件的 输入框
SELECT-OPTIONS:

p_lifnr  FOR ekko-lifnr."供应商编码
"设定屏幕事件

START-OF-SELECTION.

  "定义frm_getdata方法
  PERFORM frm_getdata.

  "判断it_display表中的行数
  IF LINES(  it_zgrir ) > 0.

    "定义frm_show方法
    PERFORM frm_show.

  ELSE.
    MESSAGE '未查询到数据' TYPE 'I'.
  ENDIF.


  "编写数据查询方法
*&---------------------------------------------------------------------*
*&      Form  frm_getdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_getdata.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE it_lifnr
    FROM lfa1
    WHERE lifnr IN p_lifnr.
  CALL FUNCTION 'Z_SDL_GRIR'
    TABLES
      it_lifnr = it_lifnr
      it_zgrir = it_zgrir.
  LOOP AT it_zgrir.
  ENDLOOP.
ENDFORM.                    "frm_getdata

"创建工具栏
*&---------------------------------------------------------------------*
*&      Form  alv_status_set
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_status_set.
  SET TITLEBAR'ZMAJYTEST_ALV_ITLE'."双击引号内文本进入标题创建界面
  SET PF-STATUS'ZMAJYTEST_ALV_LIST'."双击引号内文本进入工具栏创建界面
ENDFORM.  " ALV_STATUS_SET
"界面内工具栏默认为空,点击顶部菜单栏中的Extras —> Adjust template,选择一个工具栏模板。

" 创建点击事件
*&---------------------------------------------------------------------*
*&      Form  alv_user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->C_UCOMM    text
*      -->C_SELFIELD text
*----------------------------------------------------------------------*
FORM alv_user_command USING c_ucomm LIKE sy-ucomm
        c_selfield TYPE slis_selfield.
  CASE c_ucomm.
    WHEN '&F03' OR '&F12' OR '&F15'."事件编码与工具栏中对应图标一致
      LEAVE TO SCREEN 0."只有当数字0被用于分支到下一个屏幕时,离开屏幕才会终止屏幕序列。
  ENDCASE.
ENDFORM.   " ALV_USER_COMMAND


" 创建ALV列结构
*&---------------------------------------------------------------------*
*&      Form  frm_fieldcat_init
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GIT_FIELD  text
*----------------------------------------------------------------------*
FORM frm_fieldcat_init USING p_git_field TYPE slis_t_fieldcat_alv.

  CLEAR gwa_field.
  gwa_field-fieldname = 'LIFNR'.
  gwa_field-seltext_l ='供应商'.
  APPEND gwa_field TO git_field.

  CLEAR gwa_field.
  gwa_field-fieldname = 'DMBTR'.
  gwa_field-seltext_l ='暂估金额(GR/IR)'.
  APPEND gwa_field TO git_field.

ENDFORM.                    "frm_fieldcat_init

"创建ALV
*&---------------------------------------------------------------------*
*&      Form  frm_show
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_show.
  gd_repid = sy-repid.
  gwa_layout-info_fieldname = ' COLOR'.
  gwa_layout-colwidth_optimize = 'X'.
  PERFORM frm_fieldcat_init USING git_field[].
  SET TITLEBAR '100' WITH gc_grid_title.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = gd_repid
      is_layout          = gwa_layout
      it_fieldcat        = git_field[]
    TABLES
      t_outtab           = it_zgrir[].
ENDFORM.   "frm_show

相关文章:

  • 2021-12-31
  • 2021-11-28
  • 2021-08-25
  • 2021-11-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-21
  • 2021-10-15
  • 2021-05-30
  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案