‎2010 Mar 15 4:19 PM
Dear Experts,
I have developed one Module Pool Program to update a 'Z' Table. Now I want to update that Table through BDC Program on that 'Z' Transaction. This Module Pool Program is having one Table Control.
But I am facing some Problem while doing Recoring for that program.
Generally while Recording on Table Control for Standard Programs if we press 'Page Down' button BDC_OKCODE will be recognized as 'P+'.
But in case of my 'Z' Program BDC_OKCODE is recognized as '/00' whenever I am Pressing 'Page Down' button while doing recording on Table Control.
Please tell me what changes should I do on the Online Program such that BDC_OKCODE will be recognized as 'P+' after pressing 'Page Down' button while doing the Recording on the Table Control.
Regards
Arnab
‎2010 Mar 16 6:58 PM
Compare your GUI status to other (SAP standard GUI statuses). You must have something different for your page down key....
‎2010 Mar 17 4:37 AM
Sorry I forgot to tell one thing that the Table Control is defined under Subscreen, as GUI Status cannot be defined for subscreen there cannot be anything tricky on GUI Status. Also we cannot define OK-CODE for that subscreen at screen element level.
Please give me another solution.
‎2010 Mar 18 1:32 PM
I am not sure why you did not create maintenance view for the Z-table. If you do, then you can use SM30 to maintain the table, and you can also use BDC program to update the table as well. By creating maintenance view, it saves you a lot of headache and time with module pool program.
Anyway, it is just a suggestion.
‎2010 Mar 19 4:20 AM
Dear Mr. Nguyen,
I have gone through your suggestion, obviously its a good suggestion. But here the case is something different. Actually the said Module Pool is attached with Vendor Master Maintainance through a BADI Implementation. Its just a Vendor Master Enhancement.
The BADI allows Multiple Number of Tabs (Tabs can be defined through SPRO) under a Main Screen. Under those Tabs we can define Subscreens. Subscreens can be defined through a Module Pool Program and the Module Pool Program Name, Subscreen Numbers are to be passed through the BADI Method through CHANGING Parameters.
Here we have developed Append Structures as well as Z Tables to Hold Vendor Master Enhanced Data.
Vendor Master has to be uploaded by BDC only. So I need a solution for BDC Program only.
Regards
Arnab
Edited by: Arnab Kumar Bose on Mar 19, 2010 5:21 AM
‎2011 Mar 15 4:49 AM
REPORT ZFIR0008_ASSET_DEP_DATE_CHANGE.
&----
*& Report ZDEP_AREA_DATE_CHANGE
*&
&----
*& Author : Srinivas Reddy Velagala
*& Date : 10-June-2009
*& Specification Name : Change Date in Asset Dep. Area
*& Functional Analyst : Steve Sarrazin
*& Technical Analyst :
*& Program Name : ZFIR0008_ASSET_DEP_DATE_CHANGE
*& Transaction Code : ZFIR0008
*& Transport Request : EDXK905809
*& Description : Date Change for Depreciation Area(CHG8019).
*&
*&
*& Restrictions/Assumptions :
&----
*& MODIFICATION HISTORY
&----
*& Date :
*& Name :
*& Transport Request :
*& Description :
----
----
C O N S T A N T S
----
CONSTANTS: NUMBER_OF_ROWS TYPE I VALUE 5000,
NUMBER_OF_COLS TYPE I VALUE 8,
GC_X TYPE C VALUE 'X'.
----
D A T A D E C L A R A T I O N
----
DATA GV_VALID(1) TYPE C.
DATA GV_CHAR1(1) TYPE C.
DATA META_XL_ITAB TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
DATA GV_NUMLINES TYPE I.
DATA: BEGIN OF GT_ASSET_ENTRIES OCCURS 0,
BUKRS(4) TYPE C,
ANLN1(12) TYPE C,
ANLN2(4) TYPE C,
AFASL(4) TYPE C,
AFABE(2) TYPE C,
CAP_DATE(10) TYPE C,
ODEP_START(10) TYPE C,
CORRECT_DATE(10) TYPE C,
END OF GT_ASSET_ENTRIES.
FIELD-SYMBOLS: <F> TYPE ANY.
----
----
S E L E C T I O N - S C R E E N
----
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN: SKIP 1.
PARAMETERS: P_INFILE LIKE RLGRAP-FILENAME LOWER CASE OBLIGATORY.
SELECTION-SCREEN: SKIP 1.
SELECTION-SCREEN END OF BLOCK 1.
----
A T S E L E C T I O N - S C R E E N
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFILE.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
STATIC = 'X'
CHANGING
FILE_NAME = P_INFILE.
----
At Selection-Screen
----
AT SELECTION-SCREEN.
Check whether file is empty
IF p_infile IS INITIAL.
SET CURSOR FIELD 'p_file'.
ENDIF.
----
Start of Selection
----
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM VALIDATIONS.
PERFORM CHANGE_DATA.
----
Validations
----
&----
*& Form VALIDATIONS
&----
FORM VALIDATIONS .
----- Validate Company Code -----------------------------------------*
--- Asset-------------- -----------------------------------------*
--- Sub number--------- -----------------------------------------*
ENDFORM. " VALIDATIONS
&----
*& Form GET_DATA
&----
FORM GET_DATA .
Check if Excel File Exists
CALL FUNCTION 'TMP_GUI_GET_FILE_EXIST'
EXPORTING
FNAME = P_INFILE
IMPORTING
EXIST = GV_VALID
ISDIR = GV_CHAR1
EXCEPTIONS
FILEINFO_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0 OR GV_VALID = SPACE.
MESSAGE E000(FB) WITH 'File ' P_INFILE 'does not exist'.
ENDIF.
Load Excel File
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_INFILE
I_BEGIN_COL = '1'
I_BEGIN_ROW = '1'
I_END_COL = NUMBER_OF_COLS
I_END_ROW = NUMBER_OF_ROWS
TABLES
INTERN = META_XL_ITAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC NE 0.
CASE SY-SUBRC.
WHEN 1.
MESSAGE E002(FB) WITH P_INFILE.
WHEN 2.
MESSAGE E002(FB) WITH P_INFILE.
WHEN 3.
WHEN OTHERS.
ENDCASE.
ENDIF.
Check for Number of Rows
DESCRIBE TABLE META_XL_ITAB LINES GV_NUMLINES.
IF GV_NUMLINES = 0.
MESSAGE E003(FB) WITH P_INFILE.
ENDIF.
READ TABLE META_XL_ITAB INDEX GV_NUMLINES.
IF META_XL_ITAB-ROW < 2.
MESSAGE E003(FB) WITH P_INFILE.
ENDIF.
IF META_XL_ITAB-ROW > NUMBER_OF_ROWS.
MESSAGE E000(FB) WITH 'Number of Rows greater than' NUMBER_OF_ROWS 'in' P_INFILE.
ENDIF.
Move data to internal table GT_POSTING_ENTRIES
LOOP AT META_XL_ITAB.
IF META_XL_ITAB-ROW > 1.
AT NEW ROW.
IF META_XL_ITAB-ROW > 2.
APPEND GT_ASSET_ENTRIES.
CLEAR GT_ASSET_ENTRIES.
ENDIF.
ENDAT.
ASSIGN COMPONENT META_XL_ITAB-COL OF STRUCTURE GT_ASSET_ENTRIES TO <F>.
MOVE META_XL_ITAB-VALUE TO <F>.
ENDIF.
ENDLOOP.
IF META_XL_ITAB-ROW > 1.
APPEND GT_ASSET_ENTRIES.
CLEAR GT_ASSET_ENTRIES.
ENDIF.
ENDFORM. " GET_DATA
&----
*& Form CHANGE_DATA
&----
FORM CHANGE_DATA .
DATA: LV_COMP_CODE TYPE BAPI1022_1-COMP_CODE,
LV_ASSETMAINO TYPE BAPI1022_1-ASSETMAINO,
LV_ASSETSUBNO TYPE BAPI1022_1-ASSETSUBNO.
DATA: LT_DEP_DATA TYPE STANDARD TABLE OF BAPI1022_DEP_AREAS WITH HEADER LINE,
LT_DEP_DATA_X TYPE STANDARD TABLE OF BAPI1022_DEP_AREASX WITH HEADER LINE.
DATA: LT_RETURN LIKE BAPIRET2,
LS_RETURN LIKE BAPIRET2.
DATA: LV_SYDATUM_TYPE LIKE SY-DATUM.
DATA : LV_DATE TYPE SY-DATUM.
DATA: LV_SYDATUM_TYPE(10) TYPE C .
-------Start posting -
LOOP AT GT_ASSET_ENTRIES.
CLEAR : LV_COMP_CODE,
LV_ASSETMAINO,
LV_ASSETSUBNO.
CLEAR : LT_RETURN,
LS_RETURN.
CLEAR : LT_DEP_DATA[],
LT_DEP_DATA_X[],
LT_DEP_DATA,
LT_DEP_DATA_X .
LV_COMP_CODE = GT_ASSET_ENTRIES-BUKRS.
LV_ASSETMAINO = GT_ASSET_ENTRIES-ANLN1.
LV_ASSETSUBNO = GT_ASSET_ENTRIES-ANLN2.
LT_DEP_DATA-AREA = GT_ASSET_ENTRIES-AFABE.
LT_DEP_DATA-DEP_KEY = GT_ASSET_ENTRIES-AFASL.
LV_SYDATUM_TYPE = GT_ASSET_ENTRIES-CORRECT_DATE.
CONCATENATE LV_SYDATUM_TYPE6(4) LV_SYDATUM_TYPE3(2) LV_SYDATUM_TYPE+0(2) INTO LV_DATE.
LT_DEP_DATA-SDEP_START_DATE = LV_DATE .
APPEND LT_DEP_DATA.
LT_DEP_DATA_X-AREA = GT_ASSET_ENTRIES-AFABE.
LT_DEP_DATA_X-DEP_KEY = GC_X.
LT_DEP_DATA_X-SDEP_START_DATE = GC_X.
APPEND LT_DEP_DATA_X.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LV_ASSETMAINO
IMPORTING
OUTPUT = LV_ASSETMAINO .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LV_ASSETSUBNO
IMPORTING
OUTPUT = LV_ASSETSUBNO .
CALL FUNCTION 'BAPI_FIXEDASSET_CHANGE'
EXPORTING
COMPANYCODE = LV_COMP_CODE
ASSET = LV_ASSETMAINO
SUBNUMBER = LV_ASSETSUBNO
IMPORTING
RETURN = LT_RETURN
TABLES
DEPRECIATIONAREAS = LT_DEP_DATA
DEPRECIATIONAREASX = LT_DEP_DATA_X .
IF LT_RETURN-TYPE = 'E'.
WRITE : / 'Error in -' ,
GT_ASSET_ENTRIES-BUKRS,
GT_ASSET_ENTRIES-ANLN1,
GT_ASSET_ENTRIES-ANLN2.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = GC_X
IMPORTING
RETURN = LS_RETURN .
WRITE : / 'Successfully Changed for -' ,
GT_ASSET_ENTRIES-BUKRS,
GT_ASSET_ENTRIES-ANLN1,
GT_ASSET_ENTRIES-ANLN2.
ENDIF.
ENDLOOP.
ENDFORM. " CHANGE_DATA