SAP ABAP打印MM采购发票打印开发

复制程序应该有部分对象需要自行创建,需要调试,仅供参考

需要打印的模板

 

 

 程序代码

 

*&---------------------------------------------------------------------*
*& 程序名称/Program Name          :ZMMP001
*& 程序名称/Program Des           :采购发票:
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 摘要:
*&
*&---------------------------------------------------------------------*
*&变更记录:
*&Date          Developer       ReqNo          Descriptions
*&============  =============  =============  ==========================
*&
*&---------------------------------------------------------------------*
REPORT ZMMP002.TABLES: MSEG,MKPF,RBKP,SSCRFIELDS.
TYPE-POOLS: SLIS.TYPES: BEGIN OF TY_ALV.INCLUDE TYPE ZV_MMP001_MSEG.TYPES: ZBOX TYPE CHAR1,RETPO_TEXT TYPE STRING,REPOS_TEXT TYPE STRING,USNAM_TEXT TYPE STRING,ERNAM_TEXT TYPE STRING,MENGE1     TYPE MENGE_D,BKTXT      TYPE MKPF-BKTXT,SGTXT      TYPE MSEG-SGTXT,END OF TY_ALV.TYPES: BEGIN OF TY_PRINT,"MANDT TYPE RBKP-MANDT,BELNR TYPE RBKP-BELNR, ""发票号BLDAT TYPE RBKP-BLDAT, "发票日期NAME1_BU TYPE T001W-NAME1,"财务组织  RBKP-BUKRS"NAME1_BU type T001W-NAME1,LIFNR TYPE LFA1-LIFNR," 供应商编码NAME1 TYPE LFA1-NAME1, "供应商名"EKNAM TYPE T024-EKNAM,EKGRP TYPE T024-EKNAM,""采购部门 EKNAM TYPE T024-EKNAM,""采购部门描述KGXJV type STRING,""扣款小计WMWST1 TYPE RBKP-WMWST1,""税额YFJEV type STRING,""应付金额BANKL TYPE LFBK-BANKL,""开户行KOINH TYPE LFBK-KOINH,""账户名称BANKN TYPE LFBK-BANKN, ""银行帐户号码BKTXT type BKTXT,"抬头备注"BUZEI type RSEG-BUZEI,""行号MATNR TYPE MAKT-MATNR,""物料编号MAKTX TYPE MAKT-MAKTX,GROES TYPE MARA-GROES,BSTME TYPE RSEG-BSTME,MENGE TYPE RSEG-MENGE,""数量WSDJ TYPE String,""单价WRBTR type RSEG-WRBTR,"无税金额"SGTXT type STRING,""备注LFBNR TYPE RSEG-LFBNR,""入库凭证号"USNAM TYPE RBKP-USNAM,USNAM type ADRP-NAME_TEXT,"ERNAM TYPE EKKO-ERNAM,END OF TY_PRINT.DATA: GT_ALV   TYPE TABLE OF TY_ALV,GS_ALV   TYPE TY_ALV,GT_PRINT TYPE TABLE OF TY_PRINT,GS_PRINT TYPE TY_PRINT.DATA: GS_LAYOUT   TYPE LVC_S_LAYO,GT_FIELDCAT TYPE LVC_T_FCAT,GS_FIELDCAT TYPE LVC_S_FCAT.DATA: GO   TYPE C,DOWN TYPE C.DATA: NAME  TYPE VRM_ID,LIST  TYPE VRM_VALUES,VALUE LIKE LINE OF LIST.DATA: EXCL_CUA_FUNCT TYPE TABLE OF VIMEXCLFUN WITH HEADER LINE.
DATA: IT_ZPRINTTEMP TYPE ZMMDOC3000 OCCURS 0 WITH HEADER LINE.*&------------------------------------------------------------------
****SELECTION-SCREEN.
*&------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*PARAMETERS: p_mvtyp(2) AS LISTBOX  OBLIGATORY VISIBLE LENGTH 20 .*SELECT-OPTIONS: S_MBLNR FOR MSEG-MBLNR.
SELECT-OPTIONS: S_BELNR FOR RBKP-BELNR. "发票号
SELECT-OPTIONS: S_BUKRS FOR MSEG-BUKRS. "财务组织
SELECT-OPTIONS: S_BUDAT FOR MKPF-BLDAT .  "发票日期
SELECT-OPTIONS: S_LIFNR FOR MSEG-LIFNR MODIF ID S1.
SELECT-OPTIONS: S_USNAM FOR MKPF-USNAM.*SELECTION-SCREEN: FUNCTION KEY 1.
*SELECTION-SCREEN: FUNCTION KEY 2.
SELECTION-SCREEN: FUNCTION KEY 3.PARAMETERS: P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\REPORT\' NO-DISPLAY .SELECTION-SCREEN END OF BLOCK B1.*&------------------------------------------------------------------
****INITIALIZATION.
*&------------------------------------------------------------------
INITIALIZATION.SSCRFIELDS-FUNCTXT_02 = '维护打印格式'.SSCRFIELDS-FUNCTXT_01 = '维护打印类别'.SSCRFIELDS-FUNCTXT_03 = '更新打印模板'.**&--------------------------------------------------------------------*
** AT SELECTION-SCREEN OUTPUT
**&--------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.PERFORM FRM_CONTROL_SCREEN.*&---------------------------------------------------------------------*
* AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.PERFORM FRM_UCOMM.*&------------------------------------------------------------------
****START OF SELECTION
*&------------------------------------------------------------------
START-OF-SELECTION.PERFORM FRM_GET_DATA.*&------------------------------------------------------------------
****END OF SELECTION
*&------------------------------------------------------------------
END-OF-SELECTION.PERFORM FROM_SHOW_ALV.*&---------------------------------------------------------------------*
*& Form FRM_UCOMM
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_UCOMM .CASE SSCRFIELDS-UCOMM.WHEN 'FC01'.MOVE 'ANZG' TO EXCL_CUA_FUNCT-FUNCTION.APPEND EXCL_CUA_FUNCT.CALL FUNCTION 'VIEW_MAINTENANCE_CALL'EXPORTINGACTION                       = 'S'VIEW_NAME                    = 'ZMVTYT3000'TABLES
*         DBA_SELLIST                  = IT_DBA_SELLISTEXCL_CUA_FUNCT               = EXCL_CUA_FUNCTEXCEPTIONSCLIENT_REFERENCE             = 1FOREIGN_LOCK                 = 2INVALID_ACTION               = 3NO_CLIENTINDEPENDENT_AUTH    = 4NO_DATABASE_FUNCTION         = 5NO_EDITOR_FUNCTION           = 6NO_SHOW_AUTH                 = 7NO_TVDIR_ENTRY               = 8NO_UPD_AUTH                  = 9ONLY_SHOW_ALLOWED            = 10SYSTEM_FAILURE               = 11UNKNOWN_FIELD_IN_DBA_SELLIST = 12VIEW_NOT_FOUND               = 13MAINTENANCE_PROHIBITED       = 14OTHERS                       = 15.WHEN 'FC02'.MOVE 'ANZG' TO EXCL_CUA_FUNCT-FUNCTION. APPEND EXCL_CUA_FUNCT.CALL FUNCTION 'VIEW_MAINTENANCE_CALL'EXPORTINGACTION                       = 'S'VIEW_NAME                    = 'ZMMDOC3000'TABLESEXCL_CUA_FUNCT               = EXCL_CUA_FUNCTEXCEPTIONSCLIENT_REFERENCE             = 1FOREIGN_LOCK                 = 2INVALID_ACTION               = 3NO_CLIENTINDEPENDENT_AUTH    = 4NO_DATABASE_FUNCTION         = 5NO_EDITOR_FUNCTION           = 6NO_SHOW_AUTH                 = 7NO_TVDIR_ENTRY               = 8NO_UPD_AUTH                  = 9ONLY_SHOW_ALLOWED            = 10SYSTEM_FAILURE               = 11UNKNOWN_FIELD_IN_DBA_SELLIST = 12VIEW_NOT_FOUND               = 13MAINTENANCE_PROHIBITED       = 14OTHERS                       = 15.WHEN 'FC03'.DATA: G_FILEN LIKE WWWDATATAB-OBJID VALUE 'ZMMP001' ." 要下载的模板名称DATA: LV_OBJDATA     LIKE WWWDATATAB,LV_OBJ_NAME    LIKE WWWDATATAB-OBJID,LV_DESTINATION LIKE RLGRAP-FILENAME,LV_OBJID       LIKE SY-REPID,LV_SUBRC       LIKE SY-SUBRC.DATA: LV_FILE TYPE RLGRAP-FILENAME,LS_FILE TYPE STRING.MOVE G_FILEN TO LV_OBJ_NAME.SELECT RELID OBJID INTO CORRESPONDING FIELDS OF LV_OBJDATAFROM WWWDATA   UP TO 1 ROWSWHERE SRTF2 = 0 AND RELID = 'MI'AND OBJID = LV_OBJ_NAME.ENDSELECT.CONCATENATE P_FILE 'ZMMP001.XLS' INTO LV_FILE.CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGKEY         = LV_OBJDATADESTINATION = LV_FILEIMPORTINGRC          = LV_SUBRC.ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_GET_DATA .CLEAR: IT_ZPRINTTEMP[].SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_ZPRINTTEMP FROM ZMMDOC3000 WHERE MVTYP = 'T2'.*  SELECT *
*    FROM ZV_MMP001_MSEG
*    INTO CORRESPONDING FIELDS OF TABLE GT_ALV
*    WHERE BELNR in S_BELNR   "发票号
*      AND BLDAT IN S_BUDAT "日期
*      and BUKRS in S_BUKRS    " 财务组织
*      AND LIFNR IN S_LIFNR   " 供应商
*      AND USNAM IN S_USNAM.   "  制单人SELECTRBKP~BUKRST001W~NAME1 as NAME1_BURBKP~MANDTRBKP~BELNRRBKP~BLDATLFA1~NAME1LFA1~LIFNRT024~EKNAM"EKKO~EKGRPT024~EKNAM as EKGRPT024~EKNAMRBKP~WMWST1LFBK~BANKLLFBK~KOINHLFBK~BANKNMAKT~MATNRMAKT~MAKTXMARA~GROESRSEG~BSTMERSEG~MENGEEKPO~NETPRRSEG~WRBTRRSEG~LFBNR"RBKP~USNAMADRP~NAME_TEXT as USNAM " 用户EKKO~ERNAMRSEG~BUZEIRSEG~EBELPINTO CORRESPONDING FIELDS OF TABLE GT_ALV
from RBKP
inner join RSEG on  RBKP~MANDT = RSEG~MANDT and RSEG~BELNR = RBKP~BELNR
inner join EKKO on  EKKO~MANDT = RSEG~MANDT and EKKO~EBELN = RSEG~EBELN
inner join LFA1 on  LFA1~MANDT = RSEG~MANDT and LFA1~LIFNR = EKKO~LIFNR
inner join MARA on  MARA~MANDT = RSEG~MANDT and MARA~MATNR = RSEG~MATNR
inner join MAKT on  MAKT~MANDT = RSEG~MANDT and MAKT~MATNR = RSEG~MATNR
inner join EKPO on  EKPO~MANDT = RSEG~MANDT and EKPO~EBELN = RSEG~EBELN and EKPO~EBELP = RSEG~EBELP
inner join T024 on  T024~MANDT = RSEG~MANDT and EKKO~EKGRP = T024~EKGRP
left  JOIN LFBK on  LFBK~MANDT = RSEG~MANDT and LFBK~LIFNR = RSEG~LIFNR
inner join USR21 on USR21~BNAME = RBKP~USNAM
inner join ADRP on ADRP~PERSNUMBER = USR21~PERSNUMBER
inner join T001W on T001W~MANDT = RSEG~MANDT and T001W~WERKS = RBKP~BUKRSwhere MAKT~SPRAS = '1'
and RBKP~BELNR in S_BELNR   "发票号
AND RBKP~BLDAT IN S_BUDAT "日期
and RBKP~BUKRS in S_BUKRS    " 财务组织
AND LFA1~LIFNR IN S_LIFNR   " 供应商
AND RBKP~USNAM IN S_USNAM.    "  制单人"LOOP AT GT_ALV ASSIGNING FIELD-SYMBOL(<FS_ALV>).*    IF S_BUKRS[] IS INITIAL.
*      AUTHORITY-CHECK OBJECT 'ZMMP01_WRK'  "权限对象  SU21
*       ID 'BUKRS' FIELD <FS_ALV>-BUKRS.
*      IF SY-SUBRC <> 0.
*        DELETE GT_ALV.
*        DATA(LV_MSG) = '权限不足,部分数据未显示'.
*        CONTINUE.
*      ENDIF.
*    ENDIF.*    SELECT SINGLE NAME_TEXT
*      FROM ADRP
*      INNER JOIN USR21
*      ON ADRP~PERSNUMBER = USR21~PERSNUMBER
*      INTO <FS_ALV>-USNAM_TEXT
*      WHERE BNAME = <FS_ALV>-USNAM.
*
*    SELECT SINGLE NAME_TEXT
*      FROM ADRP
*      INNER JOIN USR21
*      ON ADRP~PERSNUMBER = USR21~PERSNUMBER
*      INTO <FS_ALV>-ERNAM_TEXT
*      WHERE BNAME = <FS_ALV>-ERNAM."是否是退货项目   转换为文本
*    IF <FS_ALV>-RETPO EQ 'X' .
*      <FS_ALV>-RETPO_TEXT = '是'.
*    ENDIF.
*
*    IF <FS_ALV>-REPOS IS INITIAL  .
*      <FS_ALV>-REPOS_TEXT = '是'.
*    ENDIF.
* 计算
"<FS_ALV>-MENGE1 = <FS_ALV>-MENGE ." ENDLOOP.SORT GT_ALV BY BELNR LFBNR BUZEI.DELETE ADJACENT DUPLICATES FROM GT_ALV COMPARING BELNR LFBNR BUZEI."权限
*  IF LV_MSG IS NOT INITIAL.
*    MESSAGE LV_MSG TYPE 'S' DISPLAY LIKE 'W'.
*  ENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FROM_SHOW_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FROM_SHOW_ALV .GS_LAYOUT-ZEBRA = ABAP_TRUE.GS_LAYOUT-CWIDTH_OPT = ABAP_TRUE.GS_LAYOUT-SEL_MODE = 'B'.CLEAR GT_FIELDCAT.PERFORM FRM_SET_FIELDCAT USING 'ZBOX' '选择' '' '' 'X' ''.PERFORM FRM_SET_FIELDCAT USING 'BUKRS' '财务组织' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BELNR' '发票凭证编号' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BLDAT' '凭证中的凭证日期' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'NAME1' '供应商名称' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'LIFNR' '供应商' 'LIFNR' 'MSEG' '' ''.PERFORM FRM_SET_FIELDCAT USING 'EKNAM' '采购组的描述' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'EKGRP' '采购组' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'WMWST1' '税额' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BANKL' '开户行' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'KOINH' '帐户持有人姓名' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BANKN' '银行帐户号码' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BUZEI' '发票凭证项目' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'MATNR' '物料编号' 'MATNR' 'MARA' '' ''.PERFORM FRM_SET_FIELDCAT USING 'MAKTX' '物料描述' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'GROES' '规格' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BSTME' '单位' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'MENGE' '数量' 'ERFMG' 'MSEG' '' ''.PERFORM FRM_SET_FIELDCAT USING 'WRBTR' '以凭证货币计的金额' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'LFBNR' '物料凭证' 'MBLNR' 'MSEG' '' ''.PERFORM FRM_SET_FIELDCAT USING 'USNAM' '制单人' '' '' '' ''.PERFORM FRM_SET_FIELDCAT USING 'BKTXT' '抬头备注' '' '' '' ''. " 抬头备注PERFORM FRM_SET_FIELDCAT USING 'SGTXT' '备注' '' '' '' ''.  " 明细备注DATA: LDF_GRID_SETTINGS TYPE LVC_S_GLAY.LDF_GRID_SETTINGS-EDT_CLL_CB = 'X'.    "刷新CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGI_CALLBACK_PROGRAM       = SY-REPIDI_GRID_SETTINGS          = LDF_GRID_SETTINGSIS_LAYOUT_LVC            = GS_LAYOUTIT_FIELDCAT_LVC          = GT_FIELDCAT
*     it_events                = gt_eventI_CALLBACK_PF_STATUS_SET = 'FRM_STATUS_SET'I_CALLBACK_USER_COMMAND  = 'FRM_USER_COMMAND'I_SAVE                   = 'A'TABLEST_OUTTAB                 = GT_ALVEXCEPTIONSPROGRAM_ERROR            = 1OTHERS                   = 2.IF SY-SUBRC <> 0."* Implement suitable error handling hereENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&      --> P_
*&      --> P_
*&      --> P_
*&      --> P_
*&---------------------------------------------------------------------*
FORM FRM_SET_FIELDCAT  USING    VALUE(P_FIELDNAME)VALUE(P_COLTEXT)VALUE(P_REF_FIELD)VALUE(P_REF_TABLE)VALUE(P_EDIT)VALUE(P_TEMP).CLEAR GS_FIELDCAT.GS_FIELDCAT-FIELDNAME = P_FIELDNAME.GS_FIELDCAT-COLTEXT = P_COLTEXT.GS_FIELDCAT-REF_FIELD = P_REF_FIELD.GS_FIELDCAT-REF_TABLE = P_REF_TABLE.GS_FIELDCAT-EDIT = P_EDIT.
*  GS_FIELDCAT-FIX_COLUMN = P_TEMP.IF P_FIELDNAME EQ 'ZBOX'.GS_FIELDCAT-CHECKBOX = 'X'.ENDIF.APPEND GS_FIELDCAT TO GT_FIELDCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_STATUS_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.DATA: LS_EXTAB TYPE SLIS_EXTAB.SET PF-STATUS 'ZSTANDARD'.SET TITLEBAR 'ZTITLEBAR1'.ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_USER_COMMAND USINGR_UCOMM LIKE  SY-UCOMMRS_SELFIELD TYPE  SLIS_SELFIELD.DATA: LO_GRID TYPE REF TO CL_GUI_ALV_GRID.*  设置刷新模式,行列保持不变RS_SELFIELD-REFRESH    = 'X'.RS_SELFIELD-COL_STABLE = 'X'.RS_SELFIELD-ROW_STABLE = 'X'.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGE_GRID = LO_GRID.CALL METHOD LO_GRID->CHECK_CHANGED_DATA."自定义按钮事件CASE R_UCOMM.WHEN 'ALL'.LOOP AT GT_ALV ASSIGNING FIELD-SYMBOL(<FS_ALV>) WHERE ZBOX IS INITIAL.<FS_ALV>-ZBOX = 'X'.ENDLOOP.WHEN 'SAL'.LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE ZBOX IS NOT INITIAL.CLEAR <FS_ALV>-ZBOX.ENDLOOP.WHEN 'PRI'. "D打印PERFORM FRM_PRINT.WHEN OTHERS.ENDCASE.*  设置刷新模式,行列保持不变CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGE_GRID = LO_GRID.CALL METHOD LO_GRID->CHECK_CHANGED_DATA.ENDFORM .
*&---------------------------------------------------------------------*
*& Form FRM_PRINT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_PRINT .DATA: I TYPE I.DATA: LT_ALV TYPE TABLE OF TY_ALV,LS_ALV TYPE TY_ALV.DATA: EXCL_CUA_FUNCT TYPE TABLE OF VIMEXCLFUN WITH HEADER LINE.IF LINES( IT_ZPRINTTEMP[] ) = 0.MESSAGE W001(00) WITH '没有定义' 'T2' '打印模板!' .EXIT.ENDIF.CLEAR: GT_PRINT.LOOP AT GT_ALV INTO GS_ALV WHERE ZBOX IS NOT INITIAL.COLLECT GS_ALV INTO LT_ALV.CLEAR: GS_ALV.ENDLOOP.SORT LT_ALV BY  BELNR LFBNR ."去重DELETE ADJACENT DUPLICATES FROM LT_ALV COMPARING BELNR LFBNR."LFBNR
* 填充数据LOOP AT LT_ALV INTO LS_ALV.*============ 扣款小计  sTYPES: BEGIN OF TY_KK,BELNR TYPE RBKP-BELNR, ""发票号BUZEI TYPE RSEG-BUZEI,"行号MATNR TYPE MAKT-MATNR,"物料编号MAKTX TYPE MAKT-MAKTX,"物料描述GROES TYPE MARA-GROES," 规格BSTME TYPE RSEG-BSTME," 单位MENGE TYPE RSEG-MENGE," 数量WSDJ TYPE STRING," 单价WRBTR TYPE RSEG-WRBTR,"无税金额 "扣款金额SGTXT TYPE STRING,"备注LFBNR TYPE RSEG-LFBNR,"参考入库凭证号END OF TY_KK.DATA:GT_ALV2 TYPE TABLE OF TY_ALV,GS_ALV2 TYPE TY_ALV,GT_PRINT2 TYPE TABLE OF TY_PRINT,GS_PRINT2 TYPE TY_PRINT.DATA: Z_SUM TYPE P DECIMALS 9 ." 扣款金额 sumselectZTMM037~RE_BELNR as BELNR ""发票号ZTMM008_ITEM~EBELP_KK as BUZEI  "BUZEI TYPE RSEG-BUZEI,"行号ZTMM037~MATNR as MATNR "MATNR TYPE MAKT-MATNR,"物料编号ZTMM008_ITEM~TXT02_KK as MAKTX "MAKTX TYPE MAKT-MAKTX,"物料描述"GROES TYPE MARA-GROES," 规格ZTMM037~BSTME as BSTME "BSTME TYPE RSEG-BSTME," 单位ZTMM037~BSTMG as MENGE "MENGE TYPE RSEG-MENGE," 数量"WSDJ TYPE STRING," 单价ZTMM037~TOT_NETWR as WRBTR "  扣款金额 "ZTMM008_HEAD~NETWR_LJ 累计扣款金额 " WRBTR TYPE RSEG-WRBTR,"无税金额ZTMM008_HEAD~TXT01 as SGTXT " SGTXT TYPE STRING,"备注"LFBNR TYPE RSEG-LFBNR,"参考入库凭证号ZTMM037~BUKRS as BUKRSINTO CORRESPONDING FIELDS OF TABLE GT_ALV2from ZTMM008_HEADleft join ZTMM037 on      ( ZTMM008_HEAD~MANDT = ZTMM037~MANDT and ZTMM037~MBLNR = ZTMM008_HEAD~EBELN_KK and ZTMM037~SHKZG = 'H' and ZTMM037~RE_BELNR = LS_ALV-BELNR )inner join ZTMM008_ITEM on ( ZTMM008_ITEM~MANDT = ZTMM008_HEAD~MANDT and ZTMM008_ITEM~EBELN_KK = ZTMM008_HEAD~EBELN_KKand ZTMM008_ITEM~EBELP_KK = ZTMM037~ZEILE)."where ZTMM037~RE_BELNR = ''"LS_ALV-BELNR'.LOOP AT GT_ALV2 INTO GS_ALV2.Z_SUM = Z_SUM + GS_ALV2-WRBTR.ENDLOOP."GS_ALV-KGXJV = Z_SUM.LOOP AT GT_ALV2 INTO GS_ALV2 WHERE BELNR = LS_ALV-BELNR .MOVE-CORRESPONDING GS_ALV2 TO GS_PRINT2.GS_PRINT2-KGXJV = ABS( Z_SUM )."扣款小计GS_PRINT2-BELNR = LS_ALV-BELNR.""发票号GS_PRINT2-BLDAT = LS_ALV-BLDAT."发票日期GS_PRINT2-NAME1_BU = LS_ALV-NAME1_BU."财务组织"GS_PRINT2-NAME1_BU = LS_ALV-NAME1_BU."财务组织GS_PRINT2-LIFNR = LS_ALV-LIFNR." 供应商编码GS_PRINT2-NAME1 = LS_ALV-NAME1."供应商名GS_PRINT2-EKGRP = LS_ALV-EKGRP.""采购部门GS_PRINT2-WMWST1 = LS_ALV-WMWST1.""税额"GS_PRINT2-YFJEV  = LS_ALV-YFJEV.""应付金额GS_PRINT2-BANKL  = LS_ALV-BANKL.""开户行GS_PRINT2-KOINH = LS_ALV-KOINH.""账户名称GS_PRINT2-BANKN = LS_ALV-BANKN.""银行帐户号码GS_PRINT2-BKTXT = LS_ALV-BKTXT."抬头备注"GS_PRINT2-USNAM = LS_ALV-USNAM.APPEND GS_PRINT2 TO GT_PRINT2.CLEAR: GS_PRINT2,GS_ALV2.ENDLOOP.*============ 扣款小计  sLOOP AT GT_ALV INTO GS_ALV WHERE BELNR = LS_ALV-BELNR .MOVE-CORRESPONDING GS_ALV TO GS_PRINT.GS_PRINT-USNAM = GS_ALV-USNAM.GS_PRINT-MENGE = GS_ALV-MENGE.  "数量GS_PRINT-KGXJV = ABS( Z_SUM )."扣款小计""计算单价DATA : dat1 TYPE p DECIMALS 9 .DATA   dat2 TYPE p DECIMALS 9 .dat2 = GS_ALV-WRBTR / GS_ALV-MENGE.
*       方法二CALL FUNCTION 'ROUND'EXPORTINGdecimals      = 4       " 保留多少位小数input         = dat2sign          = '+'     " + 向上取舍 - 向下取舍 (负数也一样)IMPORTINGoutput        = dat1    " 输出返回结果EXCEPTIONSinput_invalid = 1overflow      = 2type_invalid  = 3OTHERS        = 4."WRITE: / dat2, ' => ' ,dat1.GS_PRINT-WSDJ = dat1.""计算单价APPEND GS_PRINT TO GT_PRINT.CLEAR: GS_PRINT,GS_ALV.ENDLOOP."  扣款记录数据加到打印里"Append lines of GT_PRINT2 to GT_PRINT.CLEAR: LS_ALV.ENDLOOP.CHECK GT_PRINT IS NOT INITIAL.SORT GT_PRINT BY  BELNR LFBNR ."LFBNR
"  扣款记录数据加到打印里Append lines of GT_PRINT2 to GT_PRINT.DATA: FILENAME LIKE  RLGRAP-FILENAME.CONCATENATE P_FILE 'ZPRINTP001.DAT' INTO FILENAME.SORT IT_ZPRINTTEMP BY POSNR.CALL FUNCTION 'WS_DOWNLOAD'EXPORTING
*     CODEPAGE = '8400'FILENAME = FILENAMEFILETYPE = 'DAT'TABLESDATA_TAB = IT_ZPRINTTEMP.down = 'X'.CALL FUNCTION 'Z_EXCEL_DISPLAY'EXPORTINGFILE_PATH = P_FILEFILE_NAME = 'ZMMP001'DOWN      = DOWNTABLESITAB      = GT_PRINT.*  CLEAR: gt_print.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CONTROL_SCREEN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_CONTROL_SCREEN .DATA: WA_ZMVTYT TYPE ZMVTYT3000.CLEAR LIST.SELECT * INTO WA_ZMVTYTFROM ZMVTYT3000.NAME = 'P_MVTYP'.VALUE-KEY  = WA_ZMVTYT-MVTYP.CONCATENATE  '-' WA_ZMVTYT-TXT20  INTO VALUE-TEXT .APPEND VALUE TO LIST.ENDSELECT.CALL FUNCTION 'VRM_SET_VALUES'EXPORTINGID     = 'P_MVTYP'VALUES = LIST[].ENDFORM.

 

 双击 zstandard 创建状态 

 

 

 

 创建后可见工具栏

