当前位置: 首页 > news >正文

SAP FICO发出商品报表分享

一、报表逻辑

二、报表界面

三、报表代码

*&---------------------------------------------------------------------*
*& 程序名: ZRPFI_021
*&
*&---------------------------------------------------------------------*
*& 创建者(公司)/日期:
*& 程序描述:
*&   1.发出商品报表
*&   2.
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期//修改描述
*& 
*&
*&---------------------------------------------------------------------*


REPORT ZRPFI_021.


INCLUDE ZRPFI_021_TOP.

INCLUDE ZRPFI_021_LCL .

INCLUDE ZRPFI_021_F01 .

AT SELECTION-SCREEN OUTPUT.
  PERFORM FRM_CHG_SCRN.


AT SELECTION-SCREEN.
  "权限检查
*  DATA: LV_MESSAGE TYPE STRING.
*  AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
*             ID 'BUKRS' FIELD PA_BUKRS.
*  IF SY-SUBRC <> 0.
*    LV_MESSAGE = '没有' && PA_BUKRS && '公司代码权限!'.
*    MESSAGE LV_MESSAGE TYPE 'E'.
*  ENDIF.

START-OF-SELECTION.

  PERFORM FRM_CHECK_INPUT.

  CASE 'X'.
    WHEN PA_EXE.
      PERFORM FRM_AUTHORITY USING '10'.
      PERFORM FRM_GET_DATA_EXE.
    WHEN OTHERS.
      PERFORM FRM_AUTHORITY USING '03'.
      PERFORM FRM_GET_DATA_REVNSRH.
  ENDCASE.
  PERFORM FRM_SHOW_ALV.

*&---------------------------------------------------------------------*
*& 包含               ZRPFI_021_TOP
*&---------------------------------------------------------------------*

TABLES:ACDOCA.

SELECTION-SCREEN:BEGIN OF BLOCK B01 WITH FRAME.
  PARAMETERS:PA_BUKRS TYPE ACDOCA-RBUKRS OBLIGATORY .
  SELECT-OPTIONS :SO_WERKS FOR ACDOCA-WERKS.
  PARAMETERS:PA_GJAHR TYPE ACDOCA-GJAHR OBLIGATORY,
             PA_POPER TYPE ACDOCA-POPER OBLIGATORY.
SELECTION-SCREEN:END OF BLOCK B01 .


SELECTION-SCREEN:BEGIN OF BLOCK B02 WITH FRAME.
  PARAMETERS:PA_EXE TYPE C RADIOBUTTON GROUP G1 DEFAULT 'X' USER-COMMAND G1,
             PA_REV TYPE C RADIOBUTTON GROUP G1,
             PA_SRH TYPE C RADIOBUTTON GROUP G1.

SELECTION-SCREEN:END OF BLOCK B02 .


DATA:BEGIN OF GS_OUT,
       STATUS   TYPE C LENGTH 20,  "红绿灯
       MSG(100) TYPE C.
       INCLUDE STRUCTURE  ZTFI021 .
DATA: END OF GS_OUT.

DATA:GT_OUT      LIKE TABLE OF GS_OUT,
     GV_FIRSTDATE TYPE SY-DATUM,
     GV_LASTDATE TYPE SY-DATUM, "输入期间最后一天
     GV_NEXTDATE TYPE SY-DATUM. "输入期间最后一天+1


DATA: GR_TABLE   TYPE REF TO CL_SALV_TABLE,
      GR_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE,
      GR_COLUMN  TYPE REF TO CL_SALV_COLUMN_TABLE,
      GR_DISPLAY TYPE REF TO CL_SALV_DISPLAY_SETTINGS,
      GR_LAYOUT  TYPE REF TO CL_SALV_LAYOUT.

*&---------------------------------------------------------------------*
*& 包含               ZRPFI_021_LCL
*&---------------------------------------------------------------------*

CLASS L_CL_HANDLE_EVENTS DEFINITION.
  PUBLIC SECTION.
    METHODS: ON_USER_COMMAND FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS_TABLE
      IMPORTING E_SALV_FUNCTION.

    METHODS: ON_CLICK FOR EVENT LINK_CLICK OF CL_SALV_EVENTS_TABLE
      IMPORTING ROW COLUMN.
