SAP SD交货单执行跟踪报表分享
一、报表逻辑










二、报表界面


三、报表代码
*&---------------------------------------------------------------------*
*& 程序名: ZRPSD_0002
*& 创建者(公司)/日期:*
*& 程序描述:
*&
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期//修改描述
*&
*&---------------------------------------------------------------------*
REPORT zrpsd_0002 MESSAGE-ID 00.
INCLUDE zrpsd_0002_top."变量定义
INCLUDE zrpsd_0002_f01."核心业务代码
INCLUDE zrpsd_0002_f02."响应事件的代码
INCLUDE zrpsd_0002_c01."Class Definition
INCLUDE zrpsd_0002_s01."ALV显示与控制
INCLUDE lzfgsd0001f11.
INITIALIZATION.
PERFORM frm_set_init_val.
START-OF-SELECTION.
PERFORM frm_check_authorization.
PERFORM frm_get_data.
PERFORM frm_get_rate .
PERFORM frm_process_data.
PERFORM frm_show_alv USING gt_data.
*&---------------------------------------------------------------------*
*& 包含 ZRPSD_0002_TOP
*&---------------------------------------------------------------------*
TABLES:likp,lips,vbak.
* Switch for list display yes / no
DATA:gv_list_display TYPE sap_bool.
* Reference for container control
DATA:gr_cont TYPE REF TO cl_gui_custom_container.
* Reference for ALV instance
DATA:gr_alv TYPE REF TO cl_salv_table.
* Reference for error situations
DATA:gr_error TYPE REF TO cx_salv_error.
*DATA:gt_data TYPE TABLE OF zvsdrpsd0002info.
TYPES :BEGIN OF gs_data.
INCLUDE STRUCTURE zvsdrpsd0002info.
TYPES:
zabc TYPE zde_zabc,
zcpb TYPE zde_zcpb,
zpp TYPE ztmm_mara-zpp,
zmk TYPE ztmm_mara-zmk,
zjd TYPE ztmm_mara-zjd,
zsmzz TYPE ztmm_mara-zsmzz,
zzzd TYPE ztmm_mara-zzzd,
zbzll TYPE ztmm_mara-zbzll, "标准良率
zbyzd1 TYPE ztmm_mara-zbyzd1, "备用字段1
zbyzd2 TYPE ztmm_mara-zbyzd2, "备用字段2
zbyzd3 TYPE ztmm_mara-zbyzd3, "备用字段3
zxh(10)," 组合 TYPE ZTMM_MARA-ZABC,
bu_sort1 TYPE bu_sort1,
zprice_iv TYPE zde_price_iv,
zcurrency_account TYPE waers.
TYPES END OF gs_data.
DATA gt_data TYPE TABLE OF gs_data.
*----------->>ADDED BY HELQ 30.06.2023 14:36:45
DATA:BEGIN OF gs_0042,
ebeln TYPE ztmm0042-ebeln,
bstnk TYPE ztmm0042-bstnk,
END OF gs_0042,
gt_0042 LIKE TABLE OF gs_0042.
*END OF THIS SECTION BY HELQ 30.06.2023 14:36:45-----------<<
DATA:gt_price_in TYPE TABLE OF zssd_price_query_in WITH HEADER LINE,
gt_price_out TYPE TABLE OF zssd_price_query_out WITH HEADER LINE.
DATA:r_vkorg TYPE RANGE OF likp-vkorg.
DATA gh_check(1).
DATA:BEGIN OF gs_rate,
waerk TYPE likp-waerk,
exch_rate TYPE bapi1093_0-exch_rate,
from_factor TYPE bapi1093_0-from_factor,
to_factor TYPE bapi1093_0-to_factor,
END OF gs_rate,
gt_rate LIKE TABLE OF gs_rate.
SELECTION-SCREEN BEGIN OF BLOCK b_01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
s_lfart FOR likp-lfart,
s_vbeln FOR likp-vbeln,
s_vgbel FOR lips-vgbel,
s_kunag FOR likp-kunag,
s_kunnr FOR likp-kunnr,
s_vkorg FOR likp-vkorg OBLIGATORY,
s_werks FOR lips-werks,
s_matnr FOR lips-matnr,
s_cmgst FOR likp-cmgst,
s_FKSTK FOR likp-FKSTK,
s_FKIVK FOR likp-FKIVK,
s_wadat FOR likp-wadat,
s_wadata FOR likp-wadat_ist,
s_erdat FOR likp-erdat,
s_ernam FOR likp-ernam.
SELECTION-SCREEN END OF BLOCK b_01.
SELECTION-SCREEN BEGIN OF BLOCK b_03 WITH FRAME TITLE TEXT-003.
PARAMETERS:p_nshipp RADIOBUTTON GROUP g1 USER-COMMAND uc MODIF ID mi1,
p_shipp RADIOBUTTON GROUP g1 MODIF ID mi1,
p_all RADIOBUTTON GROUP g1 MODIF ID mi1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b_03.
SELECTION-SCREEN BEGIN OF BLOCK b_02 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_layout TYPE slis_vari.
SELECTION-SCREEN END OF BLOCK b_02.
*&---------------------------------------------------------------------*
*& 包含 ZRPSD_0002_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form frm_check_authorization
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_check_authorization .
DATA:lt_values TYPE TABLE OF us335 WITH HEADER LINE .
CALL FUNCTION 'GET_AUTH_VALUES'
EXPORTING
object1 = 'V_VBAK_VKO'
user = sy-uname
tcode = sy-tcode
TABLES
values = lt_values
EXCEPTIONS
user_doesnt_exist = 1
OTHERS = 2.
IF s_vkorg[] IS NOT INITIAL AND s_vkorg[ 1 ]-low NE '*'.
SELECT * FROM tvkot INTO TABLE @DATA(lt_tvkot) WHERE vkorg IN @s_vkorg.
LOOP AT lt_tvkot INTO DATA(lw_tvkot).
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO' ID 'VKORG' FIELD lw_tvkot-vkorg
ID 'VTWEG' DUMMY ID 'SPART' DUMMY ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE e398(00) WITH '无销售组织权限:' && lw_tvkot-vkorg.
ELSE.
r_vkorg = VALUE #( BASE r_vkorg ( sign = 'I' option = 'EQ' low = lw_tvkot-vkorg ) ).
ENDIF.
ENDLOOP.
ELSE.
LOOP AT lt_values WHERE object = 'V_VBAK_VKO' AND field = 'VKORG' .
IF lt_values-lowval IS NOT INITIAL AND lt_values-highval IS NOT INITIAL.
r_vkorg = VALUE #( BASE r_vkorg ( sign = 'I' option = 'BT' low = lt_values-lowval high = lt_values-highval ) ) .
DATA(flg_msg) = abap_on .
ELSEIF lt_values-lowval NA '*'AND lt_values-highval IS INITIAL."Ls_values-lowval IS NOT INITIAL AND
r_vkorg = VALUE #( BASE r_vkorg ( sign = 'I' option = 'EQ' low = lt_values-lowval high = lt_values-highval ) ) .
ELSEIF lt_values-lowval CA '*'.
r_vkorg = VALUE #( BASE r_vkorg ( sign = 'I' option = 'CP' low = lt_values-lowval high = lt_values-highval ) ) .
ENDIF.
ENDLOOP.
ENDIF.
IF r_vkorg[] IS INITIAL.
MESSAGE e398(00) WITH '无销售组织权限!' .
ENDIF.
IF flg_msg = abap_on .
MESSAGE '未显示权限不足数据!' TYPE 'S'.
flg_msg = abap_off .
ENDIF.
* SELECT * FROM tvkot INTO TABLE @DATA(lt_tvkot)
* WHERE vkorg IN @s_vkorg.
*
* LOOP AT lt_tvkot ASSIGNING FIELD-SYMBOL(<fs_tvkot>).
* AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
* ID 'VKORG' FIELD <fs_tvkot>-vkorg
* ID 'VTWEG' DUMMY
* ID 'SPART' DUMMY
* ID 'ACTVT' FIELD '03'.
* IF sy-subrc <> 0.
* MESSAGE e398(00) WITH '无销售组织权限:' && <fs_tvkot>-vkorg.
* ENDIF.
* ENDLOOP.
* CLEAR:lt_tvkot.
ENDFORM.
*&---------------------------------------------------------------------
