SAP SD系统开票审批功能分享
一、功能逻辑















二、功能界面


三、功能代码
*&---------------------------------------------------------------------*
*& 程序名: ZRPSD047
*&
*&---------------------------------------------------------------------*
*& 创建者(公司)/日期:
*& 程序描述:
*& 1.系统开票财务审批功能
*& 2.
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期//修改描述
*& 1.0.0
*&
*&---------------------------------------------------------------------*
REPORT zrpsd047.
INCLUDE zrpsd047a_top.
INCLUDE zrpsd047a_src.
INCLUDE zrpsd047a_f01.
INITIALIZATION.
* PERFORM FRM_INIT_SCR.
AT SELECTION-SCREEN OUTPUT.
PERFORM frm_init_scr.
PERFORM frm_modify_scr.
START-OF-SELECTION.
PERFORM frm_init.
PERFORM frm_authority_check.
CASE 'X'.
WHEN r_khdz.
PERFORM frm_get_data_khdz.
WHEN r_gsjxs.
PERFORM frm_get_data_gsjxs.
WHEN r_hwjsyt.
PERFORM frm_get_data_hwjsyt.
WHEN r_gsjcg.
PERFORM frm_get_data_gsjcg.
WHEN r_dsfxs.
PERFORM frm_get_data_dsfxs.
ENDCASE.
*>>>-------------------------------------ADD BY JOE 07.09.2022 15:26:08
"增加价格主数据单价
READ TABLE gt_diff TRANSPORTING NO FIELDS WITH KEY vkorg = '9999'.
IF sy-subrc = 0.
PERFORM get_zprice_md.
ENDIF.
*<<<-------------------------------------END OF ADD 07.09.2022 15:26:08
"20231124 add by jc.zhou
"价格主数据单价:货币=VND时,ALV界面扩大两位小数显示
"税率:货币=VND时,ALV界面缩小两位显示
PERFORM UPDAT_DATA CHANGING GT_OUT.
"end
END-OF-SELECTION .
PERFORM frm_show_alv.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC01' ITSELF
CONTROLS: tc01 TYPE TABLEVIEW USING SCREEN 2000.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC01'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE tc01_change_tc_attr OUTPUT.
DESCRIBE TABLE gt_postno LINES tc01-lines.
ENDMODULE.
INCLUDE zrpsd047a_i01.
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_2000 OUTPUT.
SET PF-STATUS 'NULL'.
LOOP AT SCREEN .
IF screen-name = 'CLOSE'.
screen-invisible = 0 .
IF gv_commd = ''.
screen-invisible = 1 .
ENDIF.
MODIFY SCREEN .
ENDIF.
ENDLOOP.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含 ZRPSD047_TOP
*&---------------------------------------------------------------------*
TABLES:VBRK,
VBRP,
VBAP,
LIPS.
TYPES: BEGIN OF TY_POSTNO,
VBELN TYPE VBELN_VF,
VBELN_GSJ TYPE VBELN_VF,
BELNR TYPE BELNR_D,
BELNR_GSJ TYPE BELNR_D,
TYPE TYPE BAPI_MTYPE,
MESSAGE TYPE BAPI_MSG,
END OF TY_POSTNO .
DATA: GS_POSTNO TYPE TY_POSTNO .
DATA:BEGIN OF GT_POSTNO OCCURS 0 .
INCLUDE STRUCTURE GS_POSTNO .
DATA: POSNR TYPE VBRP-POSNR,
STATUS TYPE CHAR4,
* message TYPE bapi_msg,
END OF GT_POSTNO .
DATA:OK_CODE TYPE SY-UCOMM .
DATA: GV_COMMD TYPE C .
DATA:BEGIN OF GS_OUT,
ZMARK TYPE C,
STATUS TYPE C LENGTH 20,
TYPE TYPE C,
MESSAGE(220) TYPE C,
VBELN TYPE VBRP-VBELN,
POSNR TYPE VBRP-POSNR,
ZBILL_CHECK TYPE VBRK-ZBILL_CHECK,
BELNR TYPE BELNR_D,
BELNR_GSJ TYPE BELNR_D,
FKART TYPE VBRK-FKART,
ZVBART_TEXT TYPE TVFKT-VTEXT,
FKDAT TYPE VBRK-FKDAT,
VKORG TYPE VBRK-VKORG,
ZVKORG_TEXT TYPE TVKOT-VTEXT,
WAERK TYPE VBRK-WAERK,
KURRF TYPE VBRK-KURRF,
ZOUT_TO_IN TYPE LIKP-ZOUT_TO_IN,
KUNAG TYPE VBRK-KUNAG,
ZNAME TYPE CHAR80,
ZKUNNR_IV TYPE KNA1-KUNNR,
ZNAME_IV TYPE CHAR80,
ZBILL_ZTAXID TYPE BUT000-ZBILL_ZTAXID,
ZBILL_BANK TYPE BUT000-ZBILL_BANK,
ZBILL_ACCOUNT TYPE BUT000-ZBILL_ACCOUNT,
ZBILL_STREET TYPE BUT000-ZBILL_STREET,
ZBILL_PHONE TYPE BUT000-ZBILL_PHONE,
MATNR TYPE VBRP-MATNR,
ARKTX TYPE VBRP-ARKTX,
KDMAT TYPE VBAP-KDMAT,
ZPOSTX TYPE VBAP-ZPOSTX,
WERKS TYPE VBRP-WERKS,
ZWERKS_TEXT TYPE T001W-NAME1,
FKIMG TYPE VBRP-FKIMG,
VRKME
