Sunday, October 31, 2004

Modify table by abap 2

REPORT YMODDB .
*parameters:

*P_test radiobutton group grp1,P_prod radiobutton group grp1.
tables: PA0001,bkpf,bseg,AUFK,wakh,wakt,yjibacc,ekpo,ekab.
tables: konh,konp,a016.
*data: itab TYPE STANDARD TABLE OF aufk, itab_h type aufk .
data: itab1 TYPE STANDARD TABLE OF ekpo, itab_h type ekpo,
itab2 TYPE STANDARD TABLE OF ekab, itab_h2 type ekab.
SELECT-OPTIONS:
s_ct for a016-EVRTN.

*types:
* begin of typ_itab,
* belnr like bkpf-belnr ,
* dmbtr like bseg-dmbtr,
* wrbtr like bseg-wrbtr,
* shkzg like bseg-shkzg,
* end of typ_itab.
* data: itab type standard table of typ_itab,
* itab1 type standard table of typ_itab,
* ITAB_H TYPE TYP_ITAB.
*select * FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab where lgort
*<> '8000' and matnr <> '' and BWART = '101'.
*if sy-subrc <> 0.
* MESSAGE i000(db) WITH 'no record should be modified !' .
* STOP.
*ENDIF.
select * FROM ekpo INTO CORRESPONDING FIELDS OF TABLE itab1 where
ebeln like 'K%' and BSTYP = 'K'.
loop at itab1 into itab_h.
itab_h-werks = ''.
itab_h-lgort = ''.
modify ekpo from itab_h.
endloop.
*select * FROM ekab INTO CORRESPONDING FIELDS OF TABLE itab2 where
*ebeln like 'K%'.
*loop at itab2 into itab_h2.
* itab_h-werks = ''.
* modify ekab from itab_h2.
* endloop.
*
*write :/ 'Material Doc. year. item. Movement Typ. Material . '.
*write :' Stor.Loc PO number. PO item. Quantity' .
*MODIFY PA0001 FROM ITAB_H.
*
*itab_h-aktnr = 'S'.
**ITAB_H-aktkt = 'Single Source'.
*append itab_h to itab.
*itab_h-aktnr = 'M'.
**ITAB_H-aktkt= 'Competitive bids'.
*append itab_h to itab.
*insert wakh from table itab.
*itab_h-aktnr = 'S'.
*ITAB_H-aktkt = 'Single Source'.
*itab_h-SPRAS = 'EN'.
*append itab_h to itab.
*itab_h-aktnr = 'M'.
*ITAB_H-aktkt = 'Competitive bids'.
*itab_h-SPRAS = 'EN'.
*append itab_h to itab.
*insert wakt from table itab.
*
*LOOP AT itab into itab_h.
* write :/ itab_h-mblnr,15 itab_h-mjahr,22 itab_h-zeile,
* 29 itab_h-bwart,44 itab_h-matnr,56 itab_h-lgort,66 itab_h-ebeln,
*77 itab_h-ebelp,87 itab_h-menge left-justified.
* if p_prod = 'X'.
* itab_h-lgort = '8000'.
* modify mseg from itab_h.
* if sy-subrc = 0.
* write :/ 'document no: ',itab_h-mblnr .
* write:' is successfully modified!'.
* endif.
* endif.
*endloop.
*select * into CORRESPONDING FIELDS OF
*TABLE itab from aufk .
**DELETE FROM PA0001 WHERE pernr = '355' AND ENAME = 'KK'.
**
*LOOP AT ITAB INTO ITAB_H WHERE aufnr = 'E/013/02'.
*
* ITAB_H-AUART = 'Z005'.
* MODIFY AUFK FROM ITAB_H .
*
*ENDLOOP.
*START-OF-SELECTION.
*select belnr into CORRESPONDING FIELDS OF
*TABLE itab from bkpf where blart = 'KG' and bukRs = 'CACT'.
*SELECT bSEG~belnr bseg~dmbtr bseg~wrbtr bseg~shkzg into CORRESPONDING
*FIELDS OF
*TABLE itab1 FROM BSEG FOR ALL ENTRIES IN ITAB WHERE BSEG~BELNR =
*ITAB-BELNR and bseg~projk = 'P-PW322-09'.
*select * into CORRESPONDING FIELDS OF
*TABLE itab from a016 where EVRTN in s_ct .
*DELETE a016 FROM table itab .
*MESSAGE i000(db) WITH 'no record should be modified !' .
* LOOP AT ITAB1 INTO ITAB_H.
* WRITE:/ ITAB_H-BELNR ,ITAB_H-DMBTR,ITAB_H-WRBTR,itab_h-shkzg.
* ENDLOOP.

Modify table by abap code 1

