*&---------------------------------------------------------------------*
*& Report ZMMR102
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2019-06-27
*& Program Type : Report
*& Description : Packing List打印
*&---------------------------------------------------------------------*
REPORT ZSDR001.
*&---------------------------------------------------------------------*
*& 包含 YN_TEST02_TOP
*&---------------------------------------------------------------------*
TABLES:MARC,EKKO,VBAP,VBRK,VBPA.
TYPE-POOLS:SLIS.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_DATA TYPE TABLE OF ZTS_INDATA_HEAD WITH HEADER LINE.
DATA: GT_DATA_A TYPE TABLE OF ZTS_INDATA_HEAD WITH HEADER LINE.
DATA: GT_DATA_IT TYPE TABLE OF ZTS_INDATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_A TYPE TABLE OF ZTS_INDATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_B TYPE TABLE OF ZTS_INDATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_C TYPE TABLE OF ZTS_INDATA_ITEM WITH HEADER LINE.
DATA: GV_TOP TYPE SDYDO_TEXT_ELEMENT.
DATA: GV_SPRAS TYPE SPRAS.
DATA: ADDRNUMBER TYPE AD_ADDRNUM .
DATA: COUNTRY TYPE LAND1 .
DATA: LV_ITEM TYPE CHAR5.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN MODIF ID C1. "发票号码
SELECT-OPTIONS: S_FKDAT FOR VBRK-FKDAT MODIF ID C1. "发票日期
SELECT-OPTIONS: S_FKART FOR VBRK-FKART MODIF ID C1. "发票类型
PARAMETERS: P_VKORG LIKE VBRK-VKORG MODIF ID C1 DEFAULT '2001' OBLIGATORY. "销售组织
SELECT-OPTIONS: S_KUNRG FOR VBRK-KUNRG MODIF ID C1. "付款方
SELECT-OPTIONS: S_KUNAG FOR VBRK-KUNAG MODIF ID C1. "售达方
PARAMETERS: S_BRGEW TYPE BRGEW MODIF ID C1. "标准纸箱重量KG(尾箱)
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
R1 RADIOBUTTON GROUP RAD2 .
SELECTION-SCREEN COMMENT 03(15) TEXT-001. "*单选按钮的名称
PARAMETERS:
R2 RADIOBUTTON GROUP RAD2 .
SELECTION-SCREEN COMMENT 21(20) TEXT-002. "*单选按钮的名称
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
*&---------------------------------------------------------------------*
*& 包含 YN_TEST02_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 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 TDID TYPE TABLE OF TDID WITH HEADER LINE .
DATA TLINE TYPE TABLE OF TLINE WITH HEADER LINE .
DATA TDNAME TYPE TDOBNAME .
DATA ADDRNUMBER TYPE AD_ADDRNUM .
CLEAR GT_DATA_A[] .
SELECT VBRK~VBELN
VBRK~VKORG
VBRK~FKDAT
VBRK~FKART
VBRK~KUNRG
VBRK~KUNAG
VBRK~NETWR
VBRK~WAERK
VBRK~VSBED
INTO CORRESPONDING FIELDS OF TABLE GT_DATA_A[] FROM VBRK
WHERE VKORG = P_VKORG
AND VBELN IN S_VBELN
AND FKDAT IN S_FKDAT
AND FKART IN S_FKART
AND KUNRG IN S_KUNRG
AND KUNAG IN S_KUNAG
.
LOOP AT GT_DATA_A.
SELECT SINGLE NAME_ORG1 INTO GT_DATA_A-NAME_ORG2 FROM BUT000
WHERE PARTNER = GT_DATA_A-KUNAG
.
CLEAR ADDRNUMBER .
SELECT SINGLE ADDRNUMBER INTO ADDRNUMBER FROM BUT020
WHERE PARTNER = GT_DATA_A-KUNAG
.
IF SY-SUBRC = 0.
CLEAR COUNTRY .
SELECT SINGLE STREET STR_SUPPL1 STR_SUPPL2 INTO ( GT_DATA_A-SDF_SUPPL1 , GT_DATA_A-SDF_SUPPL2 , GT_DATA_A-SDF_SUPPL3 ) FROM ADRC
WHERE ADDRNUMBER = ADDRNUMBER
.
ENDIF.
MODIFY GT_DATA_A .
CLEAR GT_DATA_A .
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
CLEAR S_LAYOUT.
S_LAYOUT-ZEBRA = 'X'.
S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = GT_DATA_A[].
ENDFORM.
FORM FRM_FILL_FIELD .
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DEFINE FILL_FIELD.
wa_fieldcat-fieldname = &1.
wa_fieldcat-seltext_l = &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 = 'PLNBEZ' OR wa_fieldcat-fieldname = 'MATNR' .
wa_fieldcat-ref_tabname = 'MARA'.
wa_fieldcat-ref_fieldname = 'MATNR'.
ENDIF.
IF wa_fieldcat-fieldname = 'ARKTX' OR wa_fieldcat-fieldname = 'WAKTX' .
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-ref_fieldname = 'ARKTX'.
ENDIF.
IF wa_fieldcat-fieldname = 'AUFNR' .
wa_fieldcat-ref_tabname = 'AUFK'.
wa_fieldcat-ref_fieldname = 'AUFNR'.
ENDIF.
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
END-OF-DEFINITION.
FILL_FIELD :
'CKBOX' '选择列',
'VBELN' '发票号码',
'FKDAT' '发票日期',
'FKART' '发票类型',
'VKORG' '发票组织',
'KUNRG' '付款方',
'KUNAG' '售达方',
'NETWR' '总金额',
'WAERK' '币别',
'VSBED' '装运条件'.
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 CHAR10 .
DATA: TEMP_Z TYPE I .
DATA: TEMPX TYPE CHAR10 .
DATA: TEMPX_Z TYPE I .
DATA: TEMPC TYPE CHAR10 .
DATA: TEMPC_Z TYPE I .
DATA: TDID TYPE TABLE OF TDID WITH HEADER LINE .
DATA: TLINE TYPE TABLE OF TLINE WITH HEADER LINE .
DATA: TDNAME TYPE TDOBNAME .
DATA: GT_MARM TYPE TABLE OF MARM WITH HEADER LINE .
DATA: GT_MARM_C TYPE TABLE OF MARM WITH HEADER LINE .
DATA: SUM_PAL TYPE CHAR10 .
DATA: SUM_CAR TYPE CHAR10 .
DATA: LAENG_C TYPE CHAR10 .
DATA: BREIT_C TYPE CHAR10 .
DATA: HOEHE_C TYPE CHAR10 .
DATA: LAENG_C1 TYPE CHAR10 .
DATA: BREIT_C1 TYPE CHAR10 .
DATA: HOEHE_C1 TYPE CHAR10 .
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 .
IF R1 IS NOT INITIAL.
FORMNAME = 'ZSDSF001_A' .
ELSE .
FORMNAME = 'ZSDSF001_B' .
ENDIF.
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.
GT_DATA[] = GT_DATA_A[] .
DELETE GT_DATA[] WHERE CKBOX IS INITIAL .
IF GT_DATA[] IS NOT INITIAL.
LOOP AT GT_DATA .
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 VBELN POSNR AUBEL AUPOS MATNR FKIMG VRKME ARKTX INTO CORRESPONDING FIELDS OF TABLE GT_DATA_IT[] FROM VBRP
WHERE VBELN = GT_DATA-VBELN
.
SORT GT_DATA_IT[] BY MATNR .
GT_DATA_IT_A[] = GT_DATA_IT[] .
DELETE ADJACENT DUPLICATES FROM GT_DATA_IT[] COMPARING MATNR.
CLEAR LV_ITEM .
CLEAR GT_DATA_IT_B[] .
LOOP AT GT_DATA_IT WHERE FLAG IS INITIAL.
CLEAR GT_DATA_IT-FKIMG .
LOOP AT GT_DATA_IT_A WHERE MATNR = GT_DATA_IT-MATNR.
GT_DATA_IT-FKIMG = GT_DATA_IT-FKIMG + GT_DATA_IT_A-FKIMG .
CLEAR GT_DATA_IT_A .
ENDLOOP.
**测试用数据
* GT_DATA_IT-MATNR = 'D979-1-P001.A303'.
* GT_DATA_IT-FKIMG = 1000 .
**测试用数据
SELECT SINGLE KDMAT INTO GT_DATA_IT-KDMAT FROM VBAP
WHERE VBELN = GT_DATA_IT-AUBEL
AND POSNR = GT_DATA_IT-AUPOS
.
SELECT SINGLE NTGEW INTO GT_DATA_IT-NTGEW FROM MARA
WHERE MATNR = GT_DATA_IT-MATNR
.
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_MARM[] FROM MARM
WHERE MATNR = GT_DATA_IT-MATNR
.
GT_MARM_C[] = GT_MARM[] .
CLEAR GT_MARM .
READ TABLE GT_MARM WITH KEY MEINH = 'PAL'.
CLEAR SUM_PAL .
IF GT_MARM-UMREN <> 0.
SUM_PAL = GT_MARM-UMREZ / GT_MARM-UMREN .
ENDIF.
CLEAR TEMP .
CLEAR TEMP_Z .
IF SUM_PAL <> 0.
TEMP = GT_DATA_IT-FKIMG MOD SUM_PAL ."取余
TEMP_Z = GT_DATA_IT-FKIMG DIV SUM_PAL ."取整
ENDIF.
CLEAR GT_MARM_C .
READ TABLE GT_MARM_C WITH KEY MEINH = 'KAR'.
CLEAR SUM_CAR .
IF GT_MARM_C-UMREN <> 0.
SUM_CAR = GT_MARM_C-UMREZ / GT_MARM_C-UMREN .
ENDIF.
CLEAR TEMPX .
CLEAR TEMPX_Z .
IF SUM_PAL <> 0.
TEMPX = GT_DATA_IT-FKIMG MOD SUM_CAR ."取余
TEMPX_Z = GT_DATA_IT-FKIMG DIV SUM_CAR ."取整
ENDIF.
CLEAR GT_DATA_IT-YKBMZ .
GT_DATA_IT-YKBMZ = GT_MARM-BRGEW .
*--------------------------------------------------------------------------------
*packing list 1
*--------------------------------------------------------------------------------
CLEAR LAENG_C .
CLEAR BREIT_C .
CLEAR HOEHE_C .
LAENG_C = GT_MARM-LAENG .
BREIT_C = GT_MARM-BREIT .
HOEHE_C = GT_MARM-HOEHE .
DATA:L_STR TYPE STRING.
CLEAR L_STR .
IF LAENG_C IS NOT INITIAL.
L_STR = LAENG_C.
CONDENSE L_STR. " 去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '0'."去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '.'."去掉没用的小数位的0
ELSE.
L_STR = '0'."为空就给个空值
ENDIF.
CONDENSE L_STR.
LAENG_C = L_STR.
CLEAR L_STR .
IF BREIT_C IS NOT INITIAL.
L_STR = BREIT_C.
CONDENSE L_STR. " 去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '0'."去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '.'."去掉没用的小数位的0
ELSE.
L_STR = '0'."为空就给个空值
ENDIF.
CONDENSE L_STR.
BREIT_C = L_STR.
CLEAR L_STR .
IF HOEHE_C IS NOT INITIAL.
L_STR = HOEHE_C.
CONDENSE L_STR. " 去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '0'."去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '.'."去掉没用的小数位的0
ELSE.
L_STR = '0'."为空就给个空值
ENDIF.
CONDENSE L_STR.
HOEHE_C = L_STR.
*--------------------------------------------------------------------------------
*packing list 1
*--------------------------------------------------------------------------------
*--------------------------------------------------------------------------------
*packing list 2
*--------------------------------------------------------------------------------
CLEAR LAENG_C1 .
CLEAR BREIT_C1 .
CLEAR HOEHE_C1 .
LAENG_C1 = GT_MARM_C-LAENG .
BREIT_C1 = GT_MARM_C-BREIT .
HOEHE_C1 = GT_MARM_C-HOEHE .
CLEAR L_STR .
IF LAENG_C1 IS NOT INITIAL.
L_STR = LAENG_C1.
CONDENSE L_STR. " 去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '0'."去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '.'."去掉没用的小数位的0
ELSE.
L_STR = '0'."为空就给个空值
ENDIF.
CONDENSE L_STR.
LAENG_C1 = L_STR.
CLEAR L_STR .
IF BREIT_C1 IS NOT INITIAL.
L_STR = BREIT_C1.
CONDENSE L_STR. " 去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '0'."去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '.'."去掉没用的小数位的0
ELSE.
L_STR = '0'."为空就给个空值
ENDIF.
CONDENSE L_STR.
BREIT_C1 = L_STR.
CLEAR L_STR .
IF HOEHE_C1 IS NOT INITIAL.
L_STR = HOEHE_C1.
CONDENSE L_STR. " 去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '0'."去掉没用的小数位的0
SHIFT L_STR RIGHT DELETING TRAILING '.'."去掉没用的小数位的0
ELSE.
L_STR = '0'."为空就给个空值
ENDIF.
CONDENSE L_STR.
HOEHE_C1 = L_STR.
*--------------------------------------------------------------------------------
*packing list 2
*--------------------------------------------------------------------------------
IF R1 IS NOT INITIAL.
*--------------------------------------------------------------------------------
*packing list 1
*--------------------------------------------------------------------------------
IF TEMP_Z >= 1.
DO TEMP_Z TIMES.
ADD 1 TO LV_ITEM .
GT_DATA_IT_B-ITEM = LV_ITEM .
GT_DATA_IT_B-VBELN = GT_DATA_IT-VBELN .
GT_DATA_IT_B-POSNR = GT_DATA_IT-POSNR .
GT_DATA_IT_B-AUBEL = GT_DATA_IT-AUBEL .
GT_DATA_IT_B-AUPOS = GT_DATA_IT-AUPOS .
GT_DATA_IT_B-MATNR = GT_DATA_IT-MATNR .
GT_DATA_IT_B-FKIMG = GT_DATA_IT-FKIMG .
GT_DATA_IT_B-KDMAT = GT_DATA_IT-KDMAT .
GT_DATA_IT_B-YKBJZ = GT_DATA_IT-NTGEW * SUM_PAL ."一卡板的净重
GT_DATA_IT_B-YKBMZ = GT_DATA_IT-YKBMZ . "一卡板的毛重
GT_DATA_IT_B-YKBZS = GT_MARM-UMREZ . "一卡板装多少个
GT_DATA_IT_B-KBCKG = LAENG_C && '*' && BREIT_C && '*' && HOEHE_C. "卡板的长宽高
CONDENSE GT_DATA_IT_B-KBCKG.
IF GT_MARM_C-UMREN <> 0.
GT_DATA_IT_B-KTXZS = GT_MARM_C-UMREZ / GT_MARM_C-UMREN . "卡通箱装多少个
ENDIF.
CLEAR TEMPC_Z .
CLEAR TEMPC .
IF GT_MARM-UMREN <> 0 AND GT_MARM_C-UMREN <> 0 AND GT_MARM_C-UMREZ / GT_MARM_C-UMREN <> 0.
TEMPC_Z = ( GT_MARM-UMREZ / GT_MARM-UMREN ) DIV ( GT_MARM_C-UMREZ / GT_MARM_C-UMREN )."取整
TEMPC = ( GT_MARM-UMREZ / GT_MARM-UMREN ) MOD ( GT_MARM_C-UMREZ / GT_MARM_C-UMREN )."取余
IF TEMPC > 0.
GT_DATA_IT_B-KTXSL = TEMPC_Z + 1 . "卡通箱数量
ELSE .
GT_DATA_IT_B-KTXSL = TEMPC_Z . "卡通箱数量
ENDIF.
ENDIF.
APPEND GT_DATA_IT_B .
CLEAR GT_DATA_IT_B .
ENDDO.
ENDIF.
ADD 1 TO LV_ITEM .
GT_DATA_IT_B-ITEM = LV_ITEM .
GT_DATA_IT_B-VBELN = GT_DATA_IT-VBELN .
GT_DATA_IT_B-POSNR = GT_DATA_IT-POSNR .
GT_DATA_IT_B-AUBEL = GT_DATA_IT-AUBEL .
GT_DATA_IT_B-AUPOS = GT_DATA_IT-AUPOS .
GT_DATA_IT_B-MATNR = GT_DATA_IT-MATNR .
GT_DATA_IT_B-FKIMG = GT_DATA_IT-FKIMG .
GT_DATA_IT_B-KDMAT = GT_DATA_IT-KDMAT .
GT_DATA_IT_B-KBCKG = LAENG_C && '*' && BREIT_C && '*' && HOEHE_C. "卡板的长宽高
GT_DATA_IT_B-KBCKGS = LAENG_C * BREIT_C * HOEHE_C .
CONDENSE GT_DATA_IT_B-KBCKG.
CLEAR GT_MARM_C .
READ TABLE GT_MARM_C WITH KEY MEINH = 'KAR'.
IF GT_MARM_C-UMREN <> 0.
GT_DATA_IT_B-KTXZS = GT_MARM_C-UMREZ / GT_MARM_C-UMREN . "卡通箱装多少个
ENDIF.
GT_DATA_IT_B-YKBZS = TEMP . "一卡板装多少个
GT_DATA_IT_B-YKBJZ = GT_DATA_IT-NTGEW * TEMP . "一卡板的净重
IF GT_MARM-UMREZ <> 0.
GT_DATA_IT_B-YKBMZ = GT_DATA_IT_B-YKBZS * GT_DATA_IT-YKBMZ / GT_MARM-UMREZ . "一卡板的毛重
ENDIF.
CLEAR TEMPC_Z .
CLEAR TEMPC .
IF GT_MARM_C-UMREN <> 0 AND GT_MARM_C-UMREZ / GT_MARM_C-UMREN <> 0.
TEMPC_Z = TEMP DIV ( GT_MARM_C-UMREZ / GT_MARM_C-UMREN )."取整
TEMPC = TEMP MOD ( GT_MARM_C-UMREZ / GT_MARM_C-UMREN )."取余
IF TEMPC > 0.
GT_DATA_IT_B-KTXSL = TEMPC_Z + 1 . "卡通箱数量
ELSE .
GT_DATA_IT_B-KTXSL = TEMPC_Z . "卡通箱数量
ENDIF.
ENDIF.
APPEND GT_DATA_IT_B .
CLEAR GT_DATA_IT_B .
*--------------------------------------------------------------------------------
*packing list 1
*--------------------------------------------------------------------------------
ELSE .
*--------------------------------------------------------------------------------
*packing list 2
*--------------------------------------------------------------------------------
IF TEMPX_Z >= 1.
IF TEMPX_Z = 1.
GT_DATA_IT_C-ITEM = 1 .
ELSE .
GT_DATA_IT_C-ITEM = '1-' && TEMPX_Z .
ENDIF.
GT_DATA_IT_C-VBELN = GT_DATA_IT-VBELN .
GT_DATA_IT_C-POSNR = GT_DATA_IT-POSNR .
GT_DATA_IT_C-AUBEL = GT_DATA_IT-AUBEL .
GT_DATA_IT_C-AUPOS = GT_DATA_IT-AUPOS .
GT_DATA_IT_C-MATNR = GT_DATA_IT-MATNR .
GT_DATA_IT_C-FKIMG = GT_DATA_IT-FKIMG .
GT_DATA_IT_C-KDMAT = GT_DATA_IT-KDMAT .
GT_DATA_IT_C-ARKTX = GT_DATA_IT-ARKTX .
GT_DATA_IT_C-LAENG_C = LAENG_C1 .
GT_DATA_IT_C-BREIT_C = BREIT_C1 .
GT_DATA_IT_C-HOEHE_C = HOEHE_C1 .
SELECT SINGLE BSTKD INTO GT_DATA_IT_C-BSTKD FROM VBKD
WHERE VBELN = GT_DATA_IT-AUBEL
AND POSNR = GT_DATA_IT-AUPOS
.
GT_DATA_IT_C-KTXZS = SUM_CAR * TEMPX_Z .
CONDENSE GT_DATA_IT_C-KTXZS.
GT_DATA_IT_C-KTXSL = TEMPX_Z .
CONDENSE GT_DATA_IT_C-KTXSL.
GT_DATA_IT_C-KBCKGS = LAENG_C1 * BREIT_C1 * HOEHE_C1 * TEMPX_Z / 100000.
CONDENSE GT_DATA_IT_C-KBCKGS.
GT_DATA_IT_C-KTXMZ = TEMPX_Z * GT_MARM_C-BRGEW .
* CONDENSE GT_DATA_IT_C-KTXMZ.
GT_DATA_IT_C-KTXJZ = SUM_CAR * TEMPX_Z * GT_DATA_IT-NTGEW .
CONDENSE GT_DATA_IT_C-KTXJZ.
APPEND GT_DATA_IT_C .
CLEAR GT_DATA_IT_C .
ENDIF.
GT_DATA_IT_C-ITEM = TEMPX_Z + 1 .
GT_DATA_IT_C-VBELN = GT_DATA_IT-VBELN .
GT_DATA_IT_C-POSNR = GT_DATA_IT-POSNR .
GT_DATA_IT_C-AUBEL = GT_DATA_IT-AUBEL .
GT_DATA_IT_C-AUPOS = GT_DATA_IT-AUPOS .
GT_DATA_IT_C-MATNR = GT_DATA_IT-MATNR .
GT_DATA_IT_C-FKIMG = GT_DATA_IT-FKIMG .
GT_DATA_IT_C-KDMAT = GT_DATA_IT-KDMAT .
GT_DATA_IT_C-ARKTX = GT_DATA_IT-ARKTX .
GT_DATA_IT_C-LAENG_C = LAENG_C1 .
GT_DATA_IT_C-BREIT_C = BREIT_C1 .
GT_DATA_IT_C-HOEHE_C = HOEHE_C1 .
SELECT SINGLE BSTKD INTO GT_DATA_IT_C-BSTKD FROM VBKD
WHERE VBELN = GT_DATA_IT-AUBEL
AND POSNR = GT_DATA_IT-AUPOS
.
GT_DATA_IT_C-KTXZS = TEMPX .
CONDENSE GT_DATA_IT_C-KTXZS.
GT_DATA_IT_C-KTXSL = 1 .
CONDENSE GT_DATA_IT_C-KTXSL.
GT_DATA_IT_C-KBCKGS = LAENG_C1 * BREIT_C1 * HOEHE_C1 / 100000.
CONDENSE GT_DATA_IT_C-KBCKGS.
IF SUM_CAR IS NOT INITIAL.
GT_DATA_IT_C-KTXMZ = GT_MARM_C-BRGEW * TEMPX / SUM_CAR + S_BRGEW.
* CONDENSE GT_DATA_IT_C-KTXMZ.
ENDIF.
GT_DATA_IT_C-KTXJZ = TEMPX * GT_DATA_IT-NTGEW .
CONDENSE GT_DATA_IT_C-KTXJZ.
APPEND GT_DATA_IT_C .
CLEAR GT_DATA_IT_C .
*--------------------------------------------------------------------------------
*packing list 2
*--------------------------------------------------------------------------------
ENDIF.
MODIFY GT_DATA_IT .
CLEAR GT_DATA_IT .
ENDLOOP.
IF R1 IS NOT INITIAL.
*--------------------------------------------------------------------------------
*packing list 1
*--------------------------------------------------------------------------------
LOOP AT GT_DATA_IT_B.
GT_DATA-KTXZS = GT_DATA-KTXZS + GT_DATA_IT_B-KTXZS .
GT_DATA-KTXSL = GT_DATA-KTXSL + GT_DATA_IT_B-KTXSL .
GT_DATA-YKBZS = GT_DATA-YKBZS + GT_DATA_IT_B-YKBZS .
GT_DATA-YKBJZ = GT_DATA-YKBJZ + GT_DATA_IT_B-YKBJZ .
GT_DATA-YKBMZ = GT_DATA-YKBMZ + GT_DATA_IT_B-YKBMZ .
GT_DATA-KBCKGS = GT_DATA-KBCKGS + GT_DATA_IT_B-KBCKGS .
CLEAR GT_DATA_IT_B.
ENDLOOP.
GT_DATA-KBCKGS = GT_DATA-KBCKGS / 1000000 .
CONDENSE GT_DATA-KTXZS.
CONDENSE GT_DATA-KTXSL.
CONDENSE GT_DATA-YKBZS.
CONDENSE GT_DATA-YKBJZ.
CONDENSE GT_DATA-YKBMZ.
CONDENSE GT_DATA-KBCKGS.
*--------------------------------------------------------------------------------
*packing list 1
*--------------------------------------------------------------------------------
ELSE .
*--------------------------------------------------------------------------------
*packing list 2
*--------------------------------------------------------------------------------
LOOP AT GT_DATA_IT_C.
GT_DATA-KTXJZ = GT_DATA-KTXJZ + GT_DATA_IT_C-KTXJZ .
GT_DATA-KTXMZ = GT_DATA-KTXMZ + GT_DATA_IT_C-KTXMZ .
GT_DATA-KBCKGS = GT_DATA-KBCKGS + GT_DATA_IT_C-KBCKGS .
CLEAR GT_DATA_IT_C.
ENDLOOP.
GT_DATA-KTXZS = GT_DATA_IT-FKIMG .
GT_DATA-KTXSL = TEMPX_Z + 1 .
CONDENSE GT_DATA-KTXJZ.
* CONDENSE GT_DATA-KTXMZ.
CONDENSE GT_DATA-KBCKGS.
CONDENSE GT_DATA-KTXZS.
CONDENSE GT_DATA-KTXSL.
*--------------------------------------------------------------------------------
*packing list 2
*--------------------------------------------------------------------------------
ENDIF.
IF R1 IS NOT INITIAL.
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = L_CONTROL_PARAMETERS
OUTPUT_OPTIONS = L_OUTPUT_OPTIONS
USER_SETTINGS = ''
GT_DATA_HEAD = GT_DATA
TABLES
GT_DATA_ITEM = GT_DATA_IT_B[]
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.
ELSE .
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = L_CONTROL_PARAMETERS
OUTPUT_OPTIONS = L_OUTPUT_OPTIONS
USER_SETTINGS = ''
GT_DATA_HEAD = GT_DATA
TABLES
GT_DATA_ITEM = GT_DATA_IT_C[]
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.
ENDIF.
CLEAR GT_DATA .
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 .
MESSAGE '您还没有选择任何条目!' TYPE 'S'DISPLAY LIKE 'W' .
ENDIF.
WHEN 'ALL'.
LOOP AT GT_DATA_A.
GT_DATA_A-CKBOX = 'X' .
MODIFY GT_DATA_A .
CLEAR GT_DATA_A .
ENDLOOP.
WHEN 'SAL'.
LOOP AT GT_DATA_A.
GT_DATA_A-CKBOX = '' .
MODIFY GT_DATA_A .
CLEAR GT_DATA_A .
ENDLOOP.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
AT SELECTION-SCREEN.
PERFORM SCREEN_SETTING.
START-OF-SELECTION.
PERFORM FOM_GETDATA .
PERFORM FRM_DISPLAY.
SD-Packing List 打印
最新推荐文章于 2024-10-17 13:14:02 发布