ENDCLASS.

CLASS L_CL_HANDLE_EVENTS IMPLEMENTATION.
  METHOD ON_USER_COMMAND.
    PERFORM HANDLE_USER_COMMAND USING E_SALV_FUNCTION.
  ENDMETHOD.

  METHOD ON_CLICK.
    PERFORM HANDLE_ON_CLICK USING  ROW COLUMN.
  ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Form HANDLE_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> E_SALV_FUNCTION
*&---------------------------------------------------------------------*
FORM HANDLE_USER_COMMAND  USING    E_SALV_FUNCTION.

  CASE E_SALV_FUNCTION.
    WHEN 'ZPOST'.
      PERFORM FRM_CHECK_PERIOD.

      CHECK SY-SUBRC EQ 0.

      PERFORM FRM_ZPOST.

    WHEN 'ZREV'.

      PERFORM FRM_ZREVERSE.

  ENDCASE.

  GR_TABLE->REFRESH( ).


ENDFORM.
*&---------------------------------------------------------------------*
*& Form HANDLE_ON_CLICK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> ROW
*&      --> COLUMN
*&---------------------------------------------------------------------*
FORM HANDLE_ON_CLICK  USING    P_ROW
                               P_COLUMN.

  READ TABLE GT_OUT INTO GS_OUT INDEX P_ROW.
  IF SY-SUBRC EQ 0.

    IF  P_COLUMN EQ 'VBELN' AND GS_OUT-VBELN IS NOT INITIAL.
      SET PARAMETER ID 'VL' FIELD GS_OUT-VBELN.
      CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
    ENDIF.

    IF  P_COLUMN EQ 'ZZXPZ' AND GS_OUT-ZZXPZ IS NOT INITIAL.
      SET PARAMETER ID 'BLN' FIELD GS_OUT-ZZXPZ.
      SET PARAMETER ID 'BUK' FIELD GS_OUT-BUKRS.
      SET PARAMETER ID 'GJR' FIELD GS_OUT-ZZXPZND.
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
    ENDIF.

    IF  P_COLUMN EQ 'ZFXPZ' AND GS_OUT-ZFXPZ IS NOT INITIAL.
      SET PARAMETER ID 'BLN' FIELD GS_OUT-ZFXPZ.
      SET PARAMETER ID 'BUK' FIELD GS_OUT-BUKRS.
      SET PARAMETER ID 'GJR' FIELD GS_OUT-ZFXPZND.
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
    ENDIF.

  ENDIF.



ENDFORM.

