01-10-2008 8:39 AM
hai experts,
i need to change sub meterial stor.location in bom material.....
i tried through shdb it shows t-code difrently....and i tried through SCAT but it dosnt change all items
problem is for example
first bom having 4 items i record this and another having 10 mean it going to change only 4...
THIS IS MY PROBLEM.
OR
give a bapi name for cs02 t-code.
can any one give some solutions for this?
reward avail if helpful.
thanks in advance...
jai.m
01-10-2008 8:44 AM
Hi Kumar,
Try with User exits PCSD0002 if u want at item details and PCSD0003 if u want in header tables..
cheers,
Hema.
01-10-2008 8:45 AM
01-10-2008 9:00 AM
hai chandra,
can u tel me how to use this FM.......BECOSE I NEED TO PASS THE BOM METERIAL AND SUB METERIALS AND SOR LOCATION FOR THIS SUB MATERIAL ....
REGARDS,
JAI.M
01-10-2008 9:06 AM
Please check this program,
REPORTztestbi020 MESSAGE-ID 29 LINE-SIZE 255 NO STANDARD PAGE HEADING.
TABLES: bgr00,
bicsk,
bicsp,
bicsu,
csdata,
dynpread,
d020s,
d0300,
filename,
message,
msxxlist,
rlgrap,
t100,
t418.
CONSTANTS: max_commit_counter(5) TYPE n VALUE 50.
DATA: aux_text(70) TYPE c,
close_group LIKE csdata-xfeld,
commit_counter(5) TYPE n,
commit_work LIKE csdata-xfeld,
counter(6) TYPE n VALUE '1',
data_frn(1) TYPE c,
ds_phy_name LIKE rlgrap-filename,
dummy(1) TYPE c,
end_of_file(1) TYPE c,
header TYPE xstring,
filename1 TYPE string,
filetype TYPE char10,
filelength TYPE i,
group_open LIKE csdata-xfeld,
mask(20) TYPE c VALUE ',. ,..',
message_id LIKE t100-arbgb,
message_number LIKE t100-msgnr,
message_type LIKE syst-msgty,
message_var1 LIKE syst-msgv1,
message_var2 LIKE syst-msgv1,
message_var3 LIKE syst-msgv1,
message_var4 LIKE syst-msgv1,
new_group LIKE csdata-xfeld VALUE 'X',
no_group(1) TYPE c,
no_item(1) TYPE c,
no_transaction(1) TYPE c,
item_count LIKE syst-tabix,
postp LIKE t418-postp,
prev_transaction_exist(1) TYPE c,
prev_set_type(1) TYPE c,
last_set_type_1(1) TYPE c, "note390715
tcd_mode LIKE csdata-xfeld VALUE 'A',
tcode LIKE bicsk-tcode,
save_ucomm LIKE syst-ucomm,
group_opened(1) TYPE c, "note 187252
work_area(1000) TYPE c.
DATA: bom_header LIKE bicsk.
DATA: BEGIN OF aux_message_tab OCCURS 0.
INCLUDE STRUCTURE message.
DATA: group LIKE bgr00-group,
END OF aux_message_tab.
DATA: bom_items LIKE bicsp OCCURS 0 WITH HEADER LINE,
bom_sub_items LIKE bicsu OCCURS 0 WITH HEADER LINE,
pc_data_tab LIKE work_area OCCURS 0,
dynp_value_tab LIKE dynpread OCCURS 0 WITH HEADER LINE,
server_tab LIKE msxxlist OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS: <set_type>.
--
SELECTION-SCREEN BEGIN OF BLOCK server WITH FRAME TITLE text-009.
SELECTION-SCREEN BEGIN OF BLOCK app_server WITH FRAME TITLE text-012.
PARAMETERS: log_name LIKE filename-fileintern.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: data_app RADIOBUTTON GROUP csbi DEFAULT 'X'.
SELECTION-SCREEN COMMENT 4(42) text-006 FOR FIELD data_app.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: data_rem RADIOBUTTON GROUP csbi.
SELECTION-SCREEN COMMENT 4(42) text-008 FOR FIELD data_rem.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 4(12) text-010 FOR FIELD server.
PARAMETERS: server LIKE msxxlist-name.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK app_server.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK front_end WITH FRAME TITLE text-013.
PARAMETERS: ds_name LIKE rlgrap-filename.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK front_end.
SELECTION-SCREEN END OF BLOCK server.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK btci WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: bdc_flag AS CHECKBOX.
SELECTION-SCREEN COMMENT 4(20) text-002 FOR FIELD bdc_flag.
SELECTION-SCREEN COMMENT 25(40) text-003.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN COMMENT 25(52) text-004.
SELECTION-SCREEN END OF BLOCK btci.
--
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ds_name.
MOVE: syst-repid TO d020s-prog,
syst-dynnr TO d020s-dnum.
MOVE: 'DS_NAME' TO dynp_value_tab-fieldname.
APPEND dynp_value_tab.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING dyname = d020s-prog
dynumb = d020s-dnum
TABLES dynpfields = dynp_value_tab
EXCEPTIONS invalid_abapworkarea = 04
invalid_dynprofield = 08
invalid_dynproname = 12
invalid_dynpronummer = 16
invalid_request = 20
no_fielddescription = 24
undefind_error = 28.
READ TABLE dynp_value_tab INDEX 1.
MOVE: dynp_value_tab-fieldvalue TO ds_name.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING def_filename = space
def_path = ds_name
mask = mask
mode = 'O'
title = space
IMPORTING filename = ds_name
rc = dummy
EXCEPTIONS inv_winsys = 04
no_batch = 08
selection_cancel = 12
selection_error = 16.
IF syst-subrc EQ '04'.
MESSAGE i838.
ENDIF.
--
AT SELECTION-SCREEN ON VALUE-REQUEST FOR server.
MOVE: '255' TO msxxlist-msgtypes.
CALL FUNCTION 'TH_SELECT_SERVER'
EXPORTING services = msxxlist-msgtypes
IMPORTING server = server
EXCEPTIONS no_server_list_received = 04
no_server_selected = 08.
CASE syst-subrc.
WHEN '04'.
MESSAGE i623(00).
WHEN '08'.
MESSAGE i839.
ENDCASE.
--
AT SELECTION-SCREEN ON bdc_flag.
CHECK bdc_flag IS INITIAL.
CALL SCREEN 1100 STARTING AT 25 12 ENDING AT 61 17.
--
AT SELECTION-SCREEN.
CHECK NOT ( log_name IS INITIAL ).
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING logical_filename = log_name
IMPORTING file_name = ds_phy_name
EXCEPTIONS file_not_found = 04.
IF syst-subrc NE 0.
MESSAGE i016(mg) WITH log_name. "note509559
MESSAGE i821. "note509559
LEAVE PROGRAM. "note509559
ENDIF.
--
START-OF-SELECTION.
class cl_abap_container_utilities definition load.
IF NOT ( ds_name IS INITIAL ).
CLEAR: data_app, data_rem.
MOVE: 'X' TO data_frn.
ENDIF.
IF NOT ( data_frn IS INITIAL ).
IF NOT ( server IS INITIAL ).
MESSAGE i842.
ENDIF.
MOVE: ds_name TO filename1,
'ASC' TO filetype.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING filename = filename1
filetype = filetype
IMPORTING filelength = filelength
header = header
CHANGING data_tab = pc_data_tab
EXCEPTIONS file_open_error = 01
file_read_error = 02
no_batch = 03
gui_refuse_filetransfer = 04
invalid_type = 05
no_authority = 06
unknown_error = 07
bad_data_format = 08
header_not_allowed = 09
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17.
IF syst-subrc NE 0.
MESSAGE e506(id) WITH syst-subrc.
ENDIF.
ELSEIF NOT ( data_app IS INITIAL ).
IF NOT ( server IS INITIAL ).
MESSAGE i843.
ENDIF.
OPEN DATASET ds_phy_name FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF syst-subrc GT 0.
MESSAGE i800 WITH ds_phy_name.
MESSAGE i821. "note509559
LEAVE PROGRAM. "note509559
ENDIF.
ELSEIF NOT ( data_rem IS INITIAL ).
IF server IS INITIAL.
MESSAGE e840.
ENDIF.
MOVE: '255' TO msxxlist-msgtypes.
CALL FUNCTION 'TH_SERVER_LIST'
EXPORTING services = msxxlist-msgtypes
TABLES list = server_tab.
DESCRIBE TABLE server_tab LINES syst-tfill.
IF syst-tfill EQ 0.
MESSAGE e623(00).
ENDIF.
READ TABLE server_tab WITH KEY name = server.
IF syst-subrc NE 0.
READ TABLE server_tab WITH KEY host = server.
ENDIF.
IF syst-subrc EQ 0.
MOVE: server_tab-name TO server.
ELSE.
MESSAGE e841 WITH server.
ENDIF.
CALL FUNCTION 'CS_BI_GET_BOM_FILE_REMOTE_HOST' DESTINATION server
EXPORTING bom_filename = ds_phy_name
TABLES bom_file = pc_data_tab
EXCEPTIONS open_failure = 04
file_contains_no_data = 08.
CASE syst-subrc.
WHEN '04'.
READ TABLE server_tab WITH KEY name = server.
MESSAGE i844 WITH ds_phy_name server_tab-host.
MESSAGE i821. "note509559
LEAVE PROGRAM. "note509559
WHEN '08'.
READ TABLE server_tab WITH KEY name = server.
MESSAGE i845 WITH ds_phy_name server_tab-host.
MESSAGE i821. "note509559
LEAVE PROGRAM. "note509559
ENDCASE.
ENDIF.
ASSIGN work_area(1) TO <set_type>.
IF data_app IS INITIAL.
READ TABLE pc_data_tab INDEX counter INTO work_area.
ELSE.
READ DATASET ds_phy_name INTO work_area.
ENDIF.
IF syst-subrc GT 0.
MESSAGE i801 WITH ds_phy_name.
MESSAGE i821. "note509559
LEAVE PROGRAM. "note509559
ENDIF.
IF <set_type> NE '0'.
MESSAGE i802 WITH ds_phy_name.
MESSAGE i821. "note509559
LEAVE PROGRAM. "note509559
ENDIF.
MOVE: '0' TO prev_set_type,
work_area TO bgr00.
PERFORM check_group_variables.
WHILE end_of_file IS INITIAL.
CLEAR: work_area.
IF data_app IS INITIAL.
ADD: 1 TO counter.
READ TABLE pc_data_tab INDEX counter INTO work_area.
ELSE.
READ DATASET ds_phy_name INTO work_area.
ENDIF.
IF syst-subrc EQ 0.
CLEAR last_set_type_1.
ELSE.
MOVE: 'X' TO end_of_file,
'X' TO close_group.
IF NOT last_set_type_1 IS INITIAL.
MOVE: 'X' TO prev_transaction_exist.
ENDIF.
PERFORM process_previous_transaction.
ENDIF.
CHECK end_of_file IS INITIAL.
IF NOT ( no_group IS INITIAL ).
CHECK <set_type> EQ '0'.
ENDIF.
IF NOT ( no_transaction IS INITIAL ).
CHECK <set_type> CO '01'.
ENDIF.
PERFORM check_set_order USING <set_type>.
CHECK ( no_group IS INITIAL AND no_transaction IS INITIAL ).
CHECK <set_type> CO '0123'.
MOVE: <set_type> TO prev_set_type.
CASE <set_type>.
WHEN '0'.
CLEAR: aux_text.
MOVE: 'X' TO close_group.
PERFORM process_previous_transaction.
CLEAR: bom_header, close_group, commit_counter,
commit_work, item_count.
IF NOT ( group_opened IS INITIAL ).
CLEAR: group_opened.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDIF.
MOVE: 'X' TO new_group,
work_area TO bgr00.
PERFORM check_group_variables.
MOVE: text-014 TO aux_text.
REPLACE '&' WITH bgr00-group INTO aux_text.
PERFORM write_message USING 'I' '29' '899' aux_text
space space space.
WHEN '1'.
CLEAR: aux_text, item_count, tcode.
MOVE: 'X' TO last_set_type_1.
PERFORM process_previous_transaction.
CLEAR: bom_header.
CLEAR: bom_items. REFRESH bom_items.
CLEAR: bom_sub_items. REFRESH bom_sub_items.
MOVE: work_area TO bom_header.
IF ( bom_header-tcode NE 'CS02' AND
bom_header-tcode NE 'CS52' AND
bom_header-tcode NE 'CS72' AND
bom_header-tcode NE 'CV12' AND
bom_header-tcode NE 'IB02' AND
bom_header-tcode NE 'IB12' ).
PERFORM write_message USING 'E' '29' '811' bom_header-tcode
space space space.
CLEAR: prev_transaction_exist.
MOVE: 'X' TO no_transaction.
ENDIF.
MOVE: text-015 TO aux_text.
IF bom_header-tcode EQ 'CS02'.
REPLACE '&' WITH bom_header-matnr INTO aux_text.
REPLACE '&' WITH bom_header-werks INTO aux_text.
REPLACE '&' WITH bom_header-stlan INTO aux_text.
REPLACE '&' WITH bom_header-stlal INTO aux_text.
ELSEIF bom_header-tcode EQ 'IB02'.
REPLACE '&' WITH bom_header-equnr INTO aux_text.
REPLACE '&' WITH bom_header-werks INTO aux_text.
REPLACE '&' WITH bom_header-stlan INTO aux_text.
ENDIF.
PERFORM write_message USING 'I' '29' '899' aux_text
space space space.
IF NOT ( bdc_flag IS INITIAL ).
ADD: 1 TO commit_counter.
ENDIF.
WHEN '2'.
CLEAR: bom_items, no_item, postp, t418.
call method cl_abap_container_utilities=>read_container_c
exporting
im_container = work_area
importing
ex_value = bom_items
exceptions
others = 0.
move: bom_items-postp TO postp.
IF bom_items-alprf EQ space.
CLEAR: bom_items-alprf.
ENDIF.
SELECT SINGLE * FROM t418
WHERE postp EQ postp.
IF syst-subrc EQ 0.
MOVE: 1 TO bom_items-xline.
APPEND bom_items.
ADD: 1 TO item_count.
ELSE.
MOVE: 'X' TO no_item.
PERFORM write_message USING 'E' '29' '812' postp
space space space.
ENDIF.
WHEN '3'.
CLEAR: bom_sub_items.
IF NOT ( no_item IS INITIAL ).
PERFORM write_message USING 'E' '29' '813' postp
space space space.
ENDIF.
CHECK no_item IS INITIAL.
MOVE: work_area TO bom_sub_items,
item_count TO bom_sub_items-xline.
APPEND bom_sub_items.
MOVE: 'X' TO bom_items-upskz.
MODIFY bom_items INDEX item_count.
ENDCASE.
ENDWHILE.
IF NOT ( group_opened IS INITIAL ).
CLEAR: group_opened.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ELSE.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
OTHERS = 1.
ENDIF.
CLOSE DATASET ds_phy_name.
PERFORM display_bdc_protocol.
AT USER-COMMAND.
CASE syst-ucomm.
WHEN 'SM35'.
IF aux_message_tab-group IS INITIAL.
MESSAGE e818.
ENDIF.
CHECK NOT ( aux_message_tab-group IS INITIAL ).
SET PARAMETER ID 'MPN' FIELD aux_message_tab-group.
CALL TRANSACTION 'SM35' AND SKIP FIRST SCREEN.
ENDCASE.
--
----
FORM CHECK_SET_ORDER *
----
Die Routine ueberprueft die Reihenfolge der aus dem sequen- *
tiellen File eingelesenen Datensaetze. Auf einen Satz vom *
Typ '0' (Mappensatz) muss immer ein Satz vom Typ '1' *
(Stuecklisten-Kopfsatz) folgen. Vor einem Satz vom Typ '2' *
(Stuecklisten-Positionssatz) muss immer ein Satz vom Typ '1' *
stehen. Vor einem Satz vom Typ '3' (Unterpositionssatz) muss *
immer ein Satz vom Typ '2' stehen. *
----
--> C_STTYP (Satztyp) *
----
FORM check_set_order USING c_sttyp.
IF c_sttyp NE '0' AND c_sttyp NE '1' AND
c_sttyp NE '2' AND c_sttyp NE '3'.
PERFORM write_message USING 'E' '29' '803'
c_sttyp space space space.
EXIT.
ENDIF.
CASE prev_set_type.
WHEN '0'.
CASE c_sttyp.
WHEN '0'.
CLEAR: no_group.
PERFORM write_message USING 'E' '29' '804'
space space space space.
WHEN '1'.
CLEAR: no_transaction.
WHEN '2'.
MOVE: 'X' TO no_transaction.
PERFORM write_message USING 'E' '29' '805'
space space space space.
WHEN '3'.
MOVE: 'X' TO no_transaction.
PERFORM write_message USING 'E' '29' '806'
space space space space.
ENDCASE.
WHEN '1'.
CASE c_sttyp.
WHEN '3'.
MOVE: 'X' TO no_transaction.
PERFORM write_message USING 'E' '29' '806'
space space space space.
WHEN OTHERS.
CLEAR: no_transaction.
MOVE: 'X' TO prev_transaction_exist.
ENDCASE.
WHEN OTHERS.
CLEAR: no_transaction.
ENDCASE.
ENDFORM.
----
FORM CHECK_GROUP_VARIABLES *
----
Die Routine ueberprueft die allgemeinen Mappendaten auf *
Vollstaendigkeit. *
----
Keine USING Parameter *
----
FORM check_group_variables.
CLEAR: no_group.
IF bgr00-group IS INITIAL.
MOVE: 'X' TO no_group.
PERFORM write_message USING 'E' '29' '807'
bgr00-group space space space.
ENDIF.
IF bgr00-mandt IS INITIAL.
MOVE: 'X' TO no_group.
PERFORM write_message USING 'E' '29' '808'
bgr00-group space space space.
ENDIF.
IF bgr00-mandt NE syst-mandt.
MOVE: 'X' TO no_group.
PERFORM write_message USING 'E' '29' '809' bgr00-group
bgr00-mandt syst-mandt space.
ENDIF.
IF bgr00-usnam IS INITIAL.
MOVE: 'X' TO no_group.
PERFORM write_message USING 'E' '29' '810'
bgr00-group space space space.
ENDIF.
ENDFORM.
----
FORM DISPLAY_BDC_PROTOCOL *
----
Die Routine gibt das waehrend der Erstellung der Batch- *
Input-Mappe erstellte Protokoll aus. *
----
Keine USING Parameter *
----
FORM display_bdc_protocol.
DATA: loc_aux_message LIKE message.
SET PF-STATUS 'BTCI_LST'.
WRITE: / text-011.
ULINE.
LOOP AT aux_message_tab.
MOVE: aux_message_tab TO loc_aux_message.
WRITE: / loc_aux_message.
HIDE: aux_message_tab-group.
ENDLOOP.
ENDFORM.
----
FORM PROCESS_PREVIOUS_TRANSACTION *
----
Die Routine verarbeitet die zuvor erstellte Transaktion. *
----
Keine USING Parameter *
----
FORM process_previous_transaction.
DATA: sav_new_group LIKE csdata-xfeld.
CHECK NOT ( prev_transaction_exist IS INITIAL ).
IF NOT ( bdc_flag IS INITIAL ) AND
commit_counter GT max_commit_counter.
MOVE: 'X' TO commit_work.
ENDIF.
IF bdc_flag IS INITIAL.
MOVE: new_group TO sav_new_group.
ENDIF.
CALL FUNCTION 'CS_BC_BOM_CHANGE_BATCH_INPUT'
EXPORTING bdc_flag = bdc_flag
bom_header = bom_header
close_group = close_group
commit_work = commit_work
group_data = bgr00
new_group = new_group
tcode_mode = tcd_mode
tcode_update = 'A'
IMPORTING msgty = message_type
msgid = message_id
msgno = message_number
msgv1 = message_var1
msgv2 = message_var2
msgv3 = message_var3
msgv4 = message_var4
new_group_out = new_group
TABLES bom_item = bom_items
bom_sub_item = bom_sub_items.
CLEAR: prev_transaction_exist.
IF NOT ( sav_new_group IS INITIAL )
AND new_group IS INITIAL
AND close_group IS INITIAL.
MOVE: 'X' TO group_opened.
ENDIF.
IF NOT ( commit_work IS INITIAL ).
CLEAR: commit_counter, commit_work.
ENDIF.
IF new_group IS INITIAL.
MOVE: 'X' TO group_open.
ENDIF.
IF NOT ( CLOSE_GROUP IS INITIAL ).
CLEAR: GROUP_OPENED.
ENDIF.
CHECK NOT ( message_type IS INITIAL ).
PERFORM write_message USING message_type message_id
message_number
message_var1 message_var2
message_var3 message_var4.
CHECK message_type NE 'S' AND NOT ( group_open IS INITIAL ).
CHECK NOT ( bdc_flag IS INITIAL ) AND NOT ( close_group IS INITIAL ).
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM.
----
FORM WRITE_MESSAGE *
----
Die Routine schreibt eine Message in die Message-Tabelle. *
Die Messages werden in dem Funktionsbaustein *
'CS_MESSAGE_COLLECT' gesammelt und koennen spaeter wieder *
ausgegeben werden. *
----
--> W_MSGTY (Message-Typ) *
W_MSGID (Message-ID) *
W_MSGNO (Message-Nummer) *
W_MSGV1 (Message-Variable-1) *
W_MSGV2 (Message-Variable-2) *
W_MSGV3 (Message-Variable-3) *
W_MSGV4 (Message-Variable-4) *
----
FORM write_message USING w_msgty w_msgid w_msgno
w_msgv1 w_msgv2 w_msgv3 w_msgv4.
DATA: aux_msgid LIKE syst-msgid,
aux_msgno LIKE syst-msgno,
aux_msgty LIKE syst-msgty,
error_flag(1) TYPE c,
message_length(3) TYPE n.
DATA: loc_aux_message LIKE message.
CLEAR: aux_message_tab.
MOVE: w_msgty TO aux_msgty,
w_msgid TO aux_msgid,
w_msgno TO aux_msgno.
CALL FUNCTION 'WRITE_MESSAGE'
EXPORTING msgid = aux_msgid
msgno = aux_msgno
msgty = aux_msgty
msgv1 = w_msgv1
msgv2 = w_msgv2
msgv3 = w_msgv3
msgv4 = w_msgv4
msgv5 = space
IMPORTING error = error_flag
messg = loc_aux_message
msgln = message_length.
MOVE-CORRESPONDING: loc_aux_message TO aux_message_tab.
IF w_msgid EQ '29' AND w_msgno EQ '819'.
MOVE: w_msgv1 TO aux_message_tab-group.
ENDIF.
APPEND aux_message_tab TO aux_message_tab.
ENDFORM.
----
FORM D0300_CHECK *
----
Die Routine prueft die Eingaben auf dem Verarbeitungsbild. *
----
Keine USING Parameter *
----
FORM d0300_check.
CLEAR: tcd_mode.
IF d0300-hell EQ '.' AND d0300-error EQ '.' AND d0300-batch EQ '.'.
MESSAGE e310(00).
ENDIF.
IF d0300-hell EQ 'X'.
MOVE: 'A' TO tcd_mode.
ENDIF.
IF d0300-error EQ 'X' AND NOT ( tcd_mode IS INITIAL ).
MESSAGE e310(00).
ENDIF.
IF d0300-error EQ 'X' AND tcd_mode IS INITIAL.
MOVE: 'E' TO tcd_mode.
ENDIF.
IF d0300-batch EQ 'X' AND NOT ( tcd_mode IS INITIAL ).
MESSAGE e310(00).
ENDIF.
IF d0300-batch EQ 'X' AND tcd_mode IS INITIAL.
MOVE: 'N' TO tcd_mode.
ENDIF.
ENDFORM.
----
MODULE D0300_INIT (OUTPUT) *
----
Die Routine initialisiert das Verarbeitungsbild. *
----
MODULE d0300_init OUTPUT.
SET PF-STATUS 'CALL'.
SET TITLEBAR 'SLB'.
MOVE: syst-ucomm TO save_ucomm.
MOVE: '.' TO d0300-hell,
'.' TO d0300-error,
'.' TO d0300-batch.
ENDMODULE.
----
MODULE CHECK_D0300_FCODE *
----
Die Routine wertet den FCODE auf dem CALL SCREEN aus. *
----
MODULE check_d0300_fcode.
MOVE: save_ucomm TO syst-ucomm.
CASE d0300-fcode.
WHEN 'ABBR'.
IF syst-lsind EQ 1.
SUBTRACT: 1 FROM syst-lsind.
ENDIF.
SUBMIT rcsbi020 VIA SELECTION-SCREEN WITH log_name EQ log_name.
WHEN 'ENT1'.
PERFORM d0300_check.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'SELC'.
CASE syst-curow.
WHEN '3'.
MOVE: 'A' TO tcd_mode.
WHEN '4'.
MOVE: 'E' TO tcd_mode.
WHEN '5'.
MOVE: 'N' TO tcd_mode.
ENDCASE.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE.