‎2008 Jul 18 11:13 AM
Could any guru give sample code for the following function module:
SCMS_XSTRING_TO_BINARY
SCMS_BINARY_TO_STRING.
Thanks a lot
‎2008 Jul 18 11:19 AM
Hi,
Check this links:
SCMS_XSTRING_TO_BINARY:
http://blog.csdn.net/CompassButton/archive/2007/08/08/1731473.aspx
SCMS_BINARY_TO_STRING:
http://code.google.com/p/saplink/issues/detail?id=106
Search SDN form with function module name's.
Regards
Adil
‎2008 Jul 18 11:23 AM
Check the Program..
REPORT ZSAMPLE_CODE.
************************************************************************
* Declaration of Global Data Variables *
************************************************************************
DATA : org_xml TYPE xstring,
i_mess TYPE bapiret1.
************************************************************************
* Formatting Selection Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-110.
PARAMETERS : p_viewid TYPE twpc_v-viewid ,
p_otype TYPE otype DEFAULT 'O' NO-DISPLAY,
p_objid TYPE p0001-orgeh ,
p_date TYPE sy-datum DEFAULT sy-datum.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-111.
SELECTION-SCREEN: BEGIN OF LINE.
*-- Unix File
SELECTION-SCREEN: COMMENT 1(30) text-100 .
SELECTION-SCREEN: POSITION 33.
*-- Unix File Radio Button
PARAMETERS: p_show AS CHECKBOX.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-105.
SELECTION-SCREEN: BEGIN OF LINE.
*-- Unix File
SELECTION-SCREEN: COMMENT 1(10) text-107.
SELECTION-SCREEN: POSITION 12.
*-- Unix File Radio Button
PARAMETERS: p_unix RADIOBUTTON GROUP r1.
SELECTION-SCREEN: POSITION 15.
*-- Unix File Name
PARAMETERS: p_ufile LIKE rlgrap-filename LOWER CASE.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
*-- PC File
SELECTION-SCREEN: COMMENT 1(10) text-108.
SELECTION-SCREEN: POSITION 12.
*-- PC File Radio Button
PARAMETERS: p_pc RADIOBUTTON GROUP r1.
SELECTION-SCREEN: POSITION 15.
*-- PC File Name
PARAMETERS: p_pcfile LIKE rlgrap-filename.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b4.
************************************************************************
* Validation & Value Request Functionality on Selection Screen *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pcfile.
*-- Value Request Functionality for PC File
PERFORM value_request_for_pc_file USING p_pcfile.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_objid.
CALL FUNCTION 'RP_PNP_GET_VALUE_ORGEH'
CHANGING
orgeh = p_objid.
************************************************************************
* Start of Selection *
************************************************************************
START-OF-SELECTION.
PERFORM set_values.
PERFORM get_xml_file.
PERFORM download_file.
*&---------------------------------------------------------------------*
*& Form value_request_for_pc_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM value_request_for_pc_file USING p_filepath.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_filepath.
ENDFORM. " value_request_for_pc_file
*&---------------------------------------------------------------------*
*& Form get_xml_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_xml_file .
DATA : l_objid TYPE realo.
MOVE p_objid TO l_objid.
CALL FUNCTION 'HCM_GET_ORGSTRUCTURE_AS_XML_IN'
EXPORTING
i_viewid = p_viewid
i_otype = p_otype
i_objid = l_objid
i_begindate = p_date
i_enddate = p_date
i_keydate = p_date
i_debugmode = p_show
IMPORTING
xmlstring = org_xml
return = i_mess.
IF i_mess IS NOT INITIAL AND i_mess-type = 'E'.
WRITE : / 'OrgPlus Extraction Failed. Reason :', i_mess-message.
STOP.
ENDIF.
ENDFORM. " get_xml_file
*&---------------------------------------------------------------------*
*& Form download_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_file .
IF org_xml IS INITIAL.
WRITE :/ 'No File to Download.'.
STOP.
ENDIF.
IF p_pc = 'X' AND p_pcfile IS NOT INITIAL.
PERFORM download_to_pc.
ELSEIF p_unix = 'X' AND p_ufile IS NOT INITIAL.
PERFORM download_to_unix.
ENDIF.
ENDFORM. " download_file
*&---------------------------------------------------------------------*
*& Form download_to_pc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_to_pc .
DATA: filesize TYPE i,
filename TYPE string.
DATA : BEGIN OF itab OCCURS 0,
line TYPE x LENGTH 255,
END OF itab.
MOVE p_pcfile TO filename.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = org_xml
IMPORTING
output_length = filesize
TABLES
binary_tab = itab.
* download into file
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = filesize
filename = filename
filetype = 'BIN'
TABLES
data_tab = itab
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
WRITE : / 'Error downloading File to PC Path : ', filename.
STOP.
ELSE.
WRITE : / 'File downloaded to PC Path : ', filename.
ENDIF.
ENDFORM. " download_to_pc
*&---------------------------------------------------------------------*
*& Form download_to_unix
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_to_unix .
OPEN DATASET p_ufile FOR OUTPUT IN BINARY MODE.
IF sy-subrc NE 0.
WRITE : / 'Error Opening the Server Filepath :', p_ufile.
STOP.
ELSE.
WRITE : / 'File Downloaded to the Server at :', p_ufile.
ENDIF.
TRANSFER org_xml TO p_ufile.
CLOSE DATASET p_ufile.
ENDFORM. " download_to_unix
*&---------------------------------------------------------------------*
*& Form set_values
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_values .
IF sy-batch = 'X'.
CLEAR p_show .
ENDIF.
ENDFORM. " set_values