*&---------------------------------------------------------------------*
*& Report ZMMF_PO_PRINT
*&
*&---------------------------------------------------------------------*
*&Creator:Real
*&Create date:2008.5.26
*&Last Change By:Real
*&Last change date: date:2008.12.22
*&Description:PO Print by Smartform
*&---------------------------------------------------------------------*
REPORT ZMMF_PO_PRINT MESSAGE-ID ZMSEG.
TABLES:NAST,TNAPR,EKKO,EKPO.
DATA XSCREEN(1) TYPE C.
DATA GS_PO_HEAER LIKE ZMPO_HERDER .
DATA GS_PO_HEAER1 LIKE ZMPO_HERDER OCCURS 0 WITH HEADER LINE .
DATA:LT_ZPO_ITEM LIKE ZMPO_ITEM OCCURS 0 WITH HEADER LINE.
DATA:LT_ZPO_ITEM1 LIKE ZMPO_ITEM OCCURS 0 WITH HEADER LINE.
DATA: GI_RETCODE TYPE I,
ADRNR2 TYPE T001W-ADRNR,
SUPP_NAME1 LIKE ADRC-NAME1,
SUPP_NAME2 LIKE ADRC-NAME1,
SUPP_NAMECO LIKE ADRC-NAME_CO,
SUPP_STR1 LIKE ADRC-STR_SUPPL1,
SUPP_STR2 LIKE ADRC-STR_SUPPL1,
SUPP_STREET LIKE ADRC-STREET,
SUPP_CITY LIKE ADRC-CITY1,
SUPP_CN LIKE ADRC-COUNTRY,
SUPP_CN_NAME LIKE T005T-LANDX,
SUPP_ALL TYPE STRING,"
SUPP_FRISTNAME LIKE KNVK-NAMEV,
SUPP_LASTNAME LIKE KNVK-NAME1,
SUPP_ANRED LIKE KNVK-ANRED,
SUPP_PRSNR LIKE KNVK-PRSNR,
TEL_NUMBER LIKE ADR2-TEL_NUMBER,
TEL_EXTENS LIKE ADR2-TEL_EXTENS,
FAX_NUMBER LIKE ADRC-FAX_NUMBER,
SUPP_TEL LIKE KNVK-TELF1,
ADRNR TYPE T001W-ADRNR,
KTOKK LIKE LFA1-KTOKK,
DELV_NAME1 LIKE ADRC-NAME1,
DELV_NAME2 LIKE ADRC-NAME1,
DELV_CO LIKE ADRC-NAME_CO,
DELV_STR1 LIKE ADRC-STR_SUPPL1, "street2
DELV_STR2 LIKE ADRC-STR_SUPPL1, "street3
DELV_STREET LIKE ADRC-STREET,
DELV_CITY LIKE ADRC-CITY1,
DELV_CN LIKE ADRC-COUNTRY,
DELV_CN_NAME LIKE T005T-LANDX,
DELV_FRISTNAME LIKE KNVK-NAMEV,
DELV_LASTNAME LIKE KNVK-NAME1,
DELV_ANRED LIKE KNVK-ANRED,
DELV_PRSNR LIKE KNVK-PRSNR,
TEL_NUMBER1 LIKE ADR2-TEL_NUMBER,
TEL_EXTENS1 LIKE ADR2-TEL_EXTENS,
DELV_TEL LIKE KNVK-TELF1,
PUR_TOTAL LIKE EKPO-NETWR,
TAX_TOTAL LIKE EKPO-NETWR,
NET_TOTAL LIKE EKPO-NETWR,
COM_PLACE LIKE ADRC-STREET,
DEL_PLACE LIKE LFA1-STRAS,
HEAD_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE,
REMARK LIKE TLINE-TDLINE,
ITEM_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE,
TDNAME LIKE RSTXT-TDNAME,
GAP TYPE C VALUE ' ',
GAP1 TYPE C VALUE '-',
POMENGE1 LIKE EKPO-MENGE,
POMENGE2 LIKE EKPO-MENGE .
DATA:AUTH_BUKRS LIKE EKKO-BUKRS.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_BUKRS TYPE EKPO-BUKRS MEMORY ID BUK .
SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN OBLIGATORY DEFAULT '4500006390',
S_BSART FOR EKKO-BSART,
S_AEDAT FOR EKKO-AEDAT,
S_BEDAT FOR EKKO-BEDAT,
S_LIFNR FOR EKKO-LIFNR,
S_MATNR FOR EKPO-MATNR,
S_LGORT FOR EKPO-LGORT NO-DISPLAY.
PARAMETERS:P_XSCRN TYPE C DEFAULT 'X' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
TNAPR-SFORM = 'ZMM_PO_PRINT'.
PERFORM ENTRY_NEU USING GI_RETCODE P_XSCRN.
END-OF-SELECTION.
INITIALIZATION.
CLEAR: ADRNR2,
SUPP_NAME1,
SUPP_NAME2,
SUPP_NAMECO,
SUPP_STR1,
SUPP_STR2,
SUPP_STREET,
SUPP_CITY,
SUPP_CN,
SUPP_CN_NAME,
SUPP_ALL,
SUPP_FRISTNAME,
SUPP_LASTNAME,
SUPP_ANRED,
SUPP_PRSNR,
TEL_NUMBER,
TEL_EXTENS,
SUPP_TEL,
ADRNR,
DELV_NAME1,
DELV_NAME2,
DELV_STR1,
DELV_STR2,
DELV_STREET,
DELV_CITY,
DELV_CN,
DELV_CN_NAME,
DELV_FRISTNAME,
DELV_LASTNAME,
DELV_ANRED,
DELV_PRSNR,
TEL_NUMBER1,
TEL_EXTENS1,
DELV_TEL,
PUR_TOTAL,
TAX_TOTAL,
NET_TOTAL,
COM_PLACE,
DEL_PLACE,
HEAD_LINE,
REMARK,
ITEM_LINE,
TDNAME .
AT SELECTION-SCREEN.
* CLEAR AUTH_BUKRS.
* SELECT SINGLE BUKRS
* INTO AUTH_BUKRS
* FROM EKKO
* WHERE EBELN = LV_EBELN.
* AUTHORITY-CHECK OBJECT 'ZOBJECT' ID 'BUKRS' FIELD auth_BUKRS.
* IF SY-SUBRC <> 0.
* MESSAGE E998(SABAPDOCU) WITH auth_BUKRS.
* ENDIF.
*&---------------------------------------------------------------------*
*& Form entry_neu
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RETURN_CODE text
* -->US_SCREEN text
*----------------------------------------------------------------------*
FORM ENTRY_NEU USING RETURN_CODE US_SCREEN.
DATA: LI_RETCODE TYPE SY-SUBRC.
XSCREEN = US_SCREEN.
PERFORM PROCESSING USING US_SCREEN
CHANGING LI_RETCODE.
IF LI_RETCODE NE 0.
RETURN_CODE = 1.
ELSE.
RETURN_CODE = 0.
ENDIF.
ENDFORM. "entry_neu
*&---------------------------------------------------------------------*
*& Form processing
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROC_SCREEN text
* -->CF_RETCODE text
*----------------------------------------------------------------------*
FORM PROCESSING USING PROC_SCREEN
CHANGING CF_RETCODE.
DATA: LC_FM_NAME TYPE RS38L_FNAM.
DATA: LS_CONTROL_PARAM TYPE SSFCTRLOP.
DATA: LS_COMPOSER_PARAM TYPE SSFCOMPOP.
DATA: LC_FORMNAME TYPE TDSFNAME.
DATA: LS_JOB_INFO TYPE SSFCRESCL.
* SmartForm from customizing table TNAPR
LC_FORMNAME = TNAPR-SFORM.
* select print data
PERFORM GET_DATA CHANGING CF_RETCODE.
IF CF_RETCODE = 0.
* determine smartform function module for invoice
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = LC_FORMNAME
IMPORTING
FM_NAME = LC_FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* error handling
CF_RETCODE = SY-SUBRC.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ENDIF.
* Clear variant
CLEAR GS_PO_HEAER.
LOOP AT GS_PO_HEAER1 INTO GS_PO_HEAER.
AT FIRST.
LS_CONTROL_PARAM-NO_CLOSE = 'X'.
ENDAT.
AT LAST.
LS_CONTROL_PARAM-NO_CLOSE = ''.
ENDAT.
LS_COMPOSER_PARAM-TDDEST = 'LP01'.
LS_COMPOSER_PARAM-TDIMMED = 'X'.
IF XSCREEN = 'X'.
LS_COMPOSER_PARAM-TDNOPRINT = 'X'.
ENDIF.
LS_CONTROL_PARAM-DEVICE = 'PRINTER'.
* cs_control_param-device = 'MAIL'.
LS_CONTROL_PARAM-NO_DIALOG = 'X'.
LS_CONTROL_PARAM-PREVIEW = 'X'.
* CS_CONTROL_PARAM-LANGU = 'M'.
CLEAR LT_ZPO_ITEM.
REFRESH LT_ZPO_ITEM.
LOOP AT LT_ZPO_ITEM1 INTO LT_ZPO_ITEM WHERE EBELN = GS_PO_HEAER-EBELN.
APPEND LT_ZPO_ITEM.
ENDLOOP.
CALL FUNCTION LC_FM_NAME
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL_PARAM
OUTPUT_OPTIONS = LS_COMPOSER_PARAM
USER_SETTINGS = SPACE
GS_PO_HEAER = GS_PO_HEAER
PUR_TOTAL = PUR_TOTAL
TAX_TOTAL = TAX_TOTAL
NET_TOTAL = NET_TOTAL
DEL_PLACE = DEL_PLACE
REMARK = REMARK
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_INFO
TABLES
IT_ZPO_ITEM = LT_ZPO_ITEM[]
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* error handling
CF_RETCODE = SY-SUBRC.
PERFORM PROTOCOL_UPDATE.
* get SmartForm protocoll and store it in the NAST protocoll
PERFORM ADD_SMFRM_PROT.
ENDIF.
LS_CONTROL_PARAM-NO_OPEN = 'X'.
ENDLOOP.
ENDFORM. "PROCESSING
*&---------------------------------------------------------------------*
*& Form protocol_update
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PROTOCOL_UPDATE .
CHECK XSCREEN = SPACE.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = SYST-MSGID
MSG_NR = SYST-MSGNO
MSG_TY = SYST-MSGTY
MSG_V1 = SYST-MSGV1
MSG_V2 = SYST-MSGV2
MSG_V3 = SYST-MSGV3
MSG_V4 = SYST-MSGV4
EXCEPTIONS
OTHERS = 1.
ENDFORM. " protocol_update
*&---------------------------------------------------------------------*
*& Form add_smfrm_prot
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ADD_SMFRM_PROT .
DATA: LT_ERRORTAB TYPE TSFERROR.
FIELD-SYMBOLS: <FS_ERRORTAB> TYPE LINE OF TSFERROR.
* get smart form protocoll
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
ERRORTAB = LT_ERRORTAB.
* add smartform protocoll to nast protocoll
LOOP AT LT_ERRORTAB ASSIGNING <FS_ERRORTAB>.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = <FS_ERRORTAB>-MSGID
MSG_NR = <FS_ERRORTAB>-MSGNO
MSG_TY = <FS_ERRORTAB>-MSGTY
MSG_V1 = <FS_ERRORTAB>-MSGV1
MSG_V2 = <FS_ERRORTAB>-MSGV2
MSG_V3 = <FS_ERRORTAB>-MSGV3
MSG_V4 = <FS_ERRORTAB>-MSGV4
EXCEPTIONS
OTHERS = 1.
ENDLOOP.
ENDFORM. " add_smfrm_prot
*&---------------------------------------------------------------------*
*& Form protocol_update_spool
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->SYST_MSGNO text
* -->P_LS_SPOOLID text
* -->P_SPACE1 text
* -->P_SPACE2 text
* -->P_SPACE3 text
*----------------------------------------------------------------------*
FORM PROTOCOL_UPDATE_SPOOL USING SYST_MSGNO
P_LS_SPOOLID
P_SPACE1
P_SPACE2
P_SPACE3.
SYST-MSGID = 'ME'.
SYST-MSGNO = SYST_MSGNO.
SYST-MSGV1 = P_LS_SPOOLID.
CONDENSE SYST-MSGV1.
CHECK XSCREEN = SPACE.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = SYST-MSGID
MSG_NR = SYST-MSGNO
MSG_TY = SYST-MSGTY
MSG_V1 = SYST-MSGV1
MSG_V2 = P_SPACE1
MSG_V3 = P_SPACE2
MSG_V4 = P_SPACE3
EXCEPTIONS
OTHERS = 1.
ENDFORM. " protocol_update_spool
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CF_RETCODE text
*----------------------------------------------------------------------*
FORM GET_DATA CHANGING CF_RETCODE.
DATA LV_EBELN LIKE EKKO-EBELN.
IF NAST-OBJKY+10 NE SPACE.
NAST-OBJKY = NAST-OBJKY+16(10).
ELSE.
NAST-OBJKY = NAST-OBJKY.
ENDIF.
LV_EBELN = NAST-OBJKY.
REFRESH:GS_PO_HEAER1,LT_ZPO_ITEM1.
SELECT DISTINCT EKKO~BUKRS EKKO~LIFNR EKKO~EBELN EKKO~BSART EKKO~AEDAT
EKKO~INCO1 EKKO~INCO2 EKPO~WERKS EKKO~WAERS EKKO~FRGZU EKKO~ZTERM
EKKO~ERNAM EKKO~BEDAT
INTO CORRESPONDING FIELDS OF TABLE GS_PO_HEAER1
FROM EKKO
JOIN EKPO ON EKPO~EBELN = EKKO~EBELN
WHERE EKKO~EBELN IN S_EBELN
AND EKKO~BSART IN S_BSART
AND EKKO~AEDAT IN S_AEDAT
AND EKKO~BEDAT IN S_BEDAT
AND EKKO~LIFNR IN S_LIFNR
AND EKPO~MATNR IN S_MATNR.
DESCRIBE TABLE GS_PO_HEAER1 LINES SY-TMAXL.
IF SY-TMAXL = 0.
MESSAGE I004(ZMSEG).
STOP.
ENDIF.
SELECT EKPO~EBELN EKPO~EBELP EKPO~MATNR EKPO~EMATN EKPO~TXZ01
EKPO~MENGE EKPO~MEINS EKPO~NETPR EKKO~WAERS EKKO~BSART
EKPO~NETWR EKPO~PEINH EKPO~MWSKZ EKPO~INFNR EKPO~WERKS
EKPO~BUKRS EKPO~BPRME EKPO~BPUMZ EKPO~BPUMN "EKET~MENGE EKET~EINDT
* ekpo~umren ekpo~umrez ekpo~lmein
INTO CORRESPONDING FIELDS OF TABLE LT_ZPO_ITEM1
FROM EKPO
JOIN EKKO ON EKPO~EBELN = EKKO~EBELN
FOR ALL ENTRIES IN GS_PO_HEAER1
* JOIN EKET ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP
WHERE EKPO~EBELN = GS_PO_HEAER1-EBELN
AND EKPO~LOEKZ <> 'L'.
CLEAR PUR_TOTAL.
CLEAR TAX_TOTAL.
CLEAR NET_TOTAL.
LOOP AT GS_PO_HEAER1.
CLEAR:TAX_TOTAL,NET_TOTAL,PUR_TOTAL.
LOOP AT LT_ZPO_ITEM1 WHERE EBELN = GS_PO_HEAER1-EBELN.
*when the currency is JPY,
IF LT_ZPO_ITEM-WAERS = 'JPY'.
LT_ZPO_ITEM-NETPR = LT_ZPO_ITEM-NETPR * 100.
ENDIF.
*when the currency is JPY
CLEAR: POMENGE1,POMENGE2.
SELECT B~MAKTX A~MFRPN A~WRKST
INTO (LT_ZPO_ITEM-MAKTX,LT_ZPO_ITEM-MFRPN,LT_ZPO_ITEM-WRKST)
FROM MARA AS A
JOIN MAKT AS B ON A~MATNR = B~MATNR
WHERE A~MATNR = LT_ZPO_ITEM-EMATN.
ENDSELECT.
IF LT_ZPO_ITEM-PEINH <> 0.
LT_ZPO_ITEM-NETPR = LT_ZPO_ITEM-NETPR / LT_ZPO_ITEM-PEINH.
ENDIF.
CLEAR:POMENGE1,POMENGE2.
POMENGE1 = LT_ZPO_ITEM-MENGE.
IF FRAC( POMENGE1 ) <> 0.
LT_ZPO_ITEM-MENGE1 = POMENGE1 .
ELSE.
LT_ZPO_ITEM-MENGE1 = TRUNC( POMENGE1 ).
ENDIF.
POMENGE2 = LT_ZPO_ITEM-MENGE * LT_ZPO_ITEM-BPUMZ / LT_ZPO_ITEM-BPUMN.
LT_ZPO_ITEM-NETWR = POMENGE2 * LT_ZPO_ITEM-NETPR.
IF FRAC( POMENGE2 ) <> 0.
LT_ZPO_ITEM-MENGE2 = POMENGE2 .
ELSE.
LT_ZPO_ITEM-MENGE2 = TRUNC( POMENGE2 ).
ENDIF.
LT_ZPO_ITEM-NETPR1 = LT_ZPO_ITEM-NETPR.
LT_ZPO_ITEM-NETWR1 = LT_ZPO_ITEM-NETWR.
CONDENSE LT_ZPO_ITEM-MENGE1.
CONDENSE LT_ZPO_ITEM-MENGE2.
CONDENSE LT_ZPO_ITEM-NETPR1.
CONDENSE LT_ZPO_ITEM-NETWR1.
CLEAR LT_ZPO_ITEM-ITEM_TAX.
IF LT_ZPO_ITEM-MWSKZ = 'J0'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 0.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J1'.
LT_ZPO_ITEM-TAX_CODE = '17#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 17 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J2'.
LT_ZPO_ITEM-TAX_CODE = '13#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 13 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J3'.
LT_ZPO_ITEM-TAX_CODE = '7#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 7 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J4'.
LT_ZPO_ITEM-TAX_CODE = '6#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 6 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J5'.
LT_ZPO_ITEM-TAX_CODE = '4#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 4 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J6'.
LT_ZPO_ITEM-TAX_CODE = '3#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 3 / 100.
ENDIF.
LT_ZPO_ITEM-ITEM_TAX1 = LT_ZPO_ITEM-ITEM_TAX.
CONDENSE LT_ZPO_ITEM-ITEM_TAX1.
TAX_TOTAL = TAX_TOTAL + LT_ZPO_ITEM-ITEM_TAX.
NET_TOTAL = NET_TOTAL + LT_ZPO_ITEM-NETWR.
PUR_TOTAL = NET_TOTAL + TAX_TOTAL.
*get po info text
* CLEAR TDNAME.
* CONCATENATE LT_ZPO_ITEM-INFNR LT_ZPO_ITEM-BUKRS '0'
* LT_ZPO_ITEM-WERKS INTO TDNAME.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* CLIENT = SY-MANDT
* ID = 'BT'
* LANGUAGE = '1'
* NAME = TDNAME
* OBJECT = 'EINE'
** ARCHIVE_HANDLE = 0
** LOCAL_CAT = ' '
** IMPORTING
** HEADER =
* TABLES
* LINES = ITEM_LINE
* 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 = 0.
* LOOP AT ITEM_LINE.
* CONCATENATE LT_ZPO_ITEM-ITEMTEXT ITEM_LINE-TDLINE INTO
* LT_ZPO_ITEM-ITEMTEXT.
** lt_zpo_item-itemtext = item_LINE-TDLINE.
* ENDLOOP.
* CLEAR ITEM_LINE.
* ENDIF.
SELECT SINGLE EINDT INTO LT_ZPO_ITEM-EINDT
FROM EKET WHERE EBELN = LT_ZPO_ITEM-EBELN
AND EBELP = LT_ZPO_ITEM-EBELP.
PERFORM DELETE_ZERO USING LT_ZPO_ITEM-EBELP.
MODIFY LT_ZPO_ITEM1.
CLEAR LT_ZPO_ITEM1.
ENDLOOP.
*Modify header PO
SELECT ADRNR
INTO ADRNR2
FROM T001W
WHERE WERKS = GS_PO_HEAER1-WERKS.
IF SY-SUBRC = 0.
SELECT STREET
INTO GS_PO_HEAER1-ADDRESS
FROM ADRC
WHERE ADDRNUMBER = ADRNR2.
ENDSELECT.
ENDIF.
ENDSELECT.
SELECT ADRNR
INTO ADRNR
FROM LFA1
WHERE LIFNR = GS_PO_HEAER1-LIFNR.
ENDSELECT.
SELECT NAME1 NAME2 CITY1 NAME_CO STR_SUPPL1 STR_SUPPL2
COUNTRY STREET TEL_NUMBER FAX_NUMBER
INTO (SUPP_NAME1,SUPP_NAME2,SUPP_CITY,SUPP_NAMECO,SUPP_STR1,
SUPP_STR2,SUPP_CN,SUPP_STREET,TEL_NUMBER,FAX_NUMBER)
FROM ADRC
WHERE ADDRNUMBER = ADRNR.
ENDSELECT.
SELECT LANDX
INTO SUPP_CN_NAME
FROM T005T
WHERE SPRAS = 'E'
AND LAND1 = SUPP_CN.
ENDSELECT.
CONDENSE SUPP_NAME1.
CONDENSE SUPP_NAME2.
GS_PO_HEAER1-SUPP_CO = SUPP_NAMECO.
GS_PO_HEAER1-SUPP_STRONE = SUPP_STR1.
GS_PO_HEAER1-SUPP_STRTWO = SUPP_STR2.
GS_PO_HEAER1-SUPP_TEL = TEL_NUMBER.
GS_PO_HEAER1-SUPP_FAX = FAX_NUMBER.
GS_PO_HEAER1-ADDRESS = SUPP_STREET.
CONCATENATE SUPP_STREET SUPP_CITY SUPP_CN_NAME
INTO GS_PO_HEAER1-SUPP_CN SEPARATED BY GAP .
CONCATENATE SUPP_NAME1 SUPP_NAME2 INTO GS_PO_HEAER1-SUPP_NAME
SEPARATED BY GAP.
SELECT SINGLE KOINH INTO GS_PO_HEAER1-KOINH FROM LFBK
WHERE LIFNR = GS_PO_HEAER1-LIFNR.
SELECT SINGLE SMTP_ADDR INTO GS_PO_HEAER1-SMTP_ADDR1
FROM ADR6 WHERE ADDRNUMBER = ADRNR.
SELECT SINGLE TEXT1
INTO GS_PO_HEAER1-TEXT1
FROM T052U
WHERE ZTERM = GS_PO_HEAER1-ZTERM.
MODIFY GS_PO_HEAER1.
CLEAR GS_PO_HEAER1.
ENDLOOP.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form delete_zero
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P1 text
*----------------------------------------------------------------------*
FORM DELETE_ZERO USING P_P1.
CALL FUNCTION 'BKK_DELETE_LEADING_ZERO'
CHANGING
C_FIELD = P_P1.
ENDFORM. " delete_zero
*& Report ZMMF_PO_PRINT
*&
*&---------------------------------------------------------------------*
*&Creator:Real
*&Create date:2008.5.26
*&Last Change By:Real
*&Last change date: date:2008.12.22
*&Description:PO Print by Smartform
*&---------------------------------------------------------------------*
REPORT ZMMF_PO_PRINT MESSAGE-ID ZMSEG.
TABLES:NAST,TNAPR,EKKO,EKPO.
DATA XSCREEN(1) TYPE C.
DATA GS_PO_HEAER LIKE ZMPO_HERDER .
DATA GS_PO_HEAER1 LIKE ZMPO_HERDER OCCURS 0 WITH HEADER LINE .
DATA:LT_ZPO_ITEM LIKE ZMPO_ITEM OCCURS 0 WITH HEADER LINE.
DATA:LT_ZPO_ITEM1 LIKE ZMPO_ITEM OCCURS 0 WITH HEADER LINE.
DATA: GI_RETCODE TYPE I,
ADRNR2 TYPE T001W-ADRNR,
SUPP_NAME1 LIKE ADRC-NAME1,
SUPP_NAME2 LIKE ADRC-NAME1,
SUPP_NAMECO LIKE ADRC-NAME_CO,
SUPP_STR1 LIKE ADRC-STR_SUPPL1,
SUPP_STR2 LIKE ADRC-STR_SUPPL1,
SUPP_STREET LIKE ADRC-STREET,
SUPP_CITY LIKE ADRC-CITY1,
SUPP_CN LIKE ADRC-COUNTRY,
SUPP_CN_NAME LIKE T005T-LANDX,
SUPP_ALL TYPE STRING,"
SUPP_FRISTNAME LIKE KNVK-NAMEV,
SUPP_LASTNAME LIKE KNVK-NAME1,
SUPP_ANRED LIKE KNVK-ANRED,
SUPP_PRSNR LIKE KNVK-PRSNR,
TEL_NUMBER LIKE ADR2-TEL_NUMBER,
TEL_EXTENS LIKE ADR2-TEL_EXTENS,
FAX_NUMBER LIKE ADRC-FAX_NUMBER,
SUPP_TEL LIKE KNVK-TELF1,
ADRNR TYPE T001W-ADRNR,
KTOKK LIKE LFA1-KTOKK,
DELV_NAME1 LIKE ADRC-NAME1,
DELV_NAME2 LIKE ADRC-NAME1,
DELV_CO LIKE ADRC-NAME_CO,
DELV_STR1 LIKE ADRC-STR_SUPPL1, "street2
DELV_STR2 LIKE ADRC-STR_SUPPL1, "street3
DELV_STREET LIKE ADRC-STREET,
DELV_CITY LIKE ADRC-CITY1,
DELV_CN LIKE ADRC-COUNTRY,
DELV_CN_NAME LIKE T005T-LANDX,
DELV_FRISTNAME LIKE KNVK-NAMEV,
DELV_LASTNAME LIKE KNVK-NAME1,
DELV_ANRED LIKE KNVK-ANRED,
DELV_PRSNR LIKE KNVK-PRSNR,
TEL_NUMBER1 LIKE ADR2-TEL_NUMBER,
TEL_EXTENS1 LIKE ADR2-TEL_EXTENS,
DELV_TEL LIKE KNVK-TELF1,
PUR_TOTAL LIKE EKPO-NETWR,
TAX_TOTAL LIKE EKPO-NETWR,
NET_TOTAL LIKE EKPO-NETWR,
COM_PLACE LIKE ADRC-STREET,
DEL_PLACE LIKE LFA1-STRAS,
HEAD_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE,
REMARK LIKE TLINE-TDLINE,
ITEM_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE,
TDNAME LIKE RSTXT-TDNAME,
GAP TYPE C VALUE ' ',
GAP1 TYPE C VALUE '-',
POMENGE1 LIKE EKPO-MENGE,
POMENGE2 LIKE EKPO-MENGE .
DATA:AUTH_BUKRS LIKE EKKO-BUKRS.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_BUKRS TYPE EKPO-BUKRS MEMORY ID BUK .
SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN OBLIGATORY DEFAULT '4500006390',
S_BSART FOR EKKO-BSART,
S_AEDAT FOR EKKO-AEDAT,
S_BEDAT FOR EKKO-BEDAT,
S_LIFNR FOR EKKO-LIFNR,
S_MATNR FOR EKPO-MATNR,
S_LGORT FOR EKPO-LGORT NO-DISPLAY.
PARAMETERS:P_XSCRN TYPE C DEFAULT 'X' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
TNAPR-SFORM = 'ZMM_PO_PRINT'.
PERFORM ENTRY_NEU USING GI_RETCODE P_XSCRN.
END-OF-SELECTION.
INITIALIZATION.
CLEAR: ADRNR2,
SUPP_NAME1,
SUPP_NAME2,
SUPP_NAMECO,
SUPP_STR1,
SUPP_STR2,
SUPP_STREET,
SUPP_CITY,
SUPP_CN,
SUPP_CN_NAME,
SUPP_ALL,
SUPP_FRISTNAME,
SUPP_LASTNAME,
SUPP_ANRED,
SUPP_PRSNR,
TEL_NUMBER,
TEL_EXTENS,
SUPP_TEL,
ADRNR,
DELV_NAME1,
DELV_NAME2,
DELV_STR1,
DELV_STR2,
DELV_STREET,
DELV_CITY,
DELV_CN,
DELV_CN_NAME,
DELV_FRISTNAME,
DELV_LASTNAME,
DELV_ANRED,
DELV_PRSNR,
TEL_NUMBER1,
TEL_EXTENS1,
DELV_TEL,
PUR_TOTAL,
TAX_TOTAL,
NET_TOTAL,
COM_PLACE,
DEL_PLACE,
HEAD_LINE,
REMARK,
ITEM_LINE,
TDNAME .
AT SELECTION-SCREEN.
* CLEAR AUTH_BUKRS.
* SELECT SINGLE BUKRS
* INTO AUTH_BUKRS
* FROM EKKO
* WHERE EBELN = LV_EBELN.
* AUTHORITY-CHECK OBJECT 'ZOBJECT' ID 'BUKRS' FIELD auth_BUKRS.
* IF SY-SUBRC <> 0.
* MESSAGE E998(SABAPDOCU) WITH auth_BUKRS.
* ENDIF.
*&---------------------------------------------------------------------*
*& Form entry_neu
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RETURN_CODE text
* -->US_SCREEN text
*----------------------------------------------------------------------*
FORM ENTRY_NEU USING RETURN_CODE US_SCREEN.
DATA: LI_RETCODE TYPE SY-SUBRC.
XSCREEN = US_SCREEN.
PERFORM PROCESSING USING US_SCREEN
CHANGING LI_RETCODE.
IF LI_RETCODE NE 0.
RETURN_CODE = 1.
ELSE.
RETURN_CODE = 0.
ENDIF.
ENDFORM. "entry_neu
*&---------------------------------------------------------------------*
*& Form processing
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROC_SCREEN text
* -->CF_RETCODE text
*----------------------------------------------------------------------*
FORM PROCESSING USING PROC_SCREEN
CHANGING CF_RETCODE.
DATA: LC_FM_NAME TYPE RS38L_FNAM.
DATA: LS_CONTROL_PARAM TYPE SSFCTRLOP.
DATA: LS_COMPOSER_PARAM TYPE SSFCOMPOP.
DATA: LC_FORMNAME TYPE TDSFNAME.
DATA: LS_JOB_INFO TYPE SSFCRESCL.
* SmartForm from customizing table TNAPR
LC_FORMNAME = TNAPR-SFORM.
* select print data
PERFORM GET_DATA CHANGING CF_RETCODE.
IF CF_RETCODE = 0.
* determine smartform function module for invoice
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = LC_FORMNAME
IMPORTING
FM_NAME = LC_FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* error handling
CF_RETCODE = SY-SUBRC.
PERFORM PROTOCOL_UPDATE.
ENDIF.
ENDIF.
* Clear variant
CLEAR GS_PO_HEAER.
LOOP AT GS_PO_HEAER1 INTO GS_PO_HEAER.
AT FIRST.
LS_CONTROL_PARAM-NO_CLOSE = 'X'.
ENDAT.
AT LAST.
LS_CONTROL_PARAM-NO_CLOSE = ''.
ENDAT.
LS_COMPOSER_PARAM-TDDEST = 'LP01'.
LS_COMPOSER_PARAM-TDIMMED = 'X'.
IF XSCREEN = 'X'.
LS_COMPOSER_PARAM-TDNOPRINT = 'X'.
ENDIF.
LS_CONTROL_PARAM-DEVICE = 'PRINTER'.
* cs_control_param-device = 'MAIL'.
LS_CONTROL_PARAM-NO_DIALOG = 'X'.
LS_CONTROL_PARAM-PREVIEW = 'X'.
* CS_CONTROL_PARAM-LANGU = 'M'.
CLEAR LT_ZPO_ITEM.
REFRESH LT_ZPO_ITEM.
LOOP AT LT_ZPO_ITEM1 INTO LT_ZPO_ITEM WHERE EBELN = GS_PO_HEAER-EBELN.
APPEND LT_ZPO_ITEM.
ENDLOOP.
CALL FUNCTION LC_FM_NAME
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL_PARAM
OUTPUT_OPTIONS = LS_COMPOSER_PARAM
USER_SETTINGS = SPACE
GS_PO_HEAER = GS_PO_HEAER
PUR_TOTAL = PUR_TOTAL
TAX_TOTAL = TAX_TOTAL
NET_TOTAL = NET_TOTAL
DEL_PLACE = DEL_PLACE
REMARK = REMARK
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_INFO
TABLES
IT_ZPO_ITEM = LT_ZPO_ITEM[]
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* error handling
CF_RETCODE = SY-SUBRC.
PERFORM PROTOCOL_UPDATE.
* get SmartForm protocoll and store it in the NAST protocoll
PERFORM ADD_SMFRM_PROT.
ENDIF.
LS_CONTROL_PARAM-NO_OPEN = 'X'.
ENDLOOP.
ENDFORM. "PROCESSING
*&---------------------------------------------------------------------*
*& Form protocol_update
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PROTOCOL_UPDATE .
CHECK XSCREEN = SPACE.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = SYST-MSGID
MSG_NR = SYST-MSGNO
MSG_TY = SYST-MSGTY
MSG_V1 = SYST-MSGV1
MSG_V2 = SYST-MSGV2
MSG_V3 = SYST-MSGV3
MSG_V4 = SYST-MSGV4
EXCEPTIONS
OTHERS = 1.
ENDFORM. " protocol_update
*&---------------------------------------------------------------------*
*& Form add_smfrm_prot
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ADD_SMFRM_PROT .
DATA: LT_ERRORTAB TYPE TSFERROR.
FIELD-SYMBOLS: <FS_ERRORTAB> TYPE LINE OF TSFERROR.
* get smart form protocoll
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
ERRORTAB = LT_ERRORTAB.
* add smartform protocoll to nast protocoll
LOOP AT LT_ERRORTAB ASSIGNING <FS_ERRORTAB>.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = <FS_ERRORTAB>-MSGID
MSG_NR = <FS_ERRORTAB>-MSGNO
MSG_TY = <FS_ERRORTAB>-MSGTY
MSG_V1 = <FS_ERRORTAB>-MSGV1
MSG_V2 = <FS_ERRORTAB>-MSGV2
MSG_V3 = <FS_ERRORTAB>-MSGV3
MSG_V4 = <FS_ERRORTAB>-MSGV4
EXCEPTIONS
OTHERS = 1.
ENDLOOP.
ENDFORM. " add_smfrm_prot
*&---------------------------------------------------------------------*
*& Form protocol_update_spool
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->SYST_MSGNO text
* -->P_LS_SPOOLID text
* -->P_SPACE1 text
* -->P_SPACE2 text
* -->P_SPACE3 text
*----------------------------------------------------------------------*
FORM PROTOCOL_UPDATE_SPOOL USING SYST_MSGNO
P_LS_SPOOLID
P_SPACE1
P_SPACE2
P_SPACE3.
SYST-MSGID = 'ME'.
SYST-MSGNO = SYST_MSGNO.
SYST-MSGV1 = P_LS_SPOOLID.
CONDENSE SYST-MSGV1.
CHECK XSCREEN = SPACE.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = SYST-MSGID
MSG_NR = SYST-MSGNO
MSG_TY = SYST-MSGTY
MSG_V1 = SYST-MSGV1
MSG_V2 = P_SPACE1
MSG_V3 = P_SPACE2
MSG_V4 = P_SPACE3
EXCEPTIONS
OTHERS = 1.
ENDFORM. " protocol_update_spool
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CF_RETCODE text
*----------------------------------------------------------------------*
FORM GET_DATA CHANGING CF_RETCODE.
DATA LV_EBELN LIKE EKKO-EBELN.
IF NAST-OBJKY+10 NE SPACE.
NAST-OBJKY = NAST-OBJKY+16(10).
ELSE.
NAST-OBJKY = NAST-OBJKY.
ENDIF.
LV_EBELN = NAST-OBJKY.
REFRESH:GS_PO_HEAER1,LT_ZPO_ITEM1.
SELECT DISTINCT EKKO~BUKRS EKKO~LIFNR EKKO~EBELN EKKO~BSART EKKO~AEDAT
EKKO~INCO1 EKKO~INCO2 EKPO~WERKS EKKO~WAERS EKKO~FRGZU EKKO~ZTERM
EKKO~ERNAM EKKO~BEDAT
INTO CORRESPONDING FIELDS OF TABLE GS_PO_HEAER1
FROM EKKO
JOIN EKPO ON EKPO~EBELN = EKKO~EBELN
WHERE EKKO~EBELN IN S_EBELN
AND EKKO~BSART IN S_BSART
AND EKKO~AEDAT IN S_AEDAT
AND EKKO~BEDAT IN S_BEDAT
AND EKKO~LIFNR IN S_LIFNR
AND EKPO~MATNR IN S_MATNR.
DESCRIBE TABLE GS_PO_HEAER1 LINES SY-TMAXL.
IF SY-TMAXL = 0.
MESSAGE I004(ZMSEG).
STOP.
ENDIF.
SELECT EKPO~EBELN EKPO~EBELP EKPO~MATNR EKPO~EMATN EKPO~TXZ01
EKPO~MENGE EKPO~MEINS EKPO~NETPR EKKO~WAERS EKKO~BSART
EKPO~NETWR EKPO~PEINH EKPO~MWSKZ EKPO~INFNR EKPO~WERKS
EKPO~BUKRS EKPO~BPRME EKPO~BPUMZ EKPO~BPUMN "EKET~MENGE EKET~EINDT
* ekpo~umren ekpo~umrez ekpo~lmein
INTO CORRESPONDING FIELDS OF TABLE LT_ZPO_ITEM1
FROM EKPO
JOIN EKKO ON EKPO~EBELN = EKKO~EBELN
FOR ALL ENTRIES IN GS_PO_HEAER1
* JOIN EKET ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP
WHERE EKPO~EBELN = GS_PO_HEAER1-EBELN
AND EKPO~LOEKZ <> 'L'.
CLEAR PUR_TOTAL.
CLEAR TAX_TOTAL.
CLEAR NET_TOTAL.
LOOP AT GS_PO_HEAER1.
CLEAR:TAX_TOTAL,NET_TOTAL,PUR_TOTAL.
LOOP AT LT_ZPO_ITEM1 WHERE EBELN = GS_PO_HEAER1-EBELN.
*when the currency is JPY,
IF LT_ZPO_ITEM-WAERS = 'JPY'.
LT_ZPO_ITEM-NETPR = LT_ZPO_ITEM-NETPR * 100.
ENDIF.
*when the currency is JPY
CLEAR: POMENGE1,POMENGE2.
SELECT B~MAKTX A~MFRPN A~WRKST
INTO (LT_ZPO_ITEM-MAKTX,LT_ZPO_ITEM-MFRPN,LT_ZPO_ITEM-WRKST)
FROM MARA AS A
JOIN MAKT AS B ON A~MATNR = B~MATNR
WHERE A~MATNR = LT_ZPO_ITEM-EMATN.
ENDSELECT.
IF LT_ZPO_ITEM-PEINH <> 0.
LT_ZPO_ITEM-NETPR = LT_ZPO_ITEM-NETPR / LT_ZPO_ITEM-PEINH.
ENDIF.
CLEAR:POMENGE1,POMENGE2.
POMENGE1 = LT_ZPO_ITEM-MENGE.
IF FRAC( POMENGE1 ) <> 0.
LT_ZPO_ITEM-MENGE1 = POMENGE1 .
ELSE.
LT_ZPO_ITEM-MENGE1 = TRUNC( POMENGE1 ).
ENDIF.
POMENGE2 = LT_ZPO_ITEM-MENGE * LT_ZPO_ITEM-BPUMZ / LT_ZPO_ITEM-BPUMN.
LT_ZPO_ITEM-NETWR = POMENGE2 * LT_ZPO_ITEM-NETPR.
IF FRAC( POMENGE2 ) <> 0.
LT_ZPO_ITEM-MENGE2 = POMENGE2 .
ELSE.
LT_ZPO_ITEM-MENGE2 = TRUNC( POMENGE2 ).
ENDIF.
LT_ZPO_ITEM-NETPR1 = LT_ZPO_ITEM-NETPR.
LT_ZPO_ITEM-NETWR1 = LT_ZPO_ITEM-NETWR.
CONDENSE LT_ZPO_ITEM-MENGE1.
CONDENSE LT_ZPO_ITEM-MENGE2.
CONDENSE LT_ZPO_ITEM-NETPR1.
CONDENSE LT_ZPO_ITEM-NETWR1.
CLEAR LT_ZPO_ITEM-ITEM_TAX.
IF LT_ZPO_ITEM-MWSKZ = 'J0'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 0.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J1'.
LT_ZPO_ITEM-TAX_CODE = '17#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 17 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J2'.
LT_ZPO_ITEM-TAX_CODE = '13#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 13 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J3'.
LT_ZPO_ITEM-TAX_CODE = '7#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 7 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J4'.
LT_ZPO_ITEM-TAX_CODE = '6#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 6 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J5'.
LT_ZPO_ITEM-TAX_CODE = '4#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 4 / 100.
ENDIF.
IF LT_ZPO_ITEM-MWSKZ = 'J6'.
LT_ZPO_ITEM-TAX_CODE = '3#'.
LT_ZPO_ITEM-ITEM_TAX = LT_ZPO_ITEM-NETWR * 3 / 100.
ENDIF.
LT_ZPO_ITEM-ITEM_TAX1 = LT_ZPO_ITEM-ITEM_TAX.
CONDENSE LT_ZPO_ITEM-ITEM_TAX1.
TAX_TOTAL = TAX_TOTAL + LT_ZPO_ITEM-ITEM_TAX.
NET_TOTAL = NET_TOTAL + LT_ZPO_ITEM-NETWR.
PUR_TOTAL = NET_TOTAL + TAX_TOTAL.
*get po info text
* CLEAR TDNAME.
* CONCATENATE LT_ZPO_ITEM-INFNR LT_ZPO_ITEM-BUKRS '0'
* LT_ZPO_ITEM-WERKS INTO TDNAME.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* CLIENT = SY-MANDT
* ID = 'BT'
* LANGUAGE = '1'
* NAME = TDNAME
* OBJECT = 'EINE'
** ARCHIVE_HANDLE = 0
** LOCAL_CAT = ' '
** IMPORTING
** HEADER =
* TABLES
* LINES = ITEM_LINE
* 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 = 0.
* LOOP AT ITEM_LINE.
* CONCATENATE LT_ZPO_ITEM-ITEMTEXT ITEM_LINE-TDLINE INTO
* LT_ZPO_ITEM-ITEMTEXT.
** lt_zpo_item-itemtext = item_LINE-TDLINE.
* ENDLOOP.
* CLEAR ITEM_LINE.
* ENDIF.
SELECT SINGLE EINDT INTO LT_ZPO_ITEM-EINDT
FROM EKET WHERE EBELN = LT_ZPO_ITEM-EBELN
AND EBELP = LT_ZPO_ITEM-EBELP.
PERFORM DELETE_ZERO USING LT_ZPO_ITEM-EBELP.
MODIFY LT_ZPO_ITEM1.
CLEAR LT_ZPO_ITEM1.
ENDLOOP.
*Modify header PO
SELECT ADRNR
INTO ADRNR2
FROM T001W
WHERE WERKS = GS_PO_HEAER1-WERKS.
IF SY-SUBRC = 0.
SELECT STREET
INTO GS_PO_HEAER1-ADDRESS
FROM ADRC
WHERE ADDRNUMBER = ADRNR2.
ENDSELECT.
ENDIF.
ENDSELECT.
SELECT ADRNR
INTO ADRNR
FROM LFA1
WHERE LIFNR = GS_PO_HEAER1-LIFNR.
ENDSELECT.
SELECT NAME1 NAME2 CITY1 NAME_CO STR_SUPPL1 STR_SUPPL2
COUNTRY STREET TEL_NUMBER FAX_NUMBER
INTO (SUPP_NAME1,SUPP_NAME2,SUPP_CITY,SUPP_NAMECO,SUPP_STR1,
SUPP_STR2,SUPP_CN,SUPP_STREET,TEL_NUMBER,FAX_NUMBER)
FROM ADRC
WHERE ADDRNUMBER = ADRNR.
ENDSELECT.
SELECT LANDX
INTO SUPP_CN_NAME
FROM T005T
WHERE SPRAS = 'E'
AND LAND1 = SUPP_CN.
ENDSELECT.
CONDENSE SUPP_NAME1.
CONDENSE SUPP_NAME2.
GS_PO_HEAER1-SUPP_CO = SUPP_NAMECO.
GS_PO_HEAER1-SUPP_STRONE = SUPP_STR1.
GS_PO_HEAER1-SUPP_STRTWO = SUPP_STR2.
GS_PO_HEAER1-SUPP_TEL = TEL_NUMBER.
GS_PO_HEAER1-SUPP_FAX = FAX_NUMBER.
GS_PO_HEAER1-ADDRESS = SUPP_STREET.
CONCATENATE SUPP_STREET SUPP_CITY SUPP_CN_NAME
INTO GS_PO_HEAER1-SUPP_CN SEPARATED BY GAP .
CONCATENATE SUPP_NAME1 SUPP_NAME2 INTO GS_PO_HEAER1-SUPP_NAME
SEPARATED BY GAP.
SELECT SINGLE KOINH INTO GS_PO_HEAER1-KOINH FROM LFBK
WHERE LIFNR = GS_PO_HEAER1-LIFNR.
SELECT SINGLE SMTP_ADDR INTO GS_PO_HEAER1-SMTP_ADDR1
FROM ADR6 WHERE ADDRNUMBER = ADRNR.
SELECT SINGLE TEXT1
INTO GS_PO_HEAER1-TEXT1
FROM T052U
WHERE ZTERM = GS_PO_HEAER1-ZTERM.
MODIFY GS_PO_HEAER1.
CLEAR GS_PO_HEAER1.
ENDLOOP.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form delete_zero
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P1 text
*----------------------------------------------------------------------*
FORM DELETE_ZERO USING P_P1.
CALL FUNCTION 'BKK_DELETE_LEADING_ZERO'
CHANGING
C_FIELD = P_P1.
ENDFORM. " delete_zero