Modification in ML87 upload program to change contract type
Hi Experts.
I need your help regarding ML87 transaction code. I want to change contract type for uploading prog. Currently I am uploading for default contract type XYZ1 and now i want to change it as XY as new default contract so can you tell me the process to make changes for contract type .
Thanks
Regards
Rajas01
Hi, use LSMW, Import method - recording
Similar Messages
-
Changing remaining Quantity through upload program.
Dear Gurus..
I want to change the remaining quantity of sales orders through an upload program.
Client has more then 3000 documents which are to be corrected . please guide me..
I have uploaded an image too.
[My Problem Image|http://www.geocities.com/saadnisarahmedkhatib/ABAP/SD_VA05.JPG]
Waiting for the good response
regards
Saad Nisar.It changes the sales order quantity.
my sales order quantity is the same i want to change the balance quantity.. -
Automating Cash Journal Posting using inbound proxy interface and upload program
Hi Experts,
I have a requirement where in cash journal posting needs to be carried out automatically by an inbound interface on a periodic basis and at the start during cut over an upload program needs to be used to upload beg balance data . For this purpose I have used BAPI_CASHJOURNALDOC_CREATE to save cash journal entries along with BAPI TRANSACTION COMMIT.
Once the Data is successfully saved I am using FM FCJ_GET_DATA_FOR_SCREEN to get prerequisite data for the FM FCJ_POST_ALL which is used by the Standard cash journal program internally to post the saved data. ( I got this by debugging the standard transaction and both FMs are not yet released )
The issues I am facing is that the the FM FCJ_POST_ALL does not always post the data it behaves in random fashion i.e some times it posts the entries where as sometimes it does not post the entries.
I have tried using commit work after the FM but that also does not result in consistent behavior of the program. One more issue is the i am not allowed to use commit work in a an inbound proxy so how do i proceed ?
I am attaching the code for further analysis:
DATA: LIT_TCJ_TRANS_NAMES TYPE TABLE OF TCJ_TRANS_NAMES,
LWA_TCJ_TRANS_NAMES TYPE TCJ_TRANS_NAMES,
LV_WAIT TYPE BAPITA-WAIT VALUE '1',
LV_RECORD_NO TYPE SY-TABIX.
DATA : LIT_POSTING TYPE STANDARD TABLE OF ISCJ_POSTINGS,
LIT_WTAX_ITEMS TYPE STANDARD TABLE OF TCJ_WTAX_ITEMS,
LIT_SPLIT_POSTINGS TYPE STANDARD TABLE OF ISCJ_POSTINGS,
LIT_CPD TYPE STANDARD TABLE OF TCJ_CPD.
DATA: LV_BEG_BALANCE TYPE CJAMOUNT,
LV_TOTAL_RECEIPTS TYPE CJAMOUNT,
LV_TOTAL_PAYMENTS TYPE CJAMOUNT,
LV_TOTAL_CHECKS TYPE CJAMOUNT,
LV_RUN_BALANCE TYPE CJAMOUNT,
LV_RUN_CASH_BALANCE TYPE CJAMOUNT,
LV_NUMB_OF_REC TYPE I,
LV_NUMB_OF_PAYM TYPE I,
LV_NUMB_OF_CHECKS TYPE I.
DESCRIBE TABLE GIT_CJ LINES GV_TOTAL_RECORDS.
SELECT MANDT COMP_CODE TRANSACT_NUMBER LANGU TRANSACT_NAME LONG_TEXT
FROM TCJ_TRANS_NAMES
INTO TABLE LIT_TCJ_TRANS_NAMES
WHERE LANGU = GC_EN.
IF SY-SUBRC <> 0.
MESSAGE 'No Business Transaction maintained for Company Code in this client'(016) TYPE GC_I.
LEAVE LIST-PROCESSING.
ENDIF.
DESCRIBE TABLE GIT_CJ LINES GV_TOTAL_RECORDS.
LOOP AT GIT_CJ INTO GWA_CJ.
LV_RECORD_NO = SY-TABIX.
CLEAR: GS_HEADER_BAPI,
GS_CJ_KEY,
GWA_ITEMS.
REFRESH: GIT_ITEMS,
GIT_RETURN.
GS_HEADER_BAPI-COMP_CODE = GWA_CJ-BUKRS.
GS_HEADER_BAPI-CAJO_NUMBER = GWA_CJ-CJNR.
GS_HEADER_BAPI-CURRENCY = GC_PHP.
CLEAR LWA_TCJ_TRANS_NAMES.
READ TABLE LIT_TCJ_TRANS_NAMES INTO LWA_TCJ_TRANS_NAMES WITH KEY COMP_CODE = GWA_CJ-BUKRS
LANGU = GC_EN
TRANSACT_NAME = GWA_CJ-BTNAM.
IF SY-SUBRC = 0.
GWA_ITEMS-TRANSACT_NUMBER = LWA_TCJ_TRANS_NAMES-TRANSACT_NUMBER.
GWA_ITEMS-P_RECEIPTS = GWA_CJ-CJRAT.
GWA_ITEMS-TAX_CODE = GWA_CJ-TXCOD.
GS_HEADER_BAPI-BP_NAME = GWA_CJ-BPNAM.
GWA_ITEMS-POSITION_TEXT = GWA_CJ-POTXT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-LIFNR
IMPORTING
OUTPUT = GWA_ITEMS-VENDOR_NO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-KUNNR
IMPORTING
OUTPUT = GWA_ITEMS-CUSTOMER.
PERFORM SUB_DATE_FROMAT_BAPI CHANGING GWA_CJ-BLDAT
GS_HEADER_BAPI-DOC_DATE.
PERFORM SUB_DATE_FROMAT_BAPI CHANGING GWA_CJ-BUDAT
GS_HEADER_BAPI-PSTNG_DATE.
GS_HEADER_BAPI-REF_DOC_NO = GWA_CJ-XBLNR.
GS_HEADER_BAPI-ALLOC_NMBR = GWA_CJ-ALLNO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-KOSTL
IMPORTING
OUTPUT = GWA_ITEMS-COSTCENTER.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-PRCTR
IMPORTING
OUTPUT = GWA_ITEMS-PROFIT_CTR.
APPEND GWA_ITEMS TO GIT_ITEMS.
CALL FUNCTION 'BAPI_CASHJOURNALDOC_CREATE'
EXPORTING
HEADER = GS_HEADER_BAPI
IMPORTING
COMPANY_CODE = GS_CJ_KEY-COMP_CODE
CASH_JOURNAL_NUMBER = GS_CJ_KEY-CAJO_NUMBER
FISCAL_YEAR = GS_CJ_KEY-FISC_YEAR
CASH_JOURNAL_DOC_NO = GS_CJ_KEY-POSTING_NUMBER
TABLES
ITEMS = GIT_ITEMS
RETURN = GIT_RETURN.
IF GIT_RETURN IS NOT INITIAL.
READ TABLE GIT_RETURN INTO GWA_RETURN WITH KEY TYPE = GC_E.
IF SY-SUBRC <> 0.
CLEAR GWA_CJ_S.
MOVE-CORRESPONDING GS_CJ_KEY TO GWA_CJ_S.
CLEAR GWA_RETURN.
READ TABLE GIT_RETURN INTO GWA_RETURN WITH KEY TYPE = GC_S.
IF SY-SUBRC = 0.
MOVE GWA_RETURN-MESSAGE TO GWA_CJ_S-MSG.
CLEAR GWA_RETURN.
READ TABLE GIT_RETURN INTO GWA_RETURN WITH KEY TYPE = GC_I.
IF SY-SUBRC = 0.
CLEAR GWA_CJ_E.
CONCATENATE GWA_RETURN-MESSAGE GWA_CJ_S-MSG INTO GWA_CJ_E-MSG SEPARATED BY GC_PIPE_FORMAT.
MOVE-CORRESPONDING GS_HEADER_BAPI TO GWA_CJ_E.
GWA_CJ_E-POSTING_NUMBER = LV_RECORD_NO.
APPEND GWA_CJ_E TO GIT_CJ_E.
GV_ERROR_RECORDS = GV_ERROR_RECORDS + GC_1.
ELSE.
IF P_TEST NE GC_X.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = LV_WAIT.
REFRESH:LIT_POSTING ,
LIT_WTAX_ITEMS ,
LIT_SPLIT_POSTINGS ,
LIT_CPD .
CLEAR: LV_BEG_BALANCE ,
LV_TOTAL_RECEIPTS ,
LV_TOTAL_PAYMENTS ,
LV_TOTAL_CHECKS ,
LV_RUN_BALANCE ,
LV_RUN_CASH_BALANCE ,
LV_NUMB_OF_REC ,
LV_NUMB_OF_PAYM ,
LV_NUMB_OF_CHECKS .
CALL FUNCTION 'FCJ_GET_DATA_FOR_SCREEN'
EXPORTING
I_COMP_CODE = GS_CJ_KEY-COMP_CODE
I_CAJO_NUMBER = GS_CJ_KEY-CAJO_NUMBER
I_DISPLAY_PERIOD_LO = GS_HEADER_BAPI-PSTNG_DATE
I_DISPLAY_PERIOD_HI = GS_HEADER_BAPI-PSTNG_DATE
IMPORTING
E_BEGINNING_BALANCE = LV_BEG_BALANCE
E_RUNNING_BALANCE = LV_RUN_BALANCE
E_RUNNING_CASH_BALANCE = LV_RUN_CASH_BALANCE
E_TOTAL_RECEIPTS = LV_TOTAL_RECEIPTS
E_TOTAL_REC_NUMBER = LV_NUMB_OF_REC
E_TOTAL_PAYMENTS = LV_TOTAL_PAYMENTS
E_TOTAL_PAYM_NUMBER = LV_NUMB_OF_PAYM
E_TOTAL_CHECKS = LV_TOTAL_CHECKS
E_TOTAL_CHECKS_NUMBER = LV_NUMB_OF_CHECKS
TABLES
E_POSTINGS = LIT_POSTING
E_WTAX_ITEMS = LIT_WTAX_ITEMS
E_SPLIT_POSTINGS = LIT_SPLIT_POSTINGS
E_CPD = LIT_CPD.
CALL FUNCTION 'FCJ_POST_ALL'
EXPORTING
I_COMP_CODE = GS_CJ_KEY-COMP_CODE
I_CAJO_NUMBER = GS_CJ_KEY-CAJO_NUMBER
I_CURRENCY = GS_HEADER_BAPI-CURRENCY
I_TYP = 'R'
I_DISPLAY_PERIOD_LO = GS_HEADER_BAPI-PSTNG_DATE
I_DISPLAY_PERIOD_HI = GS_HEADER_BAPI-PSTNG_DATE
* IMPORTING
* E_ERROR_NUMBER =
TABLES
ITCJ_POSTINGS = LIT_POSTING
ITCJ_WTAX_ITEMS = LIT_WTAX_ITEMS
ITCJ_SPLIT_POSTINGS = LIT_SPLIT_POSTINGS
ITCJ_CPD = LIT_CPD
CHANGING
P_BEG_BALANCE = LV_BEG_BALANCE
P_TOTAL_RECEIPTS = LV_TOTAL_RECEIPTS
P_TOTAL_PAYMENTS = LV_TOTAL_PAYMENTS
P_TOTAL_CHECKS = LV_TOTAL_CHECKS
P_RUN_BALANCE = LV_RUN_BALANCE
P_RUN_CASH_BALANCE = LV_RUN_CASH_BALANCE
P_NUMB_OF_REC = LV_NUMB_OF_REC
P_NUMB_OF_PAYM = LV_NUMB_OF_PAYM
P_NUMB_OF_CHECKS = LV_NUMB_OF_CHECKS.
COMMIT WORK.
ENDIF.
APPEND GWA_CJ_S TO GIT_CJ_S.
GV_SUCCESS_RECORDS = GV_SUCCESS_RECORDS + GC_1.
CLEAR GWA_CJ_S.
ENDIF.
ENDIF.
ELSE.
CLEAR GWA_CJ_E.
MOVE-CORRESPONDING GS_HEADER_BAPI TO GWA_CJ_E.
MOVE GWA_RETURN-MESSAGE TO GWA_CJ_E-MSG.
GWA_CJ_E-POSTING_NUMBER = LV_RECORD_NO.
APPEND GWA_CJ_E TO GIT_CJ_E.
GV_ERROR_RECORDS = GV_ERROR_RECORDS + GC_1.
ENDIF.
ENDIF.
ELSE.
GWA_RETURN-MESSAGE = 'Transaction Name does not correspond to any Transaction Number'(017).
CLEAR GWA_CJ_E.
MOVE-CORRESPONDING GS_HEADER_BAPI TO GWA_CJ_E.
MOVE GWA_RETURN-MESSAGE TO GWA_CJ_E-MSG.
GWA_CJ_E-POSTING_NUMBER = LV_RECORD_NO.
APPEND GWA_CJ_E TO GIT_CJ_E.
GV_ERROR_RECORDS = GV_ERROR_RECORDS + GC_1.
ENDIF.
ENDLOOP.
ENDFORM. " SUB_BAPI_CALLHi Experts,
I have a requirement where in cash journal posting needs to be carried out automatically by an inbound interface on a periodic basis and at the start during cut over an upload program needs to be used to upload beg balance data . For this purpose I have used BAPI_CASHJOURNALDOC_CREATE to save cash journal entries along with BAPI TRANSACTION COMMIT.
Once the Data is successfully saved I am using FM FCJ_GET_DATA_FOR_SCREEN to get prerequisite data for the FM FCJ_POST_ALL which is used by the Standard cash journal program internally to post the saved data. ( I got this by debugging the standard transaction and both FMs are not yet released )
The issues I am facing is that the the FM FCJ_POST_ALL does not always post the data it behaves in random fashion i.e some times it posts the entries where as sometimes it does not post the entries.
I have tried using commit work after the FM but that also does not result in consistent behavior of the program. One more issue is the i am not allowed to use commit work in a an inbound proxy so how do i proceed ?
I am attaching the code for further analysis:
DATA: LIT_TCJ_TRANS_NAMES TYPE TABLE OF TCJ_TRANS_NAMES,
LWA_TCJ_TRANS_NAMES TYPE TCJ_TRANS_NAMES,
LV_WAIT TYPE BAPITA-WAIT VALUE '1',
LV_RECORD_NO TYPE SY-TABIX.
DATA : LIT_POSTING TYPE STANDARD TABLE OF ISCJ_POSTINGS,
LIT_WTAX_ITEMS TYPE STANDARD TABLE OF TCJ_WTAX_ITEMS,
LIT_SPLIT_POSTINGS TYPE STANDARD TABLE OF ISCJ_POSTINGS,
LIT_CPD TYPE STANDARD TABLE OF TCJ_CPD.
DATA: LV_BEG_BALANCE TYPE CJAMOUNT,
LV_TOTAL_RECEIPTS TYPE CJAMOUNT,
LV_TOTAL_PAYMENTS TYPE CJAMOUNT,
LV_TOTAL_CHECKS TYPE CJAMOUNT,
LV_RUN_BALANCE TYPE CJAMOUNT,
LV_RUN_CASH_BALANCE TYPE CJAMOUNT,
LV_NUMB_OF_REC TYPE I,
LV_NUMB_OF_PAYM TYPE I,
LV_NUMB_OF_CHECKS TYPE I.
DESCRIBE TABLE GIT_CJ LINES GV_TOTAL_RECORDS.
SELECT MANDT COMP_CODE TRANSACT_NUMBER LANGU TRANSACT_NAME LONG_TEXT
FROM TCJ_TRANS_NAMES
INTO TABLE LIT_TCJ_TRANS_NAMES
WHERE LANGU = GC_EN.
IF SY-SUBRC <> 0.
MESSAGE 'No Business Transaction maintained for Company Code in this client'(016) TYPE GC_I.
LEAVE LIST-PROCESSING.
ENDIF.
DESCRIBE TABLE GIT_CJ LINES GV_TOTAL_RECORDS.
LOOP AT GIT_CJ INTO GWA_CJ.
LV_RECORD_NO = SY-TABIX.
CLEAR: GS_HEADER_BAPI,
GS_CJ_KEY,
GWA_ITEMS.
REFRESH: GIT_ITEMS,
GIT_RETURN.
GS_HEADER_BAPI-COMP_CODE = GWA_CJ-BUKRS.
GS_HEADER_BAPI-CAJO_NUMBER = GWA_CJ-CJNR.
GS_HEADER_BAPI-CURRENCY = GC_PHP.
CLEAR LWA_TCJ_TRANS_NAMES.
READ TABLE LIT_TCJ_TRANS_NAMES INTO LWA_TCJ_TRANS_NAMES WITH KEY COMP_CODE = GWA_CJ-BUKRS
LANGU = GC_EN
TRANSACT_NAME = GWA_CJ-BTNAM.
IF SY-SUBRC = 0.
GWA_ITEMS-TRANSACT_NUMBER = LWA_TCJ_TRANS_NAMES-TRANSACT_NUMBER.
GWA_ITEMS-P_RECEIPTS = GWA_CJ-CJRAT.
GWA_ITEMS-TAX_CODE = GWA_CJ-TXCOD.
GS_HEADER_BAPI-BP_NAME = GWA_CJ-BPNAM.
GWA_ITEMS-POSITION_TEXT = GWA_CJ-POTXT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-LIFNR
IMPORTING
OUTPUT = GWA_ITEMS-VENDOR_NO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-KUNNR
IMPORTING
OUTPUT = GWA_ITEMS-CUSTOMER.
PERFORM SUB_DATE_FROMAT_BAPI CHANGING GWA_CJ-BLDAT
GS_HEADER_BAPI-DOC_DATE.
PERFORM SUB_DATE_FROMAT_BAPI CHANGING GWA_CJ-BUDAT
GS_HEADER_BAPI-PSTNG_DATE.
GS_HEADER_BAPI-REF_DOC_NO = GWA_CJ-XBLNR.
GS_HEADER_BAPI-ALLOC_NMBR = GWA_CJ-ALLNO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-KOSTL
IMPORTING
OUTPUT = GWA_ITEMS-COSTCENTER.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_CJ-PRCTR
IMPORTING
OUTPUT = GWA_ITEMS-PROFIT_CTR.
APPEND GWA_ITEMS TO GIT_ITEMS.
CALL FUNCTION 'BAPI_CASHJOURNALDOC_CREATE'
EXPORTING
HEADER = GS_HEADER_BAPI
IMPORTING
COMPANY_CODE = GS_CJ_KEY-COMP_CODE
CASH_JOURNAL_NUMBER = GS_CJ_KEY-CAJO_NUMBER
FISCAL_YEAR = GS_CJ_KEY-FISC_YEAR
CASH_JOURNAL_DOC_NO = GS_CJ_KEY-POSTING_NUMBER
TABLES
ITEMS = GIT_ITEMS
RETURN = GIT_RETURN.
IF GIT_RETURN IS NOT INITIAL.
READ TABLE GIT_RETURN INTO GWA_RETURN WITH KEY TYPE = GC_E.
IF SY-SUBRC <> 0.
CLEAR GWA_CJ_S.
MOVE-CORRESPONDING GS_CJ_KEY TO GWA_CJ_S.
CLEAR GWA_RETURN.
READ TABLE GIT_RETURN INTO GWA_RETURN WITH KEY TYPE = GC_S.
IF SY-SUBRC = 0.
MOVE GWA_RETURN-MESSAGE TO GWA_CJ_S-MSG.
CLEAR GWA_RETURN.
READ TABLE GIT_RETURN INTO GWA_RETURN WITH KEY TYPE = GC_I.
IF SY-SUBRC = 0.
CLEAR GWA_CJ_E.
CONCATENATE GWA_RETURN-MESSAGE GWA_CJ_S-MSG INTO GWA_CJ_E-MSG SEPARATED BY GC_PIPE_FORMAT.
MOVE-CORRESPONDING GS_HEADER_BAPI TO GWA_CJ_E.
GWA_CJ_E-POSTING_NUMBER = LV_RECORD_NO.
APPEND GWA_CJ_E TO GIT_CJ_E.
GV_ERROR_RECORDS = GV_ERROR_RECORDS + GC_1.
ELSE.
IF P_TEST NE GC_X.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = LV_WAIT.
REFRESH:LIT_POSTING ,
LIT_WTAX_ITEMS ,
LIT_SPLIT_POSTINGS ,
LIT_CPD .
CLEAR: LV_BEG_BALANCE ,
LV_TOTAL_RECEIPTS ,
LV_TOTAL_PAYMENTS ,
LV_TOTAL_CHECKS ,
LV_RUN_BALANCE ,
LV_RUN_CASH_BALANCE ,
LV_NUMB_OF_REC ,
LV_NUMB_OF_PAYM ,
LV_NUMB_OF_CHECKS .
CALL FUNCTION 'FCJ_GET_DATA_FOR_SCREEN'
EXPORTING
I_COMP_CODE = GS_CJ_KEY-COMP_CODE
I_CAJO_NUMBER = GS_CJ_KEY-CAJO_NUMBER
I_DISPLAY_PERIOD_LO = GS_HEADER_BAPI-PSTNG_DATE
I_DISPLAY_PERIOD_HI = GS_HEADER_BAPI-PSTNG_DATE
IMPORTING
E_BEGINNING_BALANCE = LV_BEG_BALANCE
E_RUNNING_BALANCE = LV_RUN_BALANCE
E_RUNNING_CASH_BALANCE = LV_RUN_CASH_BALANCE
E_TOTAL_RECEIPTS = LV_TOTAL_RECEIPTS
E_TOTAL_REC_NUMBER = LV_NUMB_OF_REC
E_TOTAL_PAYMENTS = LV_TOTAL_PAYMENTS
E_TOTAL_PAYM_NUMBER = LV_NUMB_OF_PAYM
E_TOTAL_CHECKS = LV_TOTAL_CHECKS
E_TOTAL_CHECKS_NUMBER = LV_NUMB_OF_CHECKS
TABLES
E_POSTINGS = LIT_POSTING
E_WTAX_ITEMS = LIT_WTAX_ITEMS
E_SPLIT_POSTINGS = LIT_SPLIT_POSTINGS
E_CPD = LIT_CPD.
CALL FUNCTION 'FCJ_POST_ALL'
EXPORTING
I_COMP_CODE = GS_CJ_KEY-COMP_CODE
I_CAJO_NUMBER = GS_CJ_KEY-CAJO_NUMBER
I_CURRENCY = GS_HEADER_BAPI-CURRENCY
I_TYP = 'R'
I_DISPLAY_PERIOD_LO = GS_HEADER_BAPI-PSTNG_DATE
I_DISPLAY_PERIOD_HI = GS_HEADER_BAPI-PSTNG_DATE
* IMPORTING
* E_ERROR_NUMBER =
TABLES
ITCJ_POSTINGS = LIT_POSTING
ITCJ_WTAX_ITEMS = LIT_WTAX_ITEMS
ITCJ_SPLIT_POSTINGS = LIT_SPLIT_POSTINGS
ITCJ_CPD = LIT_CPD
CHANGING
P_BEG_BALANCE = LV_BEG_BALANCE
P_TOTAL_RECEIPTS = LV_TOTAL_RECEIPTS
P_TOTAL_PAYMENTS = LV_TOTAL_PAYMENTS
P_TOTAL_CHECKS = LV_TOTAL_CHECKS
P_RUN_BALANCE = LV_RUN_BALANCE
P_RUN_CASH_BALANCE = LV_RUN_CASH_BALANCE
P_NUMB_OF_REC = LV_NUMB_OF_REC
P_NUMB_OF_PAYM = LV_NUMB_OF_PAYM
P_NUMB_OF_CHECKS = LV_NUMB_OF_CHECKS.
COMMIT WORK.
ENDIF.
APPEND GWA_CJ_S TO GIT_CJ_S.
GV_SUCCESS_RECORDS = GV_SUCCESS_RECORDS + GC_1.
CLEAR GWA_CJ_S.
ENDIF.
ENDIF.
ELSE.
CLEAR GWA_CJ_E.
MOVE-CORRESPONDING GS_HEADER_BAPI TO GWA_CJ_E.
MOVE GWA_RETURN-MESSAGE TO GWA_CJ_E-MSG.
GWA_CJ_E-POSTING_NUMBER = LV_RECORD_NO.
APPEND GWA_CJ_E TO GIT_CJ_E.
GV_ERROR_RECORDS = GV_ERROR_RECORDS + GC_1.
ENDIF.
ENDIF.
ELSE.
GWA_RETURN-MESSAGE = 'Transaction Name does not correspond to any Transaction Number'(017).
CLEAR GWA_CJ_E.
MOVE-CORRESPONDING GS_HEADER_BAPI TO GWA_CJ_E.
MOVE GWA_RETURN-MESSAGE TO GWA_CJ_E-MSG.
GWA_CJ_E-POSTING_NUMBER = LV_RECORD_NO.
APPEND GWA_CJ_E TO GIT_CJ_E.
GV_ERROR_RECORDS = GV_ERROR_RECORDS + GC_1.
ENDIF.
ENDLOOP.
ENDFORM. " SUB_BAPI_CALL -
HCP tcode PA40 Upload program failing to move to next record.
Dear All
I have written and upload program for HCM tcode PA40 and the program is fine but only inserting one record and is failing to pick the next records in a loop. I dont know whats the problem i know the process have many screens, please help me, i have tried to research not yet found the answer yet.
Thank you for your assistance
Here is my Upload program
*& Report ZUPLOADEMPHIRING
REPORT ZUPLOADEMPHIRING.
include bdcrecx1.
PARAMETERS: p_file TYPE rlgrap-filename.
x_endrow TYPE i .
DATA: xdate(10).
DATA: Fullname type string.
DATA: x_begrow TYPE i VALUE 2,
x_begcol TYPE i VALUE 1,
x_endcol TYPE i VALUE 17,
x_endrow TYPE i VALUE 3.
TYPES: BEGIN OF t_datatab ,
FromDate(10),
Reasonforaction(2),
Position(8),
PersonalArea(4),
EmployeeGroup(1),
EmployeeSubGroup(2),
SubArea(4),
PayrolArea(2),
Title(5),
Lastname(40),
Firstname(40),
BirtDate(10),
Nationality(3),
Group(1),
Level(1),
BankKey(15),
BankAccount(18),
END OF t_datatab.
DATA: BEGIN OF t_datatabfinal OCCURS 0,
FromDate(10),
Reasonforaction(2),
Position(8),
PersonalArea(4),
EmployeeGroup(1),
EmployeeSubGroup(2),
SubArea(4),
PayrolArea(2),
Title(5),
Lastname(40),
Firstname(40),
BirtDate(10),
Nationality(3),
Group(1),
Level(1),
BankKey(15),
BankAccount(18),
END OF t_datatabfinal.
DATA: BEGIN OF it_record OCCURS 0,
FromDate(10),
Reasonforaction(2),
Position(8),
PersonalArea(4),
EmployeeGroup(1),
EmployeeSubGroup(2),
SubArea(4),
PayrolArea(2),
Title(5),
Lastname(40),
Firstname(40),
BirtDate(10),
Nationality(3),
Group(1),
Level(1),
BankKey(15),
BankAccount(18),
END OF it_record.
DATA: itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE,
gd_currentrow TYPE i,
it_datatab TYPE STANDARD TABLE OF t_datatab,
wa_datatab TYPE t_datatab.
AT SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME' "
EXPORTING
FIELD_NAME = 'P_FILE '
IMPORTING
FILE_NAME = p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
STATIC = ' '
MASK = ' '
CHANGING
FILE_NAME =
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
START-OF-SELECTION.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = x_begcol
i_begin_row = x_begrow "Column header not required
i_end_col = x_endcol
i_end_row = x_endrow
TABLES
intern = itab.
Sort table by rows and colums
SORT itab BY row col.
Get first row retrieved
READ TABLE itab INDEX 1.
Set first row retrieved to current row
gd_currentrow = itab-row.
clear: t_datatabfinal.
refresh t_datatabfinal.
LOOP AT itab.
Reset values for next row
IF itab-row NE gd_currentrow.
APPEND wa_datatab TO t_datatabfinal.
CLEAR wa_datatab.
gd_currentrow = itab-row.
ENDIF.
concatenate sy-datum6(2)'.' sy-datum4(2)'.' sy-datum+2(4) into xdate .
CASE itab-col.
WHEN '0001'.
wa_datatab-FromDate = itab-value.
concatenate wa_datatab-DocumentDate6(2)'.' wa_datatab-DocumentDate4(2)'.' wa_datatab-DocumentDate+2(4) into wa_datatab-DocumentDate.
WHEN '0002'.
wa_datatab-Reasonforaction = itab-value.
WHEN '0003'.
wa_datatab-Position = itab-value.
WHEN '0004'.
wa_datatab-PersonalArea = itab-value.
WHEN '0005'.
wa_datatab-EmployeeGroup = itab-value.
WHEN '0006'.
wa_datatab-EmployeeSubGroup = itab-value.
WHEN '0007'.
wa_datatab-SubArea = itab-value.
WHEN '0008'.
wa_datatab-PayrolArea = itab-value.
WHEN '0009'.
wa_datatab-Title = itab-value.
WHEN '0010'.
wa_datatab-Lastname = itab-value.
WHEN '0011'.
wa_datatab-Firstname = itab-value.
WHEN '0012'.
wa_datatab-BirtDate = itab-value.
WHEN '0013'.
wa_datatab-Nationality = itab-value.
WHEN '0014'.
wa_datatab-Group = itab-value.
WHEN '0015'.
wa_datatab-Level = itab-value.
WHEN '0016'.
wa_datatab-BankKey = itab-value.
WHEN '0017'.
wa_datatab-BankAccount = itab-value.
WHEN OTHERS.
ENDCASE.
APPEND wa_datatab to t_datatabfinal.
ENDLOOP.
clear: it_record.
refresh it_record.
loop at t_datatabfinal into it_record.
append it_record.
endloop.
perform open_group.
loop at it_record.
concatenate it_record-Firstname it_record-Lastname into Fullname separated by space.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'T529T-MNTXT(02)'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'RP50G-EINDA'
it_record-FromDate. "" '01012012'.
perform bdc_field using 'RP50G-SELEC(02)'
'X'.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'PSPAR-PERSG'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0000-BEGDA'
it_record-FromDate. "" '01.01.2012'.
perform bdc_field using 'P0000-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0000-MASSN'
'ZB'.
perform bdc_field using 'P0000-MASSG'
it_record-Reasonforaction. "" '01'.
perform bdc_field using 'PSPAR-PLANS'
it_record-Position. "" '99999999'.
perform bdc_field using 'PSPAR-WERKS'
it_record-PersonalArea. " 'm003'.
perform bdc_field using 'PSPAR-PERSG'
it_record-EmployeeGroup. "" 'a'.
perform bdc_field using 'PSPAR-PERSK'
it_record-EmployeeSubGroup. "" '02'.
perform bdc_dynpro using 'MP000100' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0001-BTRTL'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0001-BEGDA'
it_record-FromDate. ""'01.01.2012'.
perform bdc_field using 'P0001-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0001-BTRTL'
it_record-SubArea. "" 'mm01'.
perform bdc_field using 'P0001-ABKRS'
it_record-PayrolArea. "" 'Z2'.
perform bdc_field using 'P0001-PLANS'
it_record-Position. ""'99999999'.
perform bdc_dynpro using 'MP000200' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0002-NATIO'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0002-BEGDA'
it_record-FromDate. ""'01.01.2012'.
perform bdc_field using 'P0002-ENDDA'
'31.12.9999'.
perform bdc_field using 'Q0002-ANREX'
it_record-Title. "" 'Mr'.
perform bdc_field using 'P0002-NACHN'
it_record-Lastname. " 'maxwel'.
perform bdc_field using 'P0002-VORNA'
it_record-Firstname. "" 'razaro'.
perform bdc_field using 'P0002-GBDAT'
it_record-BirtDate. "" '01011970'.
perform bdc_field using 'P0002-SPRSL'
'EN'.
perform bdc_field using 'P0002-NATIO'
it_record-Nationality. "" 'ZW'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0007-BEGDA'
it_record-FromDate."" '01.01.2012'.
perform bdc_field using 'P0007-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0007-SCHKZ'
'MANORM'.
perform bdc_field using 'P0007-ZTERF'
'9'.
perform bdc_field using 'P0007-EMPCT'
' 100,00'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0007-BEGDA'
it_record-FromDate.""'01.01.2012'.
perform bdc_field using 'P0007-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0007-SCHKZ'
'MANORM'.
perform bdc_field using 'P0007-ZTERF'
'9'.
perform bdc_field using 'P0007-EMPCT'
' 100,00'.
perform bdc_field using 'P0007-ARBST'
' 8,00'.
perform bdc_field using 'P0007-WKWDY'
' 5,00'.
perform bdc_dynpro using 'MP000800' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0008-TRFST'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0008-BEGDA'
it_record-FromDate. "" '01.01.2012'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFAR'
'01'.
perform bdc_field using 'P0008-BSGRD'
'100,00'.
perform bdc_field using 'P0008-TRFGB'
'01'.
perform bdc_field using 'P0008-TRFGR'
it_record-Group. ""'a'.
perform bdc_field using 'P0008-TRFST'
it_record-Level. "" '1'.
perform bdc_field using 'P0008-DIVGV'
'173,00'.
perform bdc_field using 'P0008-ANCUR'
'USD'.
perform bdc_field using 'Q0008-IBBEG'
xdate.""'12.01.2012'.
perform bdc_field using 'P0008-WAERS'
'USD'.
perform bdc_dynpro using 'MP000900' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0009-ZLSCH'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0009-BEGDA'
it_record-FromDate. ""'01.01.2012'.
perform bdc_field using 'P0009-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0009-BNKSA'
'0'.
perform bdc_field using 'Q0009-EMFTX'
Fullname. "" 'maxwel razaro'.
perform bdc_field using 'P0009-BANKS'
'ZW'.
perform bdc_field using 'P0009-BANKL'
it_record-BankKey. ""'10351'.
perform bdc_field using 'P0009-BANKN'
it_record-BankAccount. "" '543234667778'.
perform bdc_field using 'P0009-ZLSCH'
'b'.
perform bdc_field using 'P0009-WAERS'
'USD'.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/EBCK'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_transaction using 'PA40'.
endloop.
perform close_group.
Regards
WilliamHi,
It seems like you are uploading data to a screen that contains table control.just check the link below for your reference
[http://wiki.sdn.sap.com/wiki/display/ABAP/bdcontable+control]
Regards,
Vamshi
Edited by: vamshi reddy . ch on Jan 13, 2012 7:38 AM
Edited by: vamshi reddy . ch on Jan 13, 2012 7:39 AM -
Dump "Buffer table not up to date" when we change contracts
Hi experts
I use SRM 3.0
Since we have added modifications in contracts, it is impossible to change contracts there's always a dump like "Buffer table not up to date : In FORM ITMADM_UPDATE (function group SAPLBBP_PDIAD) an inconsistent status was discovered. "
I saw a message in sdn with the same problem and so i tried to desactivate the BADI Check and the problem is not coming any more.
But I need to reactivate the Badi and I really do not understand why it dumps and the link with the badi Check and everyhting is correct in the Badi.
My last changes were : add a custumer field on header and check in the badi check tke rights values for this CUF.
Thank you for your help.
Peggy.Dear Rao
Go to Tr:ST22, get the dump log details, from there you will find where the error occur, as well as the callstack, Eg, which
FM, form ,has been called before the error occur. Set BP there , so you can proceed debug.
This dump could happen if there are some data is missing for this SC, in this case, FUNCTION 'BBP_LINK_GET_OW'
might interesting.
Regards
Lauren -
How to Upload Program Source Code
Hello,
i have a program which downloads the source code into text files.
I need to create all these into another server.
so i need a program to upload these programs.
Any idea how to it? Thanks in advance.
Thanks&Regards,
Sayanna DamerlaTry this custom code:
Upload and Download ABAP Source Code
Source Code Listing
Report: ZKBPROGS *
Function : Up/Download ABAP reports complete with texts *
- this program does not update TRDIR with the *
TRDIR entries that are in the program uploaded. Instead, *
current users stats are used. *
- this program allows selection of reports from a list or *
a single report can be tuped in and uploaded *
- this program also updates TADIR so that a development class*
is assigned to the program *
- this program checks to see if the program already has a *
TRDIR entry, and if it does, warns the user *
- this program will save/restore the program documenation too*
REPORT ZKBPROGS
NO STANDARD PAGE HEADING
LINE-SIZE 255.
Declare Database Objects *
tables:
DOKIL,
TRDIR.
Constants*
CONSTANTS:
MC_TRDIR_IDENTIFIER(72) TYPE C VALUE '%&%& RDIR',
MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&%& REPO',
MC_TEXT_IDENTIFIER(72) TYPE C VALUE '%&%& TEXP',
MC_THEAD_IDENTIFIER(72) TYPE C VALUE '%&%& HEAD',
MC_DOC_IDENTIFIER(72) TYPE C VALUE '%&%& DOKL',
MC_TRDIR_SHORT(4) TYPE C VALUE 'RDIR',
MC_REPORT_SHORT(4) TYPE C VALUE 'REPO',
MC_TEXT_SHORT(4) TYPE C VALUE 'TEXP',
MC_THEAD_SHORT(4) TYPE C VALUE 'HEAD',
MC_DOC_SHORT(4) TYPE C VALUE 'DOKP'.
Declare Module level data structures *
DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,
LINE(72) TYPE C,
END OF MTAB_PROGRAM_SOURCE.
DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.
DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.
DATA: MSTR_THEAD LIKE THEAD.
DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,
LINE(275) TYPE C,
END OF MTAB_PROGRAM_FILE.
DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,
NAME LIKE TRDIR-NAME,
DESC(72) TYPE C,
SAVENAME LIKE RLGRAP-FILENAME,
END OF MTAB_DIRECTORY.
DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,
LINE(255) TYPE C,
END OF MTAB_PROGRAM_DOCUMENTATION.
Selection Screen *
*-- Options for upload/download of programs
SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.
PARAMETERS:
RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'. " Download reports
SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.
SELECT-OPTIONS:
S_NAME FOR TRDIR-NAME, " Program Name
S_SUBC FOR TRDIR-SUBC " Program Type
DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default
S_CNAM FOR TRDIR-CNAM " Created by
DEFAULT SY-UNAME,
S_UNAM FOR TRDIR-UNAM, " Last Changed by
S_CDAT FOR TRDIR-CDAT, " Creation date
S_UDAT FOR TRDIR-UDAT. " Last update date
SELECTION-SCREEN END OF BLOCK FRM_TRDIR.
*-- Options for uploading programs
PARAMETERS:
RB_UP RADIOBUTTON GROUP UDL. " Upload reports
SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.
PARAMETERS:
RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.
SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.
SELECTION-SCREEN END OF LINE.
PARAMETERS:
RB_LIST RADIOBUTTON GROUP HOW.
SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.
SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.
*-- Options for up/downloading programs
SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.
PARAMETERS:
RB_DOS RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local
RB_UNIX RADIOBUTTON GROUP FIL, " Save to UNIX
P_PATH LIKE RLGRAP-FILENAME " Path to save files to
DEFAULT 'c:\temp\'.
SELECTION-SCREEN END OF BLOCK FRM_FILEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.
CALL FUNCTION 'F4_PROGRAM'
EXPORTING
OBJECT = S_NAME-LOW
SUPPRESS_SELECTION = 'X'
IMPORTING
RESULT = S_NAME-LOW
EXCEPTIONS
OTHERS = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.
CALL FUNCTION 'F4_PROGRAM'
EXPORTING
OBJECT = S_NAME-HIGH
SUPPRESS_SELECTION = 'X'
IMPORTING
RESULT = S_NAME-HIGH
EXCEPTIONS
OTHERS = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.
PERFORM GET_NAME USING 'S_UNAM-LOW'
CHANGING S_UNAM-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.
PERFORM GET_NAME USING 'S_UNAM-HIGH'
CHANGING S_UNAM-HIGH.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.
PERFORM GET_NAME USING 'S_CNAM-LOW'
CHANGING S_CNAM-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.
PERFORM GET_NAME USING 'S_CNAM-HIGH'
CHANGING S_CNAM-HIGH.
TOP-OF-PAGE.
IF RB_LIST = 'X'.
FORMAT COLOR COL_HEADING.
NEW-LINE.
WRITE: AT 3 TEXT-H01,
AT 15 TEXT-H03.
FORMAT COLOR OFF.
ENDIF.
AT LINE-SELECTION.
CHECK RB_LIST = 'X'. " only do in list mode
READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.
*-- Read file into an internal table
PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
USING MTAB_DIRECTORY-SAVENAME.
*-- Split table into TADIR entry, report lines, and report text
PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
MTAB_PROGRAM_SOURCE
MTAB_PROGRAM_TEXTS
MTAB_PROGRAM_DOCUMENTATION
CHANGING TRDIR
MSTR_THEAD.
*-- Save all of the data
PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
MTAB_PROGRAM_TEXTS
MTAB_PROGRAM_DOCUMENTATION
USING TRDIR
MSTR_THEAD.
Start of processing *
START-OF-SELECTION.
FORMAT COLOR COL_NORMAL.
IF RB_DOWN = 'X'.
PERFORM DOWNLOAD_REPORTS.
ELSEIF RB_UP = 'X'.
PERFORM UPLOAD_REPORTS.
ENDIF.
END-OF-SELECTION.
IF RB_DOWN = 'X'.
CONCATENATE P_PATH
'directory.txt'
INTO P_PATH.
PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY
USING P_PATH.
ENDIF.
FORM UPLOAD_REPORTS *
FORM UPLOAD_REPORTS.
*-- Can upload a reports entered in selection criteria or
*-- select from a list. List can be from index.txt in same directory
*-- (created by the download) or by reading the first line of each file
*-- in the directory.
IF RB_FILE = 'X'. " Upload single program from a file
*-- Read file into an internal table
PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
USING P_PATH.
*-- Split table into TADIR entry, report lines, and report text
PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
MTAB_PROGRAM_SOURCE
MTAB_PROGRAM_TEXTS
MTAB_PROGRAM_DOCUMENTATION
CHANGING TRDIR
MSTR_THEAD.
*-- Save all of the data
PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
MTAB_PROGRAM_TEXTS
MTAB_PROGRAM_DOCUMENTATION
USING TRDIR
MSTR_THEAD.
ELSEIF RB_LIST = 'X'. " Show list for user to choose from
*-- get list of report names/descriptions from directory text
CONCATENATE P_PATH
'directory.txt'
INTO P_PATH.
PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY
USING P_PATH.
SORT MTAB_DIRECTORY.
*-- Write out list of report names/descriptions
LOOP AT MTAB_DIRECTORY.
WRITE:
/ MTAB_DIRECTORY-NAME UNDER TEXT-H01,
MTAB_DIRECTORY-DESC UNDER TEXT-H03,
MTAB_DIRECTORY-SAVENAME.
ENDLOOP.
*-- Process user selections for reports to upload.
ENDIF.
ENDFORM. " upload_reports
FORM DOWNLOAD_REPORTS *
From the user selections, get all programs that meet the *
criteria, and save them in ftab_program_directory. *
Also save the report to disk. *
FORM DOWNLOAD_REPORTS.
DATA:
LC_FULL_FILENAME LIKE RLGRAP-FILENAME.
*-- The table is put into an internal table because the program will
*-- abend if multiple transfers to a dataset occur within a SELECT/
*-- ENDSELCT (tested on 3.1H)
SELECT * FROM TRDIR
INTO TABLE MTAB_PROGRAM_TRDIR
WHERE NAME IN S_NAME
AND SUBC IN S_SUBC
AND CNAM IN S_CNAM
AND UNAM IN S_UNAM
AND CDAT IN S_CDAT
AND UDAT IN S_UDAT.
LOOP AT MTAB_PROGRAM_TRDIR.
*-- Clear out text and source code tables
CLEAR:
MTAB_PROGRAM_FILE,
MTAB_PROGRAM_SOURCE,
MTAB_PROGRAM_TEXTS,
MTAB_PROGRAM_DOCUMENTATION.
REFRESH:
MTAB_PROGRAM_FILE,
MTAB_PROGRAM_SOURCE,
MTAB_PROGRAM_TEXTS,
MTAB_PROGRAM_DOCUMENTATION.
*-- Get the report
READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.
*-- Get the text for the report
READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.
*-- Get the documentation for the report
CLEAR DOKIL.
SELECT * UP TO 1 ROWS FROM DOKIL
WHERE ID = 'RE'
AND OBJECT = MTAB_PROGRAM_TRDIR-NAME
AND LANGU = SY-LANGU
AND TYP = 'E'
ORDER BY VERSION DESCENDING.
ENDSELECT.
*-- Documentation exists for this object
IF SY-SUBRC = 0.
CALL FUNCTION 'DOCU_READ'
EXPORTING
ID = DOKIL-ID
LANGU = DOKIL-LANGU
OBJECT = DOKIL-OBJECT
TYP = DOKIL-TYP
VERSION = DOKIL-VERSION
IMPORTING
HEAD = MSTR_THEAD
TABLES
LINE = MTAB_PROGRAM_DOCUMENTATION
EXCEPTIONS
OTHERS = 1.
ENDIF.
*-- Put the report code and texts into a single file
*-- Put the identifier line in so that the start of the TRDIR line
*-- is marked
CONCATENATE MC_TRDIR_IDENTIFIER
MTAB_PROGRAM_TRDIR-NAME
INTO MTAB_PROGRAM_FILE-LINE.
APPEND MTAB_PROGRAM_FILE.
*-- Add the TRDIR line
MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.
APPEND MTAB_PROGRAM_FILE.
*-- Put the identifier line in so that the start of the report code
*-- is marked
CONCATENATE MC_REPORT_IDENTIFIER
MTAB_PROGRAM_TRDIR-NAME
INTO MTAB_PROGRAM_FILE-LINE.
APPEND MTAB_PROGRAM_FILE.
*-- Add the report code
LOOP AT MTAB_PROGRAM_SOURCE.
MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.
APPEND MTAB_PROGRAM_FILE.
ENDLOOP.
*-- Put the identifier line in so that the start of the report text
*-- is marked
CONCATENATE MC_TEXT_IDENTIFIER
MTAB_PROGRAM_TRDIR-NAME
INTO MTAB_PROGRAM_FILE-LINE.
APPEND MTAB_PROGRAM_FILE.
*-- Add the report texts
LOOP AT MTAB_PROGRAM_TEXTS.
MTAB_PROGRAM_FILE = MTAB_PROGRAM_TEXTS.
APPEND MTAB_PROGRAM_FILE.
ENDLOOP.
*-- Put the identifier line in so that the start of the THEAD record
*-- is marked
CONCATENATE MC_THEAD_IDENTIFIER
MTAB_PROGRAM_TRDIR-NAME
INTO MTAB_PROGRAM_FILE-LINE.
APPEND MTAB_PROGRAM_FILE.
MTAB_PROGRAM_FILE = MSTR_THEAD.
APPEND MTAB_PROGRAM_FILE.
*-- Put the identifier line in so that the start of the report
*-- documentation is marked
CONCATENATE MC_DOC_IDENTIFIER
MTAB_PROGRAM_TRDIR-NAME
INTO MTAB_PROGRAM_FILE-LINE.
APPEND MTAB_PROGRAM_FILE.
*-- Add the report documentation
LOOP AT MTAB_PROGRAM_DOCUMENTATION.
MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.
APPEND MTAB_PROGRAM_FILE.
ENDLOOP.
*-- Make the fully pathed filename that report will be saved to
CONCATENATE P_PATH
MTAB_PROGRAM_TRDIR-NAME
'.txt'
INTO LC_FULL_FILENAME.
PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE
USING LC_FULL_FILENAME.
*-- Write out message with Program Name/Description
READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.
IF SY-SUBRC = 0.
MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.
MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
APPEND MTAB_DIRECTORY.
WRITE: / MTAB_PROGRAM_TRDIR-NAME,
MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.
ELSE.
MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
MTAB_DIRECTORY-DESC = 'No description available'.
MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
APPEND MTAB_DIRECTORY.
WRITE: / MTAB_PROGRAM_TRDIR-NAME.
ENDIF.
ENDLOOP.
ENDFORM. " BUILD_PROGRAM_DIRECTORY
FORM SAVE_TABLE_TO_FILE *
--> FTAB_TABLE *
--> F_FILENAME *
FORM SAVE_TABLE_TO_FILE TABLES FTAB_TABLE
USING F_FILENAME.
IF RB_DOS = 'X'. " Save file to presentation server
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = F_FILENAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = FTAB_TABLE
EXCEPTIONS
OTHERS = 4.
IF SY-SUBRC NE 0.
WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
F_FILENAME COLOR COL_NEGATIVE.
ENDIF.
ELSE. " Save file to application server
OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE.
IF SY-SUBRC = 0.
LOOP AT FTAB_TABLE.
TRANSFER FTAB_TABLE TO F_FILENAME.
IF SY-SUBRC NE 0.
WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,
F_FILENAME COLOR COL_NEGATIVE.
ENDIF.
ENDLOOP.
ELSE.
WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
F_FILENAME COLOR COL_NEGATIVE.
ENDIF.
ENDIF. " End RB_DOS
ENDFORM. " SAVE_PROGRAM
FORM READ_REPORT_FROM_DISK *
Read report into internal table. Can read from local or *
remote computer *
FORM READ_REPORT_FROM_DISK TABLES FTAB_TABLE
USING F_FILENAME.
DATA:
LC_MESSAGE(128) TYPE C.
CLEAR FTAB_TABLE.
REFRESH FTAB_TABLE.
IF RB_DOS = 'X'.
TRANSLATE F_FILENAME USING '/\'. " correct slash for Dos PC file
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = F_FILENAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = FTAB_TABLE
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC >< 0.
WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.
ENDIF.
ELSEIF RB_UNIX = 'X'.
TRANSLATE F_FILENAME USING '\/'. " correct slash for unix
OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE.
IF SY-SUBRC = 0.
DO.
READ DATASET F_FILENAME INTO FTAB_TABLE.
IF SY-SUBRC = 0.
APPEND FTAB_TABLE.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET F_FILENAME.
ELSE.
WRITE: / 'Error reading file from remote computer'
COLOR COL_NEGATIVE,
/ LC_MESSAGE,
/ F_FILENAME.
SY-SUBRC = 4.
ENDIF.
ENDIF.
ENDFORM. " READ_REPORT_FROM_DISK
FORM SPLIT_INCOMING_FILE *
--> FTAB_PROGRAM_FILE *
--> FTAB_PROGRAM_SOURCE *
--> ` *
--> FTAB_PROGRAM_TEXTS *
FORM SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE
STRUCTURE MTAB_PROGRAM_FILE
FTAB_PROGRAM_SOURCE
STRUCTURE MTAB_PROGRAM_SOURCE
FTAB_PROGRAM_TEXTS
STRUCTURE MTAB_PROGRAM_TEXTS
FTAB_PROGRAM_DOCUMENTATION
STRUCTURE MTAB_PROGRAM_DOCUMENTATION
CHANGING FSTR_TRDIR
FSTR_THEAD.
DATA:
LC_DATATYPE(4) TYPE C, " Type of data, REPO, TEXP, RDIR
LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.
LOOP AT FTAB_PROGRAM_FILE.
LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.
CASE LC_PROGRAM_FILE(9).
WHEN MC_TRDIR_IDENTIFIER.
LC_DATATYPE = MC_TRDIR_SHORT.
WHEN MC_REPORT_IDENTIFIER.
LC_DATATYPE = MC_REPORT_SHORT.
WHEN MC_TEXT_IDENTIFIER.
LC_DATATYPE = MC_TEXT_SHORT.
WHEN MC_DOC_IDENTIFIER.
LC_DATATYPE = MC_DOC_SHORT.
WHEN MC_THEAD_IDENTIFIER.
LC_DATATYPE = MC_THEAD_SHORT.
WHEN OTHERS. " Actual contents of report, trdir, or text
CASE LC_DATATYPE.
WHEN MC_TRDIR_SHORT.
FSTR_TRDIR = FTAB_PROGRAM_FILE.
WHEN MC_REPORT_SHORT.
FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.
APPEND FTAB_PROGRAM_SOURCE.
WHEN MC_TEXT_SHORT.
FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.
APPEND FTAB_PROGRAM_TEXTS.
WHEN MC_THEAD_SHORT.
FSTR_THEAD = FTAB_PROGRAM_FILE.
WHEN MC_DOC_SHORT.
FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.
APPEND FTAB_PROGRAM_DOCUMENTATION.
ENDCASE.
ENDCASE.
ENDLOOP.
ENDFORM. " SPLIT_INCOMING_FILE
FORM INSERT_NEW_REPORT*
--> FTAB_PROGRAM_SOURCE *
--> FTAB_PROGRAM_TEXTS *
--> F_TRDIR *
FORM INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE
STRUCTURE MTAB_PROGRAM_SOURCE
FTAB_PROGRAM_TEXTS
STRUCTURE MTAB_PROGRAM_TEXTS
FTAB_PROGRAM_DOCUMENTATION
STRUCTURE MTAB_PROGRAM_DOCUMENTATION
USING FSTR_TRDIR LIKE TRDIR
FSTR_THEAD LIKE MSTR_THEAD.
DATA:
LC_OBJ_NAME LIKE E071-OBJ_NAME,
LC_LINE2(40) TYPE C,
LC_ANSWER(1) TYPE C.
*-- read trdir to see if the report already exists, if it does, prompt
*-- user to overwrite or abort.
SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.
IF SY-SUBRC = 0. " Already exists
CONCATENATE 'want to overwrite report'
FSTR_TRDIR-NAME
INTO LC_LINE2 SEPARATED BY SPACE.
CONCATENATE LC_LINE2
INTO LC_LINE2.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION = 'N'
TEXTLINE1 = 'The selected report already exists, do you'
TEXTLINE2 = LC_LINE2
TITEL = 'Report already exists'
CANCEL_DISPLAY = SPACE
IMPORTING
ANSWER = LC_ANSWER
EXCEPTIONS
OTHERS = 1.
ELSE.
LC_ANSWER = 'J'.
ENDIF.
IF LC_ANSWER = 'J'.
*-- Create the TADIR entry. (TRDIR entry created by INSERT REPORT)
LC_OBJ_NAME = TRDIR-NAME.
CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'
EXPORTING
WI_E071_PGMID = 'R3TR'
WI_E071_OBJECT = 'PROG'
WI_E071_OBJ_NAME = LC_OBJ_NAME
WI_TADIR_DEVCLASS = '$TMP'
EXCEPTIONS
EXIT = 3
OTHERS = 4.
IF SY-SUBRC = 0.
*-- Create Report
INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.
*-- Create Texts
INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS
LANGUAGE SY-LANGU.
*-- Save Documentation
CALL FUNCTION 'DOCU_UPDATE'
EXPORTING
HEAD = FSTR_THEAD
STATE = 'A'
TYP = 'E'
VERSION = '1'
TABLES
LINE = FTAB_PROGRAM_DOCUMENTATION
EXCEPTIONS
OTHERS = 1.
ELSE.
WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,
'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,
FSTR_TRDIR-NAME, 'was not loaded into SAP.'
COLOR COL_NEGATIVE INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,
'was not uploaded into SAP. Action cancelled by user'
COLOR COL_NEGATIVE INTENSIFIED OFF.
ENDIF.
ENDFORM. " INSERT_NEW_REPORT
FORM GET_NAME *
--> VALUE(F_FIELD) *
--> F_NAME *
FORM GET_NAME USING VALUE(F_FIELD)
CHANGING F_NAME.
DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
LC_PROG LIKE D020S-PROG,
LC_DNUM LIKE D020S-DNUM.
TRANSLATE F_FIELD TO UPPER CASE.
refresh ltab_fields.
LTAB_FIELDS-FIELDNAME = F_FIELD.
append ltab_fields.
LC_PROG = SY-REPID .
LC_DNUM = SY-DYNNR .
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = LC_PROG
DYNUMB = LC_DNUM
TABLES
dynpfields = ltab_fields
EXCEPTIONS
OTHERS = 01.
read table ltab_fields index 1.
IF SY-SUBRC EQ 0.
F_NAME = LTAB_FIELDS-FIELDVALUE.
refresh ltab_fields.
ENDIF.
CALL FUNCTION 'F4_USER'
EXPORTING
OBJECT = F_NAME
IMPORTING
RESULT = F_NAME.
ENDFORM. " GET_NAME
Program Texts
DIR File Download Options (File Selection)
FIL File Options
FNA Enter filename below (under File Options)
H01 Prog Name
H03 Program Description
SNG Upload a single file
UDL Upload to SAP/Download from SAP
UPL File Upload Options
R Backup/Restore program source code with texts
P_PATH Path to save programs to
RB_DOS Files on local computer
RB_DOWN Download Programs
RB_FILE Upload a single file
RB_LIST Select program(s) from a list
RB_UNIX Files on remote computer
RB_UP Upload Programs to SAP
S_CDAT Date Created
S_CNAM Created by UserID
S_NAME Program Name
S_SUBC Program Type
S_UDAT Date Changed
S_UNAM Last Changed by UserID
Regards,
Joy. -
Upload Program(sap-abap)
Hi Friends,
I am using existing program to upload data(MM01 - BASIC VIEW ).But one of the field(MARA-BISMT) for old material number is neither uploading to transaction nor database.I have to uoload for other views(Purchasing, Accounting and so on) also which are depended on this old material number field.
Secondly, Functional guy suggest me to add some of the fileds into it which are not available in upload structure.
Could you guide me how to fix this issue in below code and upload data safely ?
* Description : Migration Program for Material Master Basic View
* Using xls-structure in Migration Overview: MM-Basic View
* NAME SR DATE VER. XLS DESCRIPTION OF VERSION
* 8804 04.05.2008 1.0 1.0 Original program
* 8804 27.05.2004 1.1 1.0 Changed check for pack size
* multi pack size, EAN no,
* does not write to initial
* bdc_fields FORMT and FERTH
* 8804 09.06.2006 1.2 1.0 added flag for intercompany
* materials on converting table, also changed FM
* ZMM_ADD_OLD_MATNR_TO_CONV_TABL
REPORT z_basic.
* Structure for batch input
CONSTANTS: c_structure TYPE tabname VALUE 'ZMM_BASIC_VIEW'.
TABLES: makt, t006a, t024l, t002, zpmg, zsf1, zsf2, zsf3, zsf4, zsf5,
zdrc, zdkb, zcce, zpsz, zcns, zusz, zatc, zmsz, t006, tntp, t179
* Internal Tables
DATA: i_data TYPE STANDARD TABLE OF zmm_basic_view.
DATA: i_spras TYPE STANDARD TABLE OF makt-spras.
* selection screen
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: p_file(128) DEFAULT 'U:\My Documents\mm_basic.txt'.
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
PARAMETERS: p_test NO-DISPLAY DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK block1.
INCLUDE Z_BASIC_A.
*INCLUDE zmigration.
* START-OF-SELECTION
START-OF-SELECTION.
PERFORM upload_file.
PERFORM check_entries.
PERFORM add_icons.
IF p_test NE 'X'.
PERFORM update.
update_run = 'X'.
ENDIF.
PERFORM show_result.
*& Form UPDATE
* text
* --> p1 text
* <-- p2 text
FORM update.
CALL FUNCTION 'ZMM_BASIC'
EXPORTING
mode = p_mode
TABLES
i_data = i_data
i_mess = i_mess.
* update conversion table for materials where SAP-number already
* exists and material description also already exist for language in
* field SPRAS_2. This will only happen for inter company materials.
LOOP AT i_data INTO wa_data WHERE zman_update EQ 'X'.
CALL FUNCTION 'ZMM_ADD_OLD_MATNR_TO_CONV_TABL'
EXPORTING
zzomp = wa_data-old_matnr
werks = '54' " dummy plant
matnr = wa_data-matnr
bismt = wa_data-old_matnr
inter_company = 'X'.
wa_data-msgtx = 'Conversion table for material updated'.
wa_data-msgtyp = 'I'.
WRITE icon_led_yellow AS ICON TO wa_data-icon.
MODIFY i_data FROM wa_data TRANSPORTING icon msgtyp msgtx.
ENDLOOP.
ENDFORM. " UPDATE
*& Form SHOW_RESULT
* text
* --> p1 text
* <-- p2 text
FORM show_result.
PERFORM generate_fieldcatalog.
PERFORM hide_blank_fields.
PERFORM unhide_message_columns.
PERFORM move_message_columns.
* PERFORM add_sorting_to_grid. " sort by first column in file
IF called_screen_100 EQ space.
called_screen_100 = 'X'.
CALL SCREEN 100.
ENDIF.
ENDFORM. " SHOW_RESULT
*& Form check_entries
* text
* --> p1 text
* <-- p2 text
FORM check_entries.
DATA: wa_find_new_material TYPE zfind_new_material_number.
LOOP AT i_data INTO wa_data.
* if file has been downloaded, it may already contain messages
CLEAR: wa_data-icon,
wa_data-msgtyp,
wa_data-msgtx.
TRANSLATE wa_data-spras_2 TO UPPER CASE.
TRANSLATE wa_data-meins TO UPPER CASE.
TRANSLATE wa_data-gewei TO UPPER CASE.
TRANSLATE wa_data-voleh TO UPPER CASE.
TRANSLATE wa_data-zzcce TO UPPER CASE.
* If the material already exists, only texts should be maintained
IF NOT wa_data-matnr IS INITIAL.
* Required fields filled?
CASE space.
WHEN wa_data-spras_2.
wa_data-msgtx = 'Field language key (SPRAS_2) is required'.
WHEN wa_data-maktx_2.
wa_data-msgtx = 'Field mat. description (MAKTX_2) is required'.
ENDCASE.
* Set old_matnr to SAP number if it is not filled
IF wa_data-old_matnr IS INITIAL.
wa_data-old_matnr = wa_data-matnr.
ENDIF.
IF wa_data-msgtx EQ space.
* Language key allowed
SELECT SINGLE * FROM t002
WHERE spras = wa_data-spras_2.
IF sy-subrc NE 0.
wa_data-msgtx = 'Language key does not exist (spras_2)'.
ENDIF.
ENDIF.
IF wa_data-msgtx IS INITIAL.
SHIFT wa_data-matnr RIGHT DELETING TRAILING space.
OVERLAY wa_data-matnr WITH '000000000000000000'.
SELECT SINGLE * FROM makt
WHERE matnr EQ wa_data-matnr
AND spras EQ wa_data-spras_2.
IF sy-subrc EQ 0.
CONCATENATE 'Mat. description already exists for language'
wa_data-spras_2
INTO wa_data-msgtx SEPARATED BY space.
MOVE 'X' TO wa_data-zman_update.
ENDIF.
ENDIF.
* Change material - Find line to insert the new description.
IF wa_data-msgtx IS INITIAL.
SELECT spras
INTO TABLE i_spras
FROM makt
WHERE matnr = wa_data-matnr.
DESCRIBE TABLE i_spras LINES l_lines.
IF l_lines > 3.
* All screen fields for descriptions are filled - Must be updated
* manually -
* ( or add code to insert into MAKT in an other way... )
wa_data-msgtx =
'Description must be added manually - only 4 lines available on screen'.
wa_data-zman_update = 'X'.
* added to converting table after update run
ENDIF.
ENDIF.
ELSE.
* Check if required fields are filled
CASE space.
WHEN wa_data-spras_2.
wa_data-msgtx = 'Field language key (SPRAS_2) is required'.
WHEN wa_data-maktx_1.
wa_data-msgtx = 'Field mat. description (MAKTX_1) is required'.
WHEN wa_data-maktx_2.
wa_data-msgtx = 'Field mat. description (MAKTX_2) is required'.
WHEN wa_data-mbrsh.
wa_data-msgtx = 'Field Industry sector (mbrsh) is required'.
WHEN wa_data-mtart.
wa_data-msgtx = 'Field Material type (mtart) is required'.
WHEN wa_data-meins.
wa_data-msgtx = 'Field Base unit of measure (meins) is required'.
WHEN wa_data-prdha.
wa_data-msgtx = 'Field Product hierarchy (prdha) is required'.
WHEN wa_data-labor.
wa_data-msgtx = 'Field Laboratory design (labor) is required'.
ENDCASE.
* Values allowed?
IF wa_data-msgtx EQ space.
* Base unit of measure
SELECT SINGLE * FROM t006a
WHERE spras = sy-langu
AND mseh3 = wa_data-meins.
IF sy-subrc NE 0.
wa_data-msgtx = 'Base unit of measure does not exist (mseh3)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space.
* Lab./Office
SELECT SINGLE * FROM t024l
WHERE labor = wa_data-labor.
IF sy-subrc NE 0.
wa_data-msgtx = 'Lab./Office does not exist (labor)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space.
* Language key
SELECT SINGLE * FROM t002
WHERE spras = wa_data-spras_2.
IF sy-subrc NE 0.
wa_data-msgtx = 'Language key does not exist (spras_2)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space.
* Product hierarchy
SELECT SINGLE * FROM t179
WHERE prodh = wa_data-prdha.
IF sy-subrc NE 0.
wa_data-msgtx = 'Product hierarchy does not exist (PRDHA)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space AND NOT wa_data-zzpmg IS INITIAL.
* ProdMatGrp (ABC ind)
SELECT SINGLE * FROM zpmg
WHERE zzpmg = wa_data-zzpmg.
IF sy-subrc NE 0.
wa_data-msgtx =
'ProdMatGrp (ABC ind) does not exist (zzpmg)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space AND NOT wa_data-zzsf1 IS INITIAL.
* Sort field 1
SELECT SINGLE * FROM zsf1
WHERE zzsf1 = wa_data-zzsf1.
IF sy-subrc NE 0.
wa_data-msgtx =
'Sort field 1 does not exist (ZZSF1)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space AND NOT wa_data-zzsf2 IS INITIAL.
* Sort field 2
SELECT SINGLE * FROM zsf2
WHERE zzsf2 = wa_data-zzsf2.
IF sy-subrc NE 0.
wa_data-msgtx =
'Sort field 2 does not exist (ZZSF2)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space AND NOT wa_data-zzsf3 IS INITIAL.
* Sort field 3
SELECT SINGLE * FROM zsf3
WHERE zzsf3 = wa_data-zzsf3.
IF sy-subrc NE 0.
wa_data-msgtx =
'Sort field 3 does not exist (ZZSF3)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space AND NOT wa_data-zzsf4 IS INITIAL.
* Sort field 4
SELECT SINGLE * FROM zsf4
WHERE zzsf4 = wa_data-zzsf4.
IF sy-subrc NE 0.
wa_data-msgtx =
'Sort field 4 does not exist (ZZSF4)'.
ENDIF.
ENDIF.
IF wa_data-msgtx EQ space AND NOT wa_data-zzsf5 IS INITIAL.
* Sort field 5
SELECT SINGLE * FROM zsf5
WHERE zzsf5 = wa_data-zzsf5.
IF sy-subrc NE 0.
wa_data-msgtx =
'Sort field 5 does not exist (ZZSF5)'.
ENDIF.
ENDIF.
* Drug Code
IF wa_data-msgtx EQ space AND NOT wa_data-zzdrc IS INITIAL.
SELECT SINGLE * FROM zdrc
WHERE zzdrc = wa_data-zzdrc.
IF sy-subrc NE 0.
wa_data-msgtx =
'Drug Code does not exist (zzdrc)'.
ENDIF.
ENDIF.
* Narco Base
IF wa_data-msgtx EQ space AND NOT wa_data-zzdkb IS INITIAL.
SELECT SINGLE * FROM zdkb
WHERE zzdkb = wa_data-zzdkb.
IF sy-subrc NE 0.
wa_data-msgtx =
'Narco Base does not exist (zzdkb)'.
ENDIF.
ENDIF.
* Country code, Emscope standard
IF wa_data-msgtx EQ space AND NOT wa_data-zzcce IS INITIAL.
SELECT SINGLE * FROM zcce
WHERE zzcce = wa_data-zzcce.
IF sy-subrc NE 0.
wa_data-msgtx =
'Country code, Emscope standard does not exist (zzcce)'.
ENDIF.
ENDIF.
* Package size
IF wa_data-msgtx EQ space AND NOT wa_data-zzpsz IS INITIAL.
CONDENSE wa_data-zzpsz.
SELECT SINGLE * FROM zpsz
WHERE zzpsz = wa_data-zzpsz.
IF sy-subrc NE 0.
wa_data-msgtx = 'Package size does not exist (zzpsz)'.
ENDIF.
ENDIF.
* Concentration
IF wa_data-msgtx EQ space AND NOT wa_data-zzcns IS INITIAL.
SELECT SINGLE * FROM zcns
WHERE zzcns = wa_data-zzcns.
IF sy-subrc NE 0.
wa_data-msgtx =
'Concentration does not exist (ZZCNS)'.
ENDIF.
ENDIF.
* Unit Size
IF wa_data-msgtx EQ space AND NOT wa_data-zzusz IS INITIAL.
SELECT SINGLE * FROM zusz
WHERE zzusz = wa_data-zzusz.
IF sy-subrc NE 0.
wa_data-msgtx =
'Unit Size does not exist (ZZUSZ)'.
ENDIF.
ENDIF.
* ATC-no.
IF wa_data-msgtx EQ space AND NOT wa_data-zzatc IS INITIAL.
SELECT SINGLE * FROM zatc
WHERE zzatc = wa_data-zzatc.
IF sy-subrc NE 0.
wa_data-msgtx =
'ATC-no. does not exist (ZZATC)'.
ENDIF.
ENDIF.
* Multi pack size
IF wa_data-msgtx EQ space AND NOT wa_data-zzmsz IS INITIAL.
CONDENSE wa_data-zzmsz.
SELECT SINGLE * FROM zmsz
WHERE zzmsz = wa_data-zzmsz.
IF sy-subrc NE 0.
wa_data-msgtx =
'Multi pack size does not exist (ZZMSZ)'.
ENDIF.
ENDIF.
* Weight Unit
IF wa_data-msgtx EQ space AND NOT wa_data-gewei IS INITIAL.
SELECT SINGLE * FROM t006
WHERE msehi = wa_data-gewei.
IF sy-subrc NE 0.
wa_data-msgtx =
'Weight Unit does not exist (GEWEI)'.
ENDIF.
ENDIF.
* Volume Unit
IF wa_data-msgtx EQ space AND NOT wa_data-voleh IS INITIAL.
SELECT SINGLE * FROM t006
WHERE msehi = wa_data-voleh.
IF sy-subrc NE 0.
wa_data-msgtx =
'Volume Unit does not exist (VOLEH)'.
ENDIF.
ENDIF.
* EAN for Germany will be entered manually by Cato.
if wa_data-ean11 ne space and wa_data-msgtx eq space.
data: l_ean_length type i.
l_ean_length = strlen( wa_data-ean11 ).
if l_ean_length ne 13 or wa_data-matnr ne space.
wa_data-msgtx =
'Enter EAN numbers manually for Germany and common materials'.
elseif wa_data-numtp is initial.
wa_data-msgtx = 'EAN category must be given for EAN number'.
endif.
endif.
if wa_data-ean11 eq space and wa_data-numtp ne space.
* Makes no sense to have an EAN category when there is no EAN
clear: wa_data-numtp.
endif.
ENDIF. " IF NOT wa_data-matnr IS INITIAL.
* Has material already been migrated?
IF wa_data-msgtx EQ space and wa_data-msgtyp ne 'W'.
CLEAR: wa_find_new_material.
MOVE: wa_data-old_matnr TO wa_find_new_material-matnr_old,
'54' TO wa_find_new_material-werks.
CALL FUNCTION 'ZFIND_NEW_MATERIAL_NUMBER'
EXPORTING
get_from_marc = space
CHANGING
wa_data = wa_find_new_material.
IF NOT wa_find_new_material-matnr IS INITIAL.
CONCATENATE: 'Material already created:'
wa_find_new_material-matnr
INTO wa_data-msgtx
SEPARATED BY space.
wa_data-msgtyp = 'E'.
ENDIF.
ENDIF.
* Set all messages that are not Warning to Error
IF wa_data-msgtx NE space AND wa_data-msgtyp EQ space.
MOVE: 'E' TO wa_data-msgtyp.
ENDIF.
MODIFY i_data FROM wa_data.
ENDLOOP.
ENDFORM. " check_entries
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
DATA: local_commands.
PERFORM user_commands_local CHANGING local_commands.
IF local_commands EQ 'X'.
* local user command has been executed - clear ok_code
CLEAR ok_code.
ELSE.
PERFORM user_commands.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form user_commands_local
* text
* <--P_LOCAL_COMMANDS text
FORM user_commands_local CHANGING p_local_commands.
* Add your own user commands here and overwrite default handling if
* necessary
DATA: local_ok TYPE ok.
local_commands = 'X'.
local_ok = ok_code.
CASE local_ok.
WHEN OTHERS.
CLEAR: local_commands.
ENDCASE.
ENDFORM. " user_commands_local
Pls treat it as urgent.
I ll reward for usefull response.
Thx in Adv.
BobbyHi,
I didn't recieve any response from you regarding issues in upload program.
Could you pls send some solution for this issue ?
Pls treat it as urgent.
Thx in Adv.
Bobby -
ABAP Program Name CHanging the PSA Load status
Hi,
Our Scenario is Non-SAP -> PI -> BI.
Every Day PI reads the file from source and it will directly upload to PSA in BI.But in PSA the status will show as yellow only it is not turning to green.But I am able to see the data in PSA but status is yellow.
When we activate the Data source manually the load status is turning to green.
I heared there is an ABAP Program to change the status.If anybody knows pl provide me the details.
Regards
Ram.Hi Ramakanth,
Yes, that right. I have mistaken here because our pos dispatcher pumps data source every 15 mins thats why its in yellow status. I am sorry about that.
Usually there are some reasons why the PSA in yellow.
1. If the data is being loaded from PSA to data target, it will be in yellow
2. If the data is loaded into PSA then it will be in yellow
3. If we make any changes in the PSA for example deleting few records in psa and then added and transferred records doenst match then it will be yellow. In this case we have to manually change the status.
In your case I am not sure y its not getting into green once is done. We never had any issue. Pos dispatcher runs and uploads the data into PSA and then we upload into targets.
Thanks
Srikanth -
Error when compiling the upload program (Message no. RSAR233)
Hello,
I tried to upload data from a flatfile but I did modified the Comm.Structure, Trans.Structure and Transfer Rules.
After <u><b>activating</b></u> the all changes, I check data from InfoPackage by previewing it. Unfortunately, I got the follow messages from the popup window:
Error 8 when compiling the upload program: row
227, message: Data type /BIC/CCABTWJI_STK01 was
found in a newer
I got this kind of problems many times. I solved it by create a new infosource and everything again. I don't think it's good idea to do this way.
Any better solution would be sincerely appreciated?
-WJ-Another solution:
go out the transaction RSA1 ans return to the transaction RSA1 again.
This would help for me without restarting anything.
Thank you very much for all suggestion.
-WJ- -
Problem with catalog upload program !!
Hi GURUs,
Using CCM upload program we are trying to upload a file for deleting/adding/changing supplier catalog items.
- Some times it work fine.
- But some times supplier catalog is going into error.
- The display log on CCM screen is all green with no errors.
- When checked in SLG1 we are getting error "Error when deleting item XXXXXXX (ID)",though the item is present in supplier catalog.
Kindly help.
Note: We are at CCM2.0
Thanks in Adv. !!
VivekHi Serguei,
Thanks for your reply.
our content file format is XLS (Excel sheet). We are having customized program to load the data into CCM. The program inturn convert the .XLS file into XML format. This program is directly submitting the jobs in background to load the data into CCM.
Due to this I am not sure how to debug this and capture the defect.
Kindly help.
Thanks in Adv. !!
Vivek -
I want to change Material Type for mass upload.(MMAM)
hi all,
I want to change Material Type for mass upload.(MMAM)
Suggestion pls? or Any BAPI is availablre?
Edited by: abap_friends on Jan 6, 2011 7:12 AM
Moderator message: please do your own research before asking.
Edited by: Thomas Zloch on Jan 6, 2011 11:27 AMThis may be little tough for 10000 sales orders.
1. You have to remove the output record for the irrelevant output record using tcode VV12 for the relevant document type. So now for the document type, the old output wont be triggered.
2. Now, create output records for hte correct output type in VV11 tcode(for the output type BA03) for the document type. Now this output will be triggered for all the document types you are creating from now onwards.
3. To trigger the output type BA03, in all the old orders, you just have to open these sales orders in change mode (VA02), and just save it. When u open it the output type BA03 will be automatically triggered as the master data is maintained in VV11. But because just opening all the 10000 sales orders in VA02 one by one be a mechanical task, you have to think of some tool for this.
May be a CATT procedure can do the trick. Else, you can just create a small program, where you can upload these sales orders and the program will just open these orders in change mode and just saves it (without making any changes). Then the output will be retriggered.
Here again, if you are printing the output directly, it is advisable to trigger the output in batch mode(Date/Time field is 1 in VV11), and then you can again trigger the printing again using the program RSNAST00 after office hours for these 10k orders.
I hope I answered ur query.
Pls lemme know if you need some more info. (You can reward me too...) -
Upload program to load Custom PA infotype
I need to develope UpLoad program to load Custom PA infotype which I created with 9001.
Can you please give the steps to Write upload program.
Thanks
RajThis is an example of the HR_INFOTYPE_OPERATION use, in this case for a custom infotype as well.
LOOP AT IT_9129.
clear : W_PERNR, W_RETCODE, i9129, t_output.
* Primeiro vamos buscar o número de empregado associado ao número do sistema anterior
PERFORM GET_NEW_PERNR USING IT_9129-PERNR
IT_9129-BEGDA
CHANGING W_PERNR
W_RETCODE.
CHECK W_RETCODE = 0.
* Aqui assignamos os valores
MOVE-CORRESPONDING it_9129 to i9129.
i9129-pernr = w_pernr.
i9129-endda = w_endda.
* Bloquear o Empregado
perform ENQUEUE_EPPRELE using W_PERNR .
* Executar PA30
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '9129'
NUMBER = i9129-pernr
VALIDITYEND = i9129-endda
VALIDITYBEGIN = i9129-begda
RECORD = i9129
OPERATION = 'INS'
TCLAS = 'A'
DIALOG_MODE = P_MODO
IMPORTING
RETURN = return.
if not return is initial.
perform fill_error using return .
else.
t_output-mensagem = 'Infotipo 9129 criado com sucesso'.
endif.
* Output
t_output-PERNR = w_pernr.
t_output-PNALT = it_9129-PERNR.
append t_output.
ENDLOOP. -
Modification in SAP standard programs.
Hi All
I am trying to make modification in SAP standard program by using a copy of code from the original program to my program..but facing many errors like the statement BEgin of block syntax is wrong..
i am trying to mdify the foloowing program--RFSSLD00...
Please help me and guide to make changes to this prog..
Also tell me that do we need to again create all the functiongroup and global data declarartion part.
thank u.hi,
Please note that when you copy a standard Sap Program ,make sure all the objects are copied following your compays naming conventions.
Now RFSSLD00 can be copied without any difficuly.after that compare the new copied program with the standard program. going to version mngmt->remote comparison . doing this you can get the differences
check all the includes.. and type pool declartaion and gui status etc....by going to se80
regards,
Safel -
Central Planning Format upload program- UPP_MASTER_CHECKIN
Hi all,
Does someone know what <b>Central Planning Format upload program- UPP_MASTER_CHECKIN</b> is for SEM-BPS? Any special features I need to know? Thank you.
J.John
This program is used to make sure the changes made to central layout template applies to all planning layouts in the company. Please read the followin link.
http://help.sap.com/saphelp_nw04/helpdata/en/24/9ffa0b783d11d4b2fd0050dadfb23f/frameset.htm.
Hope this helps
Thanks
Sat
PS: Hope your API is is resolved as your previous post if not let us know -
Budget Upload Program(GLPLUP)
Hi Gurus,
Please provide me the solution for uploading the Budget Data.
The current upload program (TCode GLPLUP) only allows one cost center per month to be uploaded.
Is there any way to extend the current GLPLUP to allow one upload execution for all 12 month planning data.
Or
Is there any way to customize option that we can extend / Change the Layout the current layout.
I would appreciate If any one could provide me the solution to mass upload the Budget data.
Thanks,
ChidanandHi ,
Is there any way to customize option that we can extend / Change the Layout the current layout.
I would appreciate If any one could provide me the solution to mass upload the Budget data.--> I think u cannt have multiple CC options for Budget Uploads .
Is there any way to extend the current GLPLUP to allow one upload execution for all 12 month planning data.-->I think u can do this one , so whats the probs doing so ?
regards
prabhu
Maybe you are looking for
-
Hi All, I have a calendar and a report on the same page:101. But I want to open a report on a new window whenever a user clicks on the event. I can not move the report on the different page because it is before login and public. Please let me know. T
-
How to create an exception....
i'd like to create an exception for negative numbers....im using commandline arguments and i dont want to accept negative values... any suggestions...????
-
hello, after running the report through form , it does not open in maximize mode. please help me this matter immediately. null
-
Navigate timeline with timecode question
Hello all... I'm an Avid user looking at Premiere for certain projects. Last night as I was watching a tutorial the tutorialist selected the timeline panel (clicked inside of it) and then entered a timecode, which automatically selected the timecode
-
My MacBook Pro suddenly became very slow, cursor responding slowely
My MacBook Pro suddenly became very slow, cursor responding slowely