0% found this document useful (0 votes)
236 views15 pages

Po Go

This document describes a function that saves purchase order data in the GOS object. It selects change history data for a purchase order from the CDPOs and CDHDR tables, retrieves the current GOS object for the purchase order, and updates the GOS object with the latest change history data. It then generates a PDF from OTF data, saves it to a file, and downloads the file to the client.

Uploaded by

Praveen Kumar
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download as txt, pdf, or txt
0% found this document useful (0 votes)
236 views15 pages

Po Go

This document describes a function that saves purchase order data in the GOS object. It selects change history data for a purchase order from the CDPOs and CDHDR tables, retrieves the current GOS object for the purchase order, and updates the GOS object with the latest change history data. It then generates a PDF from OTF data, saves it to a file, and downloads the file to the client.

Uploaded by

Praveen Kumar
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 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