设置选择条件文本元素

 定义了视图,因为程序做的有点潦草所以用视图只做 TYPE 使用,视图不用作取数据,可以自己修改掉垃圾代码

视图(ZV_MMP001_MSEG)

数据 通过程序里查询获取 

 

定义打印模板样式 

SM30

 

样式弄好之后上传Excel模板  要修改的字段需要在宏程序里做调整

提供模板仅供参考 (  MM采购打印模板.rar )

 

SMW0

路径放在c盘  C://REPORT 目录下 

 

 

 

 

 没有模板条目需要先创建再导入 Excel模板 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win11绿色护眼模式怎么开启

随着win11系统电脑的逐步推广&#xff0c;win11系统在市场上的用户量也是越来越大&#xff0c;不少电脑办公群体也是很青睐于使用win11系统&#xff0c;然而&#xff0c;长时间的办公容易造成视觉疲劳&#xff0c;为此&#xff0c;很多人希望把电脑的显示颜色改成”护眼绿“&am…

SAP ABAP 打印(smartforms方式)

程序代码 *&---------------------------------------------------------------------* *& Report Z3TEST004 *&---------------------------------------------------------------------* *& 打印 采购发票 查询 *&-----------------------------------…

谷歌浏览器书签栏怎么隐藏 谷歌Chrome浏览器书签栏隐藏教程

打开谷歌Chrome浏览器&#xff0c;进入设置页面; 谷歌浏览器书签栏怎么隐藏&#xff1f;谷歌Chrome浏览器书签栏隐藏教程 谷歌浏览器书签栏怎么隐藏&#xff1f;谷歌Chrome浏览器书签栏隐藏教程 待设置页面弹出后&#xff0c;滑动找寻“显示书签栏”选项; 谷歌浏览器书签栏…

jeecg json返回值显示失败or成功 j.setSuccess(false/*true*/)

/*** 删除部门 软删除&#xff1a;* <ul>* 组织机构下存在子机构时* <li>不允许删除 组织机构</li>* </ul>* <ul>* 组织机构下存在用户时* <li>不允许删除 组织机构</li>* </ul>* <ul>* 组织机构下…

电脑公司win11 64位旗舰版镜像文件v2021.07

电脑公司win11 64位旗舰版镜像文件v2021.07是目前非常受欢迎的电脑操作系统&#xff0c;系统中的功能十分的强大&#xff0c;能够智能判断出电脑的型号&#xff0c;然后为广大用户们安装相对应的驱动程序等&#xff0c;可以满足广大用户的所有装机需求&#xff0c;感兴趣的用户…

360浏览器怎么添加应用 360安全浏览器应用添加教程

打开360安全浏览器&#xff0c;进入扩展中心; 360浏览器怎么添加应用&#xff1f;360安全浏览器应用添加教程 之后&#xff0c;浏览器便会跳转至360应用市场; 360浏览器怎么添加应用&#xff1f;360安全浏览器应用添加教程 在市场中找到所需的应用&#xff0c;并按下“安装…

获取java 私有属性或 方法

FileInputStream in (FileInputStream) file.getInputStream();String csvPath "";Class<?> clazz FileInputStream.class;try {FileInputStream pc in;// 创建一个实例Field[] fs clazz.getDeclaredFields();for (int i 0; i < fs.length; i) {fs[i…

番茄花园win11专业版32位系统v2021.07

番茄花园win11专业版32位系统v2021.07是一款非常好用的操作系统&#xff0c;这款系统在稳定性上进一步优化和提升&#xff0c;可以更好的获得整个纯版系统的稳定性&#xff0c;&#xff0c;能够很好的兼容各种功能&#xff0c;系统能够专业化的匹配专业的驱动&#xff0c;保证用…

SAP ABAP刷新ALV 渲染刷新 (我也不太懂,反正就这么写了)

调用 REFRESH_TABLE_DISPLAY 自定义 方法 REFRESH_TABLE_DISPLAY LVC_S_STBL

Intel发布30.0.100.9684显卡驱动:支持Win11

微软 6 月底发布了 Win11 系统&#xff0c;现在各大厂商都在积极支持新系统了&#xff0c; Intel 今天发布了 30.0.100.9684 显卡驱动&#xff0c;主要升级内容就是增加对 Win11 的支持&#xff0c;同时还优化了两款游戏&#xff0c;不再卡顿。 Intel显卡驱动 30.0.100.9684 正…

jeecg t:datagrid标签 每页显示条数 扩展

1.标签属性中有 pageSize 可以修改 2,直接改源码 org.jeecgframework.tag.core.easyui 包下DataGridTag 1544行

Win11没有操作中心怎么办 Win11没有操作中心的解决方法

1、首先点击任务栏中的windows图标&#xff0c;打开设置。 Win11没有操作中心怎么办&#xff1f;Win11没有操作中心的解决方法 2、然后点击设置中的“个性化”。 Win11没有操作中心怎么办&#xff1f;Win11没有操作中心的解决方法 3、此时可以看到下面的“任务栏”选项。 …

钉钉密聊安不安全 钉钉密聊别人能看到吗

钉钉app现在很多企业都在使用&#xff0c;为办公人士提供了很大的帮助。而现在不少人也都在使用密聊功能&#xff0c;但是还是有人会问钉钉密聊安不安全?别人能看到密聊吗?下文一一介解答。 钉钉密聊安不安全 钉钉密聊别人能看到吗 钉钉密聊安不安全 就现目前而言&#xf…

jeecg <t:choose 功能标签用法修改 处理选择0条记录回写

修改时 页面 隐藏域id 回写异常 修改 , 选择1条记录正常 选择0条记录 无法写空,只能通过清空按钮清空 修改如下

火狐浏览器怎么打不开网页

火狐浏览器怎么打不开网页?很多用户在使用火狐浏览器的时候会遇上打不开网页&#xff0c;那这时候该怎么处理呢。下面&#xff0c;小编就为大家介绍下火狐浏览器打不开网页处理方法。 1、在地址栏输入“about:config”&#xff0c;按下回车进入设置菜单。 火狐浏览器怎么打不…

jeecg getParameter

String gtId oConvertUtils.getString(request.getParameter("gtId"));

谷歌浏览器怎么开启硬件加速模式 硬件加速模式开启方法简述

在Chrome地址栏输入“chrome://settings/”后回车&#xff0c;进入“设置”页面; 谷歌浏览器怎么开启硬件加速模式&#xff1f;硬件加速模式开启方法简述 下滑设置页面至底部&#xff0c;并点击“高级”选项; 谷歌浏览器怎么开启硬件加速模式&#xff1f;硬件加速模式开启方…

51单片机相关寄存器

前言 单片机复习的时候对应寄存器的记忆感觉很混乱&#xff0c;这里进行一下整理,后面的单词是我用来辅助记忆的&#xff0c;可能并不是表示原本的含义。 P3口的第二功能 0RXD 串行数据输入口 1TXD串行数据输出口2INT0外部中断0输入3INT1外部中断1输入4T0定时器0外部计数输入…

Win11如何将游戏隐藏 Win11游戏隐藏的方法

1、首先我们找到自己想要隐藏的游戏&#xff0c;右键选择下拉菜单中的“属性” Win11如何将游戏隐藏&#xff1f;Win11游戏隐藏的方法 2、打开属性面板后&#xff0c;点击上方的“常规”选项卡。 Win11如何将游戏隐藏&#xff1f;Win11游戏隐藏的方法 3、然后在常规选项卡下…

Win7系统设置ip地址的方法

1、电脑右下角小电脑标志——右键——打开“网络设置”。 2、选择“更改适配器选项”。 Win7系统设置ip地址的方法 3、右键以太网——“属性”。 Win7系统设置ip地址的方法(1) 4、点击“lnternet协议版本 4(TCP/IPv4)”。 Win7系统设置ip地址的方法(2) 5、勾选“使用下面…