REPORT YMODDB .
tables: adrc.
data: itab TYPE STANDARD TABLE OF adrc, itab_h type adrc .
select * FROM adrc INTO CORRESPONDING FIELDS OF TABLE itab where
addrnumber = '0000021982'.
if sy-subrc <> 0.
MESSAGE i000(db) WITH 'no record should be modified !' .
STOP.
ENDIF.
loop at itab into itab_h.
itab_h-street = '15-21/F., Tower B, Offshore Petroleum Building'.
modify adrc from itab_h.
if sy-subrc = 0.
write:' is successfully modified!'.
endif.
endloop.

Thursday, October 28, 2004

RFC call prd data from dev without transfer program

REPORT zrun NO STANDARD PAGE HEADING LINE-SIZE 1023.
DATA : i_prog(72) OCCURS 0 WITH HEADER LINE.
DATA : i_result(1000) OCCURS 0 WITH HEADER LINE.
DATA : err_msg LIKE sy-msgv1.
DATA : BEGIN OF listobj OCCURS 20.
INCLUDE STRUCTURE abaplist.
DATA : END OF listobj.
DATA : rfcdest LIKE rfcdes-rfcdest.
*SELECTION-SCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETER p_report LIKE sy-repid MEMORY ID rid.
PARAMETER p_rfcdes LIKE rfcdes-rfcdest.
SELECTION-SCREEN END OF BLOCK b1.
*AT SELECTION-SCREEN
AT SELECTION-SCREEN.
*START-OF-SELECTION
START-OF-SELECTION.
rfcdest = p_rfcdes .
REFRESH : i_prog , i_result.
READ REPORT p_report INTO i_prog.
CALL FUNCTION 'RFC_ABAP_INSTALL_AND_RUN' DESTINATION rfcdest
EXPORTING
mode = 'F'
IMPORTING
errormessage = err_msg
TABLES
program = i_prog
writes = i_result
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
STOP.
MESSAGE e000(zbp) WITH err_msg. WRITE :/ err_msg.
ELSE.
IF NOT i_result[] IS INITIAL.
LOOP AT i_result.
WRITE :/ i_result.
ENDLOOP.
ENDIF.
ENDIF.

* sm59 to define rfc destination

sa38 can see your program not only run

http://sap.ittoolbox.com/documents/document.asp?i=2812

some suggestions

Upload and download a whole sap table

http://www.sapfans.com/sapfans/repos/neil.htm



Program to download/upload table data dynamically by Neil Overton

This program allows the user to enter the table name and have the program download the data to a PC file.
Changing the radio button allows the user to upload the data to the specified table name.


Has function for append or clear/insert.
<>




*----------------------------------------------------------------------
* N Overton : Created ( T/Code ZTUD)
*
* Dynamic table export / import facility.
*
* Restrictions - Table definition MUST exist on target
* system for import.
* - Entire table is exported / imported
* - Must be WIN95/98 WIN-NT long filenames
*----------------------------------------------------------------------
* TEXTS
*
* List Header...: For SAP Table: &1............................
*
* Column Heading: | Function Status(48 spaces)# Records |
*
* Selection Texts: PATH Folder Path for file
* P_CLEAR Delete Existing Records
* P_EXP Export to PC File
* P_IMP Import from PC File
* TABNAME SAP table name
*
* Text Symbols: B00 Dynamic Import/Export of SAP data
* B01 SAP Table Name
* B02 Program Function
* B03 Folder For Data File
* B04 Existing Records Deletion Selection
* ER2 File not found. Please check.
* PGE Page
*----------------------------------------------------------------------
* This program once created will allow you to download or upload table
* data from any SAP table. It has the functionality to allow you to
* select whether data should be appended or original data cleaed before
* inserting new data.
* This is very useful when attempting to transfer data from one client
* to another
*----------------------------------------------------------------------

REPORT zsptud01 LINE-SIZE 80
LINE-COUNT 65
NO STANDARD PAGE HEADING.

TABLES: dd02l, dd03l.

* selection screen
SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-b00.
*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.
PARAMETERS: tabname LIKE dd02l-tabname OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b01.
*
SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-b03.
PARAMETERS: path(30) TYPE c DEFAULT 'C:\SAPWorkdir'.
SELECTION-SCREEN END OF BLOCK b03.
*
SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE text-b04.
PARAMETERS: p_exp RADIOBUTTON GROUP radi,
p_imp RADIOBUTTON GROUP radi,
p_clear AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b04.

SELECTION-SCREEN END OF BLOCK b00.

* data
DATA: q_return LIKE syst-subrc,
err_flag(1) TYPE c,
answer(1) TYPE c,
w_text1(62) TYPE c,
w_text2(40) TYPE c,
winfile(128) TYPE c,
w_system(40) TYPE c,
winsys(7) TYPE c,
zname(8) TYPE c,
w_line(80) TYPE c.

* internal tables
DATA : BEGIN OF textpool_tab OCCURS 0.
INCLUDE STRUCTURE textpool.
DATA : END OF textpool_tab.

* table for subroutine pool
DATA : itab(80) OCCURS 0.

* events
INITIALIZATION.
PERFORM check_system.
*
AT SELECTION-SCREEN ON tabname.
PERFORM check_table_exists.
*
START-OF-SELECTION.
PERFORM init_report_texts.
PERFORM request_confirmation.
*
END-OF-SELECTION.
IF answer = 'J'.
PERFORM execute_program_function.
ENDIF.
*
TOP-OF-PAGE.
PERFORM process_top_of_page.

* forms
*---------------------------------------------------------------------*
* FORM CHECK_TABLE_EXISTS *
*---------------------------------------------------------------------*
FORM check_table_exists.
SELECT SINGLE * FROM dd02l
INTO CORRESPONDING FIELDS OF dd02l
WHERE tabname = tabname.
CHECK syst-subrc NE 0.
MESSAGE e402(mo) WITH tabname.
ENDFORM.
*---------------------------------------------------------------------*
* FORM INIT_REPORT_TEXTS *
*---------------------------------------------------------------------*
FORM init_report_texts.
READ TEXTPOOL syst-repid
INTO textpool_tab LANGUAGE syst-langu.
LOOP AT textpool_tab
WHERE id EQ 'R' OR id EQ 'T'.
REPLACE '&1............................'
WITH tabname INTO textpool_tab-entry.
MODIFY textpool_tab.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM REQUEST_CONFIRMATION *
*---------------------------------------------------------------------*
FORM request_confirmation.

* import selected, confirm action
IF p_imp = 'X'.
* build message text for popup
CONCATENATE 'Data for table'
tabname
'will be imported' INTO w_text1 SEPARATED BY space.
* check if delete existing selected, and change message text
IF p_clear = ' '.
w_text2 = 'and appended to the end of existing data'.
ELSE.
w_text2 = 'Existing Data will be deleted'.
ENDIF.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'N'
textline1 = w_text1
textline2 = w_text2
titel = 'Confirm Import of Data'
cancel_display = ' '
IMPORTING
answer = answer
EXCEPTIONS
OTHERS = 1.
ELSE.
* export selected, set answer to yes so export can continue
answer = 'J'.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM EXECUTE_PROGRAM_FUNCTION *
*---------------------------------------------------------------------*
FORM execute_program_function.
PERFORM build_file_name.
CLEAR: q_return,err_flag.

IF p_imp = 'X'.
PERFORM check_file_exists.
CHECK err_flag = ' '.
PERFORM func_import.
ELSE.
PERFORM func_export.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM BUILD_FILE_NAME *
*---------------------------------------------------------------------*
FORM build_file_name.
MOVE path TO winfile.
WRITE '\' TO winfile+30.
WRITE tabname TO winfile+31.
WRITE '.TAB' TO winfile+61(4).
CONDENSE winfile NO-GAPS.
ENDFORM.
*---------------------------------------------------------------------*
* FORM CHECK_FILE_EXISTS *
*---------------------------------------------------------------------*
FORM check_file_exists.

CALL FUNCTION 'WS_QUERY'
EXPORTING
filename = winfile
query = 'FE'
IMPORTING
return = q_return
EXCEPTIONS
OTHERS = 1.

IF syst-subrc NE 0 OR q_return NE 1.
err_flag = 'X'.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM func_export *
*---------------------------------------------------------------------*
FORM func_export.
CLEAR itab. REFRESH itab.

APPEND 'PROGRAM SUBPOOL.' TO itab.

APPEND 'FORM DOWNLOAD.' TO itab.
APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.
CONCATENATE 'INCLUDE STRUCTURE'
tabname
'.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'DATA: END OF IT_TAB.' TO itab.

CONCATENATE 'SELECT * FROM'
tabname
'INTO TABLE IT_TAB.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.

APPEND 'CALL FUNCTION ''WS_DOWNLOAD''' TO itab.
APPEND 'EXPORTING' TO itab.
CONCATENATE 'filename = ' ''''
winfile '''' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'filetype = ''DAT''' TO itab.
APPEND 'TABLES' TO itab.
APPEND 'DATA_TAB = IT_TAB.' TO itab.

APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.

APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.
APPEND 'WRITE: /1 syst-vline,' TO itab.
APPEND '''EXPORT'',' TO itab.
APPEND '15 ''data line(s) have been exported'',' TO itab.
APPEND '68 syst-index,' TO itab.
APPEND '80 syst-vline.' TO itab.
APPEND 'ULINE.' TO itab.

