You are on page 1of 15

FUNCTION z_mm_save_po_in_gos.

*"----------------------------------------------------------------------
*"*"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

SELECT SINGLE * FROM zmm_gos INTO lw_gos WHERE objectclas = 'EINKBELEG'


AND objectid = ponumber.
IF sy-subrc EQ 0.
IF lw_gos-changenr NE '1000000000'.
SELECT * FROM cdpos INTO TABLE lt_cdpos
WHERE objectclas = lw_gos-objectclas
AND objectid = lw_gos-objectid
AND changenr GT lw_gos-changenr.
IF sy-subrc EQ 0.
LOOP AT lt_cdpos INTO lw_cdpos.
CONCATENATE lw_cdpos-tabname lw_cdpos-fname INTO l_text
SEPARATED BY '-'.
IF l_text IN lr_chno.
l_flg = 'X'.
EXIT.
ENDIF.
CLEAR: lw_cdpos,
l_text.
ENDLOOP.
IF l_flg = 'X'.
DESCRIBE TABLE lt_cdpos.
READ TABLE lt_cdpos INTO lw_cdpos INDEX sy-tfill.
lw_gos-changenr = lw_cdpos-changenr.
MODIFY zmm_gos FROM lw_gos.
IF sy-subrc EQ 0.
COMMIT WORK.
ENDIF.
ENDIF.
ELSE.
l_flg = space.
ENDIF.
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.
MODIFY zmm_gos FROM lw_gos.
IF sy-subrc EQ 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.

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.

**checking for the otf status


* IF l_nast-sort1 EQ space.
* l_nast-sort1 = 'SWP'.
* ENDIF.
***checking the condition data
IF l_doc-xtkomv[] IS INITIAL.
CALL FUNCTION 'MEPO_DOC_TKOMV_GET'
IMPORTING
ex_tkomv = l_doc-xtkomv.
ENDIF.
ENDIF.
ekko = l_doc-xekko.
pekko = l_doc-xpekko.
t_xekkn[] = l_doc-xekkn[].
IF l_druvo IS INITIAL.
l_druvo = '1'.
ENDIF.

SELECT SINGLE * FROM lfa1 WHERE lifnr EQ ekko-lifnr.


SELECT SINGLE * FROM t001 WHERE bukrs EQ ekko-bukrs.
SELECT SINGLE * FROM t166k WHERE druvo EQ l_druvo
AND bsart EQ ekko-bsart
AND bstyp EQ 'F'.
SELECT SINGLE * FROM t024 WHERE ekgrp EQ ekko-ekgrp.
SELECT SINGLE * FROM t166u WHERE druvo EQ l_druvo
AND bsart EQ ekko-bsart
AND bstyp EQ 'F'
AND spras EQ sy-langu.
komk-mandt = ekko-mandt.
IF ekko-kalsm NE space.
komk-kalsm = ekko-kalsm.
ELSE.
komk-kalsm = 'RM0000'.
ENDIF.
komk-kappl = 'M'.
komk-waerk = ekko-waers.
komk-knumv = ekko-knumv.
komk-bukrs = ekko-bukrs.
komk-lifnr = ekko-lifnr.
CALL FUNCTION 'RV_PRICE_PRINT_HEAD'
EXPORTING
comm_head_i = komk
language = ekko-spras
IMPORTING
comm_head_e = komk
* COMM_MWSKZ =
TABLES
tkomv = l_doc-xtkomv
tkomvd = xtkomvd
.
IF lt_nast[] IS INITIAL." AND nast IS NOT INITIAL.
SELECT * FROM nast INTO TABLE lt_nast WHERE objky eq nast-objky.
ENDIF.
*--------------------------------------------------------------------*
* END-OF-SELECTION *
*--------------------------------------------------------------------*
END-OF-SELECTION.
* CHECK ponumber IS NOT INITIAL.
**revision number
DESCRIBE TABLE lt_nast.
READ TABLE lt_nast INTO lw_nast INDEX sy-tfill.
IF sy-subrc eq 0.
l_rev = sy-tabix.
SHIFT l_rev LEFT DELETING LEADING space.
w_full = l_rev.
EXPORT w_full to MEMORY ID 'REV'.
CONCATENATE 'Revision No:' l_rev INTO l_rev SEPARATED BY space.
ENDIF.
w_opt-tdnoprev = 'X'.
w_opt-tdgetotf = 'X'.
w_opt-TDDEST = nast-ldest.
IF nast-ldest IS INITIAL.
w_opt-TDDEST = lw_nast-ldest.
ENDIF.