*&---------------------------------------------------------------------*
*& 包含               ZRPFI_021_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_check_input .

  DATA:lv_last TYPE sy-datum, "上个月最后一天
       lv_now  TYPE sy-datum,
       lv_date TYPE sy-datum. "本月第一天

  DATA:lv_msg TYPE string.

  IF pa_srh IS INITIAL .

    lv_now+0(6) = sy-datum+0(6).
    lv_now+6(2) = '01'.

    lv_last = lv_now - 1.

    IF NOT ( ( pa_poper EQ lv_last+4(2) AND pa_gjahr EQ lv_last+0(4) ) OR
      ( pa_poper EQ lv_now+4(2) AND pa_gjahr EQ lv_now+0(4) ) ).

      MESSAGE '“执行”按钮只允许的年度期间为实际操作当月或上月,其他月份请勾选“查询”按钮查询'
                TYPE 'S' DISPLAY LIKE 'E'.
      STOP.

    ENDIF.

    IF pa_rev IS NOT INITIAL."冲销只检查区间
      REFRESH:so_werks.
      RETURN.
    ENDIF.

    SELECT SINGLE * FROM ztfi021 INTO @DATA(lt_ztfi021)
           WHERE  zbukrs = @pa_bukrs
             AND zgjahr = @pa_gjahr
             AND zpoper = @pa_poper
             AND zdelete = ''.
    IF sy-subrc EQ 0.

      CLEAR:lv_msg .
      CONCATENATE '公司代码:' pa_bukrs ' 年度:' pa_gjahr ' 期间:'
                 pa_poper '数据已存在,请查询或者冲销后重新执行'
       INTO lv_msg.

      MESSAGE lv_msg  TYPE 'S' DISPLAY LIKE 'E'.
      STOP.

    ENDIF.

    lv_date = pa_gjahr && pa_poper+1(2) && '01'.

    CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
      EXPORTING
        day_in            = lv_date
      IMPORTING
        last_day_of_month = gv_lastdate
      EXCEPTIONS
        day_in_no_date    = 1
        OTHERS            = 2.

    gv_nextdate = gv_lastdate + 1.

    gv_firstdate = gv_lastdate+0(6) && '01'.
  ENDIF.



  REFRESH:gt_out.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA_EXE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data_exe .

  RANGES:ra_vstel FOR likp-vstel.

  SELECT a~vstel AS low,
         'EQ' AS option,
         'I' AS sign
          FROM tvswz AS a
               INNER JOIN t001w AS b ON a~werks = b~werks
               INNER JOIN t001k AS c ON b~bwkey = c~bwkey
               WHERE  bukrs = @pa_bukrs
             INTO CORRESPONDING FIELDS OF TABLE @ra_vstel.

  IF ra_vstel[] IS INITIAL.
    MESSAGE '无符合条件数据'
              TYPE 'S' DISPLAY LIKE 'E'.
    STOP.
  ENDIF.

  SELECT a~vbeln,a~posnr,
         b~lfart,
         b~wadat_ist FROM lips AS a
                    INNER JOIN likp AS b ON a~vbeln = b~vbeln
                   WHERE b~gbstk IN ( 'A','B' )
                     AND b~vstel IN @ra_vstel
                     AND wbstk = 'C'
                     AND wadat_ist LE @gv_lastdate

    UNION

SELECT vgbel AS vbeln,
       vgpos AS posnr,
       b~lfart,
       b~wadat_ist FROM vbrp AS a
       INNER JOIN likp AS b ON a~vgbel = b~vbeln
       WHERE gbstk_ana = 'A'
         AND b~vstel IN @ra_vstel
         AND  wadat_ist LE @gv_lastdate

http://www.dtcms.com/a/603070.html

相关文章:

  • 网站开发下人员配置百度一下就知道百度首页
  • 怎么创一个网站百度 网站质量
  • 怎么看一个网站做没做竞价商城小程序模板源码完整版
  • 4.97基于8086温度报警器ACD0809基于8086温度计仿真,8086温度报警。proteus仿真+汇编语言源程序
  • 12.string_vector(上)
  • (论文速读)面向实用的实时神经视频压缩
  • 赣州福泰龙网站建设黄岛网站制作
  • 易语言编译器——功能与应用详解
  • 建设工程施工许可证在哪个网站办wordpress 显示加载时间
  • 免费商品交易网站代码下载关键词搜索工具
  • 做个网站要钱吗嘉兴网
  • MySQL: MyISAM与InnoDB存储引擎特性及选型指南
  • 天津制作个人建站淘宝客网站怎么做分销
  • 网站内优化怎么做推广策略都有哪些
  • 代码生成工具Trae中的 “Builder模式”
  • 做网站用什么云服务器吗东莞住房城乡建设部官网
  • 江西省建设厅网站资质升级查询做网站美工工资多少钱
  • 站长工具seo综合查询下载安装ppt模板免费下载完整版免费简约
  • 【AI学习】关于大模型发展的一些话语
  • 宁波网站建设 慕枫科技网页编辑工具2022
  • 常用网站如何在桌面做快捷方式网站备案域名需要解析到备案服务器吗
  • SAP FICO模具材料付款清单
  • 进程调度的基本过程
  • C语言编译器电脑版 | 提升C语言开发效率,轻松调试程序
  • 企业网站 开源php雄安优秀网站建设方案
  • Python趣味算法:爱因斯坦的数学题:用Python解决经典阶梯问题
  • 我爱学算法之—— 链表
  • C++11:引用折叠,完美转发,可变参数模板,defult和delete,final和override,委托构造函数,继承构造函数
  • Datawhale25年11月组队学习:hello-agents+Task2
  • 怎么用php源代码做网站私人网页服务器