2013 May 28 2:30 PM
Hi all,
i am using this FM to fetch AREA IN SQUAREMETER (ATINN56) ,but it is not fething the data.Can anyone sujjest me what to do with this code to fetch data.
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
ITAB-ATINN56 = ITAB1-ATWRT.
CALL FUNCTION 'C14W_NUMBER_CHAR_CONVERSION'
EXPORTING
I_FLOAT = ITAB1-ATFLV
* I_DEC = 0
I_DECIMALS = 2
IMPORTING
E_STRING = ITAB-ATINN56
* E_FLOAT =
* E_DEC =
* E_DECIMALS =
EXCEPTIONS
NUMBER_TOO_BIG = 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.
2013 May 28 2:56 PM
the statement:
ITAB-ATINN56 = ITAB1-ATWRT.
Confuses me a bit. Are these tables ?
It is ALWAYS better to declare separate work areas, so it is clear if you are delaing with the table or the table work area (header line).
2013 May 29 8:44 AM
2013 May 31 1:13 PM
2013 May 28 2:56 PM
Your question is not clear. Do you want to convert the area from one unit to other or do you want to fetch the Area in sq mts from some database field?
2013 May 29 8:45 AM
2013 May 31 1:30 PM
I simply want to fetch area from my DATABASE,
I have written my code above please see it, and then please let me know how to get those values.
2013 May 28 3:14 PM
What i get is follwong (correct me if i am wrong) : You have an article which you can configure or classify. You read a certain characteristic which holds the Area in squaremeters.
Since characteristics values get stored in CHAR, you want to convert it to a number, so that you can calulate with it, or make a nice output format.
So your only problem is the conversion from char to number, right?
you can simply move the char value to a number variable e.G.
DATA: lv_char type c length 30 VALUE '3.123,33'.,
lv_number type kbetr.
lv_number = lv_char.
If the char value is a valid number it will work, otherwise it will DUMP.
to be a bit more sure that it will work you can eliminate those thousand seperators, and make sure the decimal is a comma (yeah thats the internal format).
2013 May 28 4:17 PM
Hi Sanjeev,
If you want to fetch the value of characteristic 'SQUAREMETER', then follow the mentioned steps,
1) Put a select on CABN table and get the internal characteristic number (CABN-ATINN) for CABN-ATNAM = SQUAREMETER.
2) Now put a select on AUSP table passing the ATINN obtained above and get the value in AUSP-ATWRT.
You get the value in AUSP-ATWRT.
Please revert if something is not clear.
Regards,
Ankit
2013 May 31 1:14 PM
Hi Ankit,
here is the complete code,plz review it and tell me how to fetch the value of FIELD ATINN56.
*&---------------------------------------------------------------------*
*& Report ZST_SD_RPT01_NEW1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZST_SD_RPT01_NEW1 NO STANDARD PAGE HEADING LINE-SIZE 275.
*type-pools
TYPE-POOLS: SLIS.
*TABLES
TABLES: MARD, "Storage Location Data for Material
MARA, "General Material Data
AUSP, "Characteristic Values
CABNT, "Characteristic Descriptions
VBAP, "Sales Document: Item Data
VBAK, "Sales Document: Header Data
MVKE, "Sales Data for Material
T001L,
T001W.
*ALV SPECIFIC DECLARATIONS
DATA : T_EVENTS TYPE SLIS_T_EVENT.
DATA : T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : T_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA : T_LIST TYPE SLIS_T_LISTHEADER.
DATA : V_REPID TYPE SY-REPID.
DATA : V_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA : V_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
DATA : S_GETINFO TYPE SLIS_KEYINFO_ALV.
DATA : S_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA : G_SAVE(1) TYPE C ,
G_EXIT(1) TYPE C ,
G_VARIANT LIKE DISVARIANT ,
GX_VARIANT LIKE DISVARIANT .
*TYPE DECLARATIONS.
DATA : BEGIN OF WA_ITAB,
LGORT TYPE MARD-LGORT, " project Number
LGOBE TYPE T001L-LGOBE, " project discription
MATNR TYPE MARD-MATNR, " Flat number
SPART TYPE VBAK-SPART, " Division
VKORG TYPE VBAK-VKORG, " Sales Organization
VTWEG TYPE VBAK-VTWEG, " Distribution Channel
KWMENG TYPE I, " quantity
ATINN01 TYPE AUSP-ATWRT, " Category
ATINN02 TYPE AUSP-ATWRT, " Tower
ATINN03 TYPE AUSP-ATWRT, " Type
ATINN04 TYPE AUSP-ATWRT, " Furnished
ATINN05 TYPE AUSP-ATWRT, " A/C Fitted
ATINN06 TYPE AUSP-ATWRT, " Power Backup
ATINN07 TYPE AUSP-ATWRT, " Modular kitchen
ATINN12 TYPE AUSP-ATWRT, " Study Room
ATINN13 TYPE AUSP-ATWRT, " Store Room
ATINN14 TYPE AUSP-ATWRT, " Servent Room
ATINN16 TYPE CHAR30, " Super Area
ATINN56 TYPE CHAR30, " SUPERAREASQMT
ATINN17 TYPE P, " Covered Area
ATINN18 TYPE P, " Carpet Area
ATINN25 TYPE AUSP-ATWRT, " Floor
ATINN29 TYPE AUSP-ATWRT, " Phase
ATINN30 TYPE AUSP-ATWRT, " Block
STATUS TYPE STRING, " Status
VBELN TYPE VBAP-VBELN, " File number
ERDAT TYPE VBAP-ERDAT, " Order Date
KUNNR TYPE VBAK-KUNNR, " Customer code
NAME1 TYPE KNA1-NAME1, " Customer name
LINE_COLOR(04), " For color
END OF WA_ITAB.
TYPES : BEGIN OF TY_ITAB1 ,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT, " project Number
LGOBE TYPE T001L-LGOBE, " project discription
MTART TYPE MARA-MTART, " Material Type
SPART TYPE MARA-SPART, " Division
VKORG TYPE MVKE-VKORG, " Sales Organization
VTWEG TYPE MVKE-VTWEG, " Distribution Channel
MATNR TYPE MARD-MATNR, " Flat Number
ATINN TYPE AUSP-ATINN, " Charecterstick
ATWRT TYPE AUSP-ATWRT, " Charecterstick value
ATNAM TYPE CABN-ATNAM, " Charecterstick name
ATFLV TYPE AUSP-ATFLV,
END OF TY_ITAB1.
TYPES : BEGIN OF TY_ITAB2 ,
MATNR TYPE VBAP-MATNR, " Flat number
VBELN TYPE VBAP-VBELN, " File Number
ERDAT TYPE VBAP-ERDAT, " Document Date
ERZET TYPE VBAP-ERZET, " Document time
ABGRU TYPE VBAP-ABGRU, " Reason for Rejection
KUNNR TYPE VBAK-KUNNR, " Customer Number
SPART TYPE VBAK-SPART, " Division
VKORG TYPE VBAK-VKORG, " Sales Organisation
VTWEG TYPE VBAK-VTWEG, " Distribution Channel
NAME1 TYPE KNA1-NAME1, " Customer name
END OF TY_ITAB2.
TYPES: BEGIN OF TY_MARD,
MATNR TYPE MARD-MATNR,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT,
END OF TY_MARD.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE AUSP-OBJEK,
MTART TYPE MARA-MTART,
SPART TYPE MARA-SPART,
ATINN TYPE AUSP-ATINN,
ATWRT TYPE AUSP-ATWRT,
ATFLV TYPE AUSP-ATFLV,
END OF TY_MARA.
TYPES: BEGIN OF TY_MARA1,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
SPART TYPE MARA-SPART,
END OF TY_MARA1.
TYPES: BEGIN OF TY_MVKE,
MATNR TYPE AUSP-OBJEK,
VKORG TYPE MVKE-VKORG,
VTWEG TYPE MVKE-VTWEG,
END OF TY_MVKE.
TYPES: BEGIN OF TY_AUSP,
OBJEK TYPE AUSP-OBJEK,
ATINN TYPE AUSP-ATINN,
ATWRT TYPE AUSP-ATWRT,
ATFLV TYPE AUSP-ATFLV,
END OF TY_AUSP.
TYPES: BEGIN OF TY_T001L,
WERKS TYPE T001L-WERKS,
LGORT TYPE T001L-LGORT,
LGOBE TYPE T001L-LGOBE,
END OF TY_T001L.
TYPES: BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN,
MATNR TYPE VBAP-MATNR,
ERDAT TYPE VBAP-ERDAT,
ABGRU TYPE VBAP-ABGRU,
END OF TY_VBAP.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
AUART TYPE VBAK-AUART,
VKORG TYPE VBAK-VKORG,
VTWEG TYPE VBAK-VTWEG,
SPART TYPE VBAK-SPART,
KUNNR TYPE VBAK-KUNNR,
END OF TY_VBAK.
TYPES: BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
NAME1 TYPE KNA1-NAME1,
END OF TY_KNA1.
TYPES: BEGIN OF TY_CABN,
ATINN TYPE CABN-ATINN,
ATNAM TYPE CABN-ATNAM,
END OF TY_CABN.
*TABLE DECLARATIONS
DATA: ITAB LIKE STANDARD TABLE OF WA_ITAB WITH HEADER LINE.
DATA: ITAB1 TYPE STANDARD TABLE OF TY_ITAB1 WITH HEADER LINE.
DATA: ITAB2 TYPE STANDARD TABLE OF TY_ITAB2 WITH HEADER LINE.
DATA: IT_MARD TYPE STANDARD TABLE OF TY_MARD WITH HEADER LINE.
DATA: IT_MVKE TYPE STANDARD TABLE OF TY_MVKE WITH HEADER LINE.
DATA: IT_MARA1 TYPE STANDARD TABLE OF TY_MARA1 WITH HEADER LINE.
DATA: IT_MARA TYPE STANDARD TABLE OF TY_MARA WITH HEADER LINE.
DATA: IT_AUSP TYPE STANDARD TABLE OF TY_AUSP WITH HEADER LINE.
DATA: IT_CABN TYPE STANDARD TABLE OF TY_CABN WITH HEADER LINE.
DATA: IT_T001L TYPE STANDARD TABLE OF TY_T001L WITH HEADER LINE.
DATA: IT_VBAP TYPE STANDARD TABLE OF TY_VBAP WITH HEADER LINE.
DATA: IT_VBAK TYPE STANDARD TABLE OF TY_VBAK WITH HEADER LINE.
DATA: IT_KNA1 TYPE STANDARD TABLE OF TY_KNA1 WITH HEADER LINE.
DATA: WA_AUSP TYPE TY_AUSP.
*VARIABLE DECLARATIONS
DATA : FLTNO(04),
BLKNO(03),
V_ATNAM(30),
V_MATNR1 TYPE MARD-MATNR,
FLRNO(02),
VAL TYPE I,
V_FIELD(20) TYPE C,
V_VALUE TYPE VBAP-VBELN.
DATA : V_COUNTER TYPE I VALUE 0.
DATA : BEGIN OF IT_MAT OCCURS 0 ,
MATNR LIKE MAKT-MATNR ,
END OF IT_MAT .
*SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN : SKIP .
SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS: S_WERKS FOR T001w-WERKS OBLIGATORY.
SELECT-OPTIONS S_LGORT FOR T001l-LGORT OBLIGATORY.
SELECT-OPTIONS S_MATNR FOR MARD-MATNR .
SELECT-OPTIONS S_VKORG FOR MVKE-VKORG NO-EXTENSION NO INTERVALS.
SELECT-OPTIONS S_VTWEG FOR MVKE-VTWEG NO-EXTENSION NO INTERVALS.
SELECT-OPTIONS S_SPART FOR MARA-SPART NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN: END OF BLOCK B2.
SELECTION-SCREEN : SKIP .
SELECTION-SCREEN : SKIP .
SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant
SELECTION-SCREEN: END OF BLOCK B3.
SELECTION-SCREEN END OF BLOCK BLK1.
INITIALIZATION.
*if s_lgort-low = 'R006'.
* S_MATNR-LOW = 'R006*'.
* ENDIF.
PERFORM INIT.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
* PERFORM f4_for_variant.
START-OF-SELECTION.
PERFORM GET_DATA.
*&---------------------------------------------------------------------*
*&END-OF-SELECTION.
*&---------------------------------------------------------------------*
END-OF-SELECTION.
IF ITAB[] IS NOT INITIAL.
PERFORM SUB_COMMENT_WRITE.
PERFORM SUB_LAYOUT.
* IF g_save EQ space .
** PERFORM initialize_variant .
* ENDIF .
PERFORM SUB_CALL_ALV.
ENDIF.
*&---------------------------------------------------------------------*
*& Form BILLING_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM INIT .
V_REPID = SY-REPID.
PERFORM SUB_EVENTS.
PERFORM SUB_FIELDCAT.
PERFORM SORT.
ENDFORM. " BILLING_INIT
*&---------------------------------------------------------------------*
*& Form SUB_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SUB_EVENTS .
DATA : WA_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = T_EVENTS.
SORT T_EVENTS.
READ TABLE T_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE BINARY SEARCH
INTO WA_EVENT.
MOVE V_TOP_OF_PAGE TO WA_EVENT-FORM.
IF SY-SUBRC EQ 0.
APPEND WA_EVENT TO T_EVENTS.
ENDIF.
SORT T_EVENTS.
READ TABLE T_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND BINARY SEARCH
INTO WA_EVENT.
MOVE V_USER_COMMAND TO WA_EVENT-FORM.
IF SY-SUBRC EQ 0.
APPEND WA_EVENT TO T_EVENTS.
ENDIF.
ENDFORM. " SUB_EVENTS
*&---------------------------------------------------------------------*
*& Form SUB_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SUB_FIELDCAT .
PERFORM INSERT_FIELD USING :
'LGORT' 'Project No.' 'X' 4 ,
'LGOBE' 'Project Name' SPACE 16 ,
'MATNR' 'Flat No.' SPACE 18 ,
'SPART' 'Division' SPACE 02,
'VKORG' 'Sales Organ.' SPACE 04,
'VTWEG' 'Distribution Channel' SPACE 02,
'KWMENG' 'Qty' SPACE 02 ,
'ATINN01' 'Category' SPACE 20 ,
'ATINN02' 'Tower' SPACE 20,
'ATINN03' 'Type' SPACE 20,
'ATINN04' 'Furnished' SPACE 20 ,
'ATINN05' 'A/C Fitted' SPACE 20 ,
'ATINN06' 'Power Backup' SPACE 20,
'ATINN07' 'Modular Kitchen' SPACE 20 ,
'ATINN12' 'Study Room' SPACE 20,
'ATINN13' 'Store Room' SPACE 20 ,
'ATINN14' 'Servent Room' SPACE 20 ,
'ATINN16' 'Super Area in SQFT' SPACE 16 ,
'ATINN56' 'Superarea in SQMT' SPACE 20 ,
'ATINN25' 'Floor' SPACE 20,
'ATINN29' 'Phase' SPACE 20,
'ATINN30' 'Block' SPACE 20,
'ATINN17' 'Carpet Area' space 16 ,
'ATINN18' 'Covered Area' space 16 ,
'STATUS' 'Status' SPACE 20,
'VBELN' 'File Number' SPACE 10,
'ERDAT' 'Date Of Sale' SPACE 08 ,
'KUNNR' 'Sold To Party' SPACE 10 ,
'NAME1' 'Customer Name' SPACE 20 .
ENDFORM. " SUB_FIELDCAT
*&---------------------------------------------------------------------*
*& Form INSERT_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM INSERT_FIELD USING VALUE(P_FNAME)
VALUE(P_TNAME)
VALUE(P_KEY)
VALUE(P_LENGTH).
DATA : WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
V_COUNTER = V_COUNTER + 1.
WA_FIELDCAT-COL_POS = V_COUNTER.
WA_FIELDCAT-FIELDNAME = P_FNAME.
WA_FIELDCAT-SELTEXT_M = P_TNAME.
WA_FIELDCAT-KEY = P_KEY.
WA_FIELDCAT-OUTPUTLEN = P_LENGTH.
IF WA_FIELDCAT-COL_POS = 7
OR WA_FIELDCAT-COL_POS = 13
OR WA_FIELDCAT-COL_POS = 14
OR WA_FIELDCAT-COL_POS = 15.
WA_FIELDCAT-DO_SUM = 'X'.
ENDIF.
APPEND WA_FIELDCAT TO T_FIELDCAT.
ENDFORM. " INSERT_FIELD
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* THIS SUBROUTIN IS USED TO GET DATA FROM DATABASE TABLES INTO
* INTERNAL TABLES
*----------------------------------------------------------------------*
FORM GET_DATA .
DATA : V_MATNR TYPE MARD-MATNR.
SELECT MATNR
WERKS
LGORT
FROM MARD CLIENT SPECIFIED INTO TABLE IT_MARD
WHERE MANDT EQ SY-MANDT
AND MATNR IN S_MATNR
AND WERKS IN S_WERKS
AND LGORT IN S_LGORT
AND LVORM EQ ''.
SORT IT_MARD BY MATNR.
IF IT_MARD[] IS NOT INITIAL.
SELECT WERKS
LGORT
LGOBE
FROM T001L CLIENT SPECIFIED INTO TABLE IT_T001L
FOR ALL ENTRIES IN IT_MARD
WHERE MANDT EQ SY-MANDT
AND WERKS EQ IT_MARD-WERKS
AND LGORT EQ IT_MARD-LGORT.
SELECT MARA~MATNR
MARA~MTART
MARA~SPART
AUSP~ATINN
AUSP~ATWRT
AUSP~ATFLV
FROM MARA JOIN AUSP ON AUSP~OBJEK EQ MARA~MATNR INTO TABLE IT_MARA
FOR ALL ENTRIES IN IT_MARD
WHERE MTART EQ 'Z003' AND
MARA~SPART IN S_SPART AND
MARA~LVORM EQ '' AND
MARA~MATNR EQ IT_MARD-MATNR.
LOOP AT IT_MARA .
IT_MARA1-MATNR = IT_MARA-MATNR.
IT_MARA1-MTART = IT_MARA-MTART.
IT_MARA1-SPART = IT_MARA-SPART.
APPEND IT_MARA1.
ENDLOOP.
SORT IT_MARA1 BY MATNR.
SELECT ATINN
ATNAM
FROM CABN CLIENT SPECIFIED INTO TABLE IT_CABN
FOR ALL ENTRIES IN IT_mara
WHERE MANDT EQ SY-MANDT
AND ATINN EQ IT_mara-ATINN.
SELECT MATNR
VKORG
VTWEG
FROM MVKE CLIENT SPECIFIED INTO TABLE IT_MVKE
FOR ALL ENTRIES IN IT_MARA1
WHERE MANDT EQ SY-MANDT
AND MATNR EQ IT_MARA1-MATNR.
*Appending data to itab1
LOOP AT IT_MARA.
ITAB1-MATNR = IT_MARA-MATNR.
ITAB1-MTART = IT_MARA-MTART.
ITAB1-SPART = IT_MARA-SPART.
ITAB1-ATINN = IT_MARA-ATINN.
ITAB1-ATWRT = IT_MARA-ATWRT.
ITAB1-ATFLV = IT_MARA-ATFLV.
APPEND ITAB1.
ENDLOOP.
* LOOP AT itab1 .
* LOOP AT it_mvke WHERE matnr EQ itab1-matnr.
* itab1-vkorg = it_mvke-vkorg.
* itab1-vtweg = it_mvke-vtweg.
* MODIFY itab1.
* ENDLOOP.
* ENDLOOP.
SORT ITAB1 BY MATNR.
SORT IT_MVKE BY MATNR.
LOOP AT ITAB1.
READ TABLE IT_MVKE WITH KEY MATNR = ITAB1-MATNR BINARY SEARCH.
ITAB1-VKORG = IT_MVKE-VKORG.
ITAB1-VTWEG = IT_MVKE-VTWEG.
MODIFY ITAB1.
CLEAR IT_MVKE.
ENDLOOP.
SORT IT_MARD BY MATNR.
LOOP AT ITAB1 .
READ TABLE IT_MARD WITH KEY MATNR = ITAB1-MATNR BINARY SEARCH.
ITAB1-WERKS = IT_MARD-WERKS.
ITAB1-LGORT = IT_MARD-LGORT.
MODIFY ITAB1.
CLEAR IT_MARD.
ENDLOOP.
SORT IT_T001L BY WERKS .
LOOP AT ITAB1.
READ TABLE IT_T001L WITH KEY WERKS = ITAB1-WERKS BINARY SEARCH .
ITAB1-LGOBE = IT_T001L-LGOBE.
MODIFY ITAB1.
CLEAR IT_T001L.
ENDLOOP.
SORT IT_CABN BY ATINN.
LOOP AT ITAB1.
READ TABLE IT_CABN WITH KEY ATINN = ITAB1-ATINN BINARY SEARCH.
ITAB1-ATNAM = IT_CABN-ATNAM.
MODIFY ITAB1.
CLEAR IT_CABN.
ENDLOOP.
* DELETE itab1 WHERE mtart NE 'Z003'.
SORT ITAB1 BY MATNR.
IF ITAB1[] IS INITIAL.
MESSAGE 'No DATA FOUND' TYPE 'I'.
ELSE.
SORT ITAB1 BY MATNR .
LOOP AT ITAB1 .
IT_MAT-MATNR = ITAB1-MATNR .
APPEND IT_MAT .
CLEAR IT_MAT .
ENDLOOP .
DELETE ADJACENT DUPLICATES FROM IT_MAT COMPARING ALL FIELDS .
SELECT VBELN
MATNR
ERDAT
ABGRU
FROM VBAP CLIENT SPECIFIED INTO TABLE IT_VBAP
FOR ALL ENTRIES IN IT_MAT
WHERE MANDT EQ SY-MANDT
AND MATNR EQ IT_MAT-MATNR.
SORT IT_VBAP BY VBELN .
SELECT VBELN
AUART
VKORG
VTWEG
SPART
KUNNR
FROM VBAK CLIENT SPECIFIED INTO TABLE IT_VBAK
FOR ALL ENTRIES IN IT_VBAP
WHERE MANDT EQ SY-MANDT
AND VBELN EQ IT_VBAP-VBELN
AND ( AUART EQ 'ZORD'
OR AUART EQ 'YORD'
or AUART EQ 'ZRDV' )
AND VKORG IN S_VKORG
AND VTWEG IN S_VTWEG
AND SPART IN S_SPART .
SELECT KUNNR
NAME1
FROM KNA1 CLIENT SPECIFIED INTO TABLE IT_KNA1
FOR ALL ENTRIES IN IT_VBAK
WHERE MANDT EQ SY-MANDT
AND KUNNR EQ IT_VBAK-KUNNR.
LOOP AT IT_VBAP.
ITAB2-MATNR = IT_VBAP-MATNR.
ITAB2-VBELN = IT_VBAP-VBELN.
ITAB2-ERDAT = IT_VBAP-ERDAT.
ITAB2-ABGRU = IT_VBAP-ABGRU.
APPEND ITAB2.
ENDLOOP.
SORT IT_VBAK BY VBELN.
LOOP AT ITAB2.
READ TABLE IT_VBAK WITH KEY VBELN = ITAB2-VBELN BINARY SEARCH.
ITAB2-KUNNR = IT_VBAK-KUNNR.
ITAB2-SPART = IT_VBAK-SPART.
ITAB2-VKORG = IT_VBAK-VKORG.
ITAB2-VTWEG = IT_VBAK-VTWEG.
MODIFY ITAB2.
CLEAR IT_VBAK.
ENDLOOP.
SORT IT_KNA1 BY KUNNR.
LOOP AT ITAB2.
READ TABLE IT_KNA1 WITH KEY KUNNR = ITAB2-KUNNR BINARY SEARCH.
ITAB2-NAME1 = IT_KNA1-NAME1.
MODIFY ITAB2.
CLEAR IT_KNA1.
ENDLOOP.
SORT ITAB2 BY ABGRU MATNR ASCENDING.
DELETE ITAB2 WHERE KUNNR EQ ''.
DELETE ADJACENT DUPLICATES FROM ITAB2.
VAL = 1.
SORT ITAB1 BY MATNR.
LOOP AT ITAB1.
V_ATNAM = ITAB1-ATNAM.
IF V_ATNAM EQ 'CATEGORY'.
ITAB-ATINN01 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'TOWER'.
ITAB-ATINN02 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'TYPE'.
ITAB-ATINN03 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'FURNISHED'.
ITAB-ATINN04 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'ACFITTED'.
ITAB-ATINN05 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'POWERBACKUP'.
ITAB-ATINN06 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'MODULARKITCHEN'.
ITAB-ATINN07 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'STUDYROOM'.
ITAB-ATINN12 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'STOREROOM'.
ITAB-ATINN13 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'SERVENTROOM'.
ITAB-ATINN14 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'FLAT_FLOOR'.
ITAB-ATINN25 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'PHASE'.
ITAB-ATINN29 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'BLOCK'.
ITAB-ATINN30 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'SUPERAREA1'.
ITAB-ATINN16 = ITAB1-ATWRT.
*******************************************************************************
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
if itab-atinn56 is initial.
ITAB-ATINN56 = ITAB1-ATWRT.
endif.
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
CALL FUNCTION 'C14W_NUMBER_CHAR_CONVERSION'
EXPORTING
I_FLOAT = ITAB1-ATFLV
* I_DEC = 0
I_DECIMALS = 2
IMPORTING
E_STRING = ITAB-ATINN56
* E_FLOAT =
* E_DEC =
* E_DECIMALS =
EXCEPTIONS
NUMBER_TOO_BIG = 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.
**************************************************************************
ELSEIF V_ATNAM EQ 'SUPERAREA2'.
if itab-atinn16 is initial.
ITAB-ATINN16 = ITAB1-ATWRT.
endif.
ELSEIF V_ATNAM EQ 'SUPERAREA'.
CALL FUNCTION 'C14W_NUMBER_CHAR_CONVERSION'
EXPORTING
I_FLOAT = ITAB1-ATFLV
* I_DEC = 0
I_DECIMALS = 2
IMPORTING
E_STRING = ITAB-ATINN16
* E_FLOAT =
* E_DEC =
* E_DECIMALS =
EXCEPTIONS
NUMBER_TOO_BIG = 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.
ELSEIF V_ATNAM EQ 'COVEREDAREA1'.
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
CHR = ITAB1-ATWRT
IMPORTING
NUM = ITAB-ATINN17
EXCEPTIONS
CONVT_NO_NUMBER = 1
CONVT_OVERFLOW = 2.
* itab-atinn17 = itab1-atwrt.
ELSEIF V_ATNAM EQ 'CARPETAREA1'.
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
CHR = ITAB1-ATWRT
IMPORTING
NUM = ITAB-ATINN18
EXCEPTIONS
CONVT_NO_NUMBER = 1
CONVT_OVERFLOW = 2.
* itab-atinn18 = itab1-atwrt.
ENDIF.
AT END OF MATNR.
LOOP AT ITAB2 WHERE MATNR = ITAB1-MATNR.
* if sy-tabix gt 1.
* continue.
* endif.
IF ITAB2-MATNR = V_MATNR.
CONTINUE.
ENDIF.
IF ITAB2-ABGRU EQ ''.
ITAB-STATUS = 'BOOKED'.
ITAB-VBELN = ITAB2-VBELN.
ITAB-ERDAT = ITAB2-ERDAT.
ITAB-KUNNR = ITAB2-KUNNR.
ITAB-NAME1 = ITAB2-NAME1.
ITAB-VKORG = ITAB2-VKORG.
ITAB-VTWEG = ITAB2-VTWEG.
ITAB-SPART = ITAB2-SPART.
ENDIF.
V_MATNR = ITAB2-MATNR.
ENDLOOP.
IF V_MATNR1 EQ ITAB1-MATNR.
CLEAR ITAB.
CONTINUE.
ENDIF.
IF ITAB-STATUS = ''.
ITAB-STATUS = 'AVAILABLE'.
ITAB-VKORG = ITAB1-VKORG.
* itab-vtweg = itab1-vtweg.
ITAB-SPART = ITAB1-SPART.
ENDIF.
ITAB-KWMENG = '1'.
ITAB-LGOBE = ITAB1-LGOBE.
ITAB-LGORT = ITAB1-LGORT.
ITAB-MATNR = ITAB1-MATNR.
* V_matnr = itab1-matnr.
* V_fltno =
INSERT ITAB INDEX VAL.
VAL = VAL + 1.
CLEAR ITAB.
CLEAR V_MATNR.
V_MATNR1 = ITAB1-MATNR.
ENDAT.
ENDLOOP.
ENDIF.
DATA: LD_COLOR TYPE C.
*loop at itab2.
LOOP AT ITAB INTO WA_ITAB.
IF WA_ITAB-STATUS = 'AVAILABLE'.
LD_COLOR = 5.
ELSE.
LD_COLOR = 6.
ENDIF.
CONCATENATE 'C' LD_COLOR '10' INTO WA_ITAB-LINE_COLOR.
* wa_ekko-line_color = 'C410'.
MODIFY ITAB FROM WA_ITAB.
ENDLOOP.
ELSE.
MESSAGE 'No Data found' TYPE 'I' .
CALL SELECTION-SCREEN 1000.
* SET SCREEN 0.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form SUB_COMMENT_WRITE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SUB_COMMENT_WRITE .
DATA : WA_LIST TYPE SLIS_LISTHEADER.
WA_LIST-TYP = 'H'.
WA_LIST-INFO = 'Flat / Shop Availability Report'.
APPEND WA_LIST TO T_LIST.
ENDFORM. " SUB_COMMENT_WRITE
*&---------------------------------------------------------------------*
*& Form SUB_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SUB_LAYOUT .
S_LAYOUT-DETAIL_POPUP = 'X'.
* s_layout-zebra = 'X'.
S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
S_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
ENDFORM. " SUB_LAYOUT
*&---------------------------------------------------------------------*
*& Form SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SORT .
DATA : WA_SORT TYPE SLIS_SORTINFO_ALV.
WA_SORT-SPOS = 18.
WA_SORT-FIELDNAME = 'STATUS'.
WA_SORT-DOWN = 'X'.
* wa_sort-subtot = 'X'.
APPEND WA_SORT TO T_SORT.
WA_SORT-SPOS = 5.
WA_SORT-FIELDNAME = 'VTWEG'.
* wa_sort-down = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO T_SORT.
ENDFORM. " SORT
*&---------------------------------------------------------------------*
*& Form SUB_CALL_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SUB_CALL_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = T_FIELDCAT[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = T_SORT[]
* IT_FILTER =
* IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = T_EVENTS[]
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITAB
* EXCEPTIONS
* PROGRAM_ERROR = 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.
ENDFORM. " SUB_CALL_ALV
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_LIST.
* i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "top_of_page
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING UCOMM TYPE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
DATA: L_VBELN(10) TYPE N.
DATA : WA_TAB LIKE LINE OF ITAB.
CASE UCOMM.
WHEN '&IC1'.
IF SELFIELD-SEL_TAB_FIELD EQ '1-VBELN'.
L_VBELN = SELFIELD-VALUE.
SET PARAMETER ID: 'AUN' FIELD L_VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ELSE.
MESSAGE 'SELECT FILE NUMBER' TYPE 'E'.
ENDIF.
WHEN OTHERS.
MESSAGE 'PLEASE SELECT A VALID OPTION' TYPE 'E'.
ENDCASE.
ENDFORM. "user_command
2013 May 31 2:13 PM
Hi Sanjeev,
Generally the ATNAM value is constant and ATINN value changes across systems i.e. Development, Quality and Production. So it is always advised to first get the ATINN (Internal Number of the characteristic) from CABN against the ATNAM and then use this ATINN in AUSP to get the ATWRT.
Coming to your code,
SELECT MARA~MATNR
MARA~MTART
MARA~SPART
AUSP~ATINN
AUSP~ATWRT
AUSP~ATFLV
FROM MARA JOIN AUSP ON AUSP~OBJEK EQ MARA~MATNR INTO TABLE IT_MARA
FOR ALL ENTRIES IN IT_MARD
WHERE MTART EQ 'Z003' AND
MARA~SPART IN S_SPART AND
MARA~LVORM EQ '' AND
MARA~MATNR EQ IT_MARD-MATNR.
-> Here you have fetched the characteristic numbers and values first and then hit CABN as,
SELECT ATINN
ATNAM
FROM CABN CLIENT SPECIFIED INTO TABLE IT_CABN
FOR ALL ENTRIES IN IT_mara
WHERE MANDT EQ SY-MANDT
AND ATINN EQ IT_mara-ATINN.
My advise would be -
Since you know all the characteristics just put a select on CABN first and take all the ATINNs against those ATNAMs. Then use these and put a select on AUSP. You can prepare an internal table with all the characteristics/ATNAMs and use it in the FOR ALL ENTRIES on CABN to get the Corresponding ATINNs. Now hit AUSP and get the values/ATWRT for every material for these Characteristics/ATINNs only.
Thanks,
Ankit.
2013 Jun 01 6:10 AM
Hi Ankit,
as you told i have created an internal table,and assigned each characterstics value,then i am fetching the data, but not getting the required value,just go through my full code, and tell me the changes which i have to make there.
(Through this i am getting other field values but not getting the value of ATINN56)
LOOP AT ITAB1.
V_ATNAM = ITAB1-ATNAM.
IF V_ATNAM EQ 'CATEGORY'.
ITAB-ATINN01 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'TOWER'.
ITAB-ATINN02 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'TYPE'.
ITAB-ATINN03 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'FURNISHED'.
ITAB-ATINN04 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'ACFITTED'.
ITAB-ATINN05 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'POWERBACKUP'.
ITAB-ATINN06 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'MODULARKITCHEN'.
ITAB-ATINN07 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'STUDYROOM'.
ITAB-ATINN12 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'STOREROOM'.
ITAB-ATINN13 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'SERVENTROOM'.
ITAB-ATINN14 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'FLAT_FLOOR'.
ITAB-ATINN25 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'PHASE'.
ITAB-ATINN29 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'BLOCK'.
ITAB-ATINN30 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'SUPERAREA1'.
ITAB-ATINN16 = ITAB1-ATWRT.
*******************************************************************************
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
if itab-atinn56 is initial.
ITAB-ATINN56 = ITAB1-ATWRT.
endif.
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
CALL FUNCTION 'C14W_NUMBER_CHAR_CONVERSION'
EXPORTING
I_FLOAT = ITAB1-ATFLV
* I_DEC = 0
I_DECIMALS = 2
IMPORTING
E_STRING = ITAB-ATINN56
* E_FLOAT =
* E_DEC =
* E_DECIMALS =
EXCEPTIONS
NUMBER_TOO_BIG = 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.
2013 Jun 01 8:22 AM
Hi Sanjeev,
SANJEEV KUMAR wrote:
Hi Ankit,
as you told i have created an internal table,and assigned each characterstics value,then i am fetching the data, but not getting the required value,just go through my full code, and tell me the changes which i have to make there.
(Through this i am getting other field values but not getting the value of ATINN56)
LOOP AT ITAB1.
V_ATNAM = ITAB1-ATNAM.
IF V_ATNAM EQ 'CATEGORY'.
ITAB-ATINN01 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'TOWER'.
ITAB-ATINN02 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'TYPE'.
ITAB-ATINN03 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'FURNISHED'.
ITAB-ATINN04 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'ACFITTED'.
ITAB-ATINN05 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'POWERBACKUP'.
ITAB-ATINN06 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'MODULARKITCHEN'.
ITAB-ATINN07 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'STUDYROOM'.
ITAB-ATINN12 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'STOREROOM'.
ITAB-ATINN13 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'SERVENTROOM'.
ITAB-ATINN14 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'FLAT_FLOOR'.
ITAB-ATINN25 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'PHASE'.
ITAB-ATINN29 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'BLOCK'.
ITAB-ATINN30 = ITAB1-ATWRT.
ELSEIF V_ATNAM EQ 'SUPERAREA1'.
ITAB-ATINN16 = ITAB1-ATWRT.
*******************************************************************************
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
if itab-atinn56 is initial. -> Check this since you are looping into ITAB1, then what value does ITAB hold here.
ITAB-ATINN56 = ITAB1-ATWRT.
endif.
ELSEIF V_ATNAM EQ 'SUPERAREASQMT'.
CALL FUNCTION 'C14W_NUMBER_CHAR_CONVERSION'
EXPORTING
I_FLOAT = ITAB1-ATFLV
* I_DEC = 0
I_DECIMALS = 2
IMPORTING
E_STRING = ITAB-ATINN56
* E_FLOAT =
* E_DEC =
* E_DECIMALS =
EXCEPTIONS
NUMBER_TOO_BIG = 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.
Regards,
Ankit.
2013 Jun 01 8:53 AM
Hi Ankit,
actually this program was written by previous ABAPER, and still i am not getting the point for looping into ITAB1,and then matching with ITAB,please go through the whole code and change according to your sujjestions.Because i gets confused in this whole code snippet.
Please do the needful.
Message was edited by: Matthew Billingham - removed bolding
2013 Jun 01 4:18 PM
Hi Sanjeev,
The entire code needs an overhaul and it would be tedious task so i would suggest you to either debug the code and understand the requirement or get some knowledge transferred from the original developer.
Eg:-I would never put a select on AUSP before hitting CABN, etc.
BR,
Ankit.