APPEND 'ENDFORM.' TO itab.

GENERATE SUBROUTINE POOL itab NAME zname.
PERFORM download IN PROGRAM (zname).
ENDFORM.
*---------------------------------------------------------------------*
* FORM func_import *
*---------------------------------------------------------------------*
FORM func_import.
CLEAR itab. REFRESH itab.
APPEND 'PROGRAM SUBPOOL.' TO itab.

APPEND 'FORM UPLOAD.' TO itab.
APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.
CONCATENATE 'INCLUDE STRUCTURE'
tabname
'.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'DATA: END OF IT_TAB.' TO itab.
APPEND 'DATA: BEGIN OF IT_TAB2 OCCURS 0.' TO itab.
CONCATENATE 'INCLUDE STRUCTURE'
tabname
'.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'DATA: END OF IT_TAB2.' TO itab.

APPEND 'CALL FUNCTION ''WS_UPLOAD''' TO itab.
APPEND 'EXPORTING' TO itab.
CONCATENATE 'filename = ' ''''
winfile '''' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'filetype = ''DAT''' TO itab.
APPEND 'TABLES' TO itab.
APPEND 'DATA_TAB = IT_TAB.' TO itab.

IF p_clear = 'X'.
CONCATENATE 'SELECT * FROM'
tabname
'INTO TABLE IT_TAB2.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.

APPEND 'LOOP AT IT_TAB2.' TO itab.
CONCATENATE 'DELETE'
tabname
'FROM IT_TAB2.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'ENDLOOP.' TO itab.
APPEND 'COMMIT WORK.' TO itab.
ENDIF.

APPEND 'LOOP AT IT_TAB.' TO itab.
CONCATENATE 'MODIFY'
tabname
'FROM IT_TAB.' INTO w_line SEPARATED BY space.
APPEND w_line TO itab.
APPEND 'ENDLOOP.' TO itab.

APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.

APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.
APPEND 'WRITE: /1 syst-vline,' TO itab.
APPEND '''IMPORT'',' TO itab.
APPEND '15 ''data line(s) have been imported'',' TO itab.
APPEND '68 syst-index,' TO itab.
APPEND '80 syst-vline.' TO itab.
APPEND 'ULINE.' TO itab.

APPEND 'ENDFORM.' TO itab.

GENERATE SUBROUTINE POOL itab NAME zname.
PERFORM upload IN PROGRAM (zname).
ENDFORM.
*---------------------------------------------------------------------*
* Form CHECK_SYSTEM
* Check users workstation is running
* WINDOWS 95, or WINDOWS NT.
* OS/2 uses 8.3 file names which are no good for
* this application as filenames created are 30 char
* same as table name.
* You could change the logic to only use the first 8 chars
* of the table name for the filename, but you could possibly
* get problems if users had exported already with a table
* with the same first 8 chars.
* As an alternate method you could request the user to input
* the full path including filename and remove the logic to
* build the path using the table name.
*---------------------------------------------------------------------*
FORM check_system.
CALL FUNCTION 'WS_QUERY'
EXPORTING
query = 'WS'
IMPORTING
return = winsys.

IF winsys NE 'WN32_95'.
WRITE: 'Windows NT or Windows 95/98 is required'.
EXIT.
ENDIF.

ENDFORM. " CHECK_SYSTEM
*---------------------------------------------------------------------*
* FORM PROCESS_TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM process_top_of_page.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
ULINE.

CONCATENATE syst-sysid
syst-saprl
syst-host INTO w_system SEPARATED BY space.

WRITE : AT /1(syst-linsz) w_system CENTERED.
WRITE : AT 1 syst-vline, syst-uname.
syst-linsz = syst-linsz - 11.
WRITE : AT syst-linsz syst-repid(008).
syst-linsz = syst-linsz + 11.
WRITE : AT syst-linsz syst-vline.

LOOP AT textpool_tab WHERE id EQ 'R'.
WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.
ENDLOOP.
WRITE : AT 1 syst-vline, syst-datum.
syst-linsz = syst-linsz - 11.
WRITE : AT syst-linsz syst-tcode(004).
syst-linsz = syst-linsz + 11.
WRITE : AT syst-linsz syst-vline.

LOOP AT textpool_tab WHERE id EQ 'T'.
WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.
ENDLOOP.
WRITE : AT 1 syst-vline, syst-uzeit.
syst-linsz = syst-linsz - 11.
WRITE : AT syst-linsz 'Page', syst-pagno.
syst-linsz = syst-linsz + 11.
WRITE : AT syst-linsz syst-vline.
ULINE.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.
LOOP AT textpool_tab WHERE id EQ 'H'.
WRITE : AT /1(syst-linsz) textpool_tab-entry.
ENDLOOP.

ULINE.
ENDFORM.