*&---------------------------------------------------------------------*
*& Report Z02MMR022
*&
*&---------------------------------------------------------------------*
* Author: Vince
* Closeing Date:
* Description: List of Billing Notification
************************************************************************
* Ver Date Author Modify Des
************************************************************************
* 1. 2013/03/10 Vince New Program
************************************************************************
REPORT YTEST999 MESSAGE-ID ZHR01 .
**********************************************************************
* TABLES
**********************************************************************
**********************************************************************
* TYPES
**********************************************************************
TYPES : BEGIN OF TP_HEAD ,
EBELN LIKE EKKO -EBELN , "Contract Number
CONTRNAME TYPE STRING , "Contract Description
DEPARTMENT TYPE STRING , "Department
WAERS LIKE EKKO -WAERS , "Currency
KTWRT LIKE EKKO -KTWRT , "Contract Amount
KDATB LIKE EKKO -KDATB , "Contract Start Date
KDATE LIKE EKKO -KDATE , "Contract End Date
LIFNR LIKE EKKO -LIFNR , "vendor
NAME1 TYPE CHAR200 , "Vendor name
BAMOUNT LIKE EKKO -KTWRT , "Billing Amount
END OF TP_HEAD .
TYPES : BEGIN OF TP_OUT ,
CBOX TYPE AQ_MARKBG ,
EBELN LIKE EKPO -EBELN , "Service Order
EBELP LIKE EKPO -EBELP , "Line Item
MATKL TYPE CHAR100 , "Service Category
TXZ01 LIKE EKPO -TXZ01 , "Short Text
MBLNR LIKE MKPF -MBLNR , "Service Receipt
WRBTR LIKE EKBE -WRBTR , "Amount
BNNUM LIKE Z02MMBNNO -BNNUM , "BN Number
BNDAT LIKE Z02MMBNNO -BNDAT , "BN Date
GJAHR LIKE EKBE -GJAHR ,
BOX_NAME ,
END OF TP_OUT .
**********************************************************************
* DATA
**********************************************************************
DATA : GS_HEAD TYPE TP_HEAD .
DATA : GT_OUT TYPE TABLE OF TP_OUT ,
GS_OUT TYPE TP_OUT .
DATA : GT_PRINT TYPE TABLE OF TP_OUT ,
GS_PRINT TYPE TP_OUT .
DATA : GT_FCAT TYPE SLIS_T_FIELDCAT_ALV ,
GS_FCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV ,
GT_SORT TYPE SLIS_T_SORTINFO_ALV ,
GS_SORT TYPE LINE OF SLIS_T_SORTINFO_ALV ,
GS_LAYO TYPE SLIS_LAYOUT_ALV ,
GS_SETTINGS TYPE LVC_S_GLAY .
**********************************************************************
* CONSTANTS
**********************************************************************
**********************************************************************
* SELECTION SCREEN
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BL01 WITH FRAME TITLE TEXT - 001 .
PARAMETERS :P_BUKRS LIKE EKKO -BUKRS DEFAULT '1000' OBLIGATORY .
PARAMETERS :P_EBELN LIKE EKKO -EBELN OBLIGATORY .
SELECTION-SCREEN END OF BLOCK BL01 .
**********************************************************************
* START OF SELECTION
**********************************************************************
START-OF-SELECTION .
PERFORM FRM_GET_HEAD .
PERFORM FRM_GET_ITEM .
**********************************************************************
* END OF SELECTION
**********************************************************************
END-OF-SELECTION .
PERFORM FRM_BUILD_FIELDCAT .
PERFORM FRM_SET_LAYOUT .
PERFORM FRM_DISPLAY_ALV .
**********************************************************************
* SUBROUTINES
**********************************************************************
*&---------------------------------------------------------------------*
*& Form FRM_GET_HEAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_HEAD .
DATA : LT_READ LIKE TABLE OF TLINE WITH HEADER LINE .
DATA : L_NAME LIKE THEAD -TDNAME .
DATA : L_ADRNR LIKE LFA1 -ADRNR ,
LS_ADRC LIKE ADRC .
SELECT SINGLE EBELN WAERS KTWRT KDATB KDATE LIFNR
INTO CORRESPONDING FIELDS OF GS_HEAD
FROM EKKO
WHERE EBELN = P_EBELN
AND BUKRS = P_BUKRS
AND BSART = 'CCTR' .
IF SY -SUBRC EQ 0 .
L_NAME = P_EBELN .
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = 'K93'
LANGUAGE = SY -LANGU
NAME = L_NAME
OBJECT = 'EKKO'
TABLES
LINES = LT_READ
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .
IF SY -SUBRC EQ 0 .
LOOP AT LT_READ .
CONCATENATE GS_HEAD -CONTRNAME LT_READ -TDLINE INTO GS_HEAD -CONTRNAME .
ENDLOOP .
ENDIF .
SELECT SINGLE ADRNR INTO L_ADRNR
FROM LFA1
WHERE LIFNR = GS_HEAD -LIFNR .
SELECT SINGLE * INTO LS_ADRC
FROM ADRC
WHERE ADDRNUMBER = L_ADRNR .
CONCATENATE LS_ADRC -NAME1 LS_ADRC -NAME2 INTO GS_HEAD -NAME1 .
ELSE .
MESSAGE S000 (ZHR01 ) DISPLAY LIKE 'E' .
STOP .
ENDIF .
ENDFORM . " FRM_GET_HEAD
*&---------------------------------------------------------------------*
*& Form FRM_GET_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_ITEM .
DATA : LT_EKPO TYPE TABLE OF EKPO ,
LS_EKPO TYPE EKPO ,
LT_EKBE TYPE TABLE OF EKBE ,
LS_EKBE TYPE EKBE ,
LT_T023T TYPE TABLE OF T023T ,
LS_T023T TYPE T023T ,
LT_EKKO TYPE TABLE OF EKKO ,
LS_EKKO TYPE EKKO ,
L_INDEX TYPE SY - INDEX .
CLEAR :LT_EKPO ,LT_EKBE ,LT_T023T ,LT_EKKO ,L_INDEX .
SELECT * FROM EKPO INTO TABLE LT_EKPO
WHERE KONNR = GS_HEAD -EBELN .
CHECK LT_EKPO IS NOT INITIAL .
SELECT * FROM EKKO INTO TABLE LT_EKKO
FOR ALL ENTRIES IN LT_EKPO
WHERE EBELN = LT_EKPO -EBELN
AND BSART = 'ZSPO' .
LOOP AT LT_EKPO INTO LS_EKPO .
L_INDEX = SY -TABIX .
READ TABLE LT_EKKO INTO LS_EKKO WITH KEY EBELN = LS_EKPO -EBELN .
IF SY -SUBRC NE 0 .
DELETE LT_EKPO INDEX L_INDEX .
ENDIF .
ENDLOOP .
CHECK LT_EKPO IS NOT INITIAL .
SELECT * FROM EKBE INTO TABLE LT_EKBE
FOR ALL ENTRIES IN LT_EKPO
WHERE EBELN = LT_EKPO -EBELN
AND EBELP = LT_EKPO -EBELP
AND VGABE = '1' .
SELECT * FROM T023T INTO TABLE LT_T023T
FOR ALL ENTRIES IN LT_EKPO
WHERE MATKL = LT_EKPO -MATKL .
LOOP AT LT_EKBE INTO LS_EKBE .
GS_OUT -EBELN = LS_EKBE -EBELN .
GS_OUT -EBELP = LS_EKBE -EBELP .
READ TABLE LT_EKPO INTO LS_EKPO WITH KEY EBELN = GS_OUT -EBELN EBELP = GS_OUT -EBELP .
READ TABLE LT_T023T INTO LS_T023T WITH KEY MATKL = LS_EKPO -MATKL .
GS_OUT -MATKL = LS_T023T -WGBEZ60 .
GS_OUT -TXZ01 = LS_EKPO -TXZ01 .
GS_OUT -MBLNR = LS_EKBE -BELNR .
GS_OUT -WRBTR = LS_EKBE -WRBTR .
IF LS_EKBE -SHKZG EQ 'H' .
GS_OUT -WRBTR = - GS_OUT -WRBTR .
ENDIF .
GS_OUT -GJAHR = LS_EKBE -GJAHR .
SELECT SINGLE BNNUM BNDAT INTO (GS_OUT -BNNUM ,GS_OUT -BNDAT )
FROM Z02MMBNNO
WHERE MBLNR = GS_OUT -MBLNR
AND GJAHR = GS_OUT -GJAHR .
IF GS_OUT -BNNUM IS NOT INITIAL .
GS_HEAD -BAMOUNT = GS_HEAD -BAMOUNT + GS_OUT -WRBTR .
ENDIF .
APPEND GS_OUT TO GT_OUT .
CLEAR : GS_OUT ,LS_EKPO ,LS_T023T .
ENDLOOP .
ENDFORM . " FRM_GET_ITEM
*&---------------------------------------------------------------------*
*& Form FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_BUILD_FIELDCAT .
CLEAR GS_FCAT .
GS_FCAT -FIELDNAME = 'CBOX' .
GS_FCAT -SELTEXT_L = 'Select' .
GS_FCAT - CHECKBOX = 'X' .
GS_FCAT -FIX_COLUMN = 'X' .
GS_FCAT - EDIT = 'X' .
GS_FCAT -OUTPUTLEN = '5' .
APPEND GS_FCAT TO GT_FCAT .
DEFINE APPEND_FCAT .
CLEAR GS_FCAT .
GS_FCAT -FIELDNAME = &1 .
GS_FCAT -SELTEXT_L = &2 .
GS_FCAT -NO_OUT = &3 .
GS_FCAT -NO_ZERO = &4 .
GS_FCAT -OUTPUTLEN = &5 .
APPEND GS_FCAT TO GT_FCAT .
END-OF-DEFINITION .
APPEND_FCAT 'EBELN' 'Service Order' ( 001 ) '' '' '12' .
APPEND_FCAT 'EBELP' 'Line Item' ( 002 ) '' '' '6' .
APPEND_FCAT 'MATKL' 'Service Category' ( 003 ) '' '' '50' .
APPEND_FCAT 'TXZ01' 'Short Text' ( 004 ) '' '' '30' .
APPEND_FCAT 'MBLNR' 'Service Receipt' ( 005 ) '' '' '12' .
APPEND_FCAT 'WRBTR' 'Amount' ( 006 ) '' '' '13' .
APPEND_FCAT 'BNNUM' 'BN Number' ( 007 ) '' '' '20' .
APPEND_FCAT 'BNDAT' 'BN Date' ( 008 ) '' '' '12' .
ENDFORM . " FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SET_LAYOUT .
GS_LAYO -ZEBRA = 'X' .
* GS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYO -BOX_FIELDNAME = 'BOX_NAME' .
ENDFORM . " FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY_ALV .
GS_SETTINGS -EDT_CLL_CB = 'X' .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY -REPID
IS_LAYOUT = GS_LAYO
IT_FIELDCAT = GT_FCAT
I_GRID_SETTINGS = GS_SETTINGS
I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
I_SAVE = 'A'
I_DEFAULT = 'X'
TABLES
T_OUTTAB = GT_OUT .
ENDFORM . " FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form frm_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->SELFIELD text
*----------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING P_UCOMM TYPE SY -UCOMM SELFIELD TYPE SLIS_SELFIELD .
CASE P_UCOMM .
WHEN '&SALL' .
PERFORM FRM_SELECT_ALL USING 'X' .
SELFIELD - REFRESH = 'X' .
WHEN '&DESAL' .
PERFORM FRM_SELECT_ALL USING ' ' .
SELFIELD - REFRESH = 'X' .
WHEN '&PRINT' .
PERFORM FRM_PRINT_BN .
WHEN '&CBN' .
PERFORM FRM_GENERATE_BN .
SELFIELD - REFRESH = 'X' .
ENDCASE .
ENDFORM . "user_command
*&---------------------------------------------------------------------*
*& Form FRM_SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
FORM FRM_SET_STATUS USING P_EXTAB TYPE SLIS_T_EXTAB .
SET PF-STATUS 'STATUS01' .
ENDFORM . "f_status
*&---------------------------------------------------------------------*
*& Form FRM_SELECT_ALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0737 text
*----------------------------------------------------------------------*
FORM FRM_SELECT_ALL USING VALUE (P_X ) .
DATA LS_OUT LIKE GS_OUT .
LOOP AT GT_OUT INTO LS_OUT .
LS_OUT -CBOX = P_X .
MODIFY GT_OUT FROM LS_OUT INDEX SY -TABIX .
ENDLOOP .
ENDFORM . " FRM_SELECT_ALL
*&---------------------------------------------------------------------*
*& Form FRM_GENERATE_BN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GENERATE_BN .
DATA :L_BN ( 3 ) TYPE N .
DATA :LS_Z02MMBNNO LIKE Z02MMBNNO .
CLEAR L_BN .
SELECT MAX ( BMSNO ) INTO L_BN FROM Z02MMBNNO WHERE EBELN = P_EBELN .
LOOP AT GT_OUT INTO GS_OUT WHERE BNNUM = '' AND CBOX = 'X' .
L_BN = L_BN + 1 .
CONCATENATE 'BN' P_EBELN '-' L_BN INTO GS_OUT -BNNUM .
GS_OUT -BNDAT = SY -DATUM .
GS_HEAD -BAMOUNT = GS_HEAD -BAMOUNT + GS_OUT -WRBTR .
CLEAR LS_Z02MMBNNO .
LS_Z02MMBNNO -MBLNR = GS_OUT -MBLNR .
LS_Z02MMBNNO -GJAHR = GS_OUT -GJAHR .
LS_Z02MMBNNO -EBELN = P_EBELN .
LS_Z02MMBNNO -BMSNO = L_BN .
LS_Z02MMBNNO -BNNUM = GS_OUT -BNNUM .
LS_Z02MMBNNO -BNDAT = GS_OUT -BNDAT .
INSERT Z02MMBNNO FROM LS_Z02MMBNNO .
MODIFY GT_OUT FROM GS_OUT INDEX SY -TABIX .
ENDLOOP .
ENDFORM . " FRM_GENERATE_BN
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_BN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PRINT_BN .
DATA : FUNC_MOD_NAME TYPE RS38L_FNAM , " 子程序名
OUTPUT_OPTIONS TYPE SSFCOMPOP , " SAP Smart Forms: 智能写作器 (传输) 选项
IT_JOB_OUTPUT_INFO TYPE SSFCRESCL ,
CONTROL_PARAMETERS TYPE SSFCTRLOP . " Smart Forms: 控制结构
CLEAR GT_PRINT .
LOOP AT GT_OUT INTO GS_OUT WHERE CBOX = 'X' AND BNNUM NE '' .
GS_PRINT = GS_OUT .
APPEND GS_PRINT TO GT_PRINT .
CLEAR : GS_PRINT ,GS_OUT .
ENDLOOP .
CHECK GT_PRINT IS NOT INITIAL .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMM_FORM_06'
IMPORTING
FM_NAME = FUNC_MOD_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3 .
OUTPUT_OPTIONS -TDNEWID = 'X' .
CONTROL_PARAMETERS -NO_CLOSE = SPACE .
* control_parameters-no_open = 'X'.
CONTROL_PARAMETERS -PREVIEW = 'X' .
* control_parameters-no_dialog = 'X'.
CALL FUNCTION FUNC_MOD_NAME
EXPORTING
CONTROL_PARAMETERS = CONTROL_PARAMETERS
OUTPUT_OPTIONS = OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5 .
IF SY -SUBRC <> 0 .
ENDIF .
ENDFORM . " FRM_PRINT_BN
*& Report Z02MMR022
*&
*&---------------------------------------------------------------------*
* Author: Vince
* Closeing Date:
* Description: List of Billing Notification
************************************************************************
* Ver Date Author Modify Des
************************************************************************
* 1. 2013/03/10 Vince New Program
************************************************************************
REPORT YTEST999 MESSAGE-ID ZHR01 .
**********************************************************************
* TABLES
**********************************************************************
**********************************************************************
* TYPES
**********************************************************************
TYPES : BEGIN OF TP_HEAD ,
EBELN LIKE EKKO -EBELN , "Contract Number
CONTRNAME TYPE STRING , "Contract Description
DEPARTMENT TYPE STRING , "Department
WAERS LIKE EKKO -WAERS , "Currency
KTWRT LIKE EKKO -KTWRT , "Contract Amount
KDATB LIKE EKKO -KDATB , "Contract Start Date
KDATE LIKE EKKO -KDATE , "Contract End Date
LIFNR LIKE EKKO -LIFNR , "vendor
NAME1 TYPE CHAR200 , "Vendor name
BAMOUNT LIKE EKKO -KTWRT , "Billing Amount
END OF TP_HEAD .
TYPES : BEGIN OF TP_OUT ,
CBOX TYPE AQ_MARKBG ,
EBELN LIKE EKPO -EBELN , "Service Order
EBELP LIKE EKPO -EBELP , "Line Item
MATKL TYPE CHAR100 , "Service Category
TXZ01 LIKE EKPO -TXZ01 , "Short Text
MBLNR LIKE MKPF -MBLNR , "Service Receipt
WRBTR LIKE EKBE -WRBTR , "Amount
BNNUM LIKE Z02MMBNNO -BNNUM , "BN Number
BNDAT LIKE Z02MMBNNO -BNDAT , "BN Date
GJAHR LIKE EKBE -GJAHR ,
BOX_NAME ,
END OF TP_OUT .
**********************************************************************
* DATA
**********************************************************************
DATA : GS_HEAD TYPE TP_HEAD .
DATA : GT_OUT TYPE TABLE OF TP_OUT ,
GS_OUT TYPE TP_OUT .
DATA : GT_PRINT TYPE TABLE OF TP_OUT ,
GS_PRINT TYPE TP_OUT .
DATA : GT_FCAT TYPE SLIS_T_FIELDCAT_ALV ,
GS_FCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV ,
GT_SORT TYPE SLIS_T_SORTINFO_ALV ,
GS_SORT TYPE LINE OF SLIS_T_SORTINFO_ALV ,
GS_LAYO TYPE SLIS_LAYOUT_ALV ,
GS_SETTINGS TYPE LVC_S_GLAY .
**********************************************************************
* CONSTANTS
**********************************************************************
**********************************************************************
* SELECTION SCREEN
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BL01 WITH FRAME TITLE TEXT - 001 .
PARAMETERS :P_BUKRS LIKE EKKO -BUKRS DEFAULT '1000' OBLIGATORY .
PARAMETERS :P_EBELN LIKE EKKO -EBELN OBLIGATORY .
SELECTION-SCREEN END OF BLOCK BL01 .
**********************************************************************
* START OF SELECTION
**********************************************************************
START-OF-SELECTION .
PERFORM FRM_GET_HEAD .
PERFORM FRM_GET_ITEM .
**********************************************************************
* END OF SELECTION
**********************************************************************
END-OF-SELECTION .
PERFORM FRM_BUILD_FIELDCAT .
PERFORM FRM_SET_LAYOUT .
PERFORM FRM_DISPLAY_ALV .
**********************************************************************
* SUBROUTINES
**********************************************************************
*&---------------------------------------------------------------------*
*& Form FRM_GET_HEAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_HEAD .
DATA : LT_READ LIKE TABLE OF TLINE WITH HEADER LINE .
DATA : L_NAME LIKE THEAD -TDNAME .
DATA : L_ADRNR LIKE LFA1 -ADRNR ,
LS_ADRC LIKE ADRC .
SELECT SINGLE EBELN WAERS KTWRT KDATB KDATE LIFNR
INTO CORRESPONDING FIELDS OF GS_HEAD
FROM EKKO
WHERE EBELN = P_EBELN
AND BUKRS = P_BUKRS
AND BSART = 'CCTR' .
IF SY -SUBRC EQ 0 .
L_NAME = P_EBELN .
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = 'K93'
LANGUAGE = SY -LANGU
NAME = L_NAME
OBJECT = 'EKKO'
TABLES
LINES = LT_READ
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .
IF SY -SUBRC EQ 0 .
LOOP AT LT_READ .
CONCATENATE GS_HEAD -CONTRNAME LT_READ -TDLINE INTO GS_HEAD -CONTRNAME .
ENDLOOP .
ENDIF .
SELECT SINGLE ADRNR INTO L_ADRNR
FROM LFA1
WHERE LIFNR = GS_HEAD -LIFNR .
SELECT SINGLE * INTO LS_ADRC
FROM ADRC
WHERE ADDRNUMBER = L_ADRNR .
CONCATENATE LS_ADRC -NAME1 LS_ADRC -NAME2 INTO GS_HEAD -NAME1 .
ELSE .
MESSAGE S000 (ZHR01 ) DISPLAY LIKE 'E' .
STOP .
ENDIF .
ENDFORM . " FRM_GET_HEAD
*&---------------------------------------------------------------------*
*& Form FRM_GET_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_ITEM .
DATA : LT_EKPO TYPE TABLE OF EKPO ,
LS_EKPO TYPE EKPO ,
LT_EKBE TYPE TABLE OF EKBE ,
LS_EKBE TYPE EKBE ,
LT_T023T TYPE TABLE OF T023T ,
LS_T023T TYPE T023T ,
LT_EKKO TYPE TABLE OF EKKO ,
LS_EKKO TYPE EKKO ,
L_INDEX TYPE SY - INDEX .
CLEAR :LT_EKPO ,LT_EKBE ,LT_T023T ,LT_EKKO ,L_INDEX .
SELECT * FROM EKPO INTO TABLE LT_EKPO
WHERE KONNR = GS_HEAD -EBELN .
CHECK LT_EKPO IS NOT INITIAL .
SELECT * FROM EKKO INTO TABLE LT_EKKO
FOR ALL ENTRIES IN LT_EKPO
WHERE EBELN = LT_EKPO -EBELN
AND BSART = 'ZSPO' .
LOOP AT LT_EKPO INTO LS_EKPO .
L_INDEX = SY -TABIX .
READ TABLE LT_EKKO INTO LS_EKKO WITH KEY EBELN = LS_EKPO -EBELN .
IF SY -SUBRC NE 0 .
DELETE LT_EKPO INDEX L_INDEX .
ENDIF .
ENDLOOP .
CHECK LT_EKPO IS NOT INITIAL .
SELECT * FROM EKBE INTO TABLE LT_EKBE
FOR ALL ENTRIES IN LT_EKPO
WHERE EBELN = LT_EKPO -EBELN
AND EBELP = LT_EKPO -EBELP
AND VGABE = '1' .
SELECT * FROM T023T INTO TABLE LT_T023T
FOR ALL ENTRIES IN LT_EKPO
WHERE MATKL = LT_EKPO -MATKL .
LOOP AT LT_EKBE INTO LS_EKBE .
GS_OUT -EBELN = LS_EKBE -EBELN .
GS_OUT -EBELP = LS_EKBE -EBELP .
READ TABLE LT_EKPO INTO LS_EKPO WITH KEY EBELN = GS_OUT -EBELN EBELP = GS_OUT -EBELP .
READ TABLE LT_T023T INTO LS_T023T WITH KEY MATKL = LS_EKPO -MATKL .
GS_OUT -MATKL = LS_T023T -WGBEZ60 .
GS_OUT -TXZ01 = LS_EKPO -TXZ01 .
GS_OUT -MBLNR = LS_EKBE -BELNR .
GS_OUT -WRBTR = LS_EKBE -WRBTR .
IF LS_EKBE -SHKZG EQ 'H' .
GS_OUT -WRBTR = - GS_OUT -WRBTR .
ENDIF .
GS_OUT -GJAHR = LS_EKBE -GJAHR .
SELECT SINGLE BNNUM BNDAT INTO (GS_OUT -BNNUM ,GS_OUT -BNDAT )
FROM Z02MMBNNO
WHERE MBLNR = GS_OUT -MBLNR
AND GJAHR = GS_OUT -GJAHR .
IF GS_OUT -BNNUM IS NOT INITIAL .
GS_HEAD -BAMOUNT = GS_HEAD -BAMOUNT + GS_OUT -WRBTR .
ENDIF .
APPEND GS_OUT TO GT_OUT .
CLEAR : GS_OUT ,LS_EKPO ,LS_T023T .
ENDLOOP .
ENDFORM . " FRM_GET_ITEM
*&---------------------------------------------------------------------*
*& Form FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_BUILD_FIELDCAT .
CLEAR GS_FCAT .
GS_FCAT -FIELDNAME = 'CBOX' .
GS_FCAT -SELTEXT_L = 'Select' .
GS_FCAT - CHECKBOX = 'X' .
GS_FCAT -FIX_COLUMN = 'X' .
GS_FCAT - EDIT = 'X' .
GS_FCAT -OUTPUTLEN = '5' .
APPEND GS_FCAT TO GT_FCAT .
DEFINE APPEND_FCAT .
CLEAR GS_FCAT .
GS_FCAT -FIELDNAME = &1 .
GS_FCAT -SELTEXT_L = &2 .
GS_FCAT -NO_OUT = &3 .
GS_FCAT -NO_ZERO = &4 .
GS_FCAT -OUTPUTLEN = &5 .
APPEND GS_FCAT TO GT_FCAT .
END-OF-DEFINITION .
APPEND_FCAT 'EBELN' 'Service Order' ( 001 ) '' '' '12' .
APPEND_FCAT 'EBELP' 'Line Item' ( 002 ) '' '' '6' .
APPEND_FCAT 'MATKL' 'Service Category' ( 003 ) '' '' '50' .
APPEND_FCAT 'TXZ01' 'Short Text' ( 004 ) '' '' '30' .
APPEND_FCAT 'MBLNR' 'Service Receipt' ( 005 ) '' '' '12' .
APPEND_FCAT 'WRBTR' 'Amount' ( 006 ) '' '' '13' .
APPEND_FCAT 'BNNUM' 'BN Number' ( 007 ) '' '' '20' .
APPEND_FCAT 'BNDAT' 'BN Date' ( 008 ) '' '' '12' .
ENDFORM . " FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SET_LAYOUT .
GS_LAYO -ZEBRA = 'X' .
* GS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYO -BOX_FIELDNAME = 'BOX_NAME' .
ENDFORM . " FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY_ALV .
GS_SETTINGS -EDT_CLL_CB = 'X' .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY -REPID
IS_LAYOUT = GS_LAYO
IT_FIELDCAT = GT_FCAT
I_GRID_SETTINGS = GS_SETTINGS
I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
I_SAVE = 'A'
I_DEFAULT = 'X'
TABLES
T_OUTTAB = GT_OUT .
ENDFORM . " FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form frm_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->SELFIELD text
*----------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING P_UCOMM TYPE SY -UCOMM SELFIELD TYPE SLIS_SELFIELD .
CASE P_UCOMM .
WHEN '&SALL' .
PERFORM FRM_SELECT_ALL USING 'X' .
SELFIELD - REFRESH = 'X' .
WHEN '&DESAL' .
PERFORM FRM_SELECT_ALL USING ' ' .
SELFIELD - REFRESH = 'X' .
WHEN '&PRINT' .
PERFORM FRM_PRINT_BN .
WHEN '&CBN' .
PERFORM FRM_GENERATE_BN .
SELFIELD - REFRESH = 'X' .
ENDCASE .
ENDFORM . "user_command
*&---------------------------------------------------------------------*
*& Form FRM_SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
FORM FRM_SET_STATUS USING P_EXTAB TYPE SLIS_T_EXTAB .
SET PF-STATUS 'STATUS01' .
ENDFORM . "f_status
*&---------------------------------------------------------------------*
*& Form FRM_SELECT_ALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0737 text
*----------------------------------------------------------------------*
FORM FRM_SELECT_ALL USING VALUE (P_X ) .
DATA LS_OUT LIKE GS_OUT .
LOOP AT GT_OUT INTO LS_OUT .
LS_OUT -CBOX = P_X .
MODIFY GT_OUT FROM LS_OUT INDEX SY -TABIX .
ENDLOOP .
ENDFORM . " FRM_SELECT_ALL
*&---------------------------------------------------------------------*
*& Form FRM_GENERATE_BN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GENERATE_BN .
DATA :L_BN ( 3 ) TYPE N .
DATA :LS_Z02MMBNNO LIKE Z02MMBNNO .
CLEAR L_BN .
SELECT MAX ( BMSNO ) INTO L_BN FROM Z02MMBNNO WHERE EBELN = P_EBELN .
LOOP AT GT_OUT INTO GS_OUT WHERE BNNUM = '' AND CBOX = 'X' .
L_BN = L_BN + 1 .
CONCATENATE 'BN' P_EBELN '-' L_BN INTO GS_OUT -BNNUM .
GS_OUT -BNDAT = SY -DATUM .
GS_HEAD -BAMOUNT = GS_HEAD -BAMOUNT + GS_OUT -WRBTR .
CLEAR LS_Z02MMBNNO .
LS_Z02MMBNNO -MBLNR = GS_OUT -MBLNR .
LS_Z02MMBNNO -GJAHR = GS_OUT -GJAHR .
LS_Z02MMBNNO -EBELN = P_EBELN .
LS_Z02MMBNNO -BMSNO = L_BN .
LS_Z02MMBNNO -BNNUM = GS_OUT -BNNUM .
LS_Z02MMBNNO -BNDAT = GS_OUT -BNDAT .
INSERT Z02MMBNNO FROM LS_Z02MMBNNO .
MODIFY GT_OUT FROM GS_OUT INDEX SY -TABIX .
ENDLOOP .
ENDFORM . " FRM_GENERATE_BN
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_BN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PRINT_BN .
DATA : FUNC_MOD_NAME TYPE RS38L_FNAM , " 子程序名
OUTPUT_OPTIONS TYPE SSFCOMPOP , " SAP Smart Forms: 智能写作器 (传输) 选项
IT_JOB_OUTPUT_INFO TYPE SSFCRESCL ,
CONTROL_PARAMETERS TYPE SSFCTRLOP . " Smart Forms: 控制结构
CLEAR GT_PRINT .
LOOP AT GT_OUT INTO GS_OUT WHERE CBOX = 'X' AND BNNUM NE '' .
GS_PRINT = GS_OUT .
APPEND GS_PRINT TO GT_PRINT .
CLEAR : GS_PRINT ,GS_OUT .
ENDLOOP .
CHECK GT_PRINT IS NOT INITIAL .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMM_FORM_06'
IMPORTING
FM_NAME = FUNC_MOD_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3 .
OUTPUT_OPTIONS -TDNEWID = 'X' .
CONTROL_PARAMETERS -NO_CLOSE = SPACE .
* control_parameters-no_open = 'X'.
CONTROL_PARAMETERS -PREVIEW = 'X' .
* control_parameters-no_dialog = 'X'.
CALL FUNCTION FUNC_MOD_NAME
EXPORTING
CONTROL_PARAMETERS = CONTROL_PARAMETERS
OUTPUT_OPTIONS = OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5 .
IF SY -SUBRC <> 0 .
ENDIF .
ENDFORM . " FRM_PRINT_BN