*&---------------------------------------------------------------------*
*& Report ZMMR125
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2019-05-27
*& Program Type : Report
*& Description : 采购变更单打印
*&---------------------------------------------------------------------*
REPORT ZMMR125.
*&---------------------------------------------------------------------*
*& 包含 YN_TEST02_TOP
*&---------------------------------------------------------------------*
TABLES:EKKO,EKPO,MARC.
TYPE-POOLS:SLIS.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE LVC_S_LAYO,
GT_FIELDCAT TYPE LVC_T_FCAT,
IS_VARIANT TYPE DISVARIANT.
DATA: G_TITLE_0200 TYPE STRING,
LV_SUM TYPE STRING,
G_INDEX TYPE SY-INDEX.
DATA: LS_STYLE TYPE LVC_S_STYL,
LT_STYLE TYPE TABLE OF LVC_S_STYL.
DATA: GT_DATA TYPE TABLE OF ZTS_PODATA_HEAD WITH HEADER LINE.
DATA: GT_DATA_A TYPE TABLE OF ZTS_PODATA_HEAD WITH HEADER LINE.
DATA: GT_DATA_IT TYPE TABLE OF ZTS_PODATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_B TYPE TABLE OF ZTS_PODATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_Z TYPE TABLE OF ZTS_PODATA_ITEM WITH HEADER LINE.
DATA: GV_TOP TYPE SDYDO_TEXT_ELEMENT.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_EBELN FOR EKKO-EBELN MODIF ID C1, "采购凭证编号
S_BUKRS FOR EKKO-BUKRS MODIF ID C1, "公司代码
S_EKORG FOR EKKO-EKORG MODIF ID C1, "采购组织
S_EKGRP FOR EKKO-EKGRP MODIF ID C1, "采购组
S_BEDAT FOR EKKO-BEDAT MODIF ID C1, "凭证日期
S_WERKS FOR EKPO-WERKS MODIF ID C1, "工厂
S_DISPO FOR MARC-DISPO MODIF ID C1. "MRP控制员
SELECTION-SCREEN END OF BLOCK B1.
*&---------------------------------------------------------------------*
*& 包含 YN_TEST02_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包含 ZFIR092_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_EXCLUDE_OPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_EXCLUDE_OPTION .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_OUTPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_OUTPUT .
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'M1'.
SCREEN-INPUT = '0'.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
* AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
* ID 'WERKS' FIELD P_WERKS.
* IF SY-SUBRC <> 0.
* MESSAGE '您没有工厂:'&& P_WERKS && ' 的权限!' TYPE 'E' .
* ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
DATA LV_FRGSX TYPE CHAR10 .
DATA LV_GLAG TYPE C .
DATA LV_E01 TYPE C .
DATA LV_ZUSER1 TYPE CHAR10 .
DATA EREV TYPE EREV .
CLEAR GT_DATA[] .
SELECT
EKKO~EBELN
EKKO~BUKRS
EKKO~BSART
EKKO~LIFNR
EKKO~ZTERM
EKKO~WAERS
EKKO~BEDAT
EKKO~VERKF
EKKO~INCO1
EKKO~INCO2
EKKO~FRGKE
EKKO~REVNO
EKKO~FRGSX
MARC~DISPO
INTO CORRESPONDING FIELDS OF TABLE GT_DATA
FROM EKKO
INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN
LEFT JOIN MARC ON EKPO~MATNR = MARC~MATNR AND EKPO~WERKS = MARC~WERKS
WHERE EKKO~EBELN IN S_EBELN
AND EKKO~BUKRS IN S_BUKRS
AND EKKO~EKORG IN S_EKORG
AND EKKO~EKGRP IN S_EKGRP
AND EKKO~BEDAT IN S_BEDAT
* AND ( EKKO~FRGKE = 'R' OR EKKO~FRGGR = '' )
AND EKPO~WERKS IN S_WERKS
* AND MARC~DISPO IN S_DISPO
.
DELETE GT_DATA[] WHERE DISPO NOT IN S_DISPO .
SORT GT_DATA[] BY EBELN .
DELETE ADJACENT DUPLICATES FROM GT_DATA[] COMPARING EBELN.
LOOP AT GT_DATA.
CLEAR EREV .
SELECT SINGLE REVOK TXZ01 INTO CORRESPONDING FIELDS OF EREV FROM EREV
WHERE REVNO = GT_DATA-REVNO
.
GT_DATA-TXZ01 = EREV-TXZ01 .
SELECT SINGLE WERKS INTO GT_DATA-WERKS FROM EKPO
WHERE EBELN = GT_DATA-EBELN
.
SELECT SINGLE ADRNR INTO GT_DATA-ADDRNUMBER FROM T001
WHERE BUKRS = GT_DATA-BUKRS
.
SELECT SINGLE NAME1 NAME2 NAME3 STREET INTO ( GT_DATA-AD_NAME1 ,GT_DATA-AD_NAME2 ,GT_DATA-AD_NAME3 ,GT_DATA-STREET ) FROM ADRC
WHERE ADDRNUMBER = GT_DATA-ADDRNUMBER
.
SELECT SINGLE NAME1 TELF1 TELFX INTO ( GT_DATA-NAME1 , GT_DATA-TELF1 , GT_DATA-TELFX ) FROM LFA1
WHERE LIFNR = GT_DATA-LIFNR
.
*付款条件描述
SELECT SINGLE TEXT1 INTO GT_DATA-TEXT1 FROM T052U
WHERE ZTERM = GT_DATA-ZTERM
* AND SPRAS = 1
.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = GT_DATA-LIFNR
IMPORTING
OUTPUT = GT_DATA-LIFNR.
*供应商
CONCATENATE GT_DATA-LIFNR GT_DATA-NAME1 INTO GT_DATA-NAME_L SEPARATED BY ' '.
*公司名称(EN)
CONCATENATE GT_DATA-AD_NAME2 GT_DATA-AD_NAME3 INTO GT_DATA-AD_NAME_C SEPARATED BY ' '.
*国际贸易条款
CONCATENATE GT_DATA-INCO1 GT_DATA-INCO2 INTO GT_DATA-ZMYTK SEPARATED BY ' '.
CLEAR GT_DATA_IT[] .
SELECT EBELN EBELP WERKS MATNR MENGE MEINS NETPR PEINH MWSKZ TXZ01 INTO CORRESPONDING FIELDS OF TABLE GT_DATA_IT[] FROM EKPO
WHERE EBELN = GT_DATA-EBELN
.
*制单员签名:
CLEAR LV_FRGSX .
CONCATENATE '%'GT_DATA-FRGSX'%' INTO LV_FRGSX.
CLEAR LV_E01 .
CLEAR LV_ZUSER1 .
LOOP AT GT_DATA_IT.
CLEAR LV_GLAG .
AT FIRST .
LV_GLAG = 'X'.
ENDAT .
SELECT SINGLE DISPO INTO GT_DATA_IT-DISPO FROM MARC
WHERE WERKS = GT_DATA_IT-WERKS
AND MATNR = GT_DATA_IT-MATNR
.
SELECT SINGLE ZUSER INTO GT_DATA_IT-ZUSER FROM ZTPS
WHERE BUKRS = GT_DATA-BUKRS
AND DISPO = GT_DATA_IT-DISPO
AND ZSPCL LIKE LV_FRGSX
AND ZQZLX = 'ZD'
.
IF LV_GLAG IS NOT INITIAL .
LV_ZUSER1 = GT_DATA_IT-ZUSER .
ELSE .
IF LV_ZUSER1 <> GT_DATA_IT-ZUSER.
LV_E01 = 'X'.
EXIT .
ENDIF.
ENDIF.
MODIFY GT_DATA_IT .
CLEAR GT_DATA_IT .
ENDLOOP.
IF LV_E01 IS NOT INITIAL.
GT_DATA-ZER01 = 'E' .
GT_DATA-MESSAGES = '采购单有多个制单人;' .
ELSE .
READ TABLE GT_DATA_IT INDEX 1 .
GT_DATA-ZUSER1 = GT_DATA_IT-ZUSER .
IF GT_DATA-ZUSER1 IS INITIAL .
GT_DATA-ZER01 = 'E' .
GT_DATA-MESSAGES = '没有匹配的制单人;' .
ENDIF.
CLEAR GT_DATA_IT .
ENDIF.
*复核员签名:
SELECT SINGLE ZUSER INTO GT_DATA-ZUSER2 FROM ZTPS
WHERE BUKRS = GT_DATA-BUKRS
AND ZSPCL LIKE LV_FRGSX
AND ZQZLX = 'FH'
.
IF SY-SUBRC <> 0.
GT_DATA-ZER02 = 'E' .
GT_DATA-MESSAGES = GT_DATA-MESSAGES && '没有匹配的复核人;' .
ENDIF.
*批准员签名:
SELECT SINGLE ZUSER INTO GT_DATA-ZUSER3 FROM ZTPS
WHERE BUKRS = GT_DATA-BUKRS
AND ZSPCL LIKE LV_FRGSX
AND ZQZLX = 'PZ'
.
IF SY-SUBRC <> 0.
GT_DATA-ZER03 = 'E' .
GT_DATA-MESSAGES = GT_DATA-MESSAGES && '没有匹配的批准人;' .
ENDIF.
CLEAR LT_STYLE[] .
IF GT_DATA-FRGKE <> '' AND GT_DATA-FRGKE <>'R'.
GT_DATA-MESSAGE = '用户该采购单未完成审批!'.
LS_STYLE-FIELDNAME = 'STREET'.
LS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND LS_STYLE TO LT_STYLE.
LS_STYLE-FIELDNAME = 'CKBOX'.
LS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND LS_STYLE TO LT_STYLE.
GT_DATA-STYLE = LT_STYLE.
MODIFY GT_DATA .
ELSEIF GT_DATA-FRGKE = 'R' AND EREV-REVOK <> 'X'.
GT_DATA-MESSAGE = '用户该采购单版本未完成!'.
LS_STYLE-FIELDNAME = 'STREET'.
LS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND LS_STYLE TO LT_STYLE.
LS_STYLE-FIELDNAME = 'CKBOX'.
LS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND LS_STYLE TO LT_STYLE.
GT_DATA-STYLE = LT_STYLE.
MODIFY GT_DATA .
ELSEIF ( GT_DATA-FRGKE = 'R' AND EREV-REVOK = 'X' ) OR GT_DATA-FRGKE = ''.
* GT_DATA-MESSAGE = '无异常!'.
MODIFY GT_DATA .
ELSE .
DELETE GT_DATA .
ENDIF.
CLEAR GT_DATA .
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
CLEAR S_LAYOUT.
S_LAYOUT-ZEBRA = 'X'.
S_LAYOUT-CWIDTH_OPT = 'X'.
* S_LAYOUT-CTAB_FNAME = 'CELLCOLOR'. "单元格颜色内表字段
S_LAYOUT-STYLEFNAME = 'STYLE'. "内部表字段的字段名称
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_SAVE = 'A'
IS_VARIANT = IS_VARIANT
IS_LAYOUT_LVC = S_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT
I_CALLBACK_PROGRAM = SY-REPID
* IT_EVENTS = I_EVENTS
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = GT_DATA[].
ENDFORM.
FORM FRM_FILL_FIELD .
DATA: WA_FIELDCAT TYPE LINE OF LVC_T_FCAT.
DEFINE FILL_FIELD.
WA_FIELDCAT-FIELDNAME = &1.
WA_FIELDCAT-COLTEXT = &2.
* IF WA_FIELDCAT-FIELDNAME = 'MSLJH' OR WA_FIELDCAT-FIELDNAME = 'WCBJH'.
* WA_FIELDCAT-EMPHASIZE = 'C600'. "设置字段的颜色
* ENDIF.
*
IF WA_FIELDCAT-FIELDNAME = 'CKBOX' .
WA_FIELDCAT-CHECKBOX = 'X'.
WA_FIELDCAT-EDIT = 'X'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'STREET' .
WA_FIELDCAT-REF_TABLE = 'ADRC'.
WA_FIELDCAT-REF_FIELD = 'STREET'.
WA_FIELDCAT-EDIT = 'X'.
ENDIF .
IF WA_FIELDCAT-FIELDNAME = 'PLNBEZ' OR WA_FIELDCAT-FIELDNAME = 'MATNR' .
WA_FIELDCAT-REF_TABLE = 'MARA'.
WA_FIELDCAT-REF_FIELD = 'MATNR'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'ARKTX' OR WA_FIELDCAT-FIELDNAME = 'WAKTX' .
WA_FIELDCAT-REF_TABLE = 'VBAP'.
WA_FIELDCAT-REF_FIELD = 'ARKTX'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'AUFNR' .
WA_FIELDCAT-REF_TABLE = 'AUFK'.
WA_FIELDCAT-REF_FIELD = 'AUFNR'.
ENDIF.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
END-OF-DEFINITION.
FILL_FIELD :
'CKBOX' '选择列',
'REVNO' '版本号',
'TXZ01' '变更原因',
'EBELN' '采购凭证编号',
'BUKRS' '公司代码',
'AD_NAME1' '公司名称',
'LIFNR' '供应商帐户号',
'NAME1' '供应商描述',
'ZTERM' '付款条件代码',
'TEXT1' '付款条件',
'WAERS' '货币码',
'BEDAT' '采购凭证日期',
'VERKF' '联系人',
'ZMYTK' '国际贸易条款',
'TELF1' '电话',
'TELFX' '传真号',
'STREET' '收货地址',
'MESSAGES' '签字信息',
'ZUSER1' '制单人',
'ZUSER2' '复核人',
'ZUSER3' '批准人',
'MESSAGE' '消息'.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_MATNR FOR MARA-MATNR.
DATA: L_BUKRS TYPE T001K-BUKRS.
DATA: NUM TYPE I .
DATA: TEMP TYPE I .
DATA: TEMP_Z TYPE I .
DATA: ZTAXL TYPE CHAR6 .
DATA: T_FTAXP LIKE FTAXP OCCURS 0 WITH HEADER LINE .
DATA: I_DOCUMENT_CATEGORY LIKE EKKO-BSTYP .
DATA: I_DOCUMENT_NUMBER LIKE EKKO-EBELN .
DATA: I_DOCUMENT_ITEM LIKE EKPO-EBELP .
DATA: I_REVISIONLIST TYPE CHAR1 .
DATA: E_LINES TYPE SY-TFILL .
DATA: E_OUTTAB TYPE MECDGRID_T WITH HEADER LINE.
DATA: CHARA TYPE CHAR20.
DATA: CHARB TYPE CHAR20.
LV_STABLE-ROW = '1'.
LV_STABLE-COL = '1'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
CASE I_UCOMM.
WHEN 'PRINT'."点击打印
DATA: FM_NAME TYPE RS38L_FNAM .
DATA: FORMNAME TYPE TDSFNAME .
DATA:L_CONTROL_PARAMETERS TYPE SSFCTRLOP.
DATA:L_OUTPUT_OPTIONS TYPE SSFCOMPOP.
CLEAR FORMNAME .
FORMNAME = 'ZMMSF125A' .
**Set Print paramenters
L_CONTROL_PARAMETERS-NO_DIALOG = ''.
L_CONTROL_PARAMETERS-PREVIEW = 'X'.
L_CONTROL_PARAMETERS-LANGU = '1'.
L_OUTPUT_OPTIONS-TDIMMED = 'X'. " 打印参数,立即打印
L_OUTPUT_OPTIONS-TDNEWID = ''. " 打印参数,新假脱机请求
L_OUTPUT_OPTIONS-TDDEST = 'LP01'. " 假脱机: 输出设备
L_OUTPUT_OPTIONS-TDDELETE = 'X'. "打印参数,打印后删除
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = FORMNAME "SmartForms程序
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* 错误处理
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
CLEAR GT_DATA_A[] .
GT_DATA_A[] = GT_DATA[] .
DELETE GT_DATA_A[] WHERE CKBOX IS INITIAL .
IF GT_DATA_A[] IS NOT INITIAL.
LOOP AT GT_DATA_A WHERE CKBOX IS NOT INITIAL .
L_CONTROL_PARAMETERS-NO_OPEN = 'X'.
L_CONTROL_PARAMETERS-NO_CLOSE = 'X'."
AT FIRST .
L_CONTROL_PARAMETERS-NO_OPEN = SPACE."首次运行时打开打印对话框
L_CONTROL_PARAMETERS-NO_CLOSE = 'X'."并且不关闭假脱机请求
ENDAT .
CLEAR GT_DATA_IT[] .
SELECT EBELN EBELP WERKS MATNR MENGE MEINS NETPR PEINH MWSKZ TXZ01 INTO CORRESPONDING FIELDS OF TABLE GT_DATA_IT[] FROM EKPO
WHERE EBELN = GT_DATA_A-EBELN
.
* CLEAR GT_DATA_IT .
* READ TABLE GT_DATA_IT INDEX 1 .
* DO 19 TIMES.
* APPEND GT_DATA_IT .
* ENDDO.
CLEAR GT_DATA_A-ZHSZJE .
CLEAR GT_DATA_IT_B[].
LOOP AT GT_DATA_IT.
CLEAR E_LINES.
CLEAR E_OUTTAB[].
CALL FUNCTION 'ME_CHANGEDOC_SELECT'
EXPORTING
I_DOCUMENT_CATEGORY = 'F'
I_DOCUMENT_NUMBER = GT_DATA_IT-EBELN
I_DOCUMENT_ITEM = GT_DATA_IT-EBELP
I_REVISIONLIST = 'X'
IMPORTING
E_LINES = E_LINES
E_OUTTAB = E_OUTTAB[].
DELETE E_OUTTAB[] WHERE REVNO <> GT_DATA_A-REVNO .
DELETE E_OUTTAB[] WHERE FNAME <> 'EINDT' AND FNAME <> 'MENGE'.
IF E_OUTTAB[] IS NOT INITIAL.
*--------------------------------------------------------------------------------
GT_DATA_IT_B = GT_DATA_IT .
READ TABLE E_OUTTAB WITH KEY FNAME = 'EINDT'.
IF SY-SUBRC = 0.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = E_OUTTAB-F_OLD
IMPORTING
DATE_INTERNAL = GT_DATA_IT_B-EINDT
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS = 2.
ENDIF.
READ TABLE E_OUTTAB WITH KEY FNAME = 'MENGE'.
IF SY-SUBRC = 0.
SHIFT E_OUTTAB-F_OLD LEFT DELETING LEADING ' '.
CLEAR CHARA .
SPLIT E_OUTTAB-F_OLD AT ' ' INTO CHARA CHARB.
REPLACE '.' WITH '' INTO CHARA.
REPLACE ',' WITH '.' INTO CHARA.
CONDENSE CHARA NO-GAPS .
GT_DATA_IT_B-MENGE = CHARA .
ENDIF.
APPEND GT_DATA_IT_B .
CLEAR GT_DATA_IT_B .
*--------------------------------------------------------------------------------
IF GT_DATA_IT-PEINH IS NOT INITIAL.
GT_DATA_IT-ZWSDJ = GT_DATA_IT-NETPR / GT_DATA_IT-PEINH .
ENDIF.
GT_DATA_IT-ZWSJE = GT_DATA_IT-ZWSDJ * GT_DATA_IT-MENGE .
SELECT SINGLE LAND1 INTO GT_DATA_IT-LAND1 FROM T001W
WHERE WERKS = GT_DATA_IT-WERKS
.
CLEAR T_FTAXP[] .
CALL FUNCTION 'GET_TAX_PERCENTAGE'
EXPORTING
ALAND = GT_DATA_IT-LAND1
DATAB = SY-DATUM
MWSKZ = GT_DATA_IT-MWSKZ
TXJCD = ''
TABLES
T_FTAXP = T_FTAXP[].
* IF SY-SUBRC <> 0.
** 错误处理
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* EXIT.
* ENDIF.
SORT T_FTAXP[] BY KNUMH DESCENDING .
CLEAR T_FTAXP .
READ TABLE T_FTAXP INDEX 1.
CLEAR ZTAXL .
ZTAXL = T_FTAXP-KBETR / 10 .
GT_DATA_IT-ZTAXL = ZTAXL && ' %' .
GT_DATA_IT-ZTAXJ = GT_DATA_IT-ZWSJE * T_FTAXP-KBETR / 1000 .
GT_DATA_IT-ZHSJE = GT_DATA_IT-ZWSJE + GT_DATA_IT-ZTAXJ .
SELECT SINGLE EINDT INTO GT_DATA_IT-EINDT FROM EKET
WHERE EBELN = GT_DATA_IT-EBELN
AND EBELP = GT_DATA_IT-EBELP
.
GT_DATA_A-ZHSZJE = GT_DATA_A-ZHSZJE + GT_DATA_IT-ZHSJE .
MODIFY GT_DATA_IT .
ELSE .
DELETE GT_DATA_IT .
ENDIF.
CLEAR GT_DATA_IT .
ENDLOOP.
* IF GT_DATA_IT[] IS INITIAL .
* EXIT .
* ENDIF.
* READ TABLE GT_DATA_IT INDEX 1 .
* DO 3 TIMES.
* APPEND GT_DATA_IT .
* ENDDO.
CLEAR GT_DATA_A-ZHSZJEQ .
LOOP AT GT_DATA_IT_B.
IF GT_DATA_IT_B-PEINH IS NOT INITIAL.
GT_DATA_IT_B-ZWSDJ = GT_DATA_IT_B-NETPR / GT_DATA_IT_B-PEINH .
ENDIF.
GT_DATA_IT_B-ZWSJE = GT_DATA_IT_B-ZWSDJ * GT_DATA_IT_B-MENGE .
SELECT SINGLE LAND1 INTO GT_DATA_IT_B-LAND1 FROM T001W
WHERE WERKS = GT_DATA_IT_B-WERKS
.
CLEAR T_FTAXP[] .
CALL FUNCTION 'GET_TAX_PERCENTAGE'
EXPORTING
ALAND = GT_DATA_IT_B-LAND1
DATAB = SY-DATUM
MWSKZ = GT_DATA_IT_B-MWSKZ
TXJCD = ''
TABLES
T_FTAXP = T_FTAXP[].
* IF SY-SUBRC <> 0.
** 错误处理
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* EXIT.
* ENDIF.
SORT T_FTAXP[] BY KNUMH DESCENDING .
CLEAR T_FTAXP .
READ TABLE T_FTAXP INDEX 1.
CLEAR ZTAXL .
ZTAXL = T_FTAXP-KBETR / 10 .
GT_DATA_IT_B-ZTAXL = ZTAXL && ' %' .
GT_DATA_IT_B-ZTAXJ = GT_DATA_IT_B-ZWSJE * T_FTAXP-KBETR / 1000 .
GT_DATA_IT_B-ZHSJE = GT_DATA_IT_B-ZWSJE + GT_DATA_IT_B-ZTAXJ .
GT_DATA_A-ZHSZJEQ = GT_DATA_A-ZHSZJEQ + GT_DATA_IT_B-ZHSJE .
IF GT_DATA_IT_B-EINDT IS INITIAL .
SELECT SINGLE EINDT INTO GT_DATA_IT_B-EINDT FROM EKET
WHERE EBELN = GT_DATA_IT_B-EBELN
AND EBELP = GT_DATA_IT_B-EBELP
.
ENDIF.
MODIFY GT_DATA_IT_B .
CLEAR GT_DATA_IT_B .
ENDLOOP.
READ TABLE GT_DATA_IT_B INDEX 1 .
* DO 3 TIMES.
* APPEND GT_DATA_IT_B .
* ENDDO.
*-----------------------------------------------------------------
SORT GT_DATA_IT[] BY EBELN EBELP .
SORT GT_DATA_IT_B[] BY EBELN EBELP .
CLEAR GT_DATA_IT_Z .
CLEAR GT_DATA_IT_Z[] .
GT_DATA_IT_Z-TXZ02 = '变更前:'.
APPEND GT_DATA_IT_Z .
APPEND LINES OF GT_DATA_IT_B TO GT_DATA_IT_Z .
GT_DATA_IT_Z-TXZ02 = '变更后:'.
APPEND GT_DATA_IT_Z .
APPEND LINES OF GT_DATA_IT TO GT_DATA_IT_Z .
*-----------------------------------------------------------------
* SORT GT_DATA_IT_Z[] BY EBELN EBELP .
CLEAR NUM .
DESCRIBE TABLE GT_DATA_IT_Z LINES NUM .
CLEAR TEMP .
CLEAR TEMP_Z .
TEMP = NUM MOD 20 .
IF TEMP > 9.
TEMP = 29 - TEMP .
ELSE .
TEMP = 9 - TEMP .
ENDIF.
CLEAR GT_DATA_IT_Z .
DO TEMP TIMES.
APPEND GT_DATA_IT_Z .
ENDDO.
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = L_CONTROL_PARAMETERS
OUTPUT_OPTIONS = L_OUTPUT_OPTIONS
USER_SETTINGS = ''
GT_HEAD = GT_DATA_A
TABLES
GT_ITEM = GT_DATA_IT_Z[]
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
DATA: LS_JOB_OUTPUT_INFO TYPE SSFCRESCL.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_OUTPUT_INFO
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
** 错误处理
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE .
IF SY-SUBRC <> 0.
MESSAGE '请选择打印条目!' TYPE 'S' DISPLAY LIKE 'E' .
ENDIF.
ENDIF.
WHEN 'ALL'.
LOOP AT GT_DATA.
GT_DATA-CKBOX = 'X' .
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
WHEN 'SAL'.
LOOP AT GT_DATA.
GT_DATA-CKBOX = '' .
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
INITIALIZATION .
PERFORM FRM_EXCLUDE_OPTION.
AT SELECTION-SCREEN OUTPUT.
PERFORM SCREEN_OUTPUT.
AT SELECTION-SCREEN.
PERFORM SCREEN_SETTING.
START-OF-SELECTION.
PERFORM FOM_GETDATA .
PERFORM FRM_DISPLAY.
MM-采购变更单打印(开发笔记)
最新推荐文章于 2022-05-01 11:43:00 发布