Po Go
Po Go
Po Go
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(PONUMBER) TYPE EBELN
*" EXCEPTIONS
*" ERROR_OPEN_FORM
*" ERROR_CLOSE_FORM
*"----------------------------------------------------------------------
TYPES: BEGIN OF ty_message_key,
foltp TYPE so_fol_tp,
folyr TYPE so_fol_yr,
folno TYPE so_fol_no,
doctp TYPE so_doc_tp,
docyr TYPE so_doc_yr,
docno TYPE so_doc_no,
fortp TYPE so_for_tp,
foryr TYPE so_for_yr,
forno TYPE so_for_no,
END OF ty_message_key.
INCLUDE : <cntn01>.
* TABLES: ekko,
* lfa1,
* t001,
* pekko.
* Load class.
CLASS cl_binary_relation DEFINITION LOAD.
CLASS cl_obl_object DEFINITION LOAD.
**data declarations
DATA: l_fstr TYPE xstring,
l_fsize TYPE i,
l_bsize TYPE i,
l_botype LIKE obl_s_pbor-typeid VALUE 'BUS2012', " e.g. 'BUS2012'
l_bo_id LIKE obl_s_pbor-instid," VALUE '4610000000'
l_docty LIKE borident-objtype VALUE 'MESSAGE',
l_reltyp LIKE breltyp-reltype VALUE 'ATTA',
lt_bin TYPE STANDARD TABLE OF char255 WITH HEADER LINE,
lt_pdf TYPE TABLE OF tline,
lv_message_key TYPE ty_message_key,
lo_message TYPE swc_object,
l_title TYPE char30,
lo_is_object_a TYPE borident,
lo_is_object_b TYPE borident,
* lt_nast TYPE TABLE OF nast,
* lw_nast LIKE nast,
* l_nast LIKE nast,
* l_druvo LIKE t166k-druvo,
* l_from_memory,
* l_doc TYPE meein_purchase_doc_print,
* l_retcode TYPE i,
lt_cdpos TYPE TABLE OF cdpos,
lw_cdpos TYPE cdpos,
lt_cdhdr TYPE TABLE OF cdhdr,
lw_cdhdr TYPE cdhdr,
l_flg,
* w_opt LIKE ITCPO,
l_text TYPE text60,
lw_gos TYPE zmm_gos,
lr_chno TYPE RANGE OF text60,
lw_chno LIKE LINE OF lr_chno,
otf TYPE TABLE OF itcoo.
DATA: w_full TYPE string.
**program will check only these values in the change history,
lw_chno-sign = 'I' . lw_chno-option = 'EQ' .
lw_chno-low = 'EKKO-FRGKE'. APPEND lw_chno TO lr_chno."Release Indicator: Purc
hasing Document
lw_chno-low = 'EKKO-FRGZU'. APPEND lw_chno TO lr_chno."Release status
lw_chno-low = 'EKKO-RLWRT'. APPEND lw_chno TO lr_chno."Total value at time of
release
lw_chno-low = 'EKET-MENGE'. APPEND lw_chno TO lr_chno."Scheduled Quantity
lw_chno-low = 'EKPO-NETWR'. APPEND lw_chno TO lr_chno."Net Order Value in PO C
urrency
lw_chno-low = 'EKPO-NETPR'. APPEND lw_chno TO lr_chno."Net Price in Purchasing
* Document (in Document C
urrency)
lw_chno-low = 'EKPO-BRTWR'. APPEND lw_chno TO lr_chno."Gross order value in PO
currency
lw_chno-low = 'EKPO-MENGE'. APPEND lw_chno TO lr_chno."Purchase Order Quantity
ELSE.
SELECT * FROM cdhdr INTO TABLE lt_cdhdr WHERE objectclas = 'EINKBELEG'
AND objectid = ponumber.
IF sy-subrc EQ 0.
DESCRIBE TABLE lt_cdhdr.
READ TABLE lt_cdhdr INTO lw_cdhdr INDEX sy-tfill.
l_flg = 'X'.
lw_gos-objectclas = lw_cdhdr-objectclas.
lw_gos-objectid = lw_cdhdr-objectid.
lw_gos-changenr = lw_cdhdr-changenr.
ELSE.
l_flg = 'X'.
lw_gos-objectclas = 'EINKBELEG'.
lw_gos-objectid = ponumber.
lw_gos-changenr = '1000000000'.
ENDIF.
MODIFY zmm_gos FROM lw_gos.
IF sy-subrc EQ 0.
COMMIT WORK.
ENDIF.
ENDIF.
* IF l_flg EQ space.
* l_flg = 'X'.
* ENDIF.
IF l_flg NE space.
DATA: memkey(10),
memkey1(10).
memkey = 'POOTF'.
memkey1 = 'PONO'.
EXPORT ponumber TO MEMORY ID memkey1.
SUBMIT zmmr086 AND RETURN.
IMPORT otf FROM MEMORY ID memkey.
CHECK otf[] IS NOT INITIAL.
import w_full from MEMORY ID 'REV'.
**convert the otf data into xstring
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = l_bsize
bin_file = l_fstr
TABLES
otf = otf[]
lines = lt_pdf[]
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 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.
**create the object message retriveing the msg details
* swc_create_object lo_message 'MESSAGE' lv_message_key.
*
** define container to pass the parameter values to the method call
* swc_container lt_message_container.
**creating the title for GOS
* WRITE sy-datum TO l_title.
* CONCATENATE ponumber l_title INTO l_title SEPARATED BY '_'.
** Populate container with parameters for method
*
* swc_set_element lt_message_container 'DOCUMENTTITLE' l_title.
* swc_set_element lt_message_container 'DOCUMENTLANGU' 'E'.
* swc_set_element lt_message_container 'NO_DIALOG' 'X'.
* swc_set_element lt_message_container 'DOCUMENTNAME' l_docty.
* swc_set_element lt_message_container 'DOCUMENTTYPE' 'PDF'.
* swc_set_element lt_message_container 'FILEEXTENSION' 'PDF'.
*
**convert the file string into binary format
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = l_fstr
IMPORTING
output_length = l_fsize
TABLES
binary_tab = lt_bin.
*
* swc_set_table lt_message_container 'DocumentContent' lt_bin.
* swc_set_element lt_message_container 'DOCUMENTSIZE' l_fsize.
* swc_refresh_object lo_message.
* swc_call_method lo_message 'CREATE' lt_message_container.
* swc_get_object_key lo_message lv_message_key.
*
***fill the object key details for purchase order
* lo_is_object_a-objkey = ponumber. "purchase order number
* lo_is_object_a-objtype = 'BUS2012'. "business object type
*
** Create attachment BO object_b
* lo_is_object_b-objkey = lv_message_key.
* lo_is_object_b-objtype = l_docty.
*
* CALL FUNCTION 'BINARY_RELATION_CREATE'
* EXPORTING
* obj_rolea = lo_is_object_a
* obj_roleb = lo_is_object_b
* relationtype = l_reltyp
* EXCEPTIONS
* no_model = 1
* internal_error = 2
* unknown = 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.
*
* COMMIT WORK AND WAIT.
*CONSTANTS: pc_file TYPE char128 VALUE '/usr/sap/DEV/DVEBMGS00/data/newdoc5.pdf'
.
*open DATASET pc_file for OUTPUT in BINARY MODE." IGNORING CONVERSION ERRORS.
*IF sy-subrc eq 0.
* TRANSFER l_fstr to pc_file.
* IF sy-subrc eq 0.
* CLOSE DATASET pc_file.
* ENDIF.
*ENDIF.
CONCATENATE ponumber sy-datum sy-uzeit w_full INTO w_full SEPARATED BY '_'.
CONCATENATE 'C:\' w_full '.pdf' INTO w_full.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = w_full
filetype = 'BIN'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* IMPORTING
* FILELENGTH =
TABLES
data_tab = lt_bin[]
* FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
WRITE: 'File saved on PC'.
ENDIF.
FREE: l_fstr,
l_fsize,
l_bsize,
l_botype,
l_bo_id ,
l_docty,
l_reltyp,
lt_bin,
lt_pdf,
lv_message_key,
lo_message,
l_title,
lo_is_object_a,
lo_is_object_b,
* l_doc,
* l_nast,
* lt_nast,
* lw_nast,
lt_cdpos,
lw_gos,
lw_cdpos.
* ENDIF.
ENDIF.
* ENDIF.
ENDFUNCTION.
================================================================================
========================
*&--------------------------------------------------------------------*
*& Report ZMMR086
*&
*&--------------------------------------------------------------------*
* TITLE : Print Program for PO *
* FUNCTIONAL : Leonard Hastabrata *
* AUTH. OBJECT : none *
*=====================================================================*
* VERSION HISTORY (For upgrades, latest version on top) *
*---------------------------------------------------------------------*
* # 1.0 Initial Creation - Developer: Praveen Kumar Obulsetty
*
*&--------------------------------------------------------------------*
REPORT zmmr086 NO STANDARD PAGE HEADING LINE-SIZE 255.
*---------------------------------------------------------------------*
* TYPE-POOLS *
*---------------------------------------------------------------------*
TYPE-POOLS: meein.
*---------------------------------------------------------------------*
* TABLES *
*---------------------------------------------------------------------*
TABLES: ekko,
lfa1,
t001,
pekko,
pekpo,
ekkn,
komk,
t166u,
t166k,
t166p,
t166t,
ekpo,
eket,
ekomd,
rm06p,
t006a,
t024,
nast,
thead.
*---------------------------------------------------------------------*
* D A T A D E C L A R A T I O N *
*---------------------------------------------------------------------*
DATA: l_doc TYPE meein_purchase_doc_print,
w_opt TYPE itcpo,
l_wenge,
lt_nast TYPE TABLE OF nast,
xt166p TYPE TABLE OF t166p WITH HEADER LINE,
t_xekkn TYPE TABLE OF ekkn WITH HEADER LINE,
t_xaend TYPE meein_xaend OCCURS 0 WITH HEADER LINE,
lw_nast LIKE nast,
l_nast LIKE nast,
l_druvo LIKE t166k-druvo,
xaend TYPE meein_xaend,
lt_lines TYPE tline OCCURS 0 WITH HEADER LINE,
l_from_memory,
otf TYPE TABLE OF itcoo,
it_otf1 TYPE TABLE OF itcoo,
l_retcode TYPE i,
xtkomvd TYPE TABLE OF komvd,
l_rev(20),
w_full TYPE string,
xthead LIKE thead OCCURS 0 WITH HEADER LINE.
DATA: memkey(10) VALUE 'POOTF'.
DATA: memkey1(10) VALUE 'PONO'.
DATA: "BEGIN OF xtheadkey,
* tdobject LIKE thead-tdobject,
* tdname LIKE thead-tdname,
* tdid LIKE thead-tdid,
* END OF xtheadkey,
xdrflg TYPE t166p-drflg,
* esokz-norm VALUE '0',
* text_flag(1) TYPE p,
ponumber TYPE ebeln.
*--------------------------------------------------------------------*
* I N I T I A L I Z A T I O N *
*--------------------------------------------------------------------*
INITIALIZATION.
PERFORM f_init_data.
*--------------------------------------------------------------------*
* START-OF-SELECTION *
*--------------------------------------------------------------------*
START-OF-SELECTION.
import l_doc from MEMORY ID 'PODATA'.
IMPORT nast FROM MEMORY ID 'PONAST'.
IF l_doc IS INITIAL AND nast IS INITIAL.
IMPORT ponumber FROM MEMORY ID memkey1.
CHECK ponumber IS NOT INITIAL.
SELECT * FROM nast INTO TABLE lt_nast WHERE objky EQ ponumber
AND kappl EQ 'EF'
AND kschl EQ 'NEU'.
DESCRIBE TABLE lt_nast.
READ TABLE lt_nast INTO lw_nast INDEX sy-tfill.
* IF lw_nast-aende EQ space.
l_druvo = '1'.
* ELSE.
* l_druvo = '2'.
* ENDIF.
**reading the PO data for printing
CALL FUNCTION 'ME_READ_PO_FOR_PRINTING'
EXPORTING
ix_nast = lw_nast
ix_screen = ''
IMPORTING
ex_retco = l_retcode
doc = l_doc
ex_nast = l_nast
CHANGING
cx_druvo = l_druvo
cx_from_memory = l_from_memory.
CHECK l_retcode EQ 0.