CALL FUNCTION 'OPEN_FORM'


EXPORTING
device = 'PRINTER'"'LOCL'
dialog = ''
form = 'ZMMF009'
language = sy-langu
OPTIONS = w_opt
EXCEPTIONS
canceled = 1
device = 2
form = 3
OPTIONS = 4
unclosed = 5
mail_options = 6
archive_error = 7
invalid_fax_number = 8
more_params_needed_in_batch = 9
spool_error = 10
codepage = 11
OTHERS = 12.
IF sy-subrc <> 0.
* RAISE error_open_form.
ENDIF.
CALL FUNCTION 'START_FORM'
EXPORTING
form = 'ZMMF009'
* program = 'SAPFM06P'
EXCEPTIONS
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
spool_error = 6
codepage = 7
OTHERS = 8
.
IF sy-subrc <> 0.
*RAISE error_open_form.
ENDIF.
PERFORM f_write_text USING 'MAIN' 'HEADER_TEXT'.
PERFORM f_write_text USING 'MAIN' 'HEADER_INFO'.
*****************************************************
PERFORM f_write_text USING 'MAIN' 'ITEM_HEADER_F'.
WRITE pekko-eindt TO pekko-lfdat.
*komk-kwert = ekko-netwr.
LOOP AT l_doc-xekpo INTO ekpo.
CLEAR rm06p.
PERFORM f_write_text USING 'MAIN' 'ITEM_LINE_1'.
WRITE ekpo-menge TO rm06p-prmg1 UNIT ekpo-meins.
t006a-msehi = ekpo-meins.
READ TABLE l_doc-xpekpo INTO pekpo WITH KEY
ebelp = ekpo-ebelp.
READ TABLE l_doc-xeket INTO eket WITH KEY ebeln = ekpo-ebeln
ebelp = ekpo-ebelp.
PERFORM f_write_text USING 'MAIN' 'ITEM_LINE_3F_PRICE'.
IF pekpo-wemng GT 0 AND ekpo-elikz EQ space.
ekpo-menge = eket-menge - eket-wemng.
WRITE ekpo-menge TO rm06p-prmg2 UNIT ekpo-meins.
PERFORM f_write_text USING 'MAIN' 'ITEM_INFO_WEMNG'.
l_wenge = 'X'.
IF ekpo-pstyp EQ space.
ekpo-pstyp = 0.
ENDIF.
ENDIF.
PERFORM f_write_text1.
PERFORM f_item_text_prepare.
* PERFORM f_write_text USING 'MAIN' 'ITEM_TEXT'.
PERFORM f_write_remarks.
ENDLOOP.
PERFORM f_write_text USING 'MAIN' 'TOTAL_AMOUNT'.
IF pekko-lfdat NE space AND ekko-bstyp NE 'L'.
PERFORM f_write_text USING 'DELDATE' 'DELDATE'.
ENDIF.
*****************************************************
CALL FUNCTION 'CLOSE_FORM'
TABLES
otfdata = otf[]
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
send_error = 3
spool_error = 4
codepage = 5
OTHERS = 6.
IF sy-subrc <> 0.
* RAISE error_close_form.
ELSE.
EXPORT otf TO MEMORY ID memkey.
ENDIF.
PERFORM f_free_data.
*&---------------------------------------------------------------------*
*& Form F_WRITE_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0278 text
* -->P_0279 text
*----------------------------------------------------------------------*
FORM f_write_text USING p_window
p_element.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = p_element
window = p_window.
IF sy-subrc <> 0.
ENDIF.

ENDFORM. " F_WRITE_TEXT


*&---------------------------------------------------------------------*
*& Form F_ITEM_TEXT_PREPARE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_item_text_prepare .
LOOP AT xthead.
REFRESH: lt_lines[].
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = xthead-tdid
language = xthead-tdspras
name = xthead-tdname
object = xthead-tdobject
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = 'X'
* IMPORTING
* HEADER =
TABLES
lines = lt_lines[]
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.
ELSE.
IF lt_lines[] IS NOT INITIAL.
LOOP AT lt_lines.
PERFORM f_write_text USING 'MAIN' 'ITEM_TEXT_1'.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_ITEM_TEXT_PREPARE
*&---------------------------------------------------------------------*
*& Form F_WRITE_REMARKS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_write_remarks .
READ TABLE l_doc-xeket INTO eket WITH KEY ebeln = ekpo-ebeln
ebelp = ekpo-ebelp.
IF sy-subrc = 0.
IF ( ekpo-pstyp NE '9' AND eket-wemng GT 0
AND eket-wemng LT eket-menge ) OR
( ekpo-pstyp EQ '9' AND eket-wemng GT 0
AND ekpo-elikz IS INITIAL ).
SELECT SINGLE chtxt FROM t166t
INTO t166t-chtxt
WHERE spras = ekko-spras
AND ctxnr = 'P15'.
PERFORM f_write_text USING 'MAIN' 'CHANGE_REMARKS'.
ELSEIF ( ekpo-pstyp EQ '9' AND
eket-wemng GT 0 AND
NOT ekpo-elikz IS INITIAL ).
SELECT SINGLE chtxt FROM t166t
INTO t166t-chtxt
WHERE spras = ekko-spras
AND ctxnr = 'P14'.
PERFORM f_write_text USING 'MAIN' 'CHANGE_REMARKS'.
ENDIF.
ENDIF.
ENDFORM. " F_WRITE_REMARKS
*&---------------------------------------------------------------------*
*& Form F_WRITE_TEXT1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_write_text1 .
thead-tdobject = 'EKPO'.
thead-tdspras = ekko-spras.
thead-tdname = ekko-ebeln.
thead-tdname+10(5) = ekpo-ebelp.
thead-tdid = '*'.
* MOVE-CORRESPONDING thead TO xtheadkey.
CALL FUNCTION 'SELECT_TEXT'
EXPORTING
id = thead-tdid
language = thead-tdspras
name = thead-tdname
object = thead-tdobject
TABLES
selections = xthead.
SORT xthead BY tdid.
ENDFORM. " F_WRITE_TEXT1
*&---------------------------------------------------------------------*
*& Form F_INIT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_init_data .
CLEAR: ekko,
lfa1,
t001,
pekko,
pekpo,
ekkn,
komk,
t166u,
t166k,
t166p,
t166t,
ekpo,
eket,
ekomd,
rm06p,
t006a,
t024,
thead,
l_doc,
w_opt,
lt_nast[],
xt166p[],
t_xekkn[],
t_xaend[],
lw_nast,
l_nast,
l_druvo,
xaend,
lt_lines[],
l_from_memory,
otf[],
l_retcode,
xtkomvd[],
xthead[],
xdrflg,
ponumber.
ENDFORM. " F_INIT_DATA
*&---------------------------------------------------------------------*
*& Form F_FREE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_free_data .
FREE: ekko,
lfa1,
t001,
pekko,
pekpo,
ekkn,
komk,
t166u,
t166k,
t166p,
t166t,
ekpo,
eket,
ekomd,
rm06p,
t006a,
t024,
thead,
l_doc,
w_opt,
lt_nast[],
xt166p[],
t_xekkn[],
t_xaend[],
lw_nast,
l_nast,
l_druvo,
xaend,
lt_lines[],
l_from_memory,
otf[],
l_retcode,
xtkomvd[],
xthead[],
memkey,
memkey1,
xdrflg,
ponumber.
ENDFORM. " F_FREE_DATA
================================================================================
=======================================
Table values
MANDT MANDT CLNT 3 0 Client
OBJECTCLAS CDOBJECTCL CHAR 15 0 Object class
OBJECTID CDOBJECTV CHAR 90 0 Object value
CHANGENR CDCHANGENR CHAR 10 0 Document change number